diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 79ffafa0f1..4472eb8227 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -14,6 +14,8 @@ on: - 'resources/**' - ".github/workflows/build_*.yml" - 'scripts/flatpak/**' + - 'scripts/msix/**' + - 'tests/**' pull_request: branches: @@ -30,6 +32,8 @@ on: - 'build_release_vs2022.bat' - 'build_release_macos.sh' - 'scripts/flatpak/**' + - 'scripts/msix/**' + - 'tests/**' schedule: diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 3f242337b6..c1e04013dc 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -389,6 +389,25 @@ jobs: asset_content_type: application/x-msdownload max_releases: 1 + - name: Build MSIX Store package Win + if: runner.os == 'Windows' && !vars.SELF_HOSTED + working-directory: ${{ github.workspace }} + shell: pwsh + run: | + ./scripts/msix/build_msix.ps1 ` + -InstallDir "${{ github.workspace }}/build/OrcaSlicer" ` + -OutputPath "${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix" ` + -IdentityName "${{ vars.ORCA_MSIX_IDENTITY_NAME || 'OrcaSlicer.OrcaSlicer' }}" ` + -Publisher "${{ vars.ORCA_MSIX_PUBLISHER || 'CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82' }}" ` + -PublisherDisplayName "${{ vars.ORCA_MSIX_PUBLISHER_DISPLAY_NAME || 'OrcaSlicer' }}" + + - name: Upload artifacts Win MSIX + if: runner.os == 'Windows' && !vars.SELF_HOSTED + uses: actions/upload-artifact@v7 + with: + name: OrcaSlicer_Windows_MSIX_${{ env.ver }} + path: ${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix + # Ubuntu - name: Apt-Install Dependencies if: runner.os == 'Linux' && !vars.SELF_HOSTED diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index 7c2999e872..98514d99db 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -73,8 +73,9 @@ jobs: - name: Download release artifacts from build run run: | + # Windows_V* (not Windows_*) keeps the MSIX Store artifact out: it goes to Partner Center, not GitHub releases. gh run download "$RUN_ID" --repo "$GITHUB_REPOSITORY" --dir artifacts \ - -p 'OrcaSlicer_Windows_*' \ + -p 'OrcaSlicer_Windows_V*' \ -p 'OrcaSlicer_Mac_universal_*' \ -p 'OrcaSlicer_Linux_ubuntu_*' \ -p 'OrcaSlicer-Linux-flatpak_*' \ diff --git a/build_linux.sh b/build_linux.sh index 98201958f4..72ea742f1a 100755 --- a/build_linux.sh +++ b/build_linux.sh @@ -504,13 +504,24 @@ if [[ -n "${USE_LLD}" ]] ; then fi fi -# Auto-detect ccache for faster rebuilds export CMAKE_CCACHE_ARGS=() -if command -v ccache >/dev/null 2>&1 ; then - echo "ccache found at $(command -v ccache), enabling compiler caching..." - export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache) +CMAKE_CCACHE=${CMAKE_CCACHE:-} +if [ -n "$CMAKE_CCACHE" ]; then + echo "Checking ${CMAKE_CCACHE} environment variable for compiler cache program..." + CMAKE_CCACHE=$(command -v "${CMAKE_CCACHE}") || { + echo "CMAKE_CCACHE environment variable is set to '${CMAKE_CCACHE}' but it was not found in PATH." + CMAKE_CCACHE="" + } +elif command -v sccache >/dev/null 2>&1 ; then + CMAKE_CCACHE=$(command -v sccache) +elif command -v ccache >/dev/null 2>&1 ; then + CMAKE_CCACHE=$(command -v ccache) +fi +if [ -n "${CMAKE_CCACHE}" ] ; then + echo "${CMAKE_CCACHE} found, enabling compiler caching..." + export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER="${CMAKE_CCACHE}" -DCMAKE_CXX_COMPILER_LAUNCHER="${CMAKE_CCACHE}") else - echo "Note: ccache not found. Install ccache for faster rebuilds." + echo "Note: ccache or sccache are not found. Install either of them for faster rebuilds." fi if [[ -n "${BUILD_DEPS}" ]] ; then @@ -525,7 +536,7 @@ if [[ -n "${BUILD_DEPS}" ]] ; then BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}") fi - print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}" + print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" "${CMAKE_CCACHE_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}" print_and_run cmake --build deps/$BUILD_DIR -j1 fi diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 7657b56738..dbbf9a0463 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -196,6 +196,8 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE) -DCMAKE_DEBUG_POSTFIX:STRING=d -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} @@ -241,6 +243,8 @@ else() -DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR} -DCMAKE_PREFIX_PATH:STRING=${DESTDIR} -DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH} + -DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER} -DBUILD_SHARED_LIBS:BOOL=OFF ${_cmake_osx_arch} "${_configs_line}" diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index bd6e3efff5..e16c07da54 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -187,6 +187,15 @@ msgstr "" msgid "Support Generated" msgstr "" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "" @@ -272,6 +281,15 @@ msgstr "" msgid "To:" msgstr "" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "" @@ -291,6 +309,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "" @@ -673,6 +700,15 @@ msgstr "" msgid "Delete connector" msgstr "" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "" @@ -1514,6 +1550,12 @@ msgstr "" msgid "Flip by Face 2" msgstr "" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "" @@ -1547,6 +1589,12 @@ msgstr "" msgid "Face and face assembly" msgstr "" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -1805,6 +1853,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3024,6 +3086,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3264,6 +3365,9 @@ msgstr "" msgid "There is no valid surface for text projection." msgstr "" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -7976,9 +8080,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "" - msgid "By type" msgstr "" @@ -8319,6 +8420,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "" @@ -9079,6 +9188,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "" @@ -9447,6 +9559,9 @@ msgstr "" msgid "Travel speed" msgstr "" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "" @@ -10237,9 +10352,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -10698,12 +10810,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "" @@ -10807,6 +10930,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "" @@ -11800,7 +11926,7 @@ msgid "External bridge density" msgstr "" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -11814,18 +11940,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -11860,11 +11982,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, possible-c-format, possible-boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -13568,9 +13688,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -18632,9 +18749,6 @@ msgstr "" msgid "Filament Preset Template" msgstr "" -msgid "Deselect All" -msgstr "" - msgid "Process Preset Template" msgstr "" @@ -19053,9 +19167,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, possible-c-format, possible-boost-format msgid "Mismatched type of print host: %s" msgstr "" @@ -19693,6 +19819,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, possible-boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "" @@ -19743,6 +19968,12 @@ msgstr "" msgid "Please select single object." msgstr "" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "" @@ -19752,6 +19983,9 @@ msgstr "" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, possible-c-format, possible-boost-format msgid "/%d Selected" msgstr "" @@ -19897,6 +20131,100 @@ msgstr "" msgid "Calculating, please wait..." msgstr "" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, possible-boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index ee2eb8d3a3..89773872f8 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -202,6 +202,15 @@ msgstr "Fet" msgid "Support Generated" msgstr "Suport generat" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Recolzar sobre la Cara" @@ -289,6 +298,15 @@ msgstr "Pintat amb: Filament %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Pell difusa pintada" @@ -310,6 +328,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Activa la pell difusa pintada per a aquest objecte" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Moure" @@ -700,6 +727,15 @@ msgstr "Tall per línia" msgid "Delete connector" msgstr "Suprimeix el connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nom de la malla" @@ -1577,6 +1613,12 @@ msgstr "Distància paral·lela:" msgid "Flip by Face 2" msgstr "Gira per la cara 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Ensamblar" @@ -1614,6 +1656,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Muntatge cara a cara" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1902,6 +1950,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3194,6 +3256,45 @@ msgstr "La temperatura màxima no pot superar " msgid "The minmum temperature should not be less than " msgstr "La temperatura mínima no hauria de ser inferior a " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tots" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Deseleccionar-ho tot" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Configuració avançada" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3477,6 +3578,9 @@ msgstr "La tipografia no té cap forma per al text indicat." msgid "There is no valid surface for text projection." msgstr "No hi ha cap superfície vàlida per a la projecció del text." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Precondicionament tèrmic per a l'optimització de la primera capa" @@ -8716,9 +8820,6 @@ msgstr "Agrupa els perfils de filament de l'usuari" msgid "Group user filament presets based on selection" msgstr "Agrupa els perfils de filament de l'usuari segons la selecció" -msgid "All" -msgstr "Tots" - msgid "By type" msgstr "Per tipus" @@ -9101,6 +9202,14 @@ msgstr "Descarrega el connector de xarxa" msgid "Associate files to OrcaSlicer" msgstr "Associar fitxers a OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Associar .3mf fitxers a OrcaSlicer" @@ -9979,6 +10088,9 @@ msgstr "" "firmware admet aquesta operació o verifiqueu si la impressora funciona " "correctament." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Laminat ok." @@ -10439,6 +10551,9 @@ msgstr "Establir la velocitat dels ponts externs i interns" msgid "Travel speed" msgstr "Velocitat de desplaçament" +msgid "Junction Deviation" +msgstr "Desviació de cruïlla" + msgid "Jerk(XY)" msgstr "Sacsejada( XY )-Jerk( XY )" @@ -11321,9 +11436,6 @@ msgstr "" "els filaments de la impressora. Els filaments de la impressora no utilitzats " "s'afegiran automàticament al final de la llista." -msgid "Advanced settings" -msgstr "Configuració avançada" - msgid "Add unused AMS filaments to filaments list." msgstr "Afegeix filaments d'AMS no utilitzats a la llista de filaments." @@ -11834,12 +11946,23 @@ msgstr "Un nou plugin de Xarxa( %s ) disponible, Vols instal·lar-lo?" msgid "New version of Orca Slicer" msgstr "Nova versió d'Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Omet aquesta versió" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmar i Actualitzar el broquet" @@ -11956,6 +12079,9 @@ msgstr "Mòdul de tall" msgid "Auto Fire Extinguishing System" msgstr "Sistema d'extinció automàtica d'incendis" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Actualitzar el firmware" @@ -13204,7 +13330,7 @@ msgid "External bridge density" msgstr "Densitat del pont exterior" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13218,18 +13344,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densitat del pont intern" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13264,11 +13386,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15532,9 +15652,6 @@ msgstr "El max_accel_to_decel de Klipper s'ajustarà a aquest %% d'acceleració" msgid "Default jerk." msgstr "Jerk predeterminat." -msgid "Junction Deviation" -msgstr "Desviació de cruïlla" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21775,9 +21892,6 @@ msgstr "Perfil d'Impressora" msgid "Filament Preset Template" msgstr "Plantilla de Perfil de Filament" -msgid "Deselect All" -msgstr "Deseleccionar-ho tot" - msgid "Process Preset Template" msgstr "Plantilla de Perfil de Processament" @@ -22301,9 +22415,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipus d'amfitrió( host ) d'impressió no coincident: %s" @@ -23126,6 +23252,105 @@ msgstr "No s'ha pogut connectar a Flashforge per sèrie" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "L'estat proporcionat no és correcte." @@ -23180,6 +23405,12 @@ msgstr "Orelles de la Vora d'Adherència" msgid "Please select single object." msgstr "Seleccioneu un sol objecte." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Allunya" @@ -23190,6 +23421,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "La càrrega d'informació dels objectes a ometre ha fallat. Torneu-ho a provar." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seleccionats" @@ -23340,6 +23574,100 @@ msgstr "Nombre de cares triangulars" msgid "Calculating, please wait..." msgstr "Calculant, espereu..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 1089103bf3..5546a839a6 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -195,6 +195,15 @@ msgstr "Hotovo" msgid "Support Generated" msgstr "Vygenerovaná podpora" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Umístit na plochu" @@ -283,6 +292,15 @@ msgstr "Namáznuto pomocí: Filament %1%" msgid "To:" msgstr "Do:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Malování na povrch fuzzy skin" @@ -302,6 +320,15 @@ msgstr "Varování: Fuzzy skin je vypnuta, malovaná fuzzy skin se neprojeví!" msgid "Enable painted fuzzy skin for this object" msgstr "Povolit malovanou (ručně aplikovanou) fuzzy skin pro tento objekt." +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Přesunout" @@ -692,6 +719,15 @@ msgstr "Řezat podle čáry" msgid "Delete connector" msgstr "Smazat konektor" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Název sítě" @@ -1549,6 +1585,12 @@ msgstr "Paralelní vzdálenost:" msgid "Flip by Face 2" msgstr "Převrátit podle plochy 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Sestavit" @@ -1585,6 +1627,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Sestavení plocha–plocha" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1866,6 +1914,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3151,6 +3213,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Vše" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Odznačit vše" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3427,6 +3528,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8567,9 +8671,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Vše" - msgid "By type" msgstr "By type" @@ -8940,6 +9041,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Přiřadit soubory k OrcaSliceru" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associate 3MF files to OrcaSlicer" @@ -9771,6 +9880,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Řezání proběhlo v pořádku." @@ -10216,6 +10328,9 @@ msgstr "Nastavit rychlost pro vnější a vnitřní mosty" msgid "Travel speed" msgstr "Rychlost přejezdu" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11085,9 +11200,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11586,12 +11698,23 @@ msgstr "Je dostupný nový síťový doplněk (%s). Chcete to nainstalovat?" msgid "New version of Orca Slicer" msgstr "Nová verze Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Přeskočit tuto verzi" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Potvrdit a aktualizovat trysku" @@ -11705,6 +11828,9 @@ msgstr "Řezací modul" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aktualizovat firmware" @@ -12913,7 +13039,7 @@ msgid "External bridge density" msgstr "Hustota externího mostu" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12927,18 +13053,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Hustota vnitřního mostu" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12973,11 +13095,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15140,9 +15260,6 @@ msgstr "" msgid "Default jerk." msgstr "Výchozí trhání." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21180,9 +21297,6 @@ msgstr "Předvolba tiskárny" msgid "Filament Preset Template" msgstr "Šablona filamentového přednastaveného profilu" -msgid "Deselect All" -msgstr "Odznačit vše" - msgid "Process Preset Template" msgstr "Šablona předvolby procesu" @@ -21683,9 +21797,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Nesouhlasný typ tiskového hostitele: %s" @@ -22473,6 +22599,105 @@ msgstr "Nepodařilo se připojit k Flashforge přes sériový port" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Zadaný stav není správný." @@ -22525,6 +22750,12 @@ msgstr "Ouška límce" msgid "Please select single object." msgstr "Vyberte jeden objekt." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22534,6 +22765,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22685,6 +22919,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 7b55bc286d..b8b1526bf2 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.9\n" msgid "right" msgstr "rechts" @@ -198,6 +198,15 @@ msgstr "Erledigt" msgid "Support Generated" msgstr "Support generiert" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-auf Fläche platzieren" @@ -286,6 +295,15 @@ msgstr "Gemalt mit: Filament %1%" msgid "To:" msgstr "An:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Fuzzy Skin einfärben" @@ -307,6 +325,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Erlaube gemalten Fuzzy Skin für dieses Objekt" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Bewegen" @@ -701,6 +728,15 @@ msgstr "Schnitt durch Linie" msgid "Delete connector" msgstr "Verbinder löschen" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Netzname" @@ -1582,6 +1618,12 @@ msgstr "Parallele Entfernung:" msgid "Flip by Face 2" msgstr "Umdrehen durch Fläche 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Zusammenbauen" @@ -1620,6 +1662,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face und Face Zusammenbau" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Strg +" @@ -1873,12 +1921,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Sie befinden sich derzeit im Stealth-Modus. Um sich in der Cloud anzumelden, " +"müssen Sie zunächst den Stealth-Modus deaktivieren." msgid "Stealth Mode" -msgstr "" +msgstr "Stealth-Modus" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Stealth-Modus verlassen" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1900,20 +1950,44 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Cloud-Synchronisationskonflikt: Dieses Profil hat eine neuere Version in " +"OrcaCloud.\n" +"Pull lädt die Cloud-Kopie herunter. Force Push überschreibt sie mit Ihrem " +"lokalen Profil." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Cloud-Synchronisationskonflikt: Ein Profil mit diesem Namen existiert " +"bereits in OrcaCloud.\n" +"Pull lädt die Cloud-Kopie herunter. Force Push überschreibt sie mit Ihrem " +"lokalen Profil." + +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Force Push überschreibt die Cloud-Kopie mit Ihren lokalen Profiländerungen.\n" +"Möchten Sie fortfahren?" msgid "Resolve cloud sync conflict" -msgstr "" +msgstr "Cloud-Synchronisationskonflikt lösen" msgid "Retrieving printer information, please try again later." msgstr "Empfange Druckerinformationen, bitte später erneut versuchen." @@ -2231,7 +2305,7 @@ msgid "Orca Cube" msgstr "Orca Würfel" msgid "OrcaSliced Combo" -msgstr "" +msgstr "OrcaSliced Kombination" msgid "Orca Tolerance Test" msgstr "Orca Toleranz Test" @@ -3223,6 +3297,45 @@ msgstr "Die maximale Temperatur darf nicht überschritten werden " msgid "The minmum temperature should not be less than " msgstr "Die minimale Temperatur sollte nicht weniger als " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Alle" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Alle abwählen" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3506,6 +3619,9 @@ msgstr "Schrift hat keine Form für den angegebenen Text." msgid "There is no valid surface for text projection." msgstr "Da ist keine gültige Oberfläche für die Textprojektion." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermische Vorkonditionierung zur Optimierung der ersten Schicht" @@ -5670,7 +5786,7 @@ msgid "Outline" msgstr "Umriss" msgid "Realistic View" -msgstr "" +msgstr "Realistische Ansicht" msgid "Perspective" msgstr "Perspektive" @@ -5980,7 +6096,7 @@ msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" msgid "Troubleshoot Center" -msgstr "" +msgstr "Fehlerbehebungszentrum" msgid "Open Network Test" msgstr "Netzwerktest öffnen" @@ -6024,10 +6140,10 @@ msgid "Rear" msgstr "Hinten" msgid "Rear View" -msgstr "Ansicht von Hinten" +msgstr "Ansicht von hinten" msgid "Left View" -msgstr "Anicht von Links" +msgstr "Ansicht von links" msgid "Right View" msgstr "Ansicht von rechts" @@ -7371,10 +7487,10 @@ msgid "Model file downloaded." msgstr "Modelldatei heruntergeladen." msgid "Pull" -msgstr "" +msgstr "Herunterladen" msgid "Force push" -msgstr "" +msgstr "Hochladen erzwingen" msgid "Shared profiles may be available for this printer." msgstr "Für diesen Drucker sind möglicherweise freigegebene Profile verfügbar." @@ -8449,10 +8565,10 @@ msgstr "" "werden nur positive Teile exportiert." msgid "Flashforge host is not available." -msgstr "" +msgstr "Flashforge-Host ist nicht verfügbar." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "Anmeldung am Flashforge-Drucker nicht möglich." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -8833,9 +8949,6 @@ msgstr "Gruppiere benutzerdefinierte Filamentprofile" msgid "Group user filament presets based on selection" msgstr "Gruppiere benutzerdefinierte Filamentprofile basierend auf der Auswahl" -msgid "All" -msgstr "Alle" - msgid "By type" msgstr "Nach Typ" @@ -9031,22 +9144,23 @@ msgid "Graphics" msgstr "Grafik" msgid "Phong shading" -msgstr "" +msgstr "Phong-Shading" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Verwendet Phong-Shading in der realistischen Ansicht." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "SSAO-Umgebungsverdeckung" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Wendet SSAO in der realistischen Ansicht an." msgid "Shadows" -msgstr "" +msgstr "Schatten" msgid "Renders cast shadows on the plate in realistic view." msgstr "" +"Zeigt geworfene Schatten auf der Platte in der realistischen Ansicht an." msgid "Anti-aliasing" msgstr "Kantenglättung" @@ -9126,12 +9240,17 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Dies deaktiviert alle Cloud-Funktionen, einschließlich der Profil-" +"Synchronisierung mit Orca Cloud. Benutzer, die es vorziehen, vollständig " +"offline zu arbeiten, können diese Option aktivieren.\n" +"Hinweis: Wenn der Unsichtbare Modus aktiviert ist, werden Ihre " +"Benutzerprofile nicht in Orca Cloud gesichert." msgid "Hide login side panel" -msgstr "" +msgstr "Login-Seitenleiste ausblenden" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Blendet die Login-Seitenleiste auf der Startseite aus." msgid "Network test" msgstr "Netzwerktest" @@ -9237,6 +9356,14 @@ msgstr "Netzwerk-Plugin herunterladen" msgid "Associate files to OrcaSlicer" msgstr "Dateien mit OrcaSlicer verknüpfen" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Dateiendung .3mf mit OrcaSlicer verknüpfen" @@ -9299,12 +9426,14 @@ msgstr "" "Sehr experimentell! Langsam und kann Artefakte erzeugen." msgid "Show unsupported presets" -msgstr "" +msgstr "Nicht unterstützte Profile anzeigen" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Zeigt inkompatible/nicht unterstützte Profile in den Dropdown-Listen für " +"Drucker und Filament an. Diese Profile können nicht ausgewählt werden." msgid "Allow Abnormal Storage" msgstr "Fehlerhaften Speicher zulassen" @@ -10131,6 +10260,9 @@ msgstr "" "Datei-Upload zeitüberschritten. Bitte überprüfen Sie, ob die Firmware-" "Version diesen Vorgang unterstützt oder ob der Drucker ordnungsgemäß " +msgid "Sending failed, please try again!" +msgstr "Senden fehlgeschlagen, bitte erneut versuchen!" + msgid "Slice ok." msgstr "Slicing erfolgreich." @@ -10597,6 +10729,9 @@ msgstr "Setze Geschwindigkeit für externe und interne Brücken" msgid "Travel speed" msgstr "Fahrgeschwindigkeit" +msgid "Junction Deviation" +msgstr "Junction-Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -10966,6 +11101,11 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"Die Option Rückzug vor Wischen kann nur 100% sein, wenn der Modus Filament " +"Rückzug durch Firmware verwendet wird.\n" +"\n" +"Soll ich es auf 100% setzen, um den Filament Rückzug durch Firmware zu " +"aktivieren?" msgid "Firmware Retraction" msgstr "Filament Rückzug durch Firmware" @@ -11510,9 +11650,6 @@ msgstr "" "Filamenten des Druckers. Unbenutzte Druckerfilamente werden automatisch am " "Ende der Liste hinzugefügt." -msgid "Advanced settings" -msgstr "Erweiterte Einstellungen" - msgid "Add unused AMS filaments to filaments list." msgstr "Unbenutzte AMS-Filamente zur Filamentliste hinzufügen." @@ -12030,12 +12167,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Neue Version von Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Auf Github überprüfen" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Überspringe diese Version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bestätigen und Düse aktualisieren" @@ -12152,6 +12300,9 @@ msgstr "Schneidemodul" msgid "Auto Fire Extinguishing System" msgstr "Automatisches Feuerlöschsystem" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware aktualisieren" @@ -12721,16 +12872,23 @@ msgstr "Schichthöhe darf den Düsendurchmesser nicht überschreiten." msgid "Bridge line width must not exceed nozzle diameter" msgstr "" +"Die Breite der Brückenlinie darf den Düsendurchmesser nicht überschreiten." msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" wurde in before_layer_change_gcode gefunden, aber G oder E sind " +"nicht großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene " +"\"G92 E0\"." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" wurde in layer_change_gcode gefunden, aber G oder E sind nicht " +"großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene \"G92 " +"E0\"." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12745,6 +12903,8 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"\"G92 E0\" wurde in before_layer_change_gcode gefunden, was mit absoluter " +"Extruderadressierung nicht kompatibel ist." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " @@ -12859,29 +13019,37 @@ msgid "Extruder printable area" msgstr "Druckbarer Bereich des Extruders" msgid "Support parallel printheads" -msgstr "" +msgstr "Unterstützung paralleler Druckköpfe" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." msgstr "" +"Aktivieren Sie die Druckereinstellungen für Maschinen, die mehrere " +"Druckköpfe parallel verwenden können." msgid "Parallel printheads count" -msgstr "" +msgstr "Anzahl der parallelen Druckköpfe" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." msgstr "" +"Legen Sie die Anzahl der parallelen Druckköpfe für Maschinen wie den " +"OrangeStorm Giga Drucker fest." msgid "Parallel printheads bed exclude areas" -msgstr "" +msgstr "Druckbett-Ausschlussbereiche für parallele Druckköpfe" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Geordnete Liste der Druckbett-Ausschlussbereiche nach Anzahl der parallelen " +"Druckköpfe. Punkt 1 gilt für einen Druckkopf, Punkt 2 für zwei Druckköpfe " +"und so weiter. Lassen Sie einen Punkt leer, wenn keine Ausschlussbereiche " +"vorhanden sind." msgid "Bed exclude area" msgstr "ausgenommene Druckbettfläche" @@ -13029,10 +13197,10 @@ msgstr "" "erforderliche Passwort enthalten." msgid "Serial Number" -msgstr "" +msgstr "Seriennummer" msgid "Flashforge local API requires the printer serial number." -msgstr "" +msgstr "Die lokale Flashforge-API erfordert die Seriennummer des Druckers." msgid "Name of the printer." msgstr "Name des Druckers" @@ -13405,6 +13573,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Externe Brückenwinkelüberschreibung.\n" +"Wenn auf Null gelassen, wird der Brückenwinkel automatisch für jede " +"spezifische Brücke berechnet.\n" +"Ansonsten wird der angegebene Winkel wie folgt verwendet:\n" +" - Die absoluten Koordinaten\n" +" - Die absoluten Koordinaten + Modellrotation: Wenn 'Füllrichtung an Modell " +"ausrichten' aktiviert ist\n" +" - Der optimale automatische Winkel + dieser Wert: Wenn 'Relativer " +"Brückenwinkel' aktiviert ist\n" +"\n" +"Verwenden Sie 180° für einen absoluten Winkel von Null." msgid "Internal bridge infill direction" msgstr "Interne Brücken Füllrichtung" @@ -13422,20 +13601,34 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Interne Brückenwinkelüberschreibung.\n" +"Wenn auf Null gelassen, wird der Brückenwinkel automatisch für jede " +"spezifische Brücke berechnet.\n" +"Ansonsten wird der angegebene Winkel wie folgt verwendet:\n" +" - Die absoluten Koordinaten\n" +" - Die absoluten Koordinaten + Modellrotation: Wenn 'Füllrichtung an Modell " +"ausrichten' aktiviert ist\n" +" - Der optimale automatische Winkel + dieser Wert: Wenn 'Relativer " +"Brückenwinkel' aktiviert ist\n" +"\n" +"Verwenden Sie 180° für einen absoluten Winkel von Null." msgid "Relative bridge angle" -msgstr "" +msgstr "Relativer Brückenwinkel" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Wenn aktiviert, werden die Brückenwinkelwerte zur automatisch berechneten " +"Brückenrichtung hinzugefügt, anstatt sie zu überschreiben." msgid "External bridge density" msgstr "Externe Brücken Dichte" +#, fuzzy msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13449,18 +13642,33 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" +"Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist " +"100%.\n" +"Theoretisch bedeutet 100% eine solide Brücke, aber aufgrund der Neigung von " +"Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht " +"ausreichend.\n" +"\n" +"- Höher als 100% Dichte (Empfohlen Max 125%):\n" +" - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende " +"Linien während des Druckens zusätzliche Unterstützung bieten.\n" +" - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren " +"und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" +"\n" +"- Niedriger als 100% Dichte (Min 10%):\n" +" - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und " +"mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die " +"extrudierte Brücke vorhanden ist.\n" +" - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität " +"führen." msgid "Internal bridge density" msgstr "Interne Brücken Dichte" +#, fuzzy msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13480,6 +13688,29 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist " +"100%. 100% bedeutet eine solide interne Brücke.\n" +"\n" +"Interne Brücken wirken als Zwischenstütze zwischen lockerer Füllung und " +"oberer festen Füllung und können die Qualität der Oberseite stark " +"beeinflussen.\n" +"\n" +"- Höher als 100% Dichte (Empfohlen Max 125%):\n" +" - Vorteile: Verbessert die Stärke der internen Brücke und die " +"Unterstützung unter den oberen Schichten, reduziert das Durchhängen und " +"verbessert die Oberflächenqualität.\n" +" - Nachteile: Erhöht den Materialverbrauch und die Druckzeit; eine zu hohe " +"Dichte kann zu Überfüllung und inneren Spannungen führen.\n" +"\n" +"- Niedriger als 100% Dichte (Min 10%):\n" +" - Vorteile: Kann das Pillowing reduzieren und die Kühlung verbessern (mehr " +"Luftzirkulation durch die Brücke), und kann den Druck beschleunigen.\n" +" - Nachteile: Kann die innere Unterstützung reduzieren und das Risiko von " +"Durchhängen und Defekten auf der Oberseite erhöhen.\n" +"\n" +"Diese Option funktioniert besonders gut in Kombination mit der zweiten " +"internen Brücke über Füllungsoption, um die Brückenbildung weiter zu " +"verbessern, bevor die obere feste Füllung extrudiert wird." msgid "Bridge flow ratio" msgstr "Brücken Flussrate" @@ -13495,16 +13726,22 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"Linienbreite der Brücke. Wenn als % angegeben, wird sie über den " +"Düsendurchmesser berechnet.\n" +"Empfohlen in Verbindung mit einer höheren Brückendichte oder einer höheren " +"Brückenflussrate.\n" +"\n" +"Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" +"Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren " +"festen Füllung." msgid "Internal bridge flow ratio" msgstr "Interne Brücken Flussrate" @@ -13521,6 +13758,18 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Dieser Wert steuert die Dicke der internen Brückenlage. Dies ist die erste " +"Schicht über der lockeren Füllung, daher kann eine Erhöhung die Festigkeit " +"und die Qualität der oberen Schicht verbessern.\n" +"Werte über 1.0: Erhöhen die Materialmenge bei gleichbleibendem " +"Linienabstand. Dies kann die Linienkontakt und Festigkeit verbessern.\n" +"Werte unter 1.0: Reduzieren die Materialmenge bei Anpassung des " +"Linienabstands, um den Kontakt aufrechtzuerhalten. Dies kann das Durchhängen " +"verbessern.\n" +"\n" +"Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem " +"Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " +"multipliziert wird." msgid "Top surface flow ratio" msgstr "Durchflussverhältnis obere Fläche" @@ -13909,6 +14158,36 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in " +"denen sich die Umfänge möglicherweise nach oben gekrümmt haben.\n" +"Zum Beispiel wird bei der Druckung von Überhängen an scharfen Ecken wie dem " +"Vorderteil der Benchy-Hülle eine zusätzliche Verlangsamung angewendet, um " +"das Krümmen zu reduzieren, das sich über mehrere Schichten hinweg " +"verstärkt.\n" +"\n" +"Es wird in der Regel empfohlen, diese Option aktiviert zu lassen, es sei " +"denn, Ihre Druckerkühlung ist stark genug oder die Druckgeschwindigkeit ist " +"langsam genug, sodass sich Umfänge nicht krümmen. \n" +"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann " +"dieser Parameter bei der Verlangsamung Wandartefakte verursachen, da die " +"potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran " +"hindert, dem geforderten Fließänderungsverlauf zu folgen.\n" +"Die Ursache dieser Artefakte ist in der Regel eine leicht abweichende PA-" +"Einstellung, insbesondere in Kombination mit einer hohen PA-Glättungszeit.\n" +"\n" +"Empfehlungen bei Aktivierung dieser Option:\n" +"1. Reduzieren Sie die Glättungszeit des Druckvorschubs auf 0,015 - 0,02, " +"damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" +"2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen " +"den schnellen und langsamen Segmenten zu begrenzen.\n" +"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der " +"Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" +"\n" +"Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie " +"Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch " +"dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" +"Zum Beispiel wird bei den Umfängen, die zu 100 % überhängen, wobei keine " +"Wand darunter liegt, die 100 % Überhanggeschwindigkeit angewendet." msgid "mm/s or %" msgstr "mm/s o. %" @@ -14199,6 +14478,12 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Wenn aktiviert, verwendet die Brückenextrusion eine Linienhöhe, die dem " +"Düsendurchmesser entspricht.\n" +"Dies erhöht die Brückenfestigkeit und Zuverlässigkeit, ermöglicht längere " +"Spannweiten, kann aber das Aussehen verschlechtern.\n" +"Wenn deaktiviert, können Brücken besser aussehen, sind aber im Allgemeinen " +"nur für kürzere Spannweiten zuverlässig." msgid "Thick internal bridges" msgstr "Dicke interne Brücken" @@ -14211,6 +14496,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Wenn aktiviert, verwendet die interne Brückenextrusion eine Linienhöhe, die " +"dem Düsendurchmesser entspricht.\n" +"Dies erhöht die interne Brückenfestigkeit und Zuverlässigkeit, wenn über " +"seltenes Infill gedruckt wird, kann aber das Aussehen verschlechtern.\n" +"Wenn deaktiviert, können interne Brücken besser aussehen, sind aber " +"überdünnes Infill weniger zuverlässig." msgid "Extra bridge layers (beta)" msgstr "Zusätzliche Brückenschichten (Beta)" @@ -15499,6 +15790,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Richtet die Richtungen von Füllung, Brücke, Glättung und Oberflächenfüllung " +"so aus, dass sie der Orientierung des Modells auf der Bauplatte folgen.\n" +"Wenn aktiviert, drehen sich die Richtungen mit dem Modell, um optimale " +"Festigkeitseigenschaften zu erhalten." msgid "Insert solid layers" msgstr "Massive Schichten einfügen" @@ -15634,25 +15929,29 @@ msgstr "" "Wabenstruktur." msgid "Lightning overhang angle" -msgstr "" +msgstr "Überhangwinkel der Blitzfüllung" msgid "Maximum overhang angle for Lightning infill support propagation." msgstr "" +"Maximaler Überhangwinkel für die Ausbreitung der Blitzfüllungsunterstützung." msgid "Prune angle" -msgstr "" +msgstr "Beschneidungswinkel" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Steuert, wie aggressiv kurze oder nicht unterstützte Blitzäste beschnitten " +"werden.\n" +"Dieser Winkel wird intern in eine pro-Schicht-Distanz umgewandelt." msgid "Straightening angle" -msgstr "" +msgstr "Begradigungswinkel" msgid "Maximum straightening angle used to simplify Lightning branches." -msgstr "" +msgstr "Maximaler Begradigungswinkel zur Vereinfachung von Blitzästen." msgid "Sparse infill anchor length" msgstr "Länge des Infill-Ankers" @@ -15800,9 +16099,6 @@ msgstr "" msgid "Default jerk." msgstr "Default Ruckwert" -msgid "Junction Deviation" -msgstr "Junction-Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -16761,6 +17057,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der internen spärlichen Füllung.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17649,20 +17947,24 @@ msgstr "" "100%% Überhang wird die Brückengeschwindigkeit verwendet." msgid "Outer walls" -msgstr "" +msgstr "Äußere Wände" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der äußeren Wände.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "Inner walls" -msgstr "" +msgstr "Innere Wände" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der inneren Wände.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18382,16 +18684,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der internen massiven Füllung.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der oberen Oberfläche.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der unteren Oberfläche.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18795,6 +19103,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filament zum Drucken der Stützstruktur-Basis und des Rafts.\n" +"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur und " +"das aktuelle Filament wird verwendet." msgid "Avoid interface filament for base" msgstr "Schnittstellenfilament für die Basis verringern" @@ -18828,6 +19139,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filament zum Drucken der Stützstruktur-Schnittstelle.\n" +"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur-" +"Schnittstelle und das aktuelle Filament wird verwendet." msgid "Top interface layers" msgstr "Obere Schnittstellenschichten" @@ -19944,6 +20258,7 @@ msgstr "Ungültiger Wert, wenn der Spiral-Vase-Modus aktiviert ist: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" +"Die Brückenlinienbreite darf den Düsendurchmesser nicht überschreiten: " msgid "too large line width " msgstr "Zu große Linienbreite" @@ -20210,10 +20525,10 @@ msgstr "" "3:info, 4:debug, 5:trace\n" msgid "Log file" -msgstr "" +msgstr "Protokolldatei" msgid "Redirects debug logging to file.\n" -msgstr "" +msgstr "Leitet die Fehlerprotokollierung in eine Datei um.\n" msgid "Enable timelapse for print" msgstr "Zeitraffer für Druck aktivieren" @@ -21764,13 +22079,13 @@ msgid "Top Surface Pattern" msgstr "Oberflächenmuster" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Wählen Sie einen Slot für die ausgewählte Farbe" msgid "Material in the material station" -msgstr "" +msgstr "Material in der Materialstation" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Es können nur Materialien desselben Typs ausgewählt werden." msgid "Send G-code to printer host" msgstr "Senden Sie G-Code an den Drucker-Host" @@ -21798,46 +22113,54 @@ msgid "Upload" msgstr "Hochladen" msgid "Leveling before print" -msgstr "" +msgstr "Nivellierung vor dem Druck" msgid "Time-lapse" msgstr "Zeitraffer" msgid "Enable IFS" -msgstr "" +msgstr "IFS aktivieren" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "%d IFS-Slots auf dem Drucker erkannt." msgid "This printer does not report a material station." -msgstr "" +msgstr "Dieser Drucker meldet keine Materialstation." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "Kann IFS-Slots vom Drucker nicht lesen." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Lade IFS-Slots vom Drucker..." msgid "Slice the plate first to get project material information." msgstr "" +"Schneiden Sie die Platte zuerst, um Projektmaterialinformationen zu erhalten." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Diese Platte verwendet mehrere Materialien. Aktivieren Sie IFS und weisen " +"Sie jedem Werkzeug einen Drucker-Slot zu." msgid "Each project material must be assigned to an IFS slot before printing." msgstr "" +"Jedes Projektmaterial muss vor dem Drucken einem IFS-Slot zugewiesen werden." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Jedes Projektmaterial muss vor dem Drucken einem geladenen IFS-Slot " +"zugewiesen werden." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"Jedes Projektmaterial muss mit dem in dem ausgewählten IFS-Slot geladenen " +"Material übereinstimmen." msgid "Print host upload queue" msgstr "Druck-Host-Upload-Warteschlange" @@ -21894,13 +22217,13 @@ msgstr "Glatte Bauplatte (Seite B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Drucker: %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Vor dem Drucken kalibrieren" msgid "Filament Mapping:" -msgstr "" +msgstr "Filamentzuordnung:" msgid "Unable to perform boolean operation on selected parts" msgstr "" @@ -22180,9 +22503,6 @@ msgstr "Druckerprofil" msgid "Filament Preset Template" msgstr "Filament-Vorlagenprofil" -msgid "Deselect All" -msgstr "Alle abwählen" - msgid "Process Preset Template" msgstr "Prozess-Vorlagenprofil" @@ -22628,16 +22948,17 @@ msgstr "" "Druckerkommunikation. Verfügbare Agenten werden beim Start registriert." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Wählen Sie einen Flashforge-Drucker aus" msgid "Discovered Printers" -msgstr "" +msgstr "Gefundene Drucker" msgid "Could not get a valid Printer Host reference" msgstr "Konnte keine gültige Referenz zum Druck-Host erhalten" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" msgstr "" +"Keine gültige Sitzung erkannt. Mit dem Login bei 3DPrinterOS fortfahren?" msgid "Success!" msgstr "Erfolgreich!" @@ -22688,27 +23009,39 @@ msgstr "" "fehlgeschlagen." msgid "3DPrinterOS Cloud upload options" -msgstr "" +msgstr "3DPrinterOS Cloud-Upload-Optionen" msgid "Single file" -msgstr "" +msgstr "Einzelne Datei" msgid "Project File" -msgstr "" +msgstr "Projektdatei" msgid "Project:" -msgstr "" +msgstr "Projekt:" msgid "Printer type:" -msgstr "" +msgstr "Druckertyp:" msgid "Printer type not found, please select manually." -msgstr "" +msgstr "Druckertyp nicht gefunden, bitte manuell auswählen." msgid "Authorizing..." +msgstr "Autorisierung..." + +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" msgstr "" msgid "Error session check" +msgstr "Fehler bei der Sitzungsüberprüfung" + +msgid "Error during file upload" msgstr "" #, c-format, boost-format @@ -23508,19 +23841,19 @@ msgstr "" "es einzurichten." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge hat eine ungültige JSON-Antwort zurückgegeben." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "Es wurden keine Flashforge-Drucker im lokalen Netzwerk gefunden." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Erfolgreich mit der lokalen Flashforge-API verbunden." msgid "Serial connection to Flashforge is working correctly." msgstr "Die serielle Verbindung zu Flashforge funktioniert korrekt." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "Konnte keine Verbindung zur lokalen Flashforge-API herstellen." msgid "Could not connect to Flashforge via serial" msgstr "" @@ -23529,6 +23862,107 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"Die lokale Flashforge-API erfordert sowohl die Seriennummer als auch den " +"Zugriffscode." + +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" msgid "The provided state is not correct." msgstr "Der bereitgestellte Status ist nicht korrekt." @@ -23586,6 +24020,12 @@ msgstr "Mausohren" msgid "Please select single object." msgstr "Bitte wählen Sie ein einzelnes Objekt aus." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Vergrößern" @@ -23597,6 +24037,9 @@ msgstr "" "Laden der Überspringobjektinformationen fehlgeschlagen. Bitte versuchen Sie " "es erneut." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d ausgewählt" @@ -23752,6 +24195,100 @@ msgstr "Anzahl der dreieckigen Facetten" msgid "Calculating, please wait..." msgstr "Berechnung läuft, bitte warten..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24175,6 +24712,115 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "" +#~ "Controls the density (spacing) of external bridge lines. Default is " +#~ "100%.\n" +#~ "Theoretically, 100% means a solid bridge, but due to the tendency of " +#~ "bridge extrusions to sag, 100% may not be sufficient.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Produces smoother bridge surfaces, as overlapping lines provide " +#~ "additional support during printing.\n" +#~ " - Cons: Can cause overextrusion, which may reduce lower and upper " +#~ "surface quality and increase the risk of warping.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can create a string-like first layer. Faster and with better " +#~ "cooling because there is more space for air to circulate around the " +#~ "extruded bridge.\n" +#~ " - Cons: May lead to sagging and poorer surface finish.\n" +#~ "\n" +#~ "Recommended range: Minimum 10% - Maximum 125%." +#~ msgstr "" +#~ "Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist " +#~ "100%.\n" +#~ "Theoretisch bedeutet 100% eine solide Brücke, aber aufgrund der Neigung " +#~ "von Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht " +#~ "ausreichend.\n" +#~ "\n" +#~ "- Höher als 100% Dichte (Empfohlen Max 125%):\n" +#~ " - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende " +#~ "Linien während des Druckens zusätzliche Unterstützung bieten.\n" +#~ " - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren " +#~ "und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" +#~ "\n" +#~ "- Niedriger als 100% Dichte (Min 10%):\n" +#~ " - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und " +#~ "mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die " +#~ "extrudierte Brücke vorhanden ist.\n" +#~ " - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität " +#~ "führen.\n" +#~ "\n" +#~ "Empfohlener Bereich: Minimum 10% - Maximum 125%." + +#~ msgid "" +#~ "Controls the density (spacing) of internal bridge lines. Default is 100%. " +#~ "100% means a solid internal bridge.\n" +#~ "\n" +#~ "Internal bridges act as intermediate support between sparse infill and " +#~ "top solid infill and can strongly affect top surface quality.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Improves internal bridge strength and support under top layers, " +#~ "reducing sagging and improving top-surface finish.\n" +#~ " - Cons: Increases material use and print time; excessive density may " +#~ "cause overextrusion and internal stresses.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can reduce pillowing and improve cooling (more airflow through " +#~ "the bridge), and may speed up printing.\n" +#~ " - Cons: May reduce internal support, increasing the risk of sagging and " +#~ "top surface defects.\n" +#~ "\n" +#~ "This option works particularly well when combined with the second " +#~ "internal bridge over infill option to improve bridging further before " +#~ "solid infill is extruded." +#~ msgstr "" +#~ "Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist " +#~ "100%. 100% bedeutet eine solide interne Brücke.\n" +#~ "\n" +#~ "Interne Brücken wirken als Zwischenstütze zwischen lockerer Füllung und " +#~ "oberer festen Füllung und können die Qualität der Oberseite stark " +#~ "beeinflussen.\n" +#~ "\n" +#~ "- Höher als 100% Dichte (Empfohlen Max 125%):\n" +#~ " - Vorteile: Verbessert die Stärke der internen Brücke und die " +#~ "Unterstützung unter den oberen Schichten, reduziert das Durchhängen und " +#~ "verbessert die Oberflächenqualität.\n" +#~ " - Nachteile: Erhöht den Materialverbrauch und die Druckzeit; eine zu " +#~ "hohe Dichte kann zu Überfüllung und inneren Spannungen führen.\n" +#~ "\n" +#~ "- Niedriger als 100% Dichte (Min 10%):\n" +#~ " - Vorteile: Kann das Pillowing reduzieren und die Kühlung verbessern " +#~ "(mehr Luftzirkulation durch die Brücke), und kann den Druck " +#~ "beschleunigen.\n" +#~ " - Nachteile: Kann die innere Unterstützung reduzieren und das Risiko " +#~ "von Durchhängen und Defekten auf der Oberseite erhöhen.\n" +#~ "\n" +#~ "Diese Option funktioniert besonders gut in Kombination mit der zweiten " +#~ "internen Brücke über Füllungsoption, um die Brückenbildung weiter zu " +#~ "verbessern, bevor die obere feste Füllung extrudiert wird." + +#, c-format, boost-format +#~ msgid "" +#~ "Bridge line width is expressed either as an absolute value or as a " +#~ "percentage of the active nozzle diameter (percentages are computed from " +#~ "the nozzle diameter).\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Die Brückenlinienbreite wird entweder als absoluter Wert oder als " +#~ "Prozentsatz des aktiven Düsendurchmessers angegeben (Prozentsätze werden " +#~ "vom Düsendurch- messer berechnet).\n" +#~ "Wird empfohlen, in Verbindung mit einer höheren Brückendichte oder einer " +#~ "höheren Brückenflussrate zu verwenden.\n" +#~ "\n" +#~ "Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" +#~ "Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren " +#~ "festen Füllung." + #, c-format, boost-format #~ msgid "" #~ "Failed to connect to OrcaCloud.\n" @@ -25006,9 +25652,6 @@ msgstr "" #~ "den Drucker neu starten oder aktualisieren, wenn das Problem weiterhin " #~ "besteht." -#~ msgid "Sending failed, please try again!" -#~ msgstr "Senden fehlgeschlagen, bitte erneut versuchen!" - #~ msgid "Open Wiki for more information >" #~ msgstr "Öffnen Sie das Wiki für weitere Informationen >" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 5c5ca1f48e..12f07ee995 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-05-18 09:32-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -183,6 +183,15 @@ msgstr "" msgid "Support Generated" msgstr "Support generated" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "" @@ -268,6 +277,15 @@ msgstr "" msgid "To:" msgstr "" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "" @@ -287,6 +305,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "" @@ -669,6 +696,15 @@ msgstr "" msgid "Delete connector" msgstr "" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "" @@ -1510,6 +1546,12 @@ msgstr "" msgid "Flip by Face 2" msgstr "" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "" @@ -1543,6 +1585,12 @@ msgstr "" msgid "Face and face assembly" msgstr "" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -1805,6 +1853,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3031,6 +3093,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3277,6 +3378,9 @@ msgstr "" msgid "There is no valid surface for text projection." msgstr "" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -8068,9 +8172,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "" - msgid "By type" msgstr "" @@ -8411,6 +8512,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "" @@ -9182,6 +9291,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice complete" @@ -9558,6 +9670,9 @@ msgstr "" msgid "Travel speed" msgstr "" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "" @@ -10373,9 +10488,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -10835,12 +10947,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "" @@ -10944,6 +11067,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "" @@ -11998,7 +12124,7 @@ msgid "External bridge density" msgstr "" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12012,18 +12138,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12058,11 +12180,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -13831,9 +13951,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19051,9 +19168,6 @@ msgstr "" msgid "Filament Preset Template" msgstr "" -msgid "Deselect All" -msgstr "" - msgid "Process Preset Template" msgstr "" @@ -19496,9 +19610,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "" @@ -20137,6 +20263,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "" @@ -20187,6 +20412,12 @@ msgstr "" msgid "Please select single object." msgstr "" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "" @@ -20196,6 +20427,9 @@ msgstr "" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "" @@ -20341,6 +20575,100 @@ msgstr "" msgid "Calculating, please wait..." msgstr "" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 4bfa89ed68..d307c79b6c 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 21:07-0300\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -122,7 +122,7 @@ msgid "On highlighted overhangs only" msgstr "Solo en voladizos resaltados" msgid "Erase all" -msgstr "" +msgstr "Borrar todo" msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" @@ -197,6 +197,15 @@ msgstr "Hecho" msgid "Support Generated" msgstr "Soportes generados" +msgid "Entering Paint-on supports" +msgstr "Entrando al mecanismo de pintar soportes" + +msgid "Leaving Paint-on supports" +msgstr "Saliendo del mecanismo de pintar soportes" + +msgid "Paint-on supports editing" +msgstr "Pintar soportes" + msgid "Gizmo-Place on Face" msgstr "Herramienta de selección de faceta como base" @@ -285,6 +294,15 @@ msgstr "Pintado con: Filamento %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "Entrando al mecanismo de pintar color" + +msgid "Leaving color painting" +msgstr "Saliendo del mecanismo de pintar color" + +msgid "Color painting editing" +msgstr "Edición de pintura de colores" + msgid "Paint-on fuzzy skin" msgstr "Pintar piel difusa" @@ -306,6 +324,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Habilitar piel difusa pintada para este objeto" +msgid "Entering Paint-on fuzzy skin" +msgstr "Entrando al mecanismo de pintar piel difusa" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "Saliendo del mecanismo de pintar piel difusa" + +msgid "Paint-on fuzzy skin editing" +msgstr "Pintar piel difusa" + msgid "Move" msgstr "Mover" @@ -350,10 +377,10 @@ msgid "Fixed step drag" msgstr "Arrastre de paso fijo" msgid "Context Menu" -msgstr "" +msgstr "Menú contextual" msgid "Toggle Auto-Drop" -msgstr "" +msgstr "Activar/desactivar dejar caer automáticamente" msgid "Single sided scaling" msgstr "Escalado de un solo lado" @@ -509,7 +536,7 @@ msgid "Multiple" msgstr "Múltiple" msgid "Count" -msgstr "" +msgstr "Contar" msgid "Gap" msgstr "Brecha" @@ -698,6 +725,15 @@ msgstr "Corte por Línea" msgid "Delete connector" msgstr "Borrar conector" +msgid "Entering Cut gizmo" +msgstr "Entrando al mecanismo de corte" + +msgid "Leaving Cut gizmo" +msgstr "Saliendo del mecanismo de corte" + +msgid "Cut gizmo editing" +msgstr "Edición de objetos recortados" + msgid "Mesh name" msgstr "Nombre de la malla" @@ -880,7 +916,7 @@ msgid "Advanced" msgstr "Avanzado" msgid "Reset all options except the text and operation" -msgstr "" +msgstr "Restablecer todas las opciones excepto el texto y la operación" msgid "" "The text cannot be written using the selected font. Please try choosing a " @@ -1581,6 +1617,12 @@ msgstr "Distancia paralela:" msgid "Flip by Face 2" msgstr "Voltear por la cara 2" +msgid "Entering Measure gizmo" +msgstr "Entrando al mecanismo de medición" + +msgid "Leaving Measure gizmo" +msgstr "Saliendo del mecanismo de medición" + msgid "Assemble" msgstr "Agrupar" @@ -1620,6 +1662,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montaje de cara y cara" +msgid "Entering Assembly gizmo" +msgstr "Entrando al mecanismo de ensamblaje" + +msgid "Leaving Assembly gizmo" +msgstr "Saliendo del mecanismo de ensamblaje" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1806,16 +1854,16 @@ msgid "Info" msgstr "Información" msgid "Loading printer & filament profiles" -msgstr "" +msgstr "Cargando perfiles de impresora y filamento" msgid "Creating main window" -msgstr "" +msgstr "Creación de la ventana principal" msgid "Loading current preset" -msgstr "" +msgstr "Cargando el preajuste actual" msgid "Showing main window" -msgstr "" +msgstr "Mostrando la ventana principal" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" @@ -1873,12 +1921,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Actualmente estás en modo sigiloso. Para iniciar sesión en la nube, primero " +"debes desactivar el modo sigiloso." msgid "Stealth Mode" -msgstr "" +msgstr "Modo sigiloso" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Salir del modo sigiloso" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1900,20 +1950,53 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflicto de sincronización en la nube: este perfil tiene una versión más " +"reciente en OrcaCloud.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflicto de sincronización en la nube: ya existe un perfil con este nombre " +"en OrcaCloud.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." + +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" +"Conflicto de sincronización en la nube: ya se ha eliminado de la nube un " +"perfil con el mismo nombre.\n" +"Al hacer clic en «Eliminar», se borrará tu perfil local. Al hacer clic en " +"«Forzar envío», se sobrescribirá con tu perfil local." + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" +"Conflicto de sincronización en la nube: se ha producido un conflicto " +"inesperado o no identificado con los perfiles.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Forzar el envío sobrescribirá la copia en la nube con los cambios que hayas " +"realizado en los ajustes preestablecidos locales.\n" +"¿Deseas continuar?" msgid "Resolve cloud sync conflict" -msgstr "" +msgstr "Resolver conflictos de sincronización con la nube" msgid "Retrieving printer information, please try again later." msgstr "" @@ -2235,7 +2318,7 @@ msgid "Orca Cube" msgstr "Cubo Orca" msgid "OrcaSliced Combo" -msgstr "" +msgstr "Combo OrcaSliced" msgid "Orca Tolerance Test" msgstr "Test de tolerancia Orca" @@ -3218,6 +3301,45 @@ msgstr "La temperatura máxima no puede superar " msgid "The minmum temperature should not be less than " msgstr "La temperatura mínima no debe ser inferior a " +msgid "Type to filter..." +msgstr "Escribe para filtrar..." + +msgid "All" +msgstr "Todas" + +msgid "No selected items..." +msgstr "No hay artículos seleccionados..." + +msgid "All items selected..." +msgstr "Todos los elementos seleccionados..." + +msgid "No matching items..." +msgstr "No se han encontrado resultados..." + +msgid "Deselect All" +msgstr "Deseleccionar Todo" + +msgid "Select visible" +msgstr "Seleccionar elementos visibles" + +msgid "Deselect visible" +msgstr "Desmarcar los elementos visibles" + +msgid "Filter selected" +msgstr "Filtrar seleccionados" + +msgid "Filter nonSelected" +msgstr "Filtrar no seleccionados" + +msgid "Simple settings" +msgstr "Ajustes básicos" + +msgid "Advanced settings" +msgstr "Ajustes avanzados" + +msgid "Expert settings" +msgstr "Configuración para expertos" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3508,6 +3630,9 @@ msgstr "La fuente no tiene ninguna forma para el texto dado." msgid "There is no valid surface for text projection." msgstr "No hay ninguna superficie válida para la proyección de texto." +msgid "An unexpected error occurred" +msgstr "Se ha producido un error inesperado" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Preacondicionamiento térmico para la optimización de la primera capa" @@ -5661,7 +5786,7 @@ msgid "Outline" msgstr "Contorno" msgid "Realistic View" -msgstr "" +msgstr "Vista realista" msgid "Perspective" msgstr "Perspectiva" @@ -5968,7 +6093,7 @@ msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" msgid "Troubleshoot Center" -msgstr "" +msgstr "Centro de resolución de problemas" msgid "Open Network Test" msgstr "Abrir Test de Red" @@ -6111,13 +6236,15 @@ msgid "Export" msgstr "Exportar" msgid "Sync Presets" -msgstr "" +msgstr "Sincronizar perfiles" msgid "Pull and apply the latest presets from OrcaCloud" -msgstr "" +msgstr "Descarga y aplica los últimos ajustes preestablecidos de OrcaCloud" msgid "You must be logged in to sync presets from cloud." msgstr "" +"Debes haber iniciado sesión para sincronizar los ajustes preestablecidos " +"desde la nube." msgid "Quit" msgstr "Salir del programa" @@ -6247,7 +6374,7 @@ msgid "Preset Bundle" msgstr "Paquete de perfiles" msgid "Syncing presets from cloud…" -msgstr "" +msgstr "Sincronizando perfiles desde la nube…" msgid "Help" msgstr "Ayuda" @@ -7349,10 +7476,10 @@ msgid "Model file downloaded." msgstr "Archivo de modelo descargado." msgid "Pull" -msgstr "" +msgstr "Descargar" msgid "Force push" -msgstr "" +msgstr "Forzar envío" msgid "Shared profiles may be available for this printer." msgstr "" @@ -8421,10 +8548,10 @@ msgstr "" "se exportarán las partes positivas." msgid "Flashforge host is not available." -msgstr "" +msgstr "El servidor de Flashforge no está disponible." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "No puedo iniciar sesión en la impresora Flashforge." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -8731,7 +8858,7 @@ msgstr "" "compartidos cuando se cambie la impresora seleccionada." msgid "Use window buttons on left side" -msgstr "" +msgstr "Utiliza los botones de la ventana situados a la izquierda" msgid "(Requires restart)" msgstr "(Requiere reinicio)" @@ -8812,9 +8939,6 @@ msgstr "Agrupar perfiles de filamento del usuario" msgid "Group user filament presets based on selection" msgstr "Agrupar perfiles de filamento del usuario según la selección" -msgid "All" -msgstr "Todas" - msgid "By type" msgstr "Por tipo" @@ -8960,25 +9084,31 @@ msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Si se activa, invierte la dirección del zoom con la rueda del ratón." msgid "Pan" -msgstr "" +msgstr "Desplazamiento" msgid "Left Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón izquierdo del ratón" msgid "Set the action that dragging the left mouse button should perform." msgstr "" +"Establece la acción que se debe realizar al arrastrar el botón izquierdo del " +"ratón." msgid "Middle Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón central del ratón" msgid "Set the action that dragging the middle mouse button should perform." msgstr "" +"Configura la acción que se debe realizar al arrastrar el botón central del " +"ratón." msgid "Right Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón derecho del ratón" msgid "Set the action that dragging the right mouse button should perform." msgstr "" +"Establece la acción que se debe realizar al arrastrar el botón derecho del " +"ratón." msgid "Clear my choice on..." msgstr "Limpiar mi elección en..." @@ -9005,31 +9135,33 @@ msgstr "" "cargar el archivo." msgid "Graphics" -msgstr "" +msgstr "Gráficos" msgid "Phong shading" -msgstr "" +msgstr "Sombreado Phong" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Utiliza sombreado Phong en la vista realista." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "Oclusión ambiental SSAO" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Aplica SSAO en vista realista." msgid "Shadows" -msgstr "" +msgstr "Sombras" msgid "Renders cast shadows on the plate in realistic view." msgstr "" +"Los objetos renderizados proyectan sombras sobre la cama en la vista " +"realista." msgid "Anti-aliasing" -msgstr "" +msgstr "Anti-aliasing" msgid "MSAA Multiplier" -msgstr "" +msgstr "Multiplicador MSAA" msgid "" "Set the Multi-Sample Anti-Aliasing level.\n" @@ -9041,12 +9173,21 @@ msgid "" "\n" "Requires application restart." msgstr "" +"Ajusta el nivel de suavizado por muestreo múltiple.\n" +"Los valores más altos producen bordes más suaves, pero el impacto en el " +"rendimiento es exponencial.\n" +"Los valores más bajos mejoran el rendimiento, a costa de que los bordes " +"queden dentados.\n" +"Si se desactiva, se recomienda habilitar FXAA para reducir los bordes " +"dentados con un impacto mínimo en el rendimiento.\n" +"\n" +"Es necesario reiniciar la aplicación." msgid "Disabled" msgstr "Desactivado" msgid "FXAA post-processing" -msgstr "" +msgstr "Posprocesamiento FXAA" msgid "" "Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" @@ -9054,26 +9195,35 @@ msgid "" "\n" "Takes effect immediately." msgstr "" +"Aplica el suavizado de bordes rápido aproximado (FXAA) como un pase en el " +"espacio de la pantalla.\n" +"Resulta útil para desactivar o reducir la configuración de MSAA con el fin " +"de mejorar el rendimiento.\n" +"\n" +"Surte efecto de inmediato." msgid "FPS" -msgstr "" +msgstr "FPS" msgid "FPS cap" -msgstr "" +msgstr "Limite de FPS" msgid "(0 = unlimited)" -msgstr "" +msgstr "(0 = ilimitado)" msgid "" "Limits viewport frame rate to reduce GPU load and power usage.\n" "Set to 0 for unlimited frame rate." msgstr "" +"Limita la frecuencia de fotogramas de la ventana gráfica para reducir la " +"carga de la GPU y el consumo de energía.\n" +"Establece el valor en 0 para una frecuencia de fotogramas ilimitada." msgid "Show FPS overlay" -msgstr "" +msgstr "Mostrar FPS en pantalla" msgid "Displays current viewport FPS in the top-right corner." -msgstr "" +msgstr "Muestra los FPS en la esquina superior derecha." msgid "Login region" msgstr "Región de inicio de sesión" @@ -9087,12 +9237,17 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Esto desactiva todas las funciones en la nube, incluida la sincronización de " +"perfiles con Orca Cloud. Los usuarios que prefieran trabajar totalmente sin " +"conexión pueden activar esta opción.\n" +"Nota: Cuando el modo sigiloso está activado, no se realizará ninguna copia " +"de seguridad de tus perfiles de usuario en Orca Cloud." msgid "Hide login side panel" -msgstr "" +msgstr "Ocultar el panel lateral de inicio de sesión" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Ocultar el panel lateral de inicio de sesión en la página de inicio." msgid "Network test" msgstr "Prueba de red" @@ -9200,6 +9355,16 @@ msgstr "Descargar plugin de red" msgid "Associate files to OrcaSlicer" msgstr "Asociar archivos a OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" +"Las asociaciones de archivos para la versión de Microsoft Store se gestionan " +"desde la configuración de Windows." + +msgid "Open Windows Default Apps Settings" +msgstr "Abrir la configuración de aplicaciones predeterminadas de Windows" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Asociar archivos 3MF a OrcaSlicer" @@ -9245,21 +9410,28 @@ msgid "Skip AMS blacklist check" msgstr "Evitar la comprobación de lista negra de AMS" msgid "(Experimental) Keep painted feature after mesh change" -msgstr "" +msgstr "(Experimental) Mantener el elemento pintado tras un cambio de malla" msgid "" "Attempt to keep painted features (color/seam/support/fuzzy etc.) after " "changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" "Highly experimental! Slow and may create artifact." msgstr "" +"Intenta conservar las característica pintadas (color, costuras, soportes, " +"piel difusa, etc.) tras modificar la malla del objeto (por ejemplo, al " +"cortar, volver a cargar desde el disco, simplificar, corregir, etc.).\n" +"¡Muy experimental! Es lento y puede generar artefactos." msgid "Show unsupported presets" -msgstr "" +msgstr "Mostrar ajustes preestablecidos no compatibles" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Mostrar los ajustes preestablecidos incompatibles o no compatibles en los " +"menús desplegables de impresoras y filamentos. Estos ajustes preestablecidos " +"no se pueden seleccionar." msgid "Allow Abnormal Storage" msgstr "Permitir almacenamiento anómalo" @@ -10088,6 +10260,9 @@ msgstr "" "versión del firmware admite esta operación o verifique si la impresora " "funciona correctamente." +msgid "Sending failed, please try again!" +msgstr "El envío ha fallado, ¡inténtalo de nuevo!" + msgid "Slice ok." msgstr "Laminado correcto." @@ -10552,6 +10727,9 @@ msgstr "Configurar velocidad para puentes externos e internos" msgid "Travel speed" msgstr "Velocidad de desplazamiento" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -10923,6 +11101,10 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"La opción «Retracción antes de purgado» solo puede establecerse al 100 % " +"cuando se utiliza el modo de retracción por firmware.\n" +"\n" +"¿Debo configurarla al 100 % para habilitar la retracción por firmware?" msgid "Firmware Retraction" msgstr "Retracción de firmware" @@ -11076,7 +11258,7 @@ msgid "Discard" msgstr "Descartar" msgid "the new profile" -msgstr "" +msgstr "el nuevo perfil" #, boost-format msgid "" @@ -11085,6 +11267,10 @@ msgid "" "discarding any changes made in\n" "\"%2%\"." msgstr "" +"Cambiar a\n" +"«%1%»\n" +"descartando cualquier cambio realizado en\n" +"«%2%»." #, boost-format msgid "" @@ -11093,6 +11279,10 @@ msgid "" "will be transferred to\n" "\"%2%\"." msgstr "" +"Todos los ajustes de «Nuevo valor» modificados en\n" +"«%1%»\n" +"se transferirán a\n" +"«%2%»." #, boost-format msgid "" @@ -11100,6 +11290,9 @@ msgid "" "\"%1%\"\n" "and \"%2%\" will open without any changes." msgstr "" +"Todos los ajustes de «Nuevo valor» se guardan en\n" +"\"%1%\"\n" +"y \"%2%\" se abrirá sin cambios." msgid "Click the right mouse button to display the full text." msgstr "Pulse el botón derecho del ratón para mostrar el texto completo." @@ -11452,9 +11645,6 @@ msgstr "" "filamentos de la impresora. Los filamentos de impresora no utilizados se " "añadirán automáticamente al final de la lista." -msgid "Advanced settings" -msgstr "Ajustes avanzados" - msgid "Add unused AMS filaments to filaments list." msgstr "Añadir filamentos AMS sin usar a la lista de filamentos." @@ -11690,7 +11880,7 @@ msgid "Login" msgstr "Inicio de sesión" msgid "Login failed. Please try again." -msgstr "" +msgstr "El inicio de sesión ha fallado. Inténtalo de nuevo." msgid "[Action Required] " msgstr "[Acción requerida] " @@ -11736,7 +11926,7 @@ msgid "Rotate View" msgstr "Rotación de vista" msgid "Middle mouse button" -msgstr "" +msgstr "Botón central del ratón" msgid "Zoom View" msgstr "Zoom de vista" @@ -11871,7 +12061,7 @@ msgid "Zoom out" msgstr "Alejar" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Activar/desactivar la impresión para el objeto/pieza" msgid "Switch between Prepare/Preview" msgstr "Cambiar entre Preparar/Previsualizar" @@ -11964,12 +12154,25 @@ msgstr "Un nuevo plug-in de red (%s) está disponible. ¿Desea instalarlo?" msgid "New version of Orca Slicer" msgstr "Nueva versión de Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "Echa un vistazo en Microsoft Store" + msgid "Check on Github" msgstr "Ver en Github" +msgid "Open Microsoft Store" +msgstr "Abrir Microsoft Store" + msgid "Skip this Version" msgstr "Saltar esta Versión" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" +"Hay una nueva versión disponible: %s. Actualiza OrcaSlicer desde la Tienda " +"Microsoft." + msgid "Confirm and Update Nozzle" msgstr "Confirmar y Actualizar la Boquilla" @@ -12085,6 +12288,9 @@ msgstr "Módulo de corte" msgid "Auto Fire Extinguishing System" msgstr "Sistema de extinción automática de incendios" +msgid "Beta" +msgstr "Beta" + msgid "Update firmware" msgstr "Actualizar firmware" @@ -12648,16 +12854,21 @@ msgstr "La altura de la capa no puede superar el diámetro de la boquilla." msgid "Bridge line width must not exceed nozzle diameter" msgstr "" +"El ancho de la línea del puente no debe superar el diámetro de la boquilla" msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"Se ha encontrado «G92 E0» en «before_layer_change_gcode», pero las letras G " +"y E no están en mayúsculas. Por favor, cámbialas por «G92 E0» en mayúsculas." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"Se ha encontrado «G92 E0» en layer_change_gcode, pero las letras G y E no " +"están en mayúsculas. Por favor, cámbialas por «G92 E0» en mayúsculas." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12672,11 +12883,15 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"Se ha detectado «G92 E0» en «before_layer_change_gcode», lo cual es " +"incompatible con el direccionamiento absoluto del extrusor." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" +"Se ha detectado «G92 E0» en el archivo layer_change_gcode, lo cual es " +"incompatible con el direccionamiento absoluto del extrusor." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -12782,29 +12997,39 @@ msgid "Extruder printable area" msgstr "Área imprimible del extrusor" msgid "Support parallel printheads" -msgstr "" +msgstr "Compatibilidad con cabezales de impresión paralelos" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." msgstr "" +"Activa la configuración de la impresora para los equipos que pueden utilizar " +"varios cabezales de impresión en paralelo." msgid "Parallel printheads count" -msgstr "" +msgstr "Número de cabezales de impresión paralelos" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." msgstr "" +"Configure el número de cabezales de impresión en paralelo para máquinas como " +"la impresora OrangeStorm Giga." msgid "Parallel printheads bed exclude areas" msgstr "" +"Las plataformas de los cabezales de impresión paralelos excluyen ciertas " +"zonas" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Lista ordenada de áreas excluidas de la cama según el número de cabezales de " +"impresión paralelos. El punto 1 se aplica a un cabezal de impresión, el " +"punto 2 a dos cabezales, y así sucesivamente. Deje un punto en blanco si no " +"hay áreas excluidas." msgid "Bed exclude area" msgstr "Área excluida de la cama" @@ -12951,10 +13176,11 @@ msgstr "" "autenticación." msgid "Serial Number" -msgstr "" +msgstr "Número de serie" msgid "Flashforge local API requires the printer serial number." msgstr "" +"La API local de Flashforge requiere el número de serie de la impresora." msgid "Name of the printer." msgstr "Nombre de la impresora." @@ -13327,6 +13553,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Anulación del ángulo de puente externo.\n" +"Si se deja en cero, el ángulo de puente se calculará automáticamente para " +"cada puente concreto.\n" +"De lo contrario, se utilizará el ángulo indicado según:\n" +" - Las coordenadas absolutas\n" +" - Las coordenadas absolutas + rotación del modelo: si está activada la " +"opción «Alinear la dirección de relleno al modelo»\n" +" - El ángulo automático óptimo + este valor: si está activada la opción " +"«Ángulo de puente relativo»\n" +"\n" +"Utiliza 180° para un ángulo absoluto de cero." msgid "Internal bridge infill direction" msgstr "Dirección de relleno de puentes internos" @@ -13344,20 +13581,33 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Anulación del ángulo de puente interno.\n" +"Si se deja en cero, el ángulo de puente se calculará automáticamente para " +"cada puente concreto.\n" +"De lo contrario, se utilizará el ángulo indicado según:\n" +" - Las coordenadas absolutas\n" +" - Las coordenadas absolutas + rotación del modelo: si está activada la " +"opción «Alinear la dirección de relleno al modelo»\n" +" - El ángulo automático óptimo + este valor: si está activada la opción " +"«Ángulo de puente relativo»\n" +"\n" +"Utiliza 180° para un ángulo absoluto de cero." msgid "Relative bridge angle" -msgstr "" +msgstr "Ángulo de puente relativo" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Cuando está activada, los valores del ángulo del puente se suman a la " +"dirección del puente calculada automáticamente, en lugar de anularla." msgid "External bridge density" msgstr "Densidad de puente externo" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13371,18 +13621,32 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" +"Controla la densidad (espaciado) de las líneas de puente externas.\n" +"En teoría, un 100 % equivale a un puente completo, pero debido a la " +"tendencia de las extrusiones de los puentes a combarse, es posible que un " +"100 % no sea suficiente.\n" +"\n" +"- Densidad superior al 100 % (máximo recomendado: 125 %):\n" +" - Ventajas: produce superficies de puente más lisas, ya que las líneas " +"superpuestas proporcionan un soporte adicional durante la impresión.\n" +" - Inconvenientes: puede provocar una sobreextrusión, lo que puede reducir " +"la calidad de las superficies inferior y superior y aumentar el riesgo de " +"deformación.\n" +"\n" +"- Densidad inferior al 100 % (mínimo 10 %):\n" +" - Ventajas: Puede crear una primera capa con aspecto de hilo. Es más " +"rápido y se enfría mejor, ya que hay más espacio para que el aire circule " +"alrededor del puente extruido.\n" +" - Desventajas: Puede provocar combaduras y un acabado superficial de menor " +"calidad." msgid "Internal bridge density" msgstr "Densidad de puente interno" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13402,6 +13666,28 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Controla la densidad (espaciado) de las líneas de los puentes internos.\n" +"Los puentes internos actúan como soporte intermedio entre el relleno " +"disperso y el relleno sólido de la superficie superior, y pueden influir " +"considerablemente en la calidad de esta última.\n" +"\n" +"- Densidad superior al 100 % (máximo recomendado: 125 %):\n" +" - Ventajas: mejora la resistencia de los puentes internos y el soporte " +"bajo las capas superiores, lo que reduce el hundimiento y mejora el acabado " +"de la superficie superior.\n" +" - Inconvenientes: aumenta el consumo de material y el tiempo de impresión; " +"una densidad excesiva puede provocar sobreextrusión y tensiones internas.\n" +"\n" +"- Densidad inferior al 100 % (mínimo 10 %):\n" +" - Ventajas: puede reducir el efecto de almohadilla y mejorar la " +"refrigeración (mayor flujo de aire a través del puente), y puede acelerar la " +"impresión.\n" +" - Inconvenientes: puede reducir el soporte interno, aumentando el riesgo " +"de hundimiento y defectos en la superficie superior.\n" +"\n" +"Esta opción funciona especialmente bien cuando se combina con la segunda " +"opción de puente interno sobre el relleno para mejorar aún más los puentes " +"antes de que se extruya el relleno sólido." msgid "Bridge flow ratio" msgstr "Factor de flujo en puentes" @@ -13416,17 +13702,34 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este valor determina el grosor de la capa externa (visible) del puente.\n" +"Valores superiores a 1,0: aumentan la cantidad de material manteniendo el " +"espaciado entre líneas. Esto puede mejorar el contacto entre líneas y la " +"resistencia.\n" +"Valores inferiores a 1,0: reducen la cantidad de material al tiempo que " +"ajustan el espaciado entre líneas para mantener el contacto. Esto puede " +"mejorar el colgado.\n" +"\n" +"El flujo de puente real utilizado se calcula multiplicando este valor por la " +"relación de flujo del filamento y, si se ha establecido, por la relación de " +"flujo del objeto." -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"Ancho de línea del puente. Si se expresa en porcentaje, se calculará sobre " +"el diámetro de la boquilla.\n" +"Se recomienda utilizarlo con una densidad de puente o una relación de flujo " +"de puente más altas.\n" +"\n" +"El valor máximo es del 100 % o el diámetro de la boquilla.\n" +"Si se establece en 0, el ancho de línea seguirá el ancho del relleno sólido " +"interno." msgid "Internal bridge flow ratio" msgstr "Factor de flujo de puentes internos" @@ -13443,6 +13746,19 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este valor determina el grosor de la capa de puente interna. Se trata de la " +"primera capa que se aplica sobre el relleno disperso, por lo que aumentarlo " +"puede mejorar la resistencia y la calidad de la capa superior.\n" +"Valores superiores a 1,0: Aumentan la cantidad de material manteniendo el " +"espaciado entre líneas. Esto puede mejorar el contacto entre líneas y la " +"resistencia.\n" +"Valores inferiores a 1,0: Reducen la cantidad de material ajustando el " +"espaciado entre líneas para mantener el contacto. Esto puede mejorar el " +"hundimiento.\n" +"\n" +"El flujo de puente real utilizado se calcula multiplicando este valor por la " +"relación de flujo del filamento y, si se ha configurado, por la relación de " +"flujo del objeto." msgid "Top surface flow ratio" msgstr "Factor de flujo en superficie superior" @@ -13687,7 +14003,7 @@ msgstr "" "puentes no pueden ser anclados." msgid "Reverse on even" -msgstr "Revertir en sentido inverso" +msgstr "Invertir en los pares" msgid "Overhang reversal" msgstr "Inversión de voladizo" @@ -13823,6 +14139,42 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Active esta opción para ralentizar la impresión en áreas donde los " +"perímetros puedan haberse curvado hacia arriba.\n" +"\n" +"Por ejemplo, se aplicará una ralentización adicional al imprimir voladizos " +"en esquinas afiladas, como la parte frontal del casco de Benchy, reduciendo " +"la curvatura que se acumula en varias capas.\n" +"\n" +"Generalmente se recomienda tener esta opción activada, a menos que la " +"refrigeración de la impresora sea lo suficientemente potente o la velocidad " +"de impresión lo suficientemente baja como para evitar la curvatura de los " +"perímetros.\n" +"Si imprime con una alta velocidad de perímetro externo, este parámetro puede " +"generar artefactos en las paredes al reducir la velocidad, debido a la " +"posible gran variación en las velocidades de impresión, lo que impide que el " +"extrusor pueda seguir el ritmo del cambio de flujo solicitado.\n" +"\n" +"La causa principal de estos artefactos probablemente sea una ligera " +"desajustación en el ajuste de la presión, especialmente cuando se combina " +"con un tiempo de suavizado de presión elevado.\n" +"\n" +"Recomendaciones al activar esta opción:\n" +"1. Reduzca el tiempo de suavizado de avance de presión a 0,015 - 0,02 para " +"que el extrusor reaccione rápidamente a los cambios de velocidad.\n" +"2. Aumente la velocidad mínima de impresión para limitar la magnitud de la " +"ralentización y reducir la variación entre los segmentos rápidos y lentos.\n" +"\n" +"3. Si aún aparecen artefactos, active la función de suavizado de la " +"velocidad de extrusión (ERS) para suavizar aún más las transiciones del " +"flujo.\n" +"\n" +"Nota: Cuando esta opción está activada, los perímetros en voladizo se tratan " +"como tales, lo que significa que se aplica la velocidad de voladizo incluso " +"si el perímetro en voladizo forma parte de un puente.\n" +"\n" +"Por ejemplo, cuando los perímetros sobresalen al 100%, sin ninguna pared que " +"los sostenga por debajo, se aplicará la velocidad de voladizo del 100%." msgid "mm/s or %" msgstr "mm/s o %" @@ -14117,6 +14469,12 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Si se activa, la extrusión de puentes utiliza una altura de línea igual al " +"diámetro de la boquilla.\n" +"Esto aumenta la resistencia y la fiabilidad de los puentes, lo que permite " +"tramos más largos, pero puede empeorar el aspecto.\n" +"Si se desactiva, los puentes pueden tener mejor aspecto, pero por lo general " +"solo son fiables para tramos más cortos." msgid "Thick internal bridges" msgstr "Puentes gruesos internos" @@ -14129,6 +14487,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Si se activa, la extrusión de los puentes internos utiliza una altura de " +"línea igual al diámetro de la boquilla.\n" +"Esto aumenta la resistencia y la fiabilidad de los puentes internos cuando " +"se imprime sobre un relleno escaso, pero puede empeorar el aspecto.\n" +"Si se desactiva, los puentes internos pueden tener mejor aspecto, pero " +"pueden ser menos fiables sobre un relleno escaso." msgid "Extra bridge layers (beta)" msgstr "Capas extra de puente (beta)" @@ -14906,16 +15270,18 @@ msgid "Auto For Match" msgstr "Auto para Coincidencia" msgid "Enable filament dynamic map" -msgstr "" +msgstr "Habilitar mapa dinámico de filamentos" msgid "Enable dynamic filament mapping during print." -msgstr "" +msgstr "Activar la asignación dinámica de filamentos durante la impresión." msgid "Has filament switcher" -msgstr "" +msgstr "Cuenta con un selector de filamentos" msgid "Printer has a filament switcher hardware (e.g., AMS)." msgstr "" +"La impresora cuenta con un dispositivo de cambio de filamento (por ejemplo, " +"AMS)." msgid "Flush temperature" msgstr "Temperatura de descarga" @@ -15415,6 +15781,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Alinea las direcciones de relleno, puente, alisado y relleno superficial " +"para que sigan la orientación del modelo sobre la placa de impresión.\n" +"Cuando está activada, las direcciones giran junto con el modelo para " +"mantener sus características de resistencia óptimas." msgid "Insert solid layers" msgstr "Insertar capas sólidas" @@ -15440,9 +15810,9 @@ msgstr "" "soporta." msgid "Z-buckling bias optimization (experimental)" -msgstr "" +msgstr "Optimización del desplazamiento por deformación en Z (experimental)" -#, c-format, boost-format +#, fuzzy, c-format, boost-format msgid "" "Tightens the gyroid wave along the Z (vertical) axis at low infill density " "to shorten the effective vertical column length and improve Z-axis " @@ -15450,6 +15820,12 @@ msgid "" "~30% sparse infill density and above. Only applies when Sparse infill " "pattern is set to Gyroid." msgstr "" +"Ajusta la onda giroide a lo largo del eje Z (vertical) con una densidad de " +"relleno baja para acortar la longitud efectiva de la columna vertical y " +"mejorar la resistencia al pandeo por compresión en el eje Z. Se mantiene el " +"consumo de filamento. No tiene efecto con una densidad de relleno escasa de " +"aproximadamente el ~30% o superior. Solo se aplica cuando el patrón de " +"relleno escaso está configurado en «Giroide»." msgid "Sparse infill pattern" msgstr "Patrón de relleno de baja densidad" @@ -15544,25 +15920,32 @@ msgstr "" "panal puro." msgid "Lightning overhang angle" -msgstr "" +msgstr "Ángulo de saliente del rayo" msgid "Maximum overhang angle for Lightning infill support propagation." msgstr "" +"Ángulo máximo de voladizo para la propagación de los soportes de relleno en " +"Rayo." msgid "Prune angle" -msgstr "" +msgstr "Ángulo de recorte" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Determina con qué intensidad se podan las ramas de los rayos cortas o sin " +"soporte.\n" +"Este ángulo se convierte internamente en una distancia por capa." msgid "Straightening angle" -msgstr "" +msgstr "Ángulo de enderezado" msgid "Maximum straightening angle used to simplify Lightning branches." msgstr "" +"Ángulo máximo de enderezamiento utilizado para simplificar las ramas del " +"Rayo." msgid "Sparse infill anchor length" msgstr "Longitud del anclaje de relleno de baja densidad" @@ -15705,9 +16088,6 @@ msgstr "El max_accel_to_decel de Klipper se ajustará a este %% de aceleración. msgid "Default jerk." msgstr "Jerk por defecto." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -16355,7 +16735,7 @@ msgstr "" "Ajústelo a 0 para desactivarlo." msgid "Minimum non-zero part cooling fan speed" -msgstr "" +msgstr "Velocidad mínima no nula del ventilador de refrigeración" msgid "" "Some part-cooling fans cannot start spinning when commanded below a certain " @@ -16374,6 +16754,25 @@ msgid "" "below the one you know it can actually spool at.\n" "Set to 0 to deactivate." msgstr "" +"Algunos ventiladores de refrigeración de partes no pueden ponerse en marcha " +"cuando se les envía una orden por debajo de un determinado ciclo de trabajo " +"PWM. Si se establece un valor superior a 0, cualquier orden de ventilador de " +"refrigeración de partes distinta de cero se elevará al menos hasta este " +"porcentaje para que el ventilador se ponga en marcha de forma fiable. Un " +"comando de ventilador de 0 (ventilador apagado) siempre se respeta al pie de " +"la letra. Este límite se aplica después de todos los demás cálculos del " +"ventilador (rampa de la primera capa, interpolación del tiempo de capa, " +"anulaciones de voladizo/puente/interfaz de soporte/alisado), por lo que el " +"escalado sigue funcionando dentro del rango [este valor, 100 %].\n" +"Si tu firmware ya desactiva el ventilador por debajo de un umbral (por " +"ejemplo, [fan] off_below: 0.10 de Klipper apaga el ventilador siempre que el " +"ciclo de trabajo ordenado sea inferior al 10 %), lo ideal es que esta opción " +"y el umbral del firmware se establezcan en el mismo valor. Hacer que " +"coincidan (por ejemplo, off_below: 0,10 en Klipper y 10 % aquí) garantiza " +"que el cortador nunca emita un valor distinto de cero que el firmware " +"descartaría silenciosamente, y que el ventilador nunca reciba un valor " +"inferior al que sabes que realmente puede alcanzar.\n" +"Establece en 0 para desactivar." msgid "%" msgstr "%" @@ -16642,6 +17041,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir un relleno interno poco denso.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17542,20 +17943,24 @@ msgstr "" "utiliza la velocidad de puente." msgid "Outer walls" -msgstr "" +msgstr "Paredes exteriores" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir las paredes exteriores.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "Inner walls" -msgstr "" +msgstr "Paredes internas" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir las paredes interiores.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18271,16 +18676,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir el relleno sólido interno.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir la superficie superior.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir la superficie inferior.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18491,7 +18902,7 @@ msgid "Enable filament ramming" msgstr "Habilitar compactación de filamento" msgid "Tool change on wipe tower" -msgstr "" +msgstr "Cambio de herramienta en la torre de purga" msgid "" "Force the toolhead to travel to the wipe tower before issuing the tool " @@ -18502,6 +18913,14 @@ msgid "" "this option if you want the tool change to always be issued above the wipe " "tower instead." msgstr "" +"Obliga al cabezal a desplazarse hasta la torre de purga antes de emitir el " +"comando de cambio de herramienta (Tx). Solo es relevante para impresoras con " +"múltiples extrusores (múltiples cabezales) que utilicen una torre de " +"limpieza de tipo 2. Por defecto, Orca omite el desplazamiento en máquinas " +"con múltiples cabezales porque el firmware se encarga del cambio de cabezal, " +"lo que puede provocar que el comando Tx se emita por encima de la pieza " +"impresa. Habilita esta opción si deseas que el cambio de herramienta se " +"emita siempre por encima de la torre de purga." msgid "No sparse layers (beta)" msgstr "Sin capas de baja densidad (beta)" @@ -18671,6 +19090,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filamento para imprimir la base de soporte y la balsa.\n" +"«Predeterminado» significa que no hay un filamento específico para el " +"soporte y se utiliza el filamento actual." msgid "Avoid interface filament for base" msgstr "Evitar usar filamento de interfaz para la base" @@ -18705,6 +19127,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filamento para la interfaz de soporte de impresión.\n" +"«Predeterminado» significa que no hay ningún filamento específico para la " +"interfaz de soporte y se utiliza el filamento actual." msgid "Top interface layers" msgstr "Capas de la interfaz superior" @@ -19822,6 +20247,7 @@ msgstr "Valor no válido cuando está activado el modo jarrón espiral: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" +"El ancho de la línea del puente no debe superar el diámetro de la boquilla:" msgid "too large line width " msgstr "ancho de línea excesivo " @@ -20087,10 +20513,10 @@ msgstr "" "3:información, 4:depuración, 5:rastreo\n" msgid "Log file" -msgstr "" +msgstr "Archivo de registro" msgid "Redirects debug logging to file.\n" -msgstr "" +msgstr "Redirige el registro de depuración a un archivo.\n" msgid "Enable timelapse for print" msgstr "Habilitar timelapse para impresión" @@ -21655,13 +22081,13 @@ msgid "Top Surface Pattern" msgstr "Patrón de superficie superior" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Elige una posición para el color seleccionado" msgid "Material in the material station" -msgstr "" +msgstr "Material en la estación de materiales" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Solo se pueden seleccionar materiales del mismo tipo." msgid "Send G-code to printer host" msgstr "Enviar G-Code al host de impresión" @@ -21687,46 +22113,56 @@ msgid "Upload" msgstr "Cargar" msgid "Leveling before print" -msgstr "" +msgstr "Nivelación antes de la impresión" msgid "Time-lapse" msgstr "Time-lapse" msgid "Enable IFS" -msgstr "" +msgstr "Habilitar IFS" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "Se han detectado %d posiciones IFS en la impresora." msgid "This printer does not report a material station." -msgstr "" +msgstr "Esta impresora no detecta ninguna estación de material." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "No se pueden leer las ranuras IFS de la impresora." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Cargando posiciones IFS desde la impresora..." msgid "Slice the plate first to get project material information." msgstr "" +"Lamina primero la placa para obtener información sobre el material del " +"proyecto." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Esta cama utiliza varios materiales. Active IFS y asigne cada herramienta a " +"una ranura de impresora." msgid "Each project material must be assigned to an IFS slot before printing." msgstr "" +"Cada material del proyecto debe asignarse a una posición IFS antes de " +"imprimirlo." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Cada material del proyecto debe asignarse a una posición IFS ocupada antes " +"de imprimir." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"El material de cada proyecto debe coincidir con el material cargado en la " +"posición IFS seleccionada." msgid "Print host upload queue" msgstr "Cola de carga del host de impresión" @@ -21783,13 +22219,13 @@ msgstr "Placa de construcción lisa (Lado B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Impresora: %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Calibra antes de imprimir" msgid "Filament Mapping:" -msgstr "" +msgstr "Mapeo de filamentos:" msgid "Unable to perform boolean operation on selected parts" msgstr "No es posible realizar la operación buleana en las partes selecionadas" @@ -22073,9 +22509,6 @@ msgstr "Perfil de Impresora" msgid "Filament Preset Template" msgstr "Plantilla de Perfil de Filamento" -msgid "Deselect All" -msgstr "Deseleccionar Todo" - msgid "Process Preset Template" msgstr "Plantilla de Perfil de Proceso" @@ -22176,12 +22609,18 @@ msgid "" "\n" "Available nozzle profiles for this printer:" msgstr "" +"\n" +"\n" +"Perfiles de boquilla disponibles para esta impresora:" msgid "" "\n" "\n" "Choose YES to switch existing preset:" msgstr "" +"\n" +"\n" +"Selecciona «SÍ» para cambiar el perfil actual:" msgid "Printer Created Successfully" msgstr "Impresora creada con éxito" @@ -22514,16 +22953,17 @@ msgstr "" "impresora. Los agentes disponibles se registran al iniciar el sistema." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Selecciona una impresora Flashforge" msgid "Discovered Printers" -msgstr "" +msgstr "Impresoras detectadas" msgid "Could not get a valid Printer Host reference" msgstr "No se ha podido obtener una referencia de host de impresora válida" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" msgstr "" +"No se ha detectado una sesión válida. ¿Desea iniciar sesión en 3DPrinterOS?" msgid "Success!" msgstr "¡Éxito!" @@ -22577,28 +23017,40 @@ msgstr "" "impresión." msgid "3DPrinterOS Cloud upload options" -msgstr "" +msgstr "Opciones de carga en la nube de 3DPrinterOS" msgid "Single file" -msgstr "" +msgstr "Archivo único" msgid "Project File" -msgstr "" +msgstr "Archivo del proyecto" msgid "Project:" -msgstr "" +msgstr "Proyecto:" msgid "Printer type:" -msgstr "" +msgstr "Tipo de impresora:" msgid "Printer type not found, please select manually." -msgstr "" +msgstr "No se ha encontrado el tipo de impresora; selecciónelo manualmente." msgid "Authorizing..." -msgstr "" +msgstr "Autorizando..." + +msgid "Error. Can't get api token for authorization" +msgstr "Error. No se puede obtener el token de la API para la autorización" + +msgid "Could not parse server response." +msgstr "No se ha podido analizar la respuesta del servidor." + +msgid "Error saving session to file" +msgstr "Error al guardar la sesión en un archivo" msgid "Error session check" -msgstr "" +msgstr "Error al verificar la sesión" + +msgid "Error during file upload" +msgstr "Error al subir el archivo" #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -23405,25 +23857,142 @@ msgstr "" "configurarla." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge ha devuelto una respuesta JSON inválida." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "No se han encontrado impresoras Flashforge en la red local." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Se ha conectado correctamente a la API local de Flashforge." msgid "Serial connection to Flashforge is working correctly." msgstr "La conexión serie a Flashforge funciona correctamente." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "No se ha podido conectar a la API local de Flashforge" msgid "Could not connect to Flashforge via serial" msgstr "No se pudo conectar a Flashforge vía serie" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"La API local de Flashforge requiere tanto el número de serie como el código " +"de acceso." + +msgid "Printer returned an error" +msgstr "La impresora ha devuelto un error" + +msgid "Missing system_info in response" +msgstr "Falta «system_info» en la respuesta" + +msgid "Missing printer serial number in response" +msgstr "Falta el número de serie de la impresora en la respuesta" + +msgid "Error parsing response" +msgstr "Error al procesar la respuesta" + +msgid "ElegooLink not detected" +msgstr "No se ha detectado ElegooLink" + +msgid "Invalid access code" +msgstr "Código de acceso no válido" + +msgid "CC2 device not detected" +msgstr "No se ha detectado el dispositivo CC2" + +msgid "Connection to ElegooLink is working correctly." +msgstr "La conexión con ElegooLink funciona correctamente." + +msgid "Could not connect to ElegooLink" +msgstr "No se ha podido conectar a ElegooLink" + +#, boost-format +msgid "Error code: %1%" +msgstr "Código de error: %1%" + +msgid "Upload failed" +msgstr "Error al subir el archivo" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" +"El archivo se ha transferido, pero se han producido algunos errores " +"desconocidos. Comprueba la página del dispositivo donde se encuentra el " +"archivo e intenta iniciar la impresión de nuevo." + +msgid "Failed to open file for upload." +msgstr "No se ha podido abrir el archivo para su carga." + +msgid "Failed to read file chunk for upload." +msgstr "No se ha podido leer el fragmento de archivo para la subida." + +msgid "CC2 upload failed" +msgstr "Error al subir el archivo CC2" + +msgid "The file is empty or could not be read." +msgstr "El archivo está vacío o no se ha podido leer." + +msgid "Failed to calculate file checksum." +msgstr "No se ha podido calcular la suma de comprobación del archivo." + +msgid "Error code not found" +msgstr "Código de error no encontrado" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" +"La impresora está ocupada. Comprueba la página del dispositivo para ver el " +"archivo e intenta volver a iniciar la impresión." + +msgid "The file is lost, please check and try again." +msgstr "El archivo se ha perdido; compruébalo e inténtalo de nuevo." + +msgid "The file is corrupted, please check and try again." +msgstr "El archivo está dañado; compruébalo e inténtalo de nuevo." + +msgid "Transmission abnormality, please check and try again." +msgstr "" +"Se ha producido un error en la transmisión. Por favor, compruébalo e " +"inténtalo de nuevo." + +msgid "The file does not match the printer, please check and try again." +msgstr "" +"El archivo no es compatible con la impresora. Compruébalo e inténtalo de " +"nuevo." + +msgid "Start print timeout" +msgstr "Tiempo de espera de inicio de impresión" + +msgid "Start print failed" +msgstr "Error al iniciar la impresión" + +msgid "Connected to CrealityPrint successfully!" +msgstr "¡Conectado a CrealityPrint correctamente!" + +msgid "Could not connect to CrealityPrint" +msgstr "No se ha podido conectar a CrealityPrint" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" +"Se ha agotado el tiempo de espera de la conexión. Comprueba si la impresora " +"y la red del ordenador funcionan correctamente y asegúrate de que estén " +"conectadas a la misma red." + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" +"No se ha podido analizar el nombre de host, la dirección IP o la URL. " +"Compruébalo e inténtalo de nuevo." + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" +"Se ha interrumpido la transferencia de archivos o datos. Comprueba la " +"impresora y la red y vuelve a intentarlo." msgid "The provided state is not correct." msgstr "El estado proporcionado no es correcto." @@ -23449,16 +24018,17 @@ msgid "Detection radius" msgstr "Radio de detección" msgid "Selected" -msgstr "" +msgstr "Seleccionado" msgid "Auto-generate" -msgstr "" +msgstr "Autogenerar" msgid "Generate brim ears using Max angle and Detection radius" msgstr "" +"Genera orejas de borde utilizando el ángulo máximo y el radio de detección" msgid "Add or Select" -msgstr "" +msgstr "Añadir o seleccionar" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -23471,7 +24041,7 @@ msgid "Set the brim type of this object to \"painted\"" msgstr "Establecer el tipo de borde de este objeto a \"pintado\"" msgid "invalid brim ears" -msgstr "" +msgstr "orejas con el borde defectuoso" msgid "Brim Ears" msgstr "Orejas de borde" @@ -23479,6 +24049,12 @@ msgstr "Orejas de borde" msgid "Please select single object." msgstr "Por favor, seleccione un solo objeto." +msgid "Entering Brim Ears" +msgstr "Entrando al mecanismo de orejas de borde" + +msgid "Leaving Brim Ears" +msgstr "Saliendo del mecanismo de orejas de borde" + msgid "Zoom Out" msgstr "Alejar" @@ -23490,6 +24066,9 @@ msgstr "" "Error al cargar información de objetos omitidos. Por favor, inténtelo de " "nuevo." +msgid "Failed to create the temporary folder." +msgstr "No se ha podido crear la carpeta temporal." + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seleccionado" @@ -23643,6 +24222,121 @@ msgstr "Número de caras triangulares" msgid "Calculating, please wait..." msgstr "Calculando, por favor espere..." +msgid "PresetBundle" +msgstr "PaqueteDePerfiles" + +msgid "Bundle folder does not exist." +msgstr "La carpeta «Bundle» no existe." + +msgid "Failed to open folder." +msgstr "No se ha podido abrir la carpeta." + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" +"¿Eliminar el paquete seleccionado de la carpeta y todos los ajustes " +"preestablecidos cargados desde él?" + +msgid "Delete Bundle" +msgstr "Eliminar paquete" + +msgid "Failed to remove bundle." +msgstr "No se ha podido eliminar el paquete." + +msgid "Remove Bundle" +msgstr "Eliminar paquete" + +msgid "Unsubscribe bundle?" +msgstr "¿Desuscribirse del paquete?" + +msgid "UnsubscribeBundle" +msgstr "DesubscribirPaquete" + +msgid "Failed to unsubscribe bundle." +msgstr "No se pudo suspender la suscripción al paquete." + +msgid "Unsubscribe Bundle" +msgstr "Desuscribirse del paquete" + +msgid "ExportPresetBundle" +msgstr "ExportarPaqueteDePerfiles" + +msgid "Save preset bundle" +msgstr "Guardar paquete de perfiles" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" +"Se ha producido un error al realizar la integración en el escritorio: boost::" +"filesystem::canonical no ha devuelto la ruta de AppImage." + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" +"Error al realizar la integración en el escritorio: no se ha encontrado el " +"archivo ejecutable." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" +"No se ha podido realizar la integración en el escritorio porque no se ha " +"encontrado el directorio de la aplicación." + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" +"Se ha producido un error al realizar la integración en el escritorio: no se " +"ha podido crear el archivo de escritorio de Gcodeviewer. Es probable que el " +"archivo de escritorio de OrcaSlicer se haya creado correctamente." + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" +"Se ha producido un error al integrar el programa de descarga en el " +"escritorio: boost::filesystem::canonical no ha devuelto la ruta de AppImage." + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" +"Error al realizar la integración en el escritorio: no se ha encontrado el " +"archivo ejecutable." + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" +"No se ha podido realizar la integración en el escritorio porque no se ha " +"encontrado el directorio de la aplicación." + +msgid "Desktop Integration" +msgstr "Integración con el escritorio" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" +"La integración en el escritorio hace que el sistema pueda buscar este " +"archivo binario.\n" +"\n" +"Pulsa «Realizar» para continuar." + +msgid "The download has failed" +msgstr "La descarga ha fallado" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "No se puede crear el archivo en %1%" + +msgid "Archive preview" +msgstr "Vista previa del archivo" + +msgid "Open File" +msgstr "Abrir archivo" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -23765,6 +24459,10 @@ msgid "" "the surface quality of your overhangs? However, it can cause wall " "inconsistencies so use carefully!" msgstr "" +"Invertir en los pares\n" +"¿Sabías que la función Invertir en los pares puede mejorar " +"considerablemente la calidad de la superficie de tus salientes? Sin embargo, " +"puede provocar irregularidades en las paredes, ¡así que úsala con precaución!" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 2a75ed6efe..4eb1d03ac7 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -108,7 +108,7 @@ msgid "Model:" msgstr "Modèle :" msgid "Serial:" -msgstr "N° de série:" +msgstr "Numéro de série :" msgid "Version:" msgstr "Version :" @@ -135,7 +135,7 @@ msgid "Tool type" msgstr "Type d'outil" msgid "Gap fill" -msgstr "Remplir les espaces" +msgstr "Remplissage des espaces" msgid "Reset direction" msgstr "Réinitialiser la direction" @@ -202,6 +202,15 @@ msgstr "Terminé" msgid "Support Generated" msgstr "Supports générés" +msgid "Entering Paint-on supports" +msgstr "Entrée dans Supports peints" + +msgid "Leaving Paint-on supports" +msgstr "Quitter Supports peints" + +msgid "Paint-on supports editing" +msgstr "Modification des supports peints" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Placer sur la face" @@ -290,6 +299,15 @@ msgstr "Peint avec : filament %1%" msgid "To:" msgstr "Vers :" +msgid "Entering color painting" +msgstr "Entrée dans la mise en couleur" + +msgid "Leaving color painting" +msgstr "Quitter la mise en couleur" + +msgid "Color painting editing" +msgstr "Modification de la mise en couleur" + msgid "Paint-on fuzzy skin" msgstr "Surface irrégulière peinte" @@ -311,6 +329,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Activer la surface irrégulière peinte pour cet objet" +msgid "Entering Paint-on fuzzy skin" +msgstr "Entrée dans Surface irrégulière peinte" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "Quitter Surface irrégulière peinte" + +msgid "Paint-on fuzzy skin editing" +msgstr "Modification de la surface irrégulière peinte" + msgid "Move" msgstr "Déplacer" @@ -653,7 +680,7 @@ msgid "Perform cut" msgstr "Effectuer la coupe" msgid "Warning" -msgstr "Alerte" +msgstr "Avertissement" msgid "Invalid connectors detected" msgstr "Connecteurs invalides détectés" @@ -661,14 +688,14 @@ msgstr "Connecteurs invalides détectés" #, c-format, boost-format msgid "%1$d connector is out of cut contour" msgid_plural "%1$d connectors are out of cut contour" -msgstr[0] "Le connecteur %1$d est hors du contour de la coupe" -msgstr[1] "Les connecteurs %1$d sont hors du contour de la coupe" +msgstr[0] "%1$d connecteur est hors du contour de coupe" +msgstr[1] "%1$d connecteurs sont hors du contour de coupe" #, c-format, boost-format msgid "%1$d connector is out of object" msgid_plural "%1$d connectors are out of object" -msgstr[0] "Le connecteur %1$d est en-dehors de l’objet" -msgstr[1] "Les connecteurs %1$d sont en-dehors de l’objet" +msgstr[0] "%1$d connecteur est en dehors de l’objet" +msgstr[1] "%1$d connecteurs sont en dehors de l’objet" msgid "Some connectors are overlapped" msgstr "Certains connecteurs se chevauchent" @@ -702,6 +729,15 @@ msgstr "Coupe par ligne" msgid "Delete connector" msgstr "Supprimer le connecteur" +msgid "Entering Cut gizmo" +msgstr "Entrée dans l’outil Couper" + +msgid "Leaving Cut gizmo" +msgstr "Quitter l’outil Couper" + +msgid "Cut gizmo editing" +msgstr "Modification de la découpe" + msgid "Mesh name" msgstr "Nom du maillage" @@ -805,7 +841,9 @@ msgstr "Angle" msgid "" "Embedded\n" "depth" -msgstr "Profondeur intégrée" +msgstr "" +"Profondeur\n" +"intégrée" msgid "Input text" msgstr "Texte entré" @@ -1594,6 +1632,12 @@ msgstr "Distance parallèle :" msgid "Flip by Face 2" msgstr "Retournement par la Face 2" +msgid "Entering Measure gizmo" +msgstr "Entrée dans l’outil Mesurer" + +msgid "Leaving Measure gizmo" +msgstr "Quitter l’outil Mesurer" + msgid "Assemble" msgstr "Assembler" @@ -1633,6 +1677,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Assemblage face à face" +msgid "Entering Assembly gizmo" +msgstr "Entrée dans l’outil Assemblage" + +msgid "Leaving Assembly gizmo" +msgstr "Quitter l’outil Assemblage" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1668,7 +1718,7 @@ msgstr "Machine" msgid "Configuration package was loaded, but some values were not recognized." msgstr "" -"Le package de configuration a été chargé, mais certaines valeurs n'ont pas " +"Le paquet de configuration a été chargé, mais certaines valeurs n’ont pas " "été reconnues." #, boost-format @@ -1801,7 +1851,7 @@ msgstr "" "Voulez-vous continuer ?" msgid "Remember my choice" -msgstr "Se souvenir de mon choix" +msgstr "Mémoriser mon choix" #, c-format, boost-format msgid "Click to download new version in default browser: %s" @@ -1887,12 +1937,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Vous êtes actuellement en mode furtif. Pour vous connecter au cloud, vous " +"devez d’abord désactiver le mode furtif." msgid "Stealth Mode" -msgstr "" +msgstr "Mode furtif" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Quitter le mode furtif" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1914,20 +1966,45 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflit de synchronisation cloud : ce préréglage a une version plus récente " +"dans OrcaCloud.\n" +"Récupérer télécharge la copie du cloud. Forcer l’envoi l’écrase avec votre " +"préréglage local." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflit de synchronisation cloud : un préréglage de ce nom existe déjà dans " +"OrcaCloud.\n" +"Récupérer télécharge la copie du cloud. Forcer l’envoi l’écrase avec votre " +"préréglage local." + +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Forcer l’envoi écrasera la copie du cloud avec vos modifications locales du " +"préréglage.\n" +"Voulez-vous continuer ?" msgid "Resolve cloud sync conflict" -msgstr "" +msgstr "Résoudre le conflit de synchronisation cloud" msgid "Retrieving printer information, please try again later." msgstr "" @@ -2022,8 +2099,8 @@ msgid "" "newly created user presets can only be used locally." msgstr "" "Le nombre de préréglages utilisateur mis en cache dans le nuage a dépassé la " -"limite supérieure. Les préréglages utilisateur \n" -"nouvellement créés ne peuvent être utilisés que localement." +"limite supérieure. Les préréglages utilisateur nouvellement créés ne peuvent " +"être utilisés que localement." msgid "Sync user presets" msgstr "Synchroniser les réglages prédéfinis de l’utilisateur" @@ -2247,7 +2324,7 @@ msgid "Orca Cube" msgstr "Cube Orca" msgid "OrcaSliced Combo" -msgstr "" +msgstr "OrcaSliced Combo" msgid "Orca Tolerance Test" msgstr "Test de tolérance Orca" @@ -2642,8 +2719,8 @@ msgstr[1] "%1$d erreur réparée" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." msgid_plural "Error: %1$d non-manifold edges." -msgstr[0] "Erreur : %1$d arête non multiple." -msgstr[1] "Erreur : %1$d arête non multiple." +msgstr[0] "Erreur : %1$d arête non-manifold." +msgstr[1] "Erreur : %1$d arêtes non-manifold." msgid "Remaining errors" msgstr "Erreurs restantes" @@ -2651,8 +2728,8 @@ msgstr "Erreurs restantes" #, c-format, boost-format msgid "%1$d non-manifold edge" msgid_plural "%1$d non-manifold edges" -msgstr[0] "%1$d arête non multiple" -msgstr[1] "%1$d arête non multiple" +msgstr[0] "%1$d arête non-manifold" +msgstr[1] "%1$d arêtes non-manifold" msgid "Click the icon to repair model object" msgstr "Cliquer sur l'icône pour réparer l'objet modèle" @@ -3146,15 +3223,15 @@ msgid "" "Cooling mode is suitable for printing PLA/PETG/TPU materials and filters the " "chamber air." msgstr "" -"Le mode refroidissement est adapté à l'impression de matériaux PLA/PETG/TPU " -"et filtre l'air de la chambre." +"Le mode refroidissement est adapté à l’impression de matériaux PLA/PETG/TPU " +"et filtre l’air du caisson." msgid "" "Heating mode is suitable for printing ABS/ASA/PC/PA materials and circulates " "filters the chamber air." msgstr "" -"Le mode chauffage est adapté à l'impression de matériaux ABS/ASA/PC/PA et " -"filtre l'air en circulation dans la chambre." +"Le mode chauffage est adapté à l’impression de matériaux ABS/ASA/PC/PA et " +"filtre l’air en circulation dans le caisson." msgid "" "Strong cooling mode is suitable for printing PLA/TPU materials. In this " @@ -3233,12 +3310,51 @@ msgstr "La température maximale ne peut pas dépasser " msgid "The minmum temperature should not be less than " msgstr "La température minimale ne doit pas être inférieure à " +msgid "Type to filter..." +msgstr "Saisissez du texte pour filtrer…" + +msgid "All" +msgstr "Tous" + +msgid "No selected items..." +msgstr "Aucun élément sélectionné…" + +msgid "All items selected..." +msgstr "Tous les éléments sont sélectionnés…" + +msgid "No matching items..." +msgstr "Aucun élément correspondant…" + +msgid "Deselect All" +msgstr "Désélectionner tout" + +msgid "Select visible" +msgstr "Sélectionner les éléments visibles" + +msgid "Deselect visible" +msgstr "Désélectionner les éléments visibles" + +msgid "Filter selected" +msgstr "Filtrer les éléments sélectionnés" + +msgid "Filter nonSelected" +msgstr "Filtrer les éléments non sélectionnés" + +msgid "Simple settings" +msgstr "Paramètres simples" + +msgid "Advanced settings" +msgstr "Paramètres avancés" + +msgid "Expert settings" +msgstr "Paramètres expert" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." msgstr "" -"Tous les objets sélectionnés sont sur la plaque verrouillée,\n" -"nous ne pouvons pas faire d'auto-arrangement sur ces objets." +"Tous les objets sélectionnés sont sur une plaque verrouillée.\n" +"Impossible d’agencer automatiquement ces objets." msgid "No arrangeable objects are selected." msgstr "Aucun objet réorganisable n'est sélectionné." @@ -3247,11 +3363,11 @@ msgid "" "This plate is locked.\n" "Cannot auto-arrange on this plate." msgstr "" -"Cette plaque est verrouillée,\n" -"nous ne pouvons pas faire d'auto-arrangement sur cette plaque." +"Cette plaque est verrouillée.\n" +"Impossible d’agencer automatiquement sur cette plaque." msgid "Arranging..." -msgstr "Organiser…" +msgstr "Agencement…" msgid "Arranging" msgstr "Agencement" @@ -3295,8 +3411,8 @@ msgid "" "This plate is locked.\n" "Cannot auto-orient on this plate." msgstr "" -"Cette plaque est verrouillée, on ne peut pas faire d'auto-orientation sur " -"cette plaque." +"Cette plaque est verrouillée.\n" +"Impossible d’orienter automatiquement sur cette plaque." msgid "Orienting..." msgstr "Orienter…" @@ -3335,8 +3451,7 @@ msgid "Please check the printer network connection." msgstr "Vérifiez la connexion réseau de l'imprimante." msgid "Abnormal print file data. Please slice again." -msgstr "" -"Données de fichier d'impression anormales, veuillez redécouvre le fichier." +msgstr "Données du fichier d’impression anormales. Veuillez le redécouper." msgid "Task canceled." msgstr "Tâche annulée." @@ -3516,6 +3631,9 @@ msgstr "La police n'a aucune forme pour le texte donné." msgid "There is no valid surface for text projection." msgstr "Il n'y a pas de surface valide pour la projection du texte." +msgid "An unexpected error occurred" +msgstr "Une erreur inattendue s’est produite" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Préconditionnement thermique pour l'optimisation de la première couche" @@ -3671,7 +3789,9 @@ msgstr "Fermer" msgid "" "Nozzle\n" "Temperature" -msgstr "Température de la buse" +msgstr "" +"Température\n" +"de la buse" msgid "max" msgstr "max" @@ -3779,7 +3899,7 @@ msgid "mm³" msgstr "mm³" msgid "Start calibration" -msgstr "Démarrer" +msgstr "Démarrer la calibration" msgid "Next" msgstr "Suivant" @@ -3969,8 +4089,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Lorsque le filament actuel est épuisé, l'imprimante\n" -"continue d'imprimer dans l'ordre suivant." +"Lorsque le filament actuel est épuisé, l’imprimante continue d’imprimer dans " +"l’ordre suivant." msgid "Identical filament: same brand, type and color." msgstr "Filament identique : même marque, type et couleur." @@ -4276,8 +4396,9 @@ msgid "" "Error message: %1%.\n" "Source file %2%." msgstr "" -"Échec de l'enregistrement du fichier gcode. Message d'erreur : %1%. Fichier " -"source %2%." +"Échec de l’enregistrement du fichier G-code.\n" +"Message d’erreur : %1%.\n" +"Fichier source %2%." msgid "Copying of the temporary G-code to the output G-code failed" msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué" @@ -4384,7 +4505,8 @@ msgid "" msgstr "" "La buse peut être bloquée lorsque la température est hors de la plage " "recommandée.\n" -"Veuillez vous assurer d'utiliser la température pour imprimer.\n" +"Veuillez confirmer l’utilisation de cette température pour imprimer.\n" +"\n" #, c-format, boost-format msgid "" @@ -4414,12 +4536,16 @@ msgstr "" msgid "" "Too small layer height.\n" "Reset to 0.2." -msgstr "Hauteur de couche trop petite. Réinitialiser à 0,2" +msgstr "" +"Hauteur de couche trop petite.\n" +"Réinitialisée à 0,2." msgid "" "Too small ironing spacing.\n" "Reset to 0.1." -msgstr "Espacement de lissage trop petit. Réinitialiser à 0.1" +msgstr "" +"Espacement de lissage trop petit.\n" +"Réinitialisé à 0,1." msgid "" "Zero initial layer height is invalid.\n" @@ -4438,10 +4564,13 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"Ce paramètre n'est utilisé que pour le réglage de la taille du modèle avec " -"une petite valeur dans certains cas. Par exemple, lorsque la taille du " -"modèle présente une petite erreur et est difficile à assembler. Pour un " -"réglage de grande taille, veuillez utiliser la fonction d'échelle de modèle. " +"Ce paramètre n’est utilisé que pour le réglage de la taille du modèle avec " +"une petite valeur dans certains cas.\n" +"Par exemple, lorsque la taille du modèle présente une petite erreur et est " +"difficile à assembler.\n" +"Pour un réglage de grande taille, veuillez utiliser la fonction de mise à " +"l’échelle du modèle.\n" +"\n" "La valeur sera remise à 0." msgid "" @@ -4451,10 +4580,12 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"Une trop grande compensation de la patte d'éléphant est déraisonnable. Si " -"vous avez vraiment un effet de patte d'éléphant important, veuillez vérifier " -"d'autres paramètres. Par exemple, si la température du plateau est trop " -"élevée. La valeur sera remise à 0." +"Une compensation de patte d’éléphant trop importante est déraisonnable.\n" +"Si l’effet de patte d’éléphant est vraiment marqué, veuillez vérifier " +"d’autres paramètres.\n" +"Par exemple, si la température du plateau est trop élevée.\n" +"\n" +"La valeur sera remise à 0." msgid "" "Alternate extra wall does't work well when ensure vertical shell thickness " @@ -4575,7 +4706,7 @@ msgid "Printing" msgstr "Impression" msgid "Auto bed leveling" -msgstr "Niveau de plateau automatique" +msgstr "Nivellement automatique du plateau" msgid "Heatbed preheating" msgstr "Préchauffage du plateau chauffant" @@ -4656,7 +4787,7 @@ msgid "Pause (low speed of the heatbreak fan)" msgstr "Pause (vitesse basse du ventilateur du heatbreak)" msgid "Pause (chamber temperature control problem)" -msgstr "Pause (problème de contrôle de la température de la chambre)" +msgstr "Pause (problème de contrôle de la température du caisson)" msgid "Cooling chamber" msgstr "Refroidissement du caisson" @@ -4689,7 +4820,7 @@ msgid "Measure motion accuracy" msgstr "Mesurer la précision de mouvement" msgid "Nozzle offset calibration" -msgstr "Calibration du décalage de buse" +msgstr "Calibration du décalage de la buse" msgid "High temperature auto bed leveling" msgstr "Nivellement automatique du plateau à haute température" @@ -4719,7 +4850,7 @@ msgid "Auto bed leveling -phase 2" msgstr "Nivellement automatique du plateau - phase 2" msgid "Heating chamber" -msgstr "Chauffage de la chambre" +msgstr "Chauffage du caisson" msgid "Cooling heatbed" msgstr "Refroidissement du plateau chauffant" @@ -4761,7 +4892,7 @@ msgid "Verification failed." msgstr "Échec de la vérification." msgid "Update failed." -msgstr "Mise à jour a échoué." +msgstr "La mise à jour a échoué." msgid "Timelapse is not supported on this printer." msgstr "Le timelapse n'est pas pris en charge sur cette imprimante." @@ -4792,10 +4923,9 @@ msgid "" "Please wait until the chamber temperature drops below %d℃. You may open the " "front door or enable fans to cool down." msgstr "" -"La température de la chambre est trop élevée, ce qui peut ramollir le " -"filament. Veuillez attendre que la température de la chambre descende en " -"dessous de %d℃. Vous pouvez ouvrir la porte avant ou activer les " -"ventilateurs pour refroidir." +"La température du caisson est trop élevée, ce qui peut ramollir le filament. " +"Veuillez attendre que la température du caisson descende en dessous de %d℃. " +"Vous pouvez ouvrir la porte avant ou activer les ventilateurs pour refroidir." #, c-format, boost-format msgid "" @@ -4810,9 +4940,9 @@ msgid "" "45℃. In order to avoid extruder clogging, low temperature filament(PLA/PETG/" "TPU) is not allowed to be loaded." msgstr "" -"La température actuelle ou cible de la chambre dépasse 45℃. Afin d'éviter le " -"bouchage de l'extrudeur, le chargement de filament basse température (PLA/" -"PETG/TPU) n'est pas autorisé." +"La température actuelle ou cible du caisson dépasse 45℃. Afin d’éviter le " +"bouchage de l’extrudeur, le chargement de filament basse température (PLA/" +"PETG/TPU) n’est pas autorisé." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder. In order " @@ -4820,7 +4950,7 @@ msgid "" msgstr "" "Un filament basse température (PLA/PETG/TPU) est chargé dans l'extrudeur. " "Afin d'éviter le bouchage de l'extrudeur, il n'est pas permis de régler la " -"température de la chambre." +"température du caisson." msgid "" "When you set the chamber temperature below 40℃, the chamber temperature " @@ -5021,7 +5151,10 @@ msgid "" "Is it %s%% or %s %s?\n" "YES for %s%%, \n" "NO for %s %s." -msgstr "Est-ce %s%% ou %s %s ? OUI pour %s%%, NON pour %s %s." +msgstr "" +"Est-ce %s%% ou %s %s ?\n" +"OUI pour %s%%, \n" +"NON pour %s %s." #, boost-format msgid "" @@ -5052,7 +5185,7 @@ msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" msgid "N/A" -msgstr "N / A" +msgstr "N/A" msgid "Pick" msgstr "Sélectionner" @@ -5061,7 +5194,7 @@ msgid "Summary" msgstr "Résumé" msgid "Layer Height" -msgstr "Hauteur de la couche" +msgstr "Hauteur de couche" msgid "Line Width" msgstr "Largeur de ligne" @@ -5386,7 +5519,7 @@ msgid "Filament Changes" msgstr "Changements de filaments" msgid "Options" -msgstr "Choix" +msgstr "Options" msgid "Extruder" msgstr "Extrudeur" @@ -5669,7 +5802,7 @@ msgid "Outline" msgstr "Contour" msgid "Realistic View" -msgstr "" +msgstr "Vue réaliste" msgid "Perspective" msgstr "Perspective" @@ -5708,7 +5841,7 @@ msgid "Assembly Info" msgstr "Informations sur l'assemblage" msgid "Volume:" -msgstr "Le volume:" +msgstr "Volume :" msgid "Size:" msgstr "Taille:" @@ -5978,7 +6111,7 @@ msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" msgid "Troubleshoot Center" -msgstr "" +msgstr "Centre de dépannage" msgid "Open Network Test" msgstr "Ouvrir le Test de Réseau" @@ -6674,7 +6807,7 @@ msgid "Play" msgstr "Lecture" msgid "Open Folder" -msgstr "Ouvrir le Dossier" +msgstr "Ouvrir le dossier" msgid "Download finished" msgstr "Téléchargement terminé" @@ -6993,16 +7126,15 @@ msgstr "" msgid "Chamber temperature cannot be changed in cooling mode while printing." msgstr "" -"La température de la chambre ne peut pas être modifiée en mode " -"refroidissement pendant l'impression." +"La température du caisson ne peut pas être modifiée en mode refroidissement " +"pendant l’impression." msgid "" "If the chamber temperature exceeds 40℃, the system will automatically switch " "to heating mode. Please confirm whether to switch." msgstr "" -"Si la température de la chambre dépasse 40℃, le système passera " -"automatiquement en mode chauffage. Veuillez confirmer si vous souhaitez " -"commuter." +"Si la température du caisson dépasse 40℃, le système passera automatiquement " +"en mode chauffage. Veuillez confirmer si vous souhaitez commuter." msgid "Please select an AMS slot before calibration" msgstr "Veuillez sélectionner un emplacement AMS avant la calibration" @@ -7309,7 +7441,7 @@ msgid "Goto download page." msgstr "Allez sur la page de téléchargement." msgid "Open Folder." -msgstr "Ouvrir un répertoire." +msgstr "Ouvrir le dossier." msgid "Safely remove hardware." msgstr "Retirez le matériel en toute sécurité." @@ -7323,8 +7455,8 @@ msgstr[1] " %1$d objets ont des supports personnalisés." #, c-format, boost-format msgid "%1$d Object has color painting." msgid_plural "%1$d Objects have color painting." -msgstr[0] "%1$d L'objet est mis en couleur." -msgstr[1] "%1$d L'objets sont mis en couleur." +msgstr[0] "%1$d objet est mis en couleur." +msgstr[1] "%1$d objets sont mis en couleur." #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." @@ -7358,7 +7490,7 @@ msgid "Error:" msgstr "Erreur:" msgid "Warning:" -msgstr "Avertissement:" +msgstr "Avertissement :" msgid "Exported successfully" msgstr "Exportation réussie." @@ -7367,10 +7499,10 @@ msgid "Model file downloaded." msgstr "Modèle téléchargé." msgid "Pull" -msgstr "" +msgstr "Récupérer" msgid "Force push" -msgstr "" +msgstr "Forcer l’envoi" msgid "Shared profiles may be available for this printer." msgstr "Des profils partagés peuvent être disponibles pour cette imprimante." @@ -7426,7 +7558,9 @@ msgstr "Version d'OpenGL non prise en charge" msgid "" "Unable to load shaders:\n" "%s" -msgstr "Impossible de charger les shaders : %s" +msgstr "" +"Impossible de charger les shaders :\n" +"%s" msgid "Error loading shaders" msgstr "Erreur lors du chargement des shaders" @@ -8028,8 +8162,9 @@ msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"L'objet du fichier %s est trop petit, et peut-être en mètres ou en pouces. " -"Voulez-vous mettre à l'échelle en millimètres ?" +"L’objet du fichier %s est trop petit, et est peut-être en mètres ou en " +"pouces.\n" +" Voulez-vous le mettre à l’échelle en millimètres ?" msgid "Object too small" msgstr "Objet trop petit" @@ -8269,7 +8404,7 @@ msgstr "" "dans d'autres programmes." msgid "Save project" -msgstr "Sauvegarder le projet" +msgstr "Enregistrer le projet" msgid "Importing Model" msgstr "Importation du modèle" @@ -8444,10 +8579,10 @@ msgstr "" "Seules les parties positives seront exportées." msgid "Flashforge host is not available." -msgstr "" +msgstr "L’hôte Flashforge n’est pas disponible." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "Impossible de se connecter à l’imprimante Flashforge." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -8458,17 +8593,15 @@ msgid "Upload and Print" msgstr "Envoyer & Imprimer" msgid "Abnormal print file data. Please slice again" -msgstr "" -"Données de fichier d'impression anormales. Veuillez découper le fichier à " -"nouveau" +msgstr "Données du fichier d’impression anormales. Veuillez le redécouper" msgid "" "Print By Object: \n" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Imprimer par objet :\n" -"Nous vous suggérons d'utiliser la disposition automatique pour éviter les " -"collisions lors de l'impression." +"Nous vous suggérons d’utiliser l’agencement automatique pour éviter les " +"collisions lors de l’impression." msgid "Send G-code" msgstr "Envoyer le G-code" @@ -8577,10 +8710,9 @@ msgid "" "still want to do this print job, please set this filament's bed temperature " "to non-zero." msgstr "" -"La plaque% d : %s n'est pas suggéré pour l'utilisation du filament " -"d'impression %s(%s). Si vous souhaitez toujours effectuer ce travail " -"d'impression, veuillez régler la température du plateau de ce filament sur " -"un nombre différent de zéro." +"Plaque %d : il n’est pas recommandé d’utiliser %s pour imprimer le filament " +"%s (%s). Si vous souhaitez tout de même lancer cette impression, veuillez " +"définir une température de plateau différente de zéro pour ce filament." msgid "" "Currently, the object configuration form cannot be used with a multiple-" @@ -8621,8 +8753,8 @@ msgstr "Sélection de la langue" msgid "Switching application language while some presets are modified." msgstr "" -"Changement de langue d’application alors que certaines présélections sont " -"modifiées." +"Changement de langue de l’application alors que certains préréglages sont " +"modifiés." msgid "Asia-Pacific" msgstr "Asie-Pacifique" @@ -8839,9 +8971,6 @@ msgstr "Regrouper les préréglages de filament utilisateur" msgid "Group user filament presets based on selection" msgstr "Regrouper les préréglages de filament utilisateur selon la sélection" -msgid "All" -msgstr "Tous" - msgid "By type" msgstr "Par type" @@ -9042,22 +9171,22 @@ msgid "Graphics" msgstr "Graphismes" msgid "Phong shading" -msgstr "" +msgstr "Ombrage de Phong" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Utilise l’ombrage de Phong dans la vue réaliste." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "Occlusion ambiante SSAO" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Applique le SSAO dans la vue réaliste." msgid "Shadows" -msgstr "" +msgstr "Ombres" msgid "Renders cast shadows on the plate in realistic view." -msgstr "" +msgstr "Affiche les ombres portées sur la plaque dans la vue réaliste." msgid "Anti-aliasing" msgstr "Anticrénelage" @@ -9139,12 +9268,17 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Ceci désactive toutes les fonctionnalités cloud, y compris la " +"synchronisation des profils Orca Cloud. Les utilisateurs qui préfèrent " +"travailler entièrement hors ligne peuvent activer cette option.\n" +"Remarque : lorsque le mode furtif est activé, vos profils utilisateur ne " +"sont pas sauvegardés dans Orca Cloud." msgid "Hide login side panel" -msgstr "" +msgstr "Masquer le panneau latéral de connexion" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Masque le panneau latéral de connexion sur la page d’accueil." msgid "Network test" msgstr "Test du réseau" @@ -9253,6 +9387,14 @@ msgstr "Télécharger le plug-in réseau" msgid "Associate files to OrcaSlicer" msgstr "Associer des fichiers à Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associer les fichiers 3MF à OrcaSlicer" @@ -9313,12 +9455,15 @@ msgstr "" "Hautement expérimental ! Lent et susceptible de créer des artefacts." msgid "Show unsupported presets" -msgstr "" +msgstr "Afficher les préréglages non pris en charge" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Affiche les préréglages incompatibles ou non pris en charge dans les listes " +"déroulantes d’imprimantes et de filaments. Ces préréglages ne peuvent pas " +"être sélectionnés." msgid "Allow Abnormal Storage" msgstr "Autoriser le stockage anormal" @@ -9387,10 +9532,10 @@ msgid "Rotate view" msgstr "Rotation de la vue" msgid "Pan view" -msgstr "Déplacement de vue" +msgstr "Déplacement de la vue" msgid "Zoom view" -msgstr "Vue agrandie" +msgstr "Zoom de la vue" msgid "Other" msgstr "Autre" @@ -10153,6 +10298,9 @@ msgstr "" "firmware prend en charge cette opération ou si l'imprimante fonctionne " "correctement." +msgid "Sending failed, please try again!" +msgstr "L’envoi a échoué, veuillez réessayer !" + msgid "Slice ok." msgstr "Découpe terminée." @@ -10445,9 +10593,8 @@ msgid "" "Layer height is too small.\n" "It will set to min_layer_height\n" msgstr "" -"La hauteur du calque est trop faible.\n" +"La hauteur de couche est trop faible.\n" "Elle sera définie à min_layer_height\n" -"\n" msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " @@ -10526,7 +10673,7 @@ msgstr "" "Voulez-vous continuer ?" msgid "Detach preset" -msgstr "Détacher la présélection" +msgstr "Détacher le préréglage" msgid "This is a default preset." msgstr "Il s’agit d’un préréglage par défaut." @@ -10556,7 +10703,7 @@ msgid "Additional information:" msgstr "Informations complémentaires :" msgid "vendor" -msgstr "vendeur" +msgstr "fabricant" msgid "printer model" msgstr "modèle d’imprimante" @@ -10628,6 +10775,9 @@ msgstr "Définir la vitesse pour les ponts externes et internes" msgid "Travel speed" msgstr "Vitesse de déplacement" +msgid "Junction Deviation" +msgstr "Déviation de jonction" + msgid "Jerk(XY)" msgstr "Jerk (X-Y)" @@ -10680,13 +10830,13 @@ msgid_plural "" "Please remove them, or will beat G-code visualization and printing time " "estimation." msgstr[0] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." +"La ligne suivante %s contient des mots-clés réservés.\n" +"Veuillez la supprimer, sans quoi la visualisation du G-code et l’estimation " +"du temps d’impression seront faussées." msgstr[1] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." +"Les lignes suivantes %s contiennent des mots-clés réservés.\n" +"Veuillez les supprimer, sans quoi la visualisation du G-code et l’estimation " +"du temps d’impression seront faussées." msgid "Reserved keywords found" msgstr "Mots clés réservés trouvés" @@ -11003,6 +11153,10 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"L’option Rétracter avant essuyage ne peut être qu’à 100 % en mode rétraction " +"firmware.\n" +"\n" +"Faut-il la régler à 100 % pour activer la rétraction firmware ?" msgid "Firmware Retraction" msgstr "Rétraction Firmware" @@ -11222,7 +11376,9 @@ msgstr "" msgid "" "Save the selected options to preset \n" "\"%1%\"." -msgstr "Enregistrez les options sélectionnées dans le préréglage \"%1%\"." +msgstr "" +"Enregistrez les options sélectionnées dans le préréglage \n" +"\"%1%\"." #, boost-format msgid "" @@ -11230,7 +11386,8 @@ msgid "" "\"%1%\"." msgstr "" "Transférez les options sélectionnées vers le préréglage nouvellement " -"sélectionné \"%1%\"." +"sélectionné \n" +"\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" @@ -11377,19 +11534,20 @@ msgstr "Mise à jour de la configuration" msgid "A new configuration package is available. Do you want to install it?" msgstr "" -"Un nouveau package de configuration disponible, Voulez-vous l'installer ?" +"Un nouveau paquet de configuration est disponible. Voulez-vous l’installer ?" msgid "the configuration package is incompatible with the current application." msgstr "" -"le package de configuration est incompatible avec l'application actuelle." +"le paquet de configuration est incompatible avec l’application actuelle." #, c-format, boost-format msgid "" "The configuration package is incompatible with the current application.\n" "%s will update the configuration package to allow the application to start." msgstr "" -"Le package de configuration est incompatible avec l'application actuelle. %s " -"mettra à jour le package de configuration, sinon il ne pourra pas démarrer" +"Le paquet de configuration est incompatible avec l’application actuelle.\n" +"%s mettra à jour le paquet de configuration pour permettre à l’application " +"de démarrer." #, c-format, boost-format msgid "Exit %s" @@ -11556,9 +11714,6 @@ msgstr "" "filaments de l'imprimante. Les filaments non utilisés de l'imprimante seront " "automatiquement ajoutés à la fin de la liste." -msgid "Advanced settings" -msgstr "Paramètres avancés" - msgid "Add unused AMS filaments to filaments list." msgstr "Ajouter les filaments AMS non utilisés à la liste de filaments." @@ -11813,7 +11968,7 @@ msgstr "[Action requise]" msgid "The configuration package is changed in previous Config Guide" msgstr "" -"Le package de configuration est modifié dans le guide de configuration " +"Le paquet de configuration a été modifié dans le guide de configuration " "précédent" msgid "Configuration package changed" @@ -11847,16 +12002,16 @@ msgid "Global shortcuts" msgstr "Raccourcis globaux" msgid "Pan View" -msgstr "Déplacer la vue" +msgstr "Déplacement de la vue" msgid "Rotate View" -msgstr "Pivoter la vue" +msgstr "Rotation de la vue" msgid "Middle mouse button" msgstr "Bouton central de la souris" msgid "Zoom View" -msgstr "Zoomer la vue" +msgstr "Zoom de la vue" msgid "" "Auto orients selected objects or all objects. If there are selected objects, " @@ -12026,7 +12181,7 @@ msgstr "" "Sélectionnez l'objet/la pièce et cliquez avec la souris pour changer le nom" msgid "Objects List" -msgstr "Liste d'objets" +msgstr "Liste des objets" msgid "Vertical slider - Move active thumb Up" msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Haut" @@ -12081,12 +12236,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Nouvelle version de OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Vérifier sur GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Sauter cette version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmation et mise à jour de la buse" @@ -12204,6 +12370,9 @@ msgstr "Module de découpe" msgid "Auto Fire Extinguishing System" msgstr "Système d'extinction automatique" +msgid "Beta" +msgstr "Bêta" + msgid "Update firmware" msgstr "Mise à jour du firmware" @@ -12325,6 +12494,7 @@ msgid "" "\n" msgstr "" "Échec de la génération du G-code pour un G-code personnalisé non valide.\n" +"\n" msgid "Please check the custom G-code or use the default custom G-code." msgstr "" @@ -12778,16 +12948,23 @@ msgstr "La hauteur de la couche ne peut pas dépasser le diamètre de la buse" msgid "Bridge line width must not exceed nozzle diameter" msgstr "" +"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la buse" msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" a été trouvé dans before_layer_change_gcode, mais le G ou le E ne " +"sont pas en majuscules. Veuillez les remplacer par \"G92 E0\" exactement en " +"majuscules." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" a été trouvé dans layer_change_gcode, mais le G ou le E ne sont " +"pas en majuscules. Veuillez les remplacer par \"G92 E0\" exactement en " +"majuscules." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12802,11 +12979,15 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"\"G92 E0\" a été trouvé dans before_layer_change_gcode, ce qui est " +"incompatible avec l’adressage absolu de l’extrudeur." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" +"\"G92 E0\" a été trouvé dans layer_change_gcode, ce qui est incompatible " +"avec l’adressage absolu de l’extrudeur." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -12914,29 +13095,36 @@ msgid "Extruder printable area" msgstr "Zone d'impression de l'extrudeur" msgid "Support parallel printheads" -msgstr "" +msgstr "Prise en charge des têtes d’impression parallèles" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." msgstr "" +"Active les paramètres d’imprimante pour les machines pouvant utiliser " +"plusieurs têtes d’impression en parallèle." msgid "Parallel printheads count" -msgstr "" +msgstr "Nombre de têtes d’impression parallèles" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." msgstr "" +"Définit le nombre de têtes d’impression parallèles pour les machines comme " +"l’imprimante OrangeStorm Giga." msgid "Parallel printheads bed exclude areas" -msgstr "" +msgstr "Zones d’exclusion du plateau pour têtes parallèles" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Liste ordonnée des zones d’exclusion du plateau selon le nombre de têtes " +"parallèles. L’élément 1 s’applique à une tête, l’élément 2 à deux têtes, et " +"ainsi de suite. Laissez un élément vide pour n’exclure aucune zone." msgid "Bed exclude area" msgstr "Zone d'exclusion de plateau" @@ -13084,10 +13272,10 @@ msgstr "" "l'authentification." msgid "Serial Number" -msgstr "" +msgstr "Numéro de série" msgid "Flashforge local API requires the printer serial number." -msgstr "" +msgstr "L’API locale Flashforge nécessite le numéro de série de l’imprimante." msgid "Name of the printer." msgstr "Nom de l'imprimante" @@ -13466,6 +13654,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Remplacement de l’angle des ponts externes.\n" +"Si laissé à zéro, l’angle des ponts est calculé automatiquement pour chaque " +"pont.\n" +"Sinon, l’angle fourni est utilisé selon :\n" +" - les coordonnées absolues\n" +" - les coordonnées absolues + la rotation du modèle : si « Aligner la " +"direction du remplissage sur le modèle » est activé\n" +" - l’angle automatique optimal + cette valeur : si « Angle de pont relatif » " +"est activé\n" +"\n" +"Utilisez 180° pour un angle absolu nul." msgid "Internal bridge infill direction" msgstr "Direction du remplissage du pont interne" @@ -13483,20 +13682,33 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Remplacement de l’angle des ponts internes.\n" +"Si laissé à zéro, l’angle des ponts est calculé automatiquement pour chaque " +"pont.\n" +"Sinon, l’angle fourni est utilisé selon :\n" +" - les coordonnées absolues\n" +" - les coordonnées absolues + la rotation du modèle : si « Aligner la " +"direction du remplissage sur le modèle » est activé\n" +" - l’angle automatique optimal + cette valeur : si « Angle de pont relatif » " +"est activé\n" +"\n" +"Utilisez 180° pour un angle absolu nul." msgid "Relative bridge angle" -msgstr "" +msgstr "Angle de pont relatif" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Lorsque cette option est activée, les valeurs d’angle de pont s’ajoutent à " +"la direction de pont calculée automatiquement au lieu de la remplacer." msgid "External bridge density" msgstr "Densité du pont externe" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13510,18 +13722,34 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" +"Contrôle la densité (espacement) des lignes de ponts externes. La valeur par " +"défaut est 100 %.\n" +"En théorie, 100 % correspond à un pont plein, mais comme les extrusions de " +"pont ont tendance à s’affaisser, 100 % peut ne pas suffire.\n" +"\n" +"- Densité supérieure à 100 % (maximum recommandé 125 %) :\n" +" - Avantages : produit des surfaces de pont plus lisses, car le " +"chevauchement des lignes apporte un soutien supplémentaire pendant " +"l’impression.\n" +" - Inconvénients : peut provoquer une surextrusion, ce qui peut dégrader la " +"qualité des surfaces inférieures et supérieures et augmenter le risque de " +"déformation.\n" +"\n" +"- Densité inférieure à 100 % (minimum 10 %) :\n" +" - Avantages : peut créer une première couche filaire. Plus rapide et mieux " +"refroidie, car l’air circule davantage autour du pont extrudé.\n" +" - Inconvénients : peut entraîner un affaissement et un moins bon état de " +"surface.\n" +"\n" +"Plage recommandée : minimum 10 % – maximum 125 %." msgid "Internal bridge density" msgstr "Densité du pont interne" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13541,6 +13769,31 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Contrôle la densité (espacement) des lignes de ponts internes. La valeur par " +"défaut est 100 %. 100 % correspond à un pont interne plein.\n" +"\n" +"Les ponts internes servent de soutien intermédiaire entre le remplissage et " +"le remplissage plein supérieur, et peuvent fortement influencer la qualité " +"de la surface supérieure.\n" +"\n" +"- Densité supérieure à 100 % (maximum recommandé 125 %) :\n" +" - Avantages : améliore la résistance des ponts internes et le soutien sous " +"les couches supérieures, réduisant l’affaissement et améliorant l’état de la " +"surface supérieure.\n" +" - Inconvénients : augmente la consommation de matériau et le temps " +"d’impression ; une densité excessive peut provoquer une surextrusion et des " +"contraintes internes.\n" +"\n" +"- Densité inférieure à 100 % (minimum 10 %) :\n" +" - Avantages : peut réduire l’effet d’oreiller et améliorer le " +"refroidissement (plus de flux d’air à travers le pont), et peut accélérer " +"l’impression.\n" +" - Inconvénients : peut réduire le soutien interne, augmentant le risque " +"d’affaissement et de défauts de la surface supérieure.\n" +"\n" +"Cette option fonctionne particulièrement bien combinée à l’option de second " +"pont interne au-dessus du remplissage, pour améliorer encore les ponts avant " +"l’extrusion du remplissage plein." msgid "Bridge flow ratio" msgstr "Débit des ponts" @@ -13555,17 +13808,35 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Cette valeur régit l’épaisseur de la couche de pont externe (visible).\n" +"Valeurs supérieures à 1,0 : augmentent la quantité de matériau en conservant " +"l’espacement des lignes. Cela peut améliorer le contact entre lignes et la " +"résistance.\n" +"Valeurs inférieures à 1,0 : réduisent la quantité de matériau en ajustant " +"l’espacement des lignes pour maintenir le contact. Cela peut réduire " +"l’affaissement.\n" +"\n" +"Le débit de pont réellement utilisé est calculé en multipliant cette valeur " +"par le rapport de débit du filament et, s’il est défini, par celui de " +"l’objet." -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"La largeur de ligne des ponts s’exprime soit en valeur absolue, soit en " +"pourcentage du diamètre de la buse active (les pourcentages sont calculés à " +"partir du diamètre de la buse).\n" +"Recommandé avec une densité de pont ou un rapport de débit de pont plus " +"élevés.\n" +"\n" +"La valeur maximale est 100 % ou le diamètre de la buse.\n" +"Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein " +"interne." msgid "Internal bridge flow ratio" msgstr "Ratio de débit du pont interne" @@ -13582,6 +13853,19 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Cette valeur régit l’épaisseur de la couche de pont interne. Il s’agit de la " +"première couche au-dessus du remplissage : l’augmenter peut accroître la " +"résistance et la qualité des couches supérieures.\n" +"Valeurs supérieures à 1,0 : augmentent la quantité de matériau en conservant " +"l’espacement des lignes. Cela peut améliorer le contact entre lignes et la " +"résistance.\n" +"Valeurs inférieures à 1,0 : réduisent la quantité de matériau en ajustant " +"l’espacement des lignes pour maintenir le contact. Cela peut réduire " +"l’affaissement.\n" +"\n" +"Le débit de pont réellement utilisé est calculé en multipliant cette valeur " +"par le rapport de débit du filament et, s’il est défini, par celui de " +"l’objet." msgid "Top surface flow ratio" msgstr "Ratio du débit des surfaces supérieures" @@ -13967,6 +14251,37 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Activez cette option pour ralentir l’impression dans les zones où les " +"périmètres risquent de s’être recourbés vers le haut.\n" +"Par exemple, un ralentissement supplémentaire est appliqué lors de " +"l’impression de surplombs sur des angles vifs, comme l’avant de la coque du " +"Benchy, réduisant le tuilage qui s’amplifie au fil des couches.\n" +"\n" +"Il est généralement recommandé de laisser cette option activée, sauf si le " +"refroidissement de votre imprimante est assez puissant ou la vitesse " +"d’impression assez lente pour que les périmètres ne se recourbent pas. \n" +"En cas d’impression avec une vitesse de périmètre externe élevée, ce " +"paramètre peut introduire des artéfacts sur les parois lors du " +"ralentissement, en raison de la variation potentiellement importante des " +"vitesses d’impression empêchant l’extrudeur de suivre le changement de débit " +"demandé.\n" +"La cause profonde de ces artéfacts est très probablement un réglage du PA " +"légèrement décalé, surtout combiné à un temps de lissage du PA élevé.\n" +"\n" +"Recommandations lorsque cette option est activée :\n" +"1. Réduisez le temps de lissage du Pressure Advance à 0,015 – 0,02 pour que " +"l’extrudeur réagisse rapidement aux changements de vitesse.\n" +"2. Augmentez les vitesses d’impression minimales pour limiter l’ampleur du " +"ralentissement et réduire l’écart entre segments rapides et lents.\n" +"3. Si des artéfacts persistent, activez le lissage du débit d’extrusion " +"(ERS) pour adoucir davantage les transitions de débit.\n" +"\n" +"Remarque : lorsque cette option est activée, les périmètres en surplomb sont " +"traités comme des surplombs : la vitesse de surplomb s’applique même si le " +"périmètre en surplomb fait partie d’un pont.\n" +"Par exemple, lorsque les périmètres sont à 100 % en surplomb, sans paroi " +"pour les soutenir par en dessous, la vitesse de surplomb à 100 % est " +"appliquée." msgid "mm/s or %" msgstr "mm/s ou %" @@ -14077,7 +14392,7 @@ msgstr "" "des autres. Cela peut améliorer l’adhérence de la bordure." msgid "Brim ears" -msgstr "Bordures à oreilles" +msgstr "Bordure à oreilles" msgid "Only draw brim over the sharp edges of the model." msgstr "Ne tracer la bordure que sur les arêtes vives du modèle." @@ -14258,6 +14573,12 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Si activé, l’extrusion des ponts utilise une hauteur de ligne égale au " +"diamètre de la buse.\n" +"Cela augmente la résistance et la fiabilité des ponts et permet de plus " +"longues portées, mais peut dégrader l’apparence.\n" +"Si désactivé, les ponts peuvent être plus esthétiques mais ne sont " +"généralement fiables que sur de courtes portées." msgid "Thick internal bridges" msgstr "Ponts internes épais" @@ -14270,6 +14591,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Si activé, l’extrusion des ponts internes utilise une hauteur de ligne égale " +"au diamètre de la buse.\n" +"Cela augmente la résistance et la fiabilité des ponts internes imprimés au-" +"dessus du remplissage, mais peut dégrader l’apparence.\n" +"Si désactivé, les ponts internes peuvent être plus esthétiques mais moins " +"fiables au-dessus du remplissage." msgid "Extra bridge layers (beta)" msgstr "Couches de pont supplémentaires (beta)" @@ -14474,7 +14801,7 @@ msgid "Moderate" msgstr "Modéré" msgid "Top surface pattern" -msgstr "Motif de surface supérieure" +msgstr "Motif de la surface supérieure" msgid "Line pattern of top surface infill." msgstr "Motif de ligne du remplissage de la surface supérieure" @@ -15530,7 +15857,7 @@ msgid "money/kg" msgstr "argent/kg" msgid "Vendor" -msgstr "Fabriquant" +msgstr "Fabricant" msgid "Vendor of filament. For show only." msgstr "Vendeur du filament. Pour affichage uniquement" @@ -15578,6 +15905,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Aligne les directions du remplissage, des ponts, du lissage et des surfaces " +"sur l’orientation du modèle sur le plateau.\n" +"Lorsque cette option est activée, les directions pivotent avec le modèle " +"afin de conserver des caractéristiques de résistance optimales." msgid "Insert solid layers" msgstr "Insérer des couches solides" @@ -15616,9 +15947,9 @@ msgid "" msgstr "" "Resserre l’onde gyroïde le long de l’axe Z (vertical) à faible densité de " "remplissage afin de raccourcir la longueur effective des colonnes verticales " -"et d’améliorer la résistance au flambage en compression sur l’axe Z. La " -"consommation de filament est préservée. Sans effet à partir d’environ 30 " -"% de densité de remplissage. Ne s’applique que lorsque le motif de " +"et d’améliorer la résistance au flambage en compression selon l’axe Z. La " +"consommation de filament est préservée. Aucun effet à partir d’environ 30 " +"% de densité de remplissage. S’applique uniquement lorsque le motif de " "remplissage est réglé sur Gyroïde." msgid "Sparse infill pattern" @@ -15714,25 +16045,31 @@ msgstr "" "pur." msgid "Lightning overhang angle" -msgstr "" +msgstr "Angle de surplomb Lightning" msgid "Maximum overhang angle for Lightning infill support propagation." msgstr "" +"Angle de surplomb maximal pour la propagation du support du remplissage " +"Lightning." msgid "Prune angle" -msgstr "" +msgstr "Angle d’élagage" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Contrôle l’agressivité de l’élagage des branches Lightning courtes ou non " +"soutenues.\n" +"Cet angle est converti en interne en une distance par couche." msgid "Straightening angle" -msgstr "" +msgstr "Angle de redressement" msgid "Maximum straightening angle used to simplify Lightning branches." msgstr "" +"Angle de redressement maximal utilisé pour simplifier les branches Lightning." msgid "Sparse infill anchor length" msgstr "Longueur de l’ancrage de remplissage interne" @@ -15877,9 +16214,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk par défaut." -msgid "Junction Deviation" -msgstr "Déviation de jonction" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -16844,6 +17178,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer le remplissage interne.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17754,20 +18090,24 @@ msgstr "" "vitesse du pont est utilisée." msgid "Outer walls" -msgstr "" +msgstr "Parois externes" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer les parois externes.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "Inner walls" -msgstr "" +msgstr "Parois internes" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer les parois internes.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18490,16 +18830,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer le remplissage plein interne.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer la surface supérieure.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer la surface inférieure.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18901,6 +19247,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filament pour imprimer la base des supports et le radeau.\n" +"\"Défaut\" signifie qu’aucun filament spécifique n’est dédié aux supports : " +"le filament actuel est utilisé." msgid "Avoid interface filament for base" msgstr "Réduire le filament d’interface pour la base" @@ -18935,6 +19284,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filament pour imprimer l’interface des supports.\n" +"\"Défaut\" signifie qu’aucun filament spécifique n’est dédié à l’interface " +"des supports : le filament actuel est utilisé." msgid "Top interface layers" msgstr "Couches d'interface supérieures" @@ -19280,15 +19632,16 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Activer cette option pour le contrôle automatisé de la température du " -"caisson. Cette option active le lancement d’une commande M191 avant le code " -"« machine_start_gcode », qui fixe la température de la chambre et attend " -"qu’elle soit atteinte. En outre, elle déclenche une commande M141 à la fin " -"de l’impression pour éteindre le chauffage de la chambre, le cas échéant.\n" +"Activez cette option pour le contrôle automatisé de la température du " +"caisson. Cette option active l’émission d’une commande M191 avant le « " +"machine_start_gcode »,\n" +" qui fixe la température du caisson et attend qu’elle soit atteinte. En " +"outre, elle émet une commande M141 à la fin de l’impression pour éteindre le " +"chauffage du caisson, le cas échéant.\n" "\n" "Cette option repose sur la prise en charge des commandes M191 et M141 par le " -"micrologiciel, soit via des macros, soit de manière native, et est " -"généralement utilisée lorsqu’un chauffage de chambre actif est installé." +"micrologiciel, via des macros ou nativement, et est généralement utilisée " +"lorsqu’un chauffage de caisson actif est installé." msgid "Chamber temperature" msgstr "Température du caisson" @@ -19315,24 +19668,24 @@ msgstr "" "Pour les matériaux à haute température tels que l’ABS, l’ASA, le PC et le " "PA, une température de caisson plus élevée peut contribuer à supprimer ou à " "réduire la déformation et, éventuellement, à augmenter la force de liaison " -"entre les couches. Cependant, dans le même temps, une température de chambre " +"entre les couches. Cependant, dans le même temps, une température de caisson " "plus élevée réduira l’efficacité de la filtration de l’air pour l’ABS et " "l’ASA.\n" "\n" "Pour le PLA, le PETG, le TPU, le PVA et d’autres matériaux à basse " "température, cette option doit être désactivée (réglée sur 0) car la " -"température de la chambre doit être basse pour éviter l’engorgement de " +"température du caisson doit être basse pour éviter l’engorgement de " "l’extrudeuse causé par le ramollissement du matériau au niveau du " "heatbreak.\n" "\n" "S’il est activé, ce paramètre définit également une variable gcode nommée " "chamber_temperature, qui peut être utilisée pour transmettre la température " -"de la chambre souhaitée à votre macro de démarrage de l’impression, ou à une " +"de caisson souhaitée à votre macro de démarrage de l’impression, ou à une " "macro de trempe thermique comme celle-ci : PRINT_START (autres variables) " "CHAMBER_TEMP=[chamber_temperature]. Cela peut être utile si votre imprimante " "ne prend pas en charge les commandes M141/M191, ou si vous souhaitez gérer " "le préchauffage dans la macro de démarrage de l’impression si aucun " -"chauffage de chambre actif n’est installé." +"chauffage de caisson actif n’est installé." msgid "Nozzle temperature for layers after the initial one." msgstr "Température de la buse pour les couches après la première" @@ -19392,7 +19745,7 @@ msgstr "" "coque supérieure seront augmentées" msgid "Top solid layers" -msgstr "Couches solides supérieures" +msgstr "Couches pleines supérieures" msgid "Top shell thickness" msgstr "Épaisseur de la coque supérieure" @@ -20057,9 +20410,10 @@ msgstr "Valeur non valide lorsque le mode vase en spirale est activé: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" +"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la buse : " msgid "too large line width " -msgstr "largeur de ligne trop importante " +msgstr "largeur de ligne trop grande " msgid " not in range " msgstr " hors plage " @@ -20167,7 +20521,7 @@ msgid "Send progress to pipe." msgstr "Envoyer la progression à la queue." msgid "Arrange Options" -msgstr "Options d'organisation" +msgstr "Options d’agencement" msgid "Arrange options: 0-disable, 1-enable, others-auto" msgstr "Options d'organisation : 0-désactiver, 1-activer, autres-auto" @@ -20329,10 +20683,10 @@ msgstr "" "avertissement, 3 :info, 4 :débogage, 5 :trace\n" msgid "Log file" -msgstr "" +msgstr "Fichier journal" msgid "Redirects debug logging to file.\n" -msgstr "" +msgstr "Redirige les journaux de débogage vers un fichier.\n" msgid "Enable timelapse for print" msgstr "Activer le timelapse pour l’impression" @@ -20745,7 +21099,7 @@ msgid "Second" msgstr "Seconde" msgid "Print preset name" -msgstr "Imprimer le nom de la présélection" +msgstr "Nom du préréglage d’impression" msgid "Name of the print preset used for slicing." msgstr "Nom du préréglage d’impression utilisé pour le découpage." @@ -21325,7 +21679,7 @@ msgid "We found the best flow ratio for you" msgstr "Nous avons trouvé le meilleur ratio de débit pour vous" msgid "Flow Ratio" -msgstr "Ratio du débit" +msgstr "Rapport de débit" msgid "Please input a valid value (0.0 < flow ratio < 2.0)" msgstr "Veuillez saisir une valeur valide (0,0 < ratio du débit < 2,0)" @@ -21903,13 +22257,13 @@ msgid "Top Surface Pattern" msgstr "Motif de la surface supérieure" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Choisissez un emplacement pour la couleur sélectionnée" msgid "Material in the material station" -msgstr "" +msgstr "Matériau dans la station de matériaux" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Seuls des matériaux du même type peuvent être sélectionnés." msgid "Send G-code to printer host" msgstr "Envoyer le G-code à l’imprimante" @@ -21938,46 +22292,56 @@ msgid "Upload" msgstr "Envoyer" msgid "Leveling before print" -msgstr "" +msgstr "Nivellement avant impression" msgid "Time-lapse" msgstr "Timelapse" msgid "Enable IFS" -msgstr "" +msgstr "Activer l’IFS" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "%d emplacements IFS détectés sur l’imprimante." msgid "This printer does not report a material station." -msgstr "" +msgstr "Cette imprimante ne signale aucune station de matériaux." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "Impossible de lire les emplacements IFS de l’imprimante." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Chargement des emplacements IFS depuis l’imprimante…" msgid "Slice the plate first to get project material information." msgstr "" +"Découpez d’abord la plaque pour obtenir les informations sur les matériaux " +"du projet." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Cette plaque utilise plusieurs matériaux. Activez l’IFS et attribuez chaque " +"outil à un emplacement de l’imprimante." msgid "Each project material must be assigned to an IFS slot before printing." msgstr "" +"Chaque matériau du projet doit être attribué à un emplacement IFS avant " +"l’impression." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Chaque matériau du projet doit être attribué à un emplacement IFS chargé " +"avant l’impression." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"Chaque matériau du projet doit correspondre au matériau chargé dans " +"l’emplacement IFS sélectionné." msgid "Print host upload queue" msgstr "File d’attente d’envoi de l’hôte d’impression" @@ -22034,13 +22398,13 @@ msgstr "Plateau texturé (côté B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Imprimante : %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Calibrer avant l’impression" msgid "Filament Mapping:" -msgstr "" +msgstr "Correspondance des filaments :" msgid "Unable to perform boolean operation on selected parts" msgstr "" @@ -22119,7 +22483,7 @@ msgid "Log Info" msgstr "Journal de bord" msgid "Select filament preset" -msgstr "Sélection du préréglage du filament" +msgstr "Sélectionner le préréglage du filament" msgid "Create Filament" msgstr "Création d’un filament" @@ -22325,9 +22689,6 @@ msgstr "Préréglage de l’imprimante" msgid "Filament Preset Template" msgstr "Modèle de préréglage Filament" -msgid "Deselect All" -msgstr "Désélectionner tout" - msgid "Process Preset Template" msgstr "Modèle de préréglage de traitement" @@ -22633,13 +22994,13 @@ msgstr[0] "Les préréglages suivants héritent de ce préréglage." msgstr[1] "Le préréglage suivant hérite de ce préréglage." msgid "Delete Preset" -msgstr "Supprimer la présélection" +msgstr "Supprimer le préréglage" msgid "Are you sure to delete the selected preset?" msgstr "Êtes-vous sûr de vouloir supprimer le préréglage sélectionné ?" msgid "Delete preset" -msgstr "Effacer la présélection" +msgstr "Supprimer le préréglage" msgid "+ Add Preset" msgstr "+ Ajouter un préréglage" @@ -22668,8 +23029,8 @@ msgstr "Copier le préréglage du filament" msgid "The filament choice not find filament preset, please reselect it" msgstr "" -"Le choix du filament ne correspond pas à la présélection du filament, " -"veuillez le resélectionner" +"Le choix de filament ne correspond pas au préréglage de filament, veuillez " +"le resélectionner" msgid "[Delete Required]" msgstr "[Suppression requise]" @@ -22781,16 +23142,17 @@ msgstr "" "l'imprimante. Les agents disponibles sont enregistrés au démarrage." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Sélectionner une imprimante Flashforge" msgid "Discovered Printers" -msgstr "" +msgstr "Imprimantes découvertes" msgid "Could not get a valid Printer Host reference" msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" msgstr "" +"Aucune session valide détectée. Procéder à la connexion à 3DPrinterOS ?" msgid "Success!" msgstr "Succès !" @@ -22862,8 +23224,20 @@ msgstr "Type d’imprimante introuvable, veuillez le sélectionner manuellement. msgid "Authorizing..." msgstr "Autorisation en cours…" +msgid "Error. Can't get api token for authorization" +msgstr "Erreur : impossible d’obtenir le jeton d’API pour l’autorisation" + +msgid "Could not parse server response." +msgstr "Impossible d’analyser la réponse du serveur." + +msgid "Error saving session to file" +msgstr "Erreur lors de l’enregistrement de la session dans un fichier" + msgid "Error session check" -msgstr "" +msgstr "Erreur lors de la vérification de la session" + +msgid "Error during file upload" +msgstr "Erreur pendant l’envoi du fichier" #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -23468,7 +23842,7 @@ msgid "Use External Spool" msgstr "Utiliser la bobine externe" msgid "Select Printers" -msgstr "Sélectionner des imprimantes" +msgstr "Sélectionner les imprimantes" msgid "Device Name" msgstr "Nom de l’appareil" @@ -23682,25 +24056,129 @@ msgstr "" "pour le configurer." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge a renvoyé une réponse JSON invalide." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "Aucune imprimante Flashforge n’a été découverte sur le réseau local." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Connexion à l’API locale Flashforge réussie." msgid "Serial connection to Flashforge is working correctly." msgstr "La connexion série à Flashforge fonctionne correctement." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "Impossible de se connecter à l’API locale Flashforge" msgid "Could not connect to Flashforge via serial" msgstr "Impossible de se connecter à Flashforge via la connexion série" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"L’API locale Flashforge nécessite à la fois le numéro de série et le code " +"d’accès." + +msgid "Printer returned an error" +msgstr "L’imprimante a renvoyé une erreur" + +msgid "Missing system_info in response" +msgstr "Champ system_info absent de la réponse" + +msgid "Missing printer serial number in response" +msgstr "Numéro de série de l’imprimante absent de la réponse" + +msgid "Error parsing response" +msgstr "Erreur lors de l’analyse de la réponse" + +msgid "ElegooLink not detected" +msgstr "ElegooLink non détecté" + +msgid "Invalid access code" +msgstr "Code d’accès invalide" + +msgid "CC2 device not detected" +msgstr "Appareil CC2 non détecté" + +msgid "Connection to ElegooLink is working correctly." +msgstr "La connexion à ElegooLink fonctionne correctement." + +msgid "Could not connect to ElegooLink" +msgstr "Impossible de se connecter à ElegooLink" + +#, boost-format +msgid "Error code: %1%" +msgstr "Code d’erreur : %1%" + +msgid "Upload failed" +msgstr "Échec de l’envoi" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "Impossible d’ouvrir le fichier à envoyer." + +msgid "Failed to read file chunk for upload." +msgstr "Impossible de lire le fragment de fichier à envoyer." + +msgid "CC2 upload failed" +msgstr "Échec de l’envoi vers la CC2" + +msgid "The file is empty or could not be read." +msgstr "Le fichier est vide ou n’a pas pu être lu." + +msgid "Failed to calculate file checksum." +msgstr "Impossible de calculer la somme de contrôle du fichier." + +msgid "Error code not found" +msgstr "Code d’erreur introuvable" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "Le fichier est introuvable, veuillez vérifier et réessayer." + +msgid "The file is corrupted, please check and try again." +msgstr "Le fichier est corrompu, veuillez vérifier et réessayer." + +msgid "Transmission abnormality, please check and try again." +msgstr "Anomalie de transmission, veuillez vérifier et réessayer." + +msgid "The file does not match the printer, please check and try again." +msgstr "" +"Le fichier ne correspond pas à l’imprimante, veuillez vérifier et réessayer." + +msgid "Start print timeout" +msgstr "Délai de démarrage de l’impression dépassé" + +msgid "Start print failed" +msgstr "Échec du démarrage de l’impression" + +msgid "Connected to CrealityPrint successfully!" +msgstr "Connexion à CrealityPrint réussie !" + +msgid "Could not connect to CrealityPrint" +msgstr "Impossible de se connecter à CrealityPrint" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" +"Le nom d’hôte/IP/URL n’a pas pu être analysé, veuillez le vérifier et " +"réessayer." + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" msgid "The provided state is not correct." msgstr "L’état communiqué n’est pas correct." @@ -23760,16 +24238,25 @@ msgstr "Bordure à oreilles" msgid "Please select single object." msgstr "Veuillez sélectionner un seul objet." +msgid "Entering Brim Ears" +msgstr "Entrée dans Bordure à oreilles" + +msgid "Leaving Brim Ears" +msgstr "Quitter Bordure à oreilles" + msgid "Zoom Out" -msgstr "Dézoomer" +msgstr "Zoom arrière" msgid "Zoom In" -msgstr "Zoomer" +msgstr "Zoom avant" msgid "Load skipping objects information failed. Please try again." msgstr "" "Échec du chargement des informations d'objets à sauter. Veuillez réessayer." +msgid "Failed to create the temporary folder." +msgstr "Échec de la création du dossier temporaire." + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Sélectionné(s)" @@ -23923,6 +24410,102 @@ msgstr "Nombre de facettes triangulaires" msgid "Calculating, please wait..." msgstr "Calcul en cours, veuillez patienter…" +msgid "PresetBundle" +msgstr "Paquet de préréglages" + +msgid "Bundle folder does not exist." +msgstr "Le dossier du paquet n’existe pas." + +msgid "Failed to open folder." +msgstr "Impossible d’ouvrir le dossier." + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" +"Supprimer le paquet sélectionné du dossier ainsi que tous les préréglages " +"chargés depuis celui-ci ?" + +msgid "Delete Bundle" +msgstr "Supprimer le paquet" + +msgid "Failed to remove bundle." +msgstr "Impossible de retirer le paquet." + +msgid "Remove Bundle" +msgstr "Retirer le paquet" + +msgid "Unsubscribe bundle?" +msgstr "Se désabonner du paquet ?" + +msgid "UnsubscribeBundle" +msgstr "Se désabonner du paquet" + +msgid "Failed to unsubscribe bundle." +msgstr "Impossible de se désabonner du paquet." + +msgid "Unsubscribe Bundle" +msgstr "Se désabonner du paquet" + +msgid "ExportPresetBundle" +msgstr "Exporter le paquet de préréglages" + +msgid "Save preset bundle" +msgstr "Enregistrer le paquet de préréglages" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "Échec de l’intégration au bureau : exécutable introuvable." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "Intégration au bureau" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "Le téléchargement a échoué" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "Impossible de créer le fichier à l’emplacement %1%" + +msgid "Archive preview" +msgstr "Aperçu de l’archive" + +msgid "Open File" +msgstr "Ouvrir un fichier" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24087,9 +24670,9 @@ msgid "" "Auto-Arrange\n" "Did you know that you can auto-arrange all the objects in your project?" msgstr "" -"Agencement Automatique\n" -"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " -"votre projet ?" +"Agencement automatique\n" +"Saviez-vous que vous pouvez agencer automatiquement tous les objets de votre " +"projet ?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index c6e4dcf7ad..f58573acaa 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -194,6 +194,15 @@ msgstr "Kész" msgid "Support Generated" msgstr "Támasz legenerálva" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Felület Tárgyasztalra Illesztése" @@ -281,6 +290,15 @@ msgstr "A következővel festve: %1% filament" msgid "To:" msgstr "Ide:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Festett bolyhos felület" @@ -302,6 +320,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Festett bolyhos felület engedélyezése ennél az objektumnál" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Mozgatás" @@ -691,6 +718,15 @@ msgstr "Vágás vonallal" msgid "Delete connector" msgstr "Csatlakozó törlése" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Háló neve" @@ -1566,6 +1602,12 @@ msgstr "Párhuzamos távolság:" msgid "Flip by Face 2" msgstr "Tükrözés a 2. felület szerint" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Összeállítás" @@ -1604,6 +1646,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Felület-felület összeállítás" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1886,6 +1934,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3191,6 +3253,45 @@ msgstr "A maximális hőmérséklet nem haladhatja meg ezt: " msgid "The minmum temperature should not be less than " msgstr "A minimális hőmérséklet nem lehet kevesebb ennél: " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Összes" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Kijelölés megszüntetése" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Előrehaladott beállítások" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3472,6 +3573,9 @@ msgstr "A betűtípus nem tartalmaz alakzatot a megadott szöveghez." msgid "There is no valid surface for text projection." msgstr "Nincs érvényes felület a szöveg vetítéséhez." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Hőelőkészítés az első réteg optimalizálásához" @@ -8695,9 +8799,6 @@ msgstr "Felhasználói filamentbeállítások csoportosítása" msgid "Group user filament presets based on selection" msgstr "Felhasználói filamentbeállítások csoportosítása kiválasztás alapján" -msgid "All" -msgstr "Összes" - msgid "By type" msgstr "Típus szerint" @@ -9095,6 +9196,14 @@ msgstr "Hálózati bővítmény letöltése" msgid "Associate files to OrcaSlicer" msgstr "Fájlok társítása a OrcaSlicerhoz" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf fájlok társítása a OrcaSlicerhoz" @@ -9973,6 +10082,9 @@ msgstr "" "Fájlfeltöltés időtúllépés. Ellenőrizd, hogy a firmware verzió támogatja-e " "ezt a műveletet, és hogy a nyomtató megfelelően működik-e." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Szeletelés kész." @@ -10430,6 +10542,9 @@ msgstr "Sebesség beállítása a külső és belső hidakhoz" msgid "Travel speed" msgstr "Mozgás sebessége" +msgid "Junction Deviation" +msgstr "Csomóponti eltérés" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11339,9 +11454,6 @@ msgstr "" "lecseréli. A nem használt nyomtató-filamentek automatikusan a lista végére " "kerülnek." -msgid "Advanced settings" -msgstr "Előrehaladott beállítások" - msgid "Add unused AMS filaments to filaments list." msgstr "A nem használt AMS filamentek hozzáadása a filamentlistához." @@ -11854,12 +11966,23 @@ msgstr "Új hálózati bővítmény (%s) érhető el. Szeretnéd telepíteni?" msgid "New version of Orca Slicer" msgstr "A Orca Slicer új verziója" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Ellenőrizd a GitHub-on" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Verzió kihagyása" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Fúvóka lecserélésének megerősítése" @@ -11976,6 +12099,9 @@ msgstr "Vágómodul" msgid "Auto Fire Extinguishing System" msgstr "Automatikus tűzoltó rendszer" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware frissítése" @@ -13234,7 +13360,7 @@ msgid "External bridge density" msgstr "Külső híd sűrűsége" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13248,18 +13374,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Belső híd sűrűsége" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13294,11 +13416,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15553,9 +15673,6 @@ msgstr "" msgid "Default jerk." msgstr "Alapértelmezett jerk." -msgid "Junction Deviation" -msgstr "Csomóponti eltérés" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21855,9 +21972,6 @@ msgstr "Nyomtatóbeállítás" msgid "Filament Preset Template" msgstr "Filamentbeállítás sablon" -msgid "Deselect All" -msgstr "Kijelölés megszüntetése" - msgid "Process Preset Template" msgstr "Folyamatbeállítás sablon" @@ -22369,9 +22483,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "A nyomtatóállomás típusa nem egyezik: %s" @@ -23188,6 +23314,105 @@ msgstr "Nem sikerült soros kapcsolaton keresztül csatlakozni a Flashforge-hoz" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "A megadott állapot nem megfelelő." @@ -23241,6 +23466,12 @@ msgstr "Karimás Fülek" msgid "Please select single object." msgstr "Válassz ki egyetlen objektumot." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Kicsinyítés" @@ -23250,6 +23481,9 @@ msgstr "Nagyítás" msgid "Load skipping objects information failed. Please try again." msgstr "A kihagyott objektumok adatainak betöltése sikertelen. Próbáld újra." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d kiválasztva" @@ -23402,6 +23636,100 @@ msgstr "Háromszögfelületek száma" msgid "Calculating, please wait..." msgstr "Számítás folyamatban, kérlek várj..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 677a5d56c7..8695e4387e 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -198,6 +198,15 @@ msgstr "Fatto" msgid "Support Generated" msgstr "Supporto generato" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Strumento selezione faccia come base" @@ -286,6 +295,15 @@ msgstr "Dipinto utilizzando: Filamento %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Dipingi superficie ruvida" @@ -307,6 +325,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Abilita la superficie ruvida dipinta per questo oggetto" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Sposta" @@ -697,6 +724,15 @@ msgstr "Taglia sulla linea" msgid "Delete connector" msgstr "Cancella connettore" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nome maglia poligonale" @@ -1589,6 +1625,12 @@ msgstr "Distanza parallela:" msgid "Flip by Face 2" msgstr "Capovolgi da Faccia 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Assembla" @@ -1626,6 +1668,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Assemblaggio faccia a faccia" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1911,6 +1959,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3218,6 +3280,45 @@ msgstr "La temperatura massima non può superare " msgid "The minmum temperature should not be less than " msgstr "La temperatura minima non deve essere inferiore a " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tutto" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Deseleziona tutto" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Impostazioni avanzate" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3501,6 +3602,9 @@ msgstr "Il carattere non ha alcuna forma per il testo specificato." msgid "There is no valid surface for text projection." msgstr "Non esiste una superficie valida per la proiezione del testo." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Precondizionamento termico per l'ottimizzazione del primo strato" @@ -8779,9 +8883,6 @@ msgstr "Raggruppa profili di filamento utente" msgid "Group user filament presets based on selection" msgstr "Raggruppa i profili di filamento utente in base alla selezione" -msgid "All" -msgstr "Tutto" - msgid "By type" msgstr "Per tipo" @@ -9168,6 +9269,14 @@ msgstr "Scarica modulo di rete" msgid "Associate files to OrcaSlicer" msgstr "Associa i file ad OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associa i file 3MF ad OrcaSlicer" @@ -10046,6 +10155,9 @@ msgstr "" "Timeout caricamento file. Verificare se la versione del firmware supporta " "questa operazione o se la stampante funziona correttamente." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Elaborazione completa." @@ -10512,6 +10624,9 @@ msgstr "Imposta la velocità per ponti esterni e interni" msgid "Travel speed" msgstr "Velocità di spostamento" +msgid "Junction Deviation" +msgstr "Deviazione di giunzione" + msgid "Jerk(XY)" msgstr "Scatto(XY)" @@ -11421,9 +11536,6 @@ msgstr "" "sui filamenti della stampante. I filamenti della stampante non utilizzati " "verranno aggiunti automaticamente alla fine della lista." -msgid "Advanced settings" -msgstr "Impostazioni avanzate" - msgid "Add unused AMS filaments to filaments list." msgstr "Aggiungi filamenti AMS non utilizzati alla lista filamenti." @@ -11947,12 +12059,23 @@ msgstr "È disponibile un nuovo modulo di rete (%s). Vuoi installarlo?" msgid "New version of Orca Slicer" msgstr "Nuova versione di OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Visualizza su GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Salta questa versione" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Conferma e aggiorna l'ugello" @@ -12071,6 +12194,9 @@ msgstr "Modulo di taglio" msgid "Auto Fire Extinguishing System" msgstr "Sistema antincendio automatico" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aggiorna firmware" @@ -13359,7 +13485,7 @@ msgid "External bridge density" msgstr "Densità ponti esterni" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13373,18 +13499,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densità ponti interni" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13419,11 +13541,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15731,9 +15851,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk predefinito." -msgid "Junction Deviation" -msgstr "Deviazione di giunzione" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -22143,9 +22260,6 @@ msgstr "Profilo stampante" msgid "Filament Preset Template" msgstr "Modello profilo di filamento" -msgid "Deselect All" -msgstr "Deseleziona tutto" - msgid "Process Preset Template" msgstr "Modello profilo di processo" @@ -22662,9 +22776,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipo di host di stampa non corrispondente: %s" @@ -23486,6 +23612,105 @@ msgstr "Impossibile connettersi a Flashforge tramite seriale" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Lo stato fornito non è corretto." @@ -23542,6 +23767,12 @@ msgstr "Tese ad orecchio" msgid "Please select single object." msgstr "Seleziona un singolo oggetto." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom indietro" @@ -23551,6 +23782,9 @@ msgstr "Zoom avanti" msgid "Load skipping objects information failed. Please try again." msgstr "Caricamento informazioni sugli oggetti da saltare fallito. Riprovare." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selezionati" @@ -23703,6 +23937,100 @@ msgstr "Numero di facce triangolari" msgid "Calculating, please wait..." msgstr "Calcolo in corso, attendere..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 0bcdfa1066..be614efa71 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -196,6 +196,15 @@ msgstr "完了" msgid "Support Generated" msgstr "生成されたサポート" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "ギズモ-面に配置" @@ -282,6 +291,15 @@ msgstr "フィラメント %1%でペイントします" msgid "To:" msgstr "先:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "ファジースキンのペイント" @@ -303,6 +321,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "このオブジェクトのペイントファジースキンを有効にする" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移動" @@ -688,6 +715,15 @@ msgstr "ラインでカット" msgid "Delete connector" msgstr "コネクター削除" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "メッシュ名" @@ -1559,6 +1595,12 @@ msgstr "平行距離:" msgid "Flip by Face 2" msgstr "面2で反転" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "組立てる" @@ -1596,6 +1638,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面と面の組み立て" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1869,6 +1917,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3141,6 +3203,45 @@ msgstr "最高温度は次の値を超えることはできません " msgid "The minmum temperature should not be less than " msgstr "最低温度は次の値を下回ることはできません " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "すべて" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "すべて選択解除" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "詳細設定" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3413,6 +3514,9 @@ msgstr "フォントに指定されたテキストの形状がありません。 msgid "There is no valid surface for text projection." msgstr "テキスト投影に有効な面がありません。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "初期レイヤー最適化のための熱プリコンディショニング" @@ -8487,9 +8591,6 @@ msgstr "ユーザーフィラメントプリセットをグループ化" msgid "Group user filament presets based on selection" msgstr "選択に基づいてユーザーフィラメントプリセットをグループ化" -msgid "All" -msgstr "すべて" - msgid "By type" msgstr "タイプ別" @@ -8861,6 +8962,14 @@ msgstr "ネットワークプラグインをダウンロード" msgid "Associate files to OrcaSlicer" msgstr "ファイルをOrca Slicerに関連付ける" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mfファイルをOrca Slicerに関連付けます。" @@ -9697,6 +9806,9 @@ msgstr "" "ファイルアップロードがタイムアウトしました。ファームウェアバージョンがこの操" "作をサポートしているか、プリンターが正常に動作しているか確認してください。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "スライス完了" @@ -10135,6 +10247,9 @@ msgstr "外部および内部ブリッジの速度を設定" msgid "Travel speed" msgstr "移動速度" +msgid "Junction Deviation" +msgstr "接合偏差" + msgid "Jerk(XY)" msgstr "ジャーク(XY)" @@ -10981,9 +11096,6 @@ msgstr "" "プリンターのフィラメントに基づいてプロジェクトフィラメントリストを順次置き換" "えます。未使用のプリンターフィラメントはリストの末尾に自動的に追加されます。" -msgid "Advanced settings" -msgstr "詳細設定" - msgid "Add unused AMS filaments to filaments list." msgstr "未使用のAMSフィラメントをフィラメントリストに追加します。" @@ -11468,12 +11580,23 @@ msgstr "新しいプラグイン (%s) が発見しました、インストール msgid "New version of Orca Slicer" msgstr "新バージョン" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "このバージョンをスキップ" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "確認してノズルを更新" @@ -11585,6 +11708,9 @@ msgstr "カッティングモジュール" msgid "Auto Fire Extinguishing System" msgstr "自動消火システム" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "ファームウェアを更新" @@ -12679,7 +12805,7 @@ msgid "External bridge density" msgstr "外部ブリッジ密度" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12693,18 +12819,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "内部ブリッジ密度" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12739,11 +12861,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14547,9 +14667,6 @@ msgstr "" msgid "Default jerk." msgstr "デフォルトジャーク。" -msgid "Junction Deviation" -msgstr "接合偏差" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19950,9 +20067,6 @@ msgstr "プリンタープリセット" msgid "Filament Preset Template" msgstr "フィラメントプリセットテンプレート" -msgid "Deselect All" -msgstr "すべて選択解除" - msgid "Process Preset Template" msgstr "プロセスプリセットテンプレート" @@ -20433,9 +20547,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "印刷ホストのタイプが一致しません: %s" @@ -21133,6 +21259,105 @@ msgstr "シリアル経由でFlashforgeに接続できませんでした" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "指定された状態が正しくありません。" @@ -21184,6 +21409,12 @@ msgstr "ブリム" msgid "Please select single object." msgstr "単一のオブジェクトを選択してください" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "ズームアウト" @@ -21193,6 +21424,9 @@ msgstr "ズームイン" msgid "Load skipping objects information failed. Please try again." msgstr "スキップオブジェクト情報のロードに失敗しました。再試行してください。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 選択済み" @@ -21345,6 +21579,100 @@ msgstr "三角面の数" msgid "Calculating, please wait..." msgstr "計算中、お待ちください..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index cba6c41c9f..fd97b851a1 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -198,6 +198,15 @@ msgstr "완료" msgid "Support Generated" msgstr "서포트 생성됨" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "변형도구 - 면에 배치" @@ -285,6 +294,15 @@ msgstr "칠하기에 사용한 필라멘트 %1%" msgid "To:" msgstr "대상:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "퍼지 스킨 칠하기" @@ -305,6 +323,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "이 객체의 칠한 퍼지 스킨 활성화" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "이동" @@ -691,6 +718,15 @@ msgstr "라인별로 자르기" msgid "Delete connector" msgstr "커넥터 삭제" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "메시 이름" @@ -1555,6 +1591,12 @@ msgstr "평행 거리:" msgid "Flip by Face 2" msgstr "면 2로 뒤집기" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "병합" @@ -1591,6 +1633,12 @@ msgstr "" msgid "Face and face assembly" msgstr "면과 면 조립" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1866,6 +1914,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3130,6 +3192,45 @@ msgstr "최대 온도는 다음 값을 초과할 수 없습니다 " msgid "The minmum temperature should not be less than " msgstr "최소 온도는 다음 값보다 낮아서는 안 됩니다 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "모두" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "모두 선택 해제" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "고급 설정" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3399,6 +3500,9 @@ msgstr "글꼴에 지정된 텍스트의 형태가 없습니다." msgid "There is no valid surface for text projection." msgstr "텍스트 프로젝션에 유효한 표면이 없습니다." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "첫 번째 레이어 최적화를 위한 열 사전 조건" @@ -8428,9 +8532,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "모두" - msgid "By type" msgstr "" @@ -8777,6 +8878,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "파일을 OrcaSlicer에 연결" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf 파일을 OrcaSlicer에 연결" @@ -9600,6 +9709,9 @@ msgstr "" "파일 업로드 시간이 초과되었습니다. 펌웨어 버전이 이 작업을 지원하는지 확인하" "거나 프린터가 제대로 작동하는지 확인하세요." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "슬라이스 완료." @@ -10022,6 +10134,9 @@ msgstr "외부 및 내부 브릿지 속도 설정" msgid "Travel speed" msgstr "이동 속도" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "저크(XY)" @@ -10874,9 +10989,6 @@ msgstr "" "프린터 필라멘트를 기준으로 프로젝트 필라멘트 목록을 순차적으로 교체합니다. 사" "용하지 않는 프린터 필라멘트는 자동으로 목록 끝에 추가됩니다." -msgid "Advanced settings" -msgstr "고급 설정" - msgid "Add unused AMS filaments to filaments list." msgstr "미사용 AMS 필라멘트를 필라멘트 목록에 추가하기." @@ -11364,12 +11476,23 @@ msgstr "새 네트워크 플러그인(%s)을 사용할 수 있습니다. 설치 msgid "New version of Orca Slicer" msgstr "Orca Slicer의 새 버전" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "이 버전 건너뛰기" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "노즐 확인 및 업데이트" @@ -11482,6 +11605,9 @@ msgstr "커팅 모듈" msgid "Auto Fire Extinguishing System" msgstr "자동 화재 진압 시스템" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "펌웨어 업데이트" @@ -12631,7 +12757,7 @@ msgid "External bridge density" msgstr "외부 브릿지 밀도" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12645,18 +12771,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "내부 브릿지 밀도" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12691,11 +12813,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14745,9 +14865,6 @@ msgstr "Klipper의 max_accel_to_decel은 가속도의 %%로 조정됩니다" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20478,9 +20595,6 @@ msgstr "프린터 사전 설정" msgid "Filament Preset Template" msgstr "필라멘트 사전 설정 템플릿" -msgid "Deselect All" -msgstr "모두 선택 해제" - msgid "Process Preset Template" msgstr "프로세스 사전 설정 템플릿" @@ -20964,9 +21078,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "일치하지 않는 출력 호스트 유형: %s" @@ -21710,6 +21836,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "제공된 상태가 올바르지 않습니다." @@ -21763,6 +21988,12 @@ msgstr "브림 귀" msgid "Please select single object." msgstr "단일 객체를 선택하세요." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "축소" @@ -21772,6 +22003,9 @@ msgstr "확대" msgid "Load skipping objects information failed. Please try again." msgstr "건너뛰는 개체 정보를 로드하지 못했습니다. 다시 시도해 주세요." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 선택됨" @@ -21918,6 +22152,100 @@ msgstr "삼각형 패싯 수" msgid "Calculating, please wait..." msgstr "계산 중, 잠시만 기다려주세요..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index 99a47c198e..7d4516cc26 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -48,9 +48,12 @@ src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.hpp src/slic3r/GUI/Gizmos/GLGizmoMove.cpp src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -58,6 +61,7 @@ src/slic3r/GUI/Gizmos/GLGizmosManager.cpp src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +src/slic3r/GUI/Gizmos/GLGizmoCut.hpp src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp src/slic3r/GUI/Gizmos/GLGizmoFaceDetector.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -67,7 +71,9 @@ src/slic3r/GUI/Gizmos/GLGizmoText.hpp src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp +src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -89,6 +95,8 @@ src/slic3r/GUI/Widgets/AMSControl.cpp src/slic3r/GUI/Widgets/FanControl.cpp src/slic3r/GUI/Widgets/FilamentLoad.cpp src/slic3r/GUI/Widgets/TempInput.cpp +src/slic3r/GUI/Widgets/CheckList.cpp +src/slic3r/GUI/Widgets/SwitchButton.cpp src/slic3r/GUI/ImGuiWrapper.cpp src/slic3r/GUI/Jobs/ArrangeJob.cpp src/slic3r/GUI/Jobs/OrientJob.cpp @@ -98,6 +106,7 @@ src/slic3r/GUI/Jobs/BindJob.cpp src/slic3r/GUI/Jobs/PrintJob.cpp src/slic3r/GUI/Jobs/SendJob.cpp src/slic3r/GUI/Jobs/EmbossJob.cpp +src/slic3r/GUI/Jobs/PlaterWorker.hpp src/slic3r/GUI/ThermalPreconditioningDialog.cpp src/slic3r/GUI/ThermalPreconditioningDialog.hpp src/slic3r/GUI/Jobs/SLAImportJob.cpp @@ -237,8 +246,12 @@ src/slic3r/GUI/FilamentMapPanel.cpp src/slic3r/Utils/Obico.cpp src/slic3r/Utils/SimplyPrint.cpp src/slic3r/Utils/Flashforge.cpp +src/slic3r/Utils/ElegooLink.cpp +src/slic3r/Utils/CrealityPrint.cpp +src/slic3r/Utils/PrintHost.cpp src/slic3r/GUI/Jobs/OAuthJob.cpp src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp src/slic3r/GUI/PartSkipDialog.cpp src/slic3r/GUI/PartSkipDialog.hpp src/slic3r/GUI/SkipPartCanvas.cpp @@ -250,4 +263,12 @@ src/slic3r/GUI/NetworkPluginDialog.cpp src/slic3r/GUI/RammingChart.cpp src/slic3r/GUI/StepMeshDialog.cpp src/slic3r/GUI/FilamentPickerDialog.hpp +src/slic3r/GUI/PresetBundleDialog.cpp +src/slic3r/GUI/ExportPresetBundleDialog.cpp +src/slic3r/GUI/DesktopIntegrationDialog.cpp +src/slic3r/GUI/Downloader.cpp +src/slic3r/GUI/DownloaderFileGet.cpp +src/slic3r/GUI/FileArchiveDialog.cpp +src/slic3r/GUI/PrinterCloudAuthDialog.cpp +src/slic3r/GUI/PrinterWebViewHandler.cpp src/libslic3r/PresetBundle.cpp diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 95a9564ca6..3e5826f896 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-10-25 23:01+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -197,6 +197,15 @@ msgstr "Atlikta" msgid "Support Generated" msgstr "Atramos sugeneruotos" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Patalpinti ant paviršiaus" @@ -284,6 +293,15 @@ msgstr "Piešta naudojant: Gija %1%" msgid "To:" msgstr "To:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Piešti grublėtą paviršių" @@ -304,6 +322,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Perkelti" @@ -695,6 +722,15 @@ msgstr "Pjovimas pagal liniją" msgid "Delete connector" msgstr "Ištrinti jungtį" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Figūros pavadinimas" @@ -1564,6 +1600,12 @@ msgstr "Lygiagretus atstumas:" msgid "Flip by Face 2" msgstr "Apversti pagal paviršių 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Surinkti" @@ -1600,6 +1642,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1886,6 +1934,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3184,6 +3246,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Visi" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Atšaukti visus" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3464,6 +3565,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8641,9 +8745,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Visi" - msgid "By type" msgstr "By type" @@ -9018,6 +9119,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Susieti failus su Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Susieti .3mf failus su Orca Slicer" @@ -9877,6 +9986,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Sluoksniavimas baigtas." @@ -10338,6 +10450,9 @@ msgstr "Vidinių ir išorinių tiltų greitis" msgid "Travel speed" msgstr "Judėjimo greitis" +msgid "Junction Deviation" +msgstr "Sujungimo nuokrypis" + msgid "Jerk(XY)" msgstr "Pagreitis (XY)" @@ -11222,9 +11337,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11727,12 +11839,23 @@ msgstr "Yra naujas tinklo papildinys(%s), ar norite jį įdiegti?" msgid "New version of Orca Slicer" msgstr "Nauja \"Orca Slicer\" versija" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Praleisti šią versiją" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Patvirtinti ir atnaujinti purkštuką" @@ -11846,6 +11969,9 @@ msgstr "Pjovimo modulis" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Atnaujinti programinę įrangą" @@ -13079,7 +13205,7 @@ msgid "External bridge density" msgstr "Išorinio tilto tankis" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13093,18 +13219,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Vidinių tiltų tankis" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13139,11 +13261,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15350,9 +15470,6 @@ msgstr "\"Klipper\" max_accel_to_decel bus pakoreguotas pagal šį pagreičio %% msgid "Default jerk." msgstr "Numatytasis trūkčiojimas." -msgid "Junction Deviation" -msgstr "Sujungimo nuokrypis" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21493,9 +21610,6 @@ msgstr "Spausdintuvo nustatymai" msgid "Filament Preset Template" msgstr "Gijos nustatymų šablonas" -msgid "Deselect All" -msgstr "Atšaukti visus" - msgid "Process Preset Template" msgstr "Proceso nustatymų šablonas" @@ -22012,9 +22126,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Neatitinka tinklinio spausdintuvo tipas: %s" @@ -22816,6 +22942,105 @@ msgstr "Nepavyko prisijungti prie „Flashforge“ per nuoseklųjį prievadą" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Pateikta būsena neteisinga." @@ -22868,6 +23093,12 @@ msgstr "Krašto \"ausys\"" msgid "Please select single object." msgstr "Pasirinkite vieną objektą." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22877,6 +23108,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -23028,6 +23262,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 47626464be..c80242b576 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -191,6 +191,15 @@ msgstr "Klaar" msgid "Support Generated" msgstr "Ondersteuning gegenereerd" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Plaats op vlak" @@ -279,6 +288,15 @@ msgstr "Geschilderd met filament %1%" msgid "To:" msgstr "Naar:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Paint-on fuzzy skin" @@ -299,6 +317,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Verplaats" @@ -688,6 +715,15 @@ msgstr "Cut by line" msgid "Delete connector" msgstr "Delete connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Meshnaam" @@ -1557,6 +1593,12 @@ msgstr "Parallel distance:" msgid "Flip by Face 2" msgstr "Flip by Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Monteren" @@ -1593,6 +1635,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1874,6 +1922,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3172,6 +3234,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Alles" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Alles deselecteren" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3448,6 +3549,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8648,9 +8752,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Alles" - msgid "By type" msgstr "By type" @@ -9025,6 +9126,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Koppel bestanden aan OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Koppel .3mf-bestanden aan OrcaSlicer" @@ -9884,6 +9993,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice gelukt." @@ -10338,6 +10450,9 @@ msgstr "Snelheid instellen voor externe en interne bruggen" msgid "Travel speed" msgstr "Verplaatsing-sneleheid" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11220,9 +11335,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11729,12 +11841,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Nieuwe versie van Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Deze versie overslaan" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bevestig en update het mondstuk" @@ -11848,6 +11971,9 @@ msgstr "Cutting Module" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware bijwerken" @@ -13083,7 +13209,7 @@ msgid "External bridge density" msgstr "External bridge density" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13097,18 +13223,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Internal bridge density" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13143,11 +13265,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15353,9 +15473,6 @@ msgstr "" msgid "Default jerk." msgstr "Default jerk." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21490,9 +21607,6 @@ msgstr "Vooraf ingestelde printer" msgid "Filament Preset Template" msgstr "Filament vooraf ingestelde sjabloon" -msgid "Deselect All" -msgstr "Alles deselecteren" - msgid "Process Preset Template" msgstr "Vooraf ingesteld proces sjabloon" @@ -21999,9 +22113,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Verkeerd type afdrukhost: %s" @@ -22792,6 +22918,105 @@ msgstr "Could not connect to Flashforge via serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "The provided state is not correct." @@ -22844,6 +23069,12 @@ msgstr "Rand Oren" msgid "Please select single object." msgstr "Selecteer een enkel object." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Uitzoomen" @@ -22853,6 +23084,9 @@ msgstr "Inzoomen" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d geselecteerd" @@ -23004,6 +23238,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 332fd42da7..8da5eb8614 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -199,6 +199,15 @@ msgstr "Gotowe" msgid "Support Generated" msgstr "Wygenerowana podpora" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Uchwyt-Połóż na Płaszczyźnie" @@ -287,6 +296,15 @@ msgstr "Pomalowane za pomocą: Filament %1%" msgid "To:" msgstr "Do:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Malowanie Fuzzy Skin" @@ -306,6 +324,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Przesuń" @@ -699,6 +726,15 @@ msgstr "Cięcie linią" msgid "Delete connector" msgstr "Usuń łącznik" +msgid "Entering Cut gizmo" +msgstr "Otwieranie uchwytu przecinania" + +msgid "Leaving Cut gizmo" +msgstr "Zamykanie uchwytu wytłaczania" + +msgid "Cut gizmo editing" +msgstr "Edytowanie uchwytów przecinania" + msgid "Mesh name" msgstr "Nazwa siatki" @@ -1571,6 +1607,12 @@ msgstr "Odległość między równoległymi krawędziami:" msgid "Flip by Face 2" msgstr "Obróć względem 2 powierzchni" +msgid "Entering Measure gizmo" +msgstr "Otwieranie uchwytu pomiaru" + +msgid "Leaving Measure gizmo" +msgstr "Zamykanie uchwytu wytłaczania" + msgid "Assemble" msgstr "Złożenie" @@ -1609,6 +1651,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montaż - powierzchnia do powierzchni" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1892,6 +1940,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3168,6 +3230,45 @@ msgstr "Maksymalna temperatura nie może przekroczyć " msgid "The minmum temperature should not be less than " msgstr "Minimalna temperatura nie powinna być mniejsza niż " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Wszystkie" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Odznacz wszystko" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Ustawienia zaawansowane" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3433,6 +3534,9 @@ msgstr "Czcionka nie ma żadnego kształtu dla danego tekstu." msgid "There is no valid surface for text projection." msgstr "Nie ma prawidłowej powierzchni do rzutowania tekstu." +msgid "An unexpected error occurred" +msgstr "Wystąpił nieoczekiwany błąd" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Wyrównywanie termiczne w celu optymalizacji pierwszej warstwy" @@ -8599,9 +8703,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "Wszystkie" - msgid "By type" msgstr "" @@ -8951,6 +9052,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "Skojarzenia plików z OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Skojarzenie plików 3MF" @@ -9802,6 +9911,9 @@ msgstr "" "Przekroczono limit czasu wgrywania pliku. Sprawdź czy Twoja wersja " "oprogramowania obsługuje tą operację oraz czy drukarka działa poprawnie." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Zakończono cięcie modelu." @@ -10236,6 +10348,9 @@ msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostów" msgid "Travel speed" msgstr "Szybkość przemieszczania" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "Jerk (XY)" @@ -11119,9 +11234,6 @@ msgstr "" "drukarki. Nieużywane filamenty drukarki zostaną automatycznie dodane na " "koniec listy." -msgid "Advanced settings" -msgstr "Ustawienia zaawansowane" - msgid "Add unused AMS filaments to filaments list." msgstr "Dodaj nieużywane filamenty AMS do listy filamentów." @@ -11619,12 +11731,23 @@ msgstr "Dostępna jest nowa wtyczka sieciowa (%s). Czy zainstalować ją?" msgid "New version of Orca Slicer" msgstr "Nowa wersja Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Pomiń tę wersję" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Potwierdź i zaktualizuj dyszę" @@ -11738,6 +11861,9 @@ msgstr "Moduł tnący" msgid "Auto Fire Extinguishing System" msgstr "Automatyczny system gaśniczy" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aktualizuj oprogramowanie" @@ -12959,7 +13085,7 @@ msgid "External bridge density" msgstr "Gęstość zewnętrznych mostów" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12973,18 +13099,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Gęstość wewnętrznych mostów" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13019,11 +13141,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15201,9 +15321,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21196,9 +21313,6 @@ msgstr "Profil drukarki" msgid "Filament Preset Template" msgstr "Opracuj profil filamentu" -msgid "Deselect All" -msgstr "Odznacz wszystko" - msgid "Process Preset Template" msgstr "Opracuj profil procesu" @@ -21704,9 +21818,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Niepasujący typ hosta drukowania: %s" @@ -22496,6 +22622,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Podany stan nie jest właściwy" @@ -22549,6 +22774,12 @@ msgstr "Uszy brim" msgid "Please select single object." msgstr "Proszę wybrać pojedynczy obiekt." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Pomniejsz" @@ -22560,6 +22791,9 @@ msgstr "" "Nie udało się pobrać informacji o pomijanych obiektach. Proszę spróbować " "ponownie." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d wybrano" @@ -22707,6 +22941,112 @@ msgstr "Liczba trójkątnych faset" msgid "Calculating, please wait..." msgstr "Obliczanie, proszę czekać..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" +"Integracja z pulpitem nie powiodła się - boost::filesystem::canonical nie " +"zwrócił ścieżki do appimage." + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" +"Integracji z pulpitem nie powiodła się - nie znaleziono pliku wykonywalnego." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" +"Integracja z pulpitem nie powiodła się, ponieważ nie znaleziono katalogu " +"aplikacji." + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" +"Integracji z pulpitem nie powiodła się - nie można utworzyć pliku pulpitu " +"Gcodeviewer. Plik pulpitu OrcaSlicer został prawdopodobnie utworzony " +"pomyślnie." + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "Integracja z pulpitem" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" +"Integracja z pulpitem ustawia ten plik binarny jako możliwy do wyszukania " +"przez system.\n" +"\n" +"Naciśnij \"Wykonaj\", aby kontynuować." + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -26075,46 +26415,6 @@ msgstr "" #~ msgid "Configuration &Wizard" #~ msgstr "Asystent Ko&nfiguracji" -#~ msgid "" -#~ "Performing desktop integration failed - boost::filesystem::canonical did " -#~ "not return appimage path." -#~ msgstr "" -#~ "Integracja z pulpitem nie powiodła się - boost::filesystem::canonical nie " -#~ "zwrócił ścieżki do appimage." - -#~ msgid "Performing desktop integration failed - Could not find executable." -#~ msgstr "" -#~ "Integracji z pulpitem nie powiodła się - nie znaleziono pliku " -#~ "wykonywalnego." - -#~ msgid "" -#~ "Performing desktop integration failed because the application directory " -#~ "was not found." -#~ msgstr "" -#~ "Integracja z pulpitem nie powiodła się, ponieważ nie znaleziono katalogu " -#~ "aplikacji." - -#~ msgid "" -#~ "Performing desktop integration failed - could not create Gcodeviewer " -#~ "desktop file. OrcaSlicer desktop file was probably created successfully." -#~ msgstr "" -#~ "Integracji z pulpitem nie powiodła się - nie można utworzyć pliku pulpitu " -#~ "Gcodeviewer. Plik pulpitu OrcaSlicer został prawdopodobnie utworzony " -#~ "pomyślnie." - -#~ msgid "Desktop Integration" -#~ msgstr "Integracja z pulpitem" - -#~ msgid "" -#~ "Desktop Integration sets this binary to be searchable by the system.\n" -#~ "\n" -#~ "Press \"Perform\" to proceed." -#~ msgstr "" -#~ "Integracja z pulpitem ustawia ten plik binarny jako możliwy do wyszukania " -#~ "przez system.\n" -#~ "\n" -#~ "Naciśnij \"Wykonaj\", aby kontynuować." - #~ msgid "3D Models" #~ msgstr "Modele 3D" @@ -26193,9 +26493,6 @@ msgstr "" #~ msgid "The maximum temperature cannot exceed" #~ msgstr "Maksymalna temperatura nie może przekroczyć" -#~ msgid "An unexpected error occurred" -#~ msgstr "Wystąpił nieoczekiwany błąd" - #~ msgid "Best surface quality" #~ msgstr "Najlepsza jakość powierzchni" @@ -26276,15 +26573,6 @@ msgstr "" #~ "Nieprawidłowy stan.\n" #~ "Żadna część nie została wybrana do zachowania po cięciu" -#~ msgid "Entering Cut gizmo" -#~ msgstr "Otwieranie uchwytu przecinania" - -#~ msgid "Leaving Cut gizmo" -#~ msgstr "Zamykanie uchwytu wytłaczania" - -#~ msgid "Cut gizmo editing" -#~ msgstr "Edytowanie uchwytów przecinania" - #~ msgid "Hollow this object" #~ msgstr "Wydrąż ten model" @@ -26318,12 +26606,6 @@ msgstr "" #~ msgid "Hollow and drill" #~ msgstr "Drążenie i wiercenie" -#~ msgid "Entering Measure gizmo" -#~ msgstr "Otwieranie uchwytu pomiaru" - -#~ msgid "Leaving Measure gizmo" -#~ msgstr "Zamykanie uchwytu wytłaczania" - #~ msgid "Measure gizmo editing" #~ msgstr "Edycja uchwytów pomiaru" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index fa8b4cb575..79a3bb08f9 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-03-22 17:15-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -203,6 +203,15 @@ msgstr "Concluído" msgid "Support Generated" msgstr "Suporte Gerado" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Posicionar na face" @@ -291,6 +300,15 @@ msgstr "Pintado usando: Filamento %1%" msgid "To:" msgstr "Para:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Textura difusa pintada" @@ -312,6 +330,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Ativar textura difusa pintada para este objeto" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Mover" @@ -701,6 +728,15 @@ msgstr "Corte por linha" msgid "Delete connector" msgstr "Apagar conector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nome da malha" @@ -1576,6 +1612,12 @@ msgstr "Distância paralela:" msgid "Flip by Face 2" msgstr "Virar pela Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Montar" @@ -1614,6 +1656,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montagem face a face" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1898,6 +1946,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3195,6 +3257,45 @@ msgstr "A temperatura máxima não pode exceder " msgid "The minmum temperature should not be less than " msgstr "A temperatura mínima não pode ser menor do que " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Todos" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Desselecionar Tudo" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Definições avançadas" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3478,6 +3579,9 @@ msgstr "A fonte não possui nenhuma forma para o texto fornecido." msgid "There is no valid surface for text projection." msgstr "Não existe uma superfície válida para projeção de texto." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Pré-condicionamento térmico para otimização da primeira camada" @@ -8742,9 +8846,6 @@ msgstr "Agrupar predefinições de filamento do usuário" msgid "Group user filament presets based on selection" msgstr "Agrupar predefinições de filamento do usuário com base na seleção" -msgid "All" -msgstr "Todos" - msgid "By type" msgstr "Por tipo" @@ -9144,6 +9245,14 @@ msgstr "Baixar Plug-in de Rede" msgid "Associate files to OrcaSlicer" msgstr "Associar arquivos ao OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associar arquivos 3MF ao OrcaSlicer" @@ -10020,6 +10129,9 @@ msgstr "" "versão do firmware suporta esta operação ou verifique se a impressora está " "funcionando corretamente." +msgid "Sending failed, please try again!" +msgstr "Falha no envio, tente novamente!" + msgid "Slice ok." msgstr "Fatiamento ok." @@ -10484,6 +10596,9 @@ msgstr "Definir velocidade para pontes externas e internas" msgid "Travel speed" msgstr "Velocidade de deslocamento" +msgid "Junction Deviation" +msgstr "Desvio de Junção" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11393,9 +11508,6 @@ msgstr "" "filamentos da impressora. Os filamentos de impressora não utilizados serão " "adicionados automaticamente ao final da lista." -msgid "Advanced settings" -msgstr "Definições avançadas" - msgid "Add unused AMS filaments to filaments list." msgstr "Adicionar filamentos AMS não utilizados à lista de filamentos." @@ -11903,12 +12015,23 @@ msgstr "Um novo plug-in de rede (%s) está disponível, deseja instalá-lo?" msgid "New version of Orca Slicer" msgstr "Nova versão do OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Verifique no GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Pular esta versão" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmar e Atualizar Bico" @@ -12025,6 +12148,9 @@ msgstr "Módulo de Corte" msgid "Auto Fire Extinguishing System" msgstr "Sistema Automático de Extinção de Incêndio" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Atualizar firmware" @@ -13284,7 +13410,7 @@ msgid "External bridge density" msgstr "Densidade de ponte externa" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13298,18 +13424,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densidade de ponte interna" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13344,11 +13466,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15618,9 +15738,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk padrão." -msgid "Junction Deviation" -msgstr "Desvio de Junção" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21931,9 +22048,6 @@ msgstr "Predefinição de Impressora" msgid "Filament Preset Template" msgstr "Gabarito de Predefinição de Filamento" -msgid "Deselect All" -msgstr "Desselecionar Tudo" - msgid "Process Preset Template" msgstr "Processar Gabarito de Predefinição" @@ -22461,9 +22575,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipo de Host de Impressão incompatível: %s" @@ -23281,6 +23407,105 @@ msgstr "Não foi possível conectar via serial com a Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "O estado fornecido não está correto." @@ -23335,6 +23560,12 @@ msgstr "Orelhas da Borda" msgid "Please select single object." msgstr "Por favor selecione um único objeto." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Afastar Zoom" @@ -23345,6 +23576,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "Falha ao carregar ignorando as informações dos objetos. Tente novamente." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selecionados" @@ -23496,6 +23730,100 @@ msgstr "Numero de facetas triangulares" msgid "Calculating, please wait..." msgstr "Calculando, por favor aguarde…" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24706,9 +25034,6 @@ msgstr "" #~ "Verifique a rede e tente novamente. Se o problema persistir, você pode " #~ "reiniciar ou atualizar a impressora." -#~ msgid "Sending failed, please try again!" -#~ msgstr "Falha no envio, tente novamente!" - #~ msgid "Open Wiki for more information >" #~ msgstr "Abra o Wiki para mais informações >" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 9bd8ebbec0..6c3e8cb963 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.3.2 beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), " @@ -214,6 +214,15 @@ msgstr "Готово" msgid "Support Generated" msgstr "Поддержка сгенерирована" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Гизмо: Поверхностью на стол" @@ -302,6 +311,15 @@ msgstr "Окрашено с использованием прутка %1%" msgid "To:" msgstr "Заменить на:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Рисование нечёткой оболочки" @@ -322,6 +340,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Включить нечёткую оболочку для модели" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Перемещение" @@ -718,6 +745,15 @@ msgstr "Разрез по линии" msgid "Delete connector" msgstr "Удалить соединение" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Название" @@ -1603,6 +1639,12 @@ msgstr "Расстояние между параллельными граням msgid "Flip by Face 2" msgstr "Перевернуть грань 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + # при выборе на столе msgid "Assemble" msgstr "Объединить в сборку" @@ -1643,6 +1685,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Сборка по граням" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1937,6 +1985,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3263,6 +3325,47 @@ msgstr "Температура не должна превышать " msgid "The minmum temperature should not be less than " msgstr "Температура не должна быть ниже " +msgid "Type to filter..." +msgstr "" + +# в Сохранение толщины вертикальной оболочки. +# было Везде, но из-за условия совместимости изменено.... как тогда быть? +msgid "All" +msgstr "Все" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Снять выбор со всего" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Расширенные настройки" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3551,6 +3654,9 @@ msgstr "В шрифте отсутствуют данные для создан msgid "There is no valid surface for text projection." msgstr "Невозможно спроецировать текст." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Преднагрев для оптимизации первого слоя" @@ -8875,11 +8981,6 @@ msgstr "" "Объединять пользовательские профили материалов в подгруппы по выбранному " "критерию." -# в Сохранение толщины вертикальной оболочки. -# было Везде, но из-за условия совместимости изменено.... как тогда быть? -msgid "All" -msgstr "Все" - msgid "By type" msgstr "Тип материала" @@ -9260,6 +9361,14 @@ msgstr "Загрузить сетевой плагин" msgid "Associate files to OrcaSlicer" msgstr "Открытие файлов по умолчанию" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Открывать файлы 3MF в OrcaSlicer" @@ -10124,6 +10233,9 @@ msgstr "" "Превышено время ожидания отправки файла. Убедитесь, что прошивка " "поддерживает эту функцию, и что принтер работает нормально." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Нарезка завершена." @@ -10584,6 +10696,9 @@ msgstr "" msgid "Travel speed" msgstr "Ограничение скорости холостых перемещений" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Рывок (XY)" @@ -11494,9 +11609,6 @@ msgstr "" "принтера. Неиспользуемые филаменты принтера будут автоматически добавлены в " "конец списка." -msgid "Advanced settings" -msgstr "Расширенные настройки" - msgid "Add unused AMS filaments to filaments list." msgstr "Добавить незадействованные материалы из AMS в список" @@ -11994,12 +12106,23 @@ msgstr "Доступен новый сетевой плагин (%s). Хотит msgid "New version of Orca Slicer" msgstr "Доступна новая версия Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Открыть на GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Пропустить эту версию" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Подтвердить и обновить сопло" @@ -12120,6 +12243,9 @@ msgstr "Модуль обрезки" msgid "Auto Fire Extinguishing System" msgstr "Автоматическая система пожаротушения" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Обновить прошивку" @@ -13360,7 +13486,7 @@ msgid "External bridge density" msgstr "Плотность внешних мостов" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13374,18 +13500,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Плотность внутренних мостов" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13420,11 +13542,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15769,9 +15889,6 @@ msgstr "" msgid "Default jerk." msgstr "Рывок по умолчанию." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -22311,9 +22428,6 @@ msgstr "Профиль принтера" msgid "Filament Preset Template" msgstr "Шаблон профиля материала" -msgid "Deselect All" -msgstr "Снять выбор со всего" - msgid "Process Preset Template" msgstr "Шаблон профиля настроек" @@ -22824,9 +22938,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Несоответствующий тип хоста печати: %s" @@ -23625,6 +23751,105 @@ msgstr "Не удалось подключиться к Flashforge через п msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Указано неверное состояние." @@ -23679,6 +23904,12 @@ msgstr "Кайма «мышиные уши»" msgid "Please select single object." msgstr "Пожалуйста, выберите один объект." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Отдалить" @@ -23689,6 +23920,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "Не удалось загрузить информацию о пропуске объектов, попробуйте ещё раз." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "из %d выбрано" @@ -23843,6 +24077,100 @@ msgstr "Количество треугольников" msgid "Calculating, please wait..." msgstr "Расчёт, подождите..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index fb3865d31c..d5916dbd45 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -188,6 +188,15 @@ msgstr "Klar" msgid "Support Generated" msgstr "Support skapad" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Place on Face" @@ -276,6 +285,15 @@ msgstr "Färgläggning använder: Filament %1%" msgid "To:" msgstr "Till:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Paint-on fuzzy skin" @@ -296,6 +314,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Flytta" @@ -683,6 +710,15 @@ msgstr "Cut by line" msgid "Delete connector" msgstr "Delete connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Mesh namn" @@ -1548,6 +1584,12 @@ msgstr "Parallel distance:" msgid "Flip by Face 2" msgstr "Flip by Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Montera" @@ -1584,6 +1626,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl +" @@ -1862,6 +1910,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3150,6 +3212,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Allt" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Avmarkera alla" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3428,6 +3529,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8575,9 +8679,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Allt" - msgid "By type" msgstr "By type" @@ -8949,6 +9050,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Associerade filer till Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associerade 3MF filer till Orca Slicer" @@ -9791,6 +9900,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Beredning klar." @@ -10242,6 +10354,9 @@ msgstr "Set speed for external and internal bridges" msgid "Travel speed" msgstr "Förflyttnings hastighet" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11118,9 +11233,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11619,12 +11731,23 @@ msgstr "En ny nätverksplugin (%s) är tillgänglig. Vill du installera den?" msgid "New version of Orca Slicer" msgstr "Ny version av Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Hoppa över denna version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bekräfta och uppdatera nozzeln" @@ -11738,6 +11861,9 @@ msgstr "Cutting Module" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Uppdatera programvara" @@ -12943,7 +13069,7 @@ msgid "External bridge density" msgstr "External bridge density" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12957,18 +13083,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Internal bridge density" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13003,11 +13125,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15198,9 +15318,6 @@ msgstr "" msgid "Default jerk." msgstr "Default jerk." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21290,9 +21407,6 @@ msgstr "Printer inställningar" msgid "Filament Preset Template" msgstr "Filament inställnings mall" -msgid "Deselect All" -msgstr "Avmarkera alla" - msgid "Process Preset Template" msgstr "Mall för process inställning" @@ -21797,9 +21911,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Felaktig typ av utskriftsvärd: %s" @@ -22588,6 +22714,105 @@ msgstr "Could not connect to Flashforge via serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "The provided state is not correct." @@ -22641,6 +22866,12 @@ msgstr "Brätte Öron" msgid "Please select single object." msgstr "Please select single object." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22650,6 +22881,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22801,6 +23035,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index f62f44cfe3..2432eaf787 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-06-04 12:39+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -193,6 +193,15 @@ msgstr "เสร็จแล้ว" msgid "Support Generated" msgstr "สร้างส่วนรองรับแล้ว" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Place บนหน้า" @@ -280,6 +289,15 @@ msgstr "ทาสีโดยใช้: เส้นพลาสติก %1%" msgid "To:" msgstr "ถึง:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "ระบายผิวฟัซซี" @@ -299,6 +317,15 @@ msgstr "คำเตือน: ผิวฟัซซีถูกปิดใช msgid "Enable painted fuzzy skin for this object" msgstr "เปิดใช้งานสกินฟัซซี่ที่ทาสีแล้วสำหรับวัตถุนี้" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "ย้าย" @@ -684,6 +711,15 @@ msgstr "ตัดด้วยเส้น" msgid "Delete connector" msgstr "ลบตัวเชื่อมต่อ" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "ชื่อเมช" @@ -1544,6 +1580,12 @@ msgstr "ระยะทางขนาน:" msgid "Flip by Face 2" msgstr "พลิกตามผิวหน้า 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "ประกอบ" @@ -1580,6 +1622,12 @@ msgstr "" msgid "Face and face assembly" msgstr "การประกอบผิวหน้าและผิวหน้า" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1853,6 +1901,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3114,6 +3176,45 @@ msgstr "อุณหภูมิสูงสุดต้องไม่เกิ msgid "The minmum temperature should not be less than " msgstr "อุณหภูมิต่ำสุดไม่ควรต่ำกว่า" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "ทั้งหมด" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "ยกเลิกการเลือกทั้งหมด" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "การตั้งค่าขั้นสูง" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3372,6 +3473,9 @@ msgstr "แบบอักษรไม่มีรูปร่างสำหร msgid "There is no valid surface for text projection." msgstr "ไม่มีพื้นผิวที่ถูกต้องสำหรับการฉายข้อความ" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "การปรับสภาพล่วงหน้าด้วยความร้อนเพื่อการเพิ่มประสิทธิภาพชั้นแรก" @@ -8379,9 +8483,6 @@ msgstr "การตั้งค่าเส้นพลาสติกผู้ msgid "Group user filament presets based on selection" msgstr "ตั้งค่าเส้นพลาสติกผู้ใช้แบบกลุ่มตามการเลือก" -msgid "All" -msgstr "ทั้งหมด" - msgid "By type" msgstr "ตามประเภท" @@ -8755,6 +8856,14 @@ msgstr "ดาวน์โหลดปลั๊กอินเครือข่ msgid "Associate files to OrcaSlicer" msgstr "เชื่อมโยงไฟล์กับ OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "เชื่อมโยงไฟล์ 3MF กับ OrcaSlicer" @@ -9562,6 +9671,9 @@ msgstr "" "การอัปโหลดไฟล์หมดเวลา โปรดตรวจสอบว่าเวอร์ชันเฟิร์มแวร์รองรับการทำงานนี้หรือไม่ " "หรือตรวจสอบว่าเครื่องพิมพ์ทำงานอย่างถูกต้องหรือไม่" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "ชิ้นตกลง" @@ -10000,6 +10112,9 @@ msgstr "ตั้งค่าความเร็วสำหรับบริ msgid "Travel speed" msgstr "ความเร็วเดินหัวเปล่า" +msgid "Junction Deviation" +msgstr "ส่วนเบี่ยงเบนทางแยก" + msgid "Jerk(XY)" msgstr "กระตุก(XY)" @@ -10864,9 +10979,6 @@ msgstr "" "แทนที่รายการเส้นพลาสติกของโครงการตามลำดับตามเส้นพลาสติกของเครื่องพิมพ์ " "และเส้นพลาสติกเครื่องพิมพ์ที่ไม่ได้ใช้จะถูกเพิ่มเข้าที่ส่วนท้ายของรายการโดยอัตโนมัติ" -msgid "Advanced settings" -msgstr "การตั้งค่าขั้นสูง" - msgid "Add unused AMS filaments to filaments list." msgstr "เพิ่มเส้นพลาสติก AMS ที่ไม่ได้ใช้ลงในรายการเส้นพลาสติก" @@ -11356,12 +11468,23 @@ msgstr "มีปลั๊กอินเครือข่ายใหม่ (% msgid "New version of Orca Slicer" msgstr "Orca Slicer เวอร์ชันใหม่" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "ตรวจสอบบน Github" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "ข้ามเวอร์ชันนี้" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "ยืนยันและอัปเดตหัวฉีด" @@ -11469,6 +11592,9 @@ msgstr "โมดูลการตัด" msgid "Auto Fire Extinguishing System" msgstr "ระบบดับเพลิงอัตโนมัติ" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "อัพเดตเฟิร์มแวร์" @@ -12598,7 +12724,7 @@ msgid "External bridge density" msgstr "ความหนาแน่นของสะพานภายนอก" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12612,18 +12738,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "ความหนาแน่นสะพานภายใน" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12658,11 +12780,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14751,9 +14871,6 @@ msgstr "max_accel_to_decel ของ Klipper จะถูกปรับเป msgid "Default jerk." msgstr "กระตุกเริ่มต้น" -msgid "Junction Deviation" -msgstr "ส่วนเบี่ยงเบนทางแยก" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20606,9 +20723,6 @@ msgstr "พรีเซ็ตเครื่องพิมพ์" msgid "Filament Preset Template" msgstr "เทมเพลตที่ตั้งไว้ล่วงหน้าของเส้นพลาสติก" -msgid "Deselect All" -msgstr "ยกเลิกการเลือกทั้งหมด" - msgid "Process Preset Template" msgstr "ประมวลผลเทมเพลตที่กำหนดไว้ล่วงหน้า" @@ -21086,9 +21200,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "ประเภทของโฮสต์การพิมพ์ไม่ตรงกัน: %s" @@ -21834,6 +21960,105 @@ msgstr "ไม่สามารถเชื่อมต่อกับ Flashfor msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "สถานะที่ระบุไม่ถูกต้อง" @@ -21884,6 +22109,12 @@ msgstr "หู ขอบยึดชิ้นงาน" msgid "Please select single object." msgstr "กรุณาเลือกวัตถุเดียว" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "ซูมออก" @@ -21893,6 +22124,9 @@ msgstr "ซูมเข้า" msgid "Load skipping objects information failed. Please try again." msgstr "โหลดข้อมูลวัตถุที่ข้ามล้มเหลว โปรดลองอีกครั้ง" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d เลือกแล้ว" @@ -22041,6 +22275,100 @@ msgstr "จำนวนด้านสามเหลี่ยม" msgid "Calculating, please wait..." msgstr "กำลังคำนวณ โปรดรอสักครู่..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 06569dcf54..eec799358a 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-04-08 23:59+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -197,6 +197,15 @@ msgstr "Tamamlandı" msgid "Support Generated" msgstr "Destek Oluşturuldu" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Yüzeye yerleştir" @@ -284,6 +293,15 @@ msgstr "Şunlar kullanılarak boyanmıştır: Filament %1%" msgid "To:" msgstr "İle:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Pütürlü yüzey boyama" @@ -305,6 +323,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Bu nesne için boyalı pütürlü yüzeyi etkinleştir" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Taşı" @@ -694,6 +721,15 @@ msgstr "Satıra göre kes" msgid "Delete connector" msgstr "Bağlayıcıyı sil" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Mesh adı" @@ -1567,6 +1603,12 @@ msgstr "Paralel mesafe:" msgid "Flip by Face 2" msgstr "Yüzey 2’ye Göre Çevir" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Birleştir" @@ -1604,6 +1646,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Yüz ve yüz montajı" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1883,6 +1931,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3160,6 +3222,45 @@ msgstr "Maksimum sıcaklık aşılamaz" msgid "The minmum temperature should not be less than " msgstr "Minimum sıcaklık," +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tümü" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Hiçbirini seçme" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Gelişmiş ayarlar" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3441,6 +3542,9 @@ msgstr "Yazı tipinin verilen metin için herhangi bir şekli yoktur." msgid "There is no valid surface for text projection." msgstr "Metin yansıtma için geçerli bir yüzey yoktur." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "İlk katman optimizasyonu için Termal Ön Şartlandırma" @@ -8606,9 +8710,6 @@ msgstr "Grup kullanıcı filament ön ayarları" msgid "Group user filament presets based on selection" msgstr "Kullanıcı filament ön ayarlarını seçime göre gruplandırın" -msgid "All" -msgstr "Tümü" - msgid "By type" msgstr "Türe göre" @@ -8987,6 +9088,14 @@ msgstr "Ağ Eklentisini İndirin" msgid "Associate files to OrcaSlicer" msgstr "Dosyaları OrcaSlicer ile ilişkilendirin" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf dosyalarını OrcaSlicer ile ilişkilendirin" @@ -9850,6 +9959,9 @@ msgstr "" "destekleyip desteklemediğini kontrol edin veya yazıcının düzgün çalışıp " "çalışmadığını kontrol edin." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Dilimleme tamam." @@ -10306,6 +10418,9 @@ msgstr "Harici ve dahili köprüler için hızı ayarlayın" msgid "Travel speed" msgstr "Seyahat Hızı" +msgid "Junction Deviation" +msgstr "Köşe sapması" + msgid "Jerk(XY)" msgstr "Sarsıntı(XY)" @@ -11179,9 +11294,6 @@ msgstr "" "Kullanılmayan yazıcı filamentleri ise otomatik olarak listenin sonuna " "eklenecektir." -msgid "Advanced settings" -msgstr "Gelişmiş ayarlar" - msgid "Add unused AMS filaments to filaments list." msgstr "Kullanılmayan AMS filamentlerini filament listesine ekleyin." @@ -11682,12 +11794,23 @@ msgstr "Yeni bir Ağ eklentisi(%s) mevcut, Yüklemek istiyor musunuz?" msgid "New version of Orca Slicer" msgstr "Orca Slicer’ın yeni versiyonu" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Bu versiyonu atla" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Nozulu Onaylayın ve Güncelleyin" @@ -11802,6 +11925,9 @@ msgstr "Kesim Modülü" msgid "Auto Fire Extinguishing System" msgstr "Otomatik Yangın Söndürme Sistemi" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Ürün yazılımını güncelle" @@ -13025,7 +13151,7 @@ msgid "External bridge density" msgstr "Dış köprü yoğunluğu" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13039,18 +13165,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "İç köprü yoğunluğu" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13085,11 +13207,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15281,9 +15401,6 @@ msgstr "" msgid "Default jerk." msgstr "Varsayılan sarsıntı." -msgid "Junction Deviation" -msgstr "Köşe sapması" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21414,9 +21531,6 @@ msgstr "Yazıcı Ön Ayarı" msgid "Filament Preset Template" msgstr "Filament Ön Ayar Şablonu" -msgid "Deselect All" -msgstr "Hiçbirini seçme" - msgid "Process Preset Template" msgstr "İşleme Ön Ayarı Şablonu" @@ -21930,9 +22044,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Eşleşmeyen yazdırma ana bilgisayarı türü: %s" @@ -22750,6 +22876,105 @@ msgstr "Flashforge'a seri bağlantı yoluyla bağlanılamadı" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Sağlanan durum doğru değil." @@ -22803,6 +23028,12 @@ msgstr "Kenar kulakları" msgid "Please select single object." msgstr "Lütfen tek bir nesne seçin." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Uzaklaştır" @@ -22812,6 +23043,9 @@ msgstr "Yakınlaştır" msgid "Load skipping objects information failed. Please try again." msgstr "Nesne bilgilerinin atlanması yüklenemedi. Lütfen tekrar deneyin." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seçildi" @@ -22963,6 +23197,100 @@ msgstr "Üçgen yüzeylerin sayısı" msgid "Calculating, please wait..." msgstr "Hesaplanıyor, lütfen bekleyin..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index c70cb3a0ea..7479c80d2f 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-03-07 09:30+0200\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" @@ -194,6 +194,15 @@ msgstr "Виконано" msgid "Support Generated" msgstr "Згенеровані підтримки" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo - Покласти на грань" @@ -282,6 +291,15 @@ msgstr "Забарвлений за допомогою: Філамент %1%" msgid "To:" msgstr "До:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Нанесення текстури" @@ -301,6 +319,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Перемістити" @@ -695,6 +722,15 @@ msgstr "Розрізати по лінії" msgid "Delete connector" msgstr "Видалити з'єднувач" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Назва сітки" @@ -1568,6 +1604,12 @@ msgstr "Паралельна відстань:" msgid "Flip by Face 2" msgstr "Перевернути за Гранню 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Об'єднати у збірку" @@ -1606,6 +1648,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Збірка грань до грані" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1884,6 +1932,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3147,6 +3209,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Всі" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Скасувати вибір всіх" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3416,6 +3517,9 @@ msgstr "Шрифт не має жодної форми для вказаного msgid "There is no valid surface for text projection." msgstr "Немає дійсної поверхні для проекції тексту." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -8461,9 +8565,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "Всі" - msgid "By type" msgstr "" @@ -8814,6 +8915,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "Асоціювати файли з OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Асоціювати файли .3mf з OrcaSlicer" @@ -9607,6 +9716,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Нарізка прибл." @@ -10042,6 +10154,9 @@ msgstr "Встановіть швидкість для зовнішніх та msgid "Travel speed" msgstr "Швидкість переміщення" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "Ривок (XY)" @@ -10906,9 +11021,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -11395,12 +11507,23 @@ msgstr "Доступний новий мережевий плагін (%s), чи msgid "New version of Orca Slicer" msgstr "Нова версія Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Пропустити цю версію" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Підтвердити і оновити сопло" @@ -11507,6 +11630,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Оновити прошивку" @@ -12704,7 +12830,7 @@ msgid "External bridge density" msgstr "Щільність зовнішніх мостів" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12718,18 +12844,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Щільність внутрішніх мостів" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12764,11 +12886,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14910,9 +15030,6 @@ msgstr "Klipper-ів max_accel_to_decel буде скориговано на ц msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20850,9 +20967,6 @@ msgstr "Набір параметрів принтера" msgid "Filament Preset Template" msgstr "Шаблон набору параметрів філаменту" -msgid "Deselect All" -msgstr "Скасувати вибір всіх" - msgid "Process Preset Template" msgstr "Шаблон набору параметрів процесу" @@ -21350,9 +21464,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Невідповідність типу принт-сервера: %s" @@ -22130,6 +22256,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Наданий стан невірний." @@ -22182,6 +22407,12 @@ msgstr "Краєчки" msgid "Please select single object." msgstr "Будь ласка, виберіть один об’єкт." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Зменшити" @@ -22191,6 +22422,9 @@ msgstr "Збільшити" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "" @@ -22337,6 +22571,100 @@ msgstr "Кількість трикутних граней" msgid "Calculating, please wait..." msgstr "Розрахунок, будь ласка, зачекайте…" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 28568c1ece..4cb2269bb1 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -192,6 +192,15 @@ msgstr "Hoàn thành" msgid "Support Generated" msgstr "Đã tạo support" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo - Đặt lên mặt" @@ -279,6 +288,15 @@ msgstr "Vẽ bằng: Filament %1%" msgid "To:" msgstr "To:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Tô fuzzy skin" @@ -299,6 +317,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Di chuyển" @@ -685,6 +712,15 @@ msgstr "Cắt bằng đường" msgid "Delete connector" msgstr "Xóa connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Tên mesh" @@ -1547,6 +1583,12 @@ msgstr "Khoảng cách song song:" msgid "Flip by Face 2" msgstr "Lật theo mặt 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Lắp ráp" @@ -1583,6 +1625,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1859,6 +1907,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3133,6 +3195,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tất cả" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Bỏ chọn tất cả" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3403,6 +3504,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8521,9 +8625,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Tất cả" - msgid "By type" msgstr "By type" @@ -8894,6 +8995,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Liên kết file với OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Liên kết file 3MF với OrcaSlicer" @@ -9723,6 +9832,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice hoàn tất." @@ -10168,6 +10280,9 @@ msgstr "Đặt tốc độ cho cầu bên ngoài và bên trong" msgid "Travel speed" msgstr "Tốc độ di chuyển" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Giật(XY)" @@ -11030,9 +11145,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11528,12 +11640,23 @@ msgstr "Có plug-in mạng mới (%s). Bạn có muốn cài đặt nó?" msgid "New version of Orca Slicer" msgstr "Phiên bản mới của Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Bỏ qua phiên bản này" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Xác nhận và cập nhật đầu phun" @@ -11647,6 +11770,9 @@ msgstr "Module cắt" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Cập nhật firmware" @@ -12839,7 +12965,7 @@ msgid "External bridge density" msgstr "Mật độ cầu bên ngoài" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12853,18 +12979,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Mật độ cầu bên trong" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12899,11 +13021,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15055,9 +15175,6 @@ msgstr "" msgid "Default jerk." msgstr "Giật mặc định." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21072,9 +21189,6 @@ msgstr "Cài đặt sẵn máy in" msgid "Filament Preset Template" msgstr "Mẫu cài đặt sẵn filament" -msgid "Deselect All" -msgstr "Bỏ chọn tất cả" - msgid "Process Preset Template" msgstr "Mẫu cài đặt sẵn quy trình" @@ -21574,9 +21688,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Loại máy chủ in không khớp: %s" @@ -22365,6 +22491,105 @@ msgstr "Không thể kết nối với Flashforge qua serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Trạng thái được cung cấp không chính xác." @@ -22418,6 +22643,12 @@ msgstr "Tai vành" msgid "Please select single object." msgstr "Vui lòng chọn một đối tượng duy nhất." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22427,6 +22658,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22578,6 +22812,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index bbf3c65ad9..6367948cab 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" -"PO-Revision-Date: 2026-02-28 00:59\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" +"PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" "Language: zh_CN\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: OrcaSlicer Translation Helper\n" +"X-Generator: Poedit 3.9\n" msgid "right" msgstr "右" @@ -186,6 +186,15 @@ msgstr "完成" msgid "Support Generated" msgstr "已生成支撑" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "选择底面" @@ -272,6 +281,15 @@ msgstr "绘制使用:耗材丝%1%" msgid "To:" msgstr "到:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "手绘绒毛表面" @@ -291,6 +309,15 @@ msgstr "警告:绒毛表面已禁用,手绘的绒毛表面将不会生效! msgid "Enable painted fuzzy skin for this object" msgstr "为此对象启用手绘绒毛表面" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移动" @@ -676,6 +703,15 @@ msgstr "按线切割" msgid "Delete connector" msgstr "删除连接器" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "网格名称" @@ -1529,6 +1565,12 @@ msgstr "平行距离:" msgid "Flip by Face 2" msgstr "通过面2翻转" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "组合" @@ -1565,6 +1607,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面对面装配" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1836,6 +1884,20 @@ msgstr "" "云同步冲突:OrcaCloud 中已存在同名预设。\n" "拉取将下载云端副本。强制推送将用您的本地预设覆盖它。" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3081,6 +3143,45 @@ msgstr "最高温度不可超过 " msgid "The minmum temperature should not be less than " msgstr "最低温度不可低于 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "所有" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "全部取消选中" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "高级设置" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3329,6 +3430,9 @@ msgstr "字体没有给定文本对应的形状。" msgid "There is no valid surface for text projection." msgstr "没有有效的表面用于文字投影。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "用于第一层优化的热预处理" @@ -8232,9 +8336,6 @@ msgstr "组用户耗材丝预设" msgid "Group user filament presets based on selection" msgstr "根据选择对用户耗材丝预设进行分组" -msgid "All" -msgstr "所有" - msgid "By type" msgstr "按类型" @@ -8601,6 +8702,14 @@ msgstr "下载网络插件" msgid "Associate files to OrcaSlicer" msgstr "逆戟鲸切片器文件关联" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "将 3MF 文件关联到 OrcaSlicer" @@ -9397,6 +9506,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "文件上传超时。请检查固件版本是否支持此操作或验证打印机是否正常工作。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "切片完成." @@ -9809,6 +9921,9 @@ msgstr "设置外部和内部桥接的速度" msgid "Travel speed" msgstr "空驶速度" +msgid "Junction Deviation" +msgstr "结点偏差" + msgid "Jerk(XY)" msgstr "抖动(XY轴)" @@ -10660,9 +10775,6 @@ msgid "" msgstr "" "根据打印机耗材顺序替换项目耗材列表。未使用的打印机耗材将自动添加到列表末尾。" -msgid "Advanced settings" -msgstr "高级设置" - msgid "Add unused AMS filaments to filaments list." msgstr "将未使用的 AMS 耗材丝添加到耗材丝列表中。" @@ -11145,12 +11257,23 @@ msgstr "新的网络插件(%s) 可用,您是否需要安装它?" msgid "New version of Orca Slicer" msgstr "新版本的Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "在 Github 上查看" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "跳过本版本" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "确认并更新喷嘴" @@ -11256,6 +11379,9 @@ msgstr "切割模块" msgid "Auto Fire Extinguishing System" msgstr "自动灭火系统" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "更新固件" @@ -12358,8 +12484,9 @@ msgstr "启用后,桥接角度值将被加到自动计算出的桥接方向上 msgid "External bridge density" msgstr "外部桥接密度" +#, fuzzy msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12373,9 +12500,7 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" "控制外部桥接线的密度(间距)。默认值为 100%。\n" "理论上 100% 意味着实心桥接,但由于桥接挤出物容易下垂,100% 可能并不足够。\n" @@ -12387,17 +12512,14 @@ msgstr "" "- 低于 100% 的密度(最小 10%):\n" " - 优点:可形成类似拉丝的第一层。速度更快、冷却更好,因为挤出桥接周围有更多" "空气流通的空间。\n" -" - 缺点:可能导致下垂和较差的表面光洁度。\n" -"\n" -"推荐范围:最小 10% - 最大 125%。" +" - 缺点:可能导致下垂和较差的表面光洁度。" msgid "Internal bridge density" msgstr "内部桥接密度" +#, fuzzy msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12454,18 +12576,15 @@ msgstr "" "实际使用的桥接流量是将此值乘以耗材流量比,以及(如已设置)对象的流量比计算得" "出的。" -#, fuzzy, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" -"桥接线宽可以表示为绝对值,或当前喷嘴直径的百分比(百分比根据喷嘴直径计" -"算)。\n" +"桥接线的线宽。如果以百分比表示,将根据喷嘴直径计算。\n" "建议与较高的桥接密度或桥接流量比配合使用。\n" "\n" "最大值为 100% 或喷嘴直径。\n" @@ -14482,9 +14601,6 @@ msgstr "Klipper固件的max_accel_to_decel将被调整为该加速度的百分 msgid "Default jerk." msgstr "默认抖动" -msgid "Junction Deviation" -msgstr "结点偏差" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20165,9 +20281,6 @@ msgstr "打印机预设" msgid "Filament Preset Template" msgstr "耗材预设模板" -msgid "Deselect All" -msgstr "全部取消选中" - msgid "Process Preset Template" msgstr "工艺预设模板" @@ -20628,9 +20741,21 @@ msgstr "未找到打印机类型,请手动选择。" msgid "Authorizing..." msgstr "正在授权..." +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "会话检查出错" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "%s 打印机的主机类型不匹配" @@ -21357,6 +21482,105 @@ msgstr "无法通过串口连接Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "Flashforge 本地 API 同时需要序列号和访问码。" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "提供的状态不正确。" @@ -21407,6 +21631,12 @@ msgstr "耳状帽檐" msgid "Please select single object." msgstr "请选中单个对象。" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "缩小" @@ -21416,6 +21646,9 @@ msgstr "放大" msgid "Load skipping objects information failed. Please try again." msgstr "加载跳过对象信息失败。请再试一次。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 已选择" @@ -21561,6 +21794,100 @@ msgstr "三角面片数量" msgid "Calculating, please wait..." msgstr "正在计算,请稍候..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -21938,6 +22265,97 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "" +#~ "Controls the density (spacing) of external bridge lines. Default is " +#~ "100%.\n" +#~ "Theoretically, 100% means a solid bridge, but due to the tendency of " +#~ "bridge extrusions to sag, 100% may not be sufficient.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Produces smoother bridge surfaces, as overlapping lines provide " +#~ "additional support during printing.\n" +#~ " - Cons: Can cause overextrusion, which may reduce lower and upper " +#~ "surface quality and increase the risk of warping.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can create a string-like first layer. Faster and with better " +#~ "cooling because there is more space for air to circulate around the " +#~ "extruded bridge.\n" +#~ " - Cons: May lead to sagging and poorer surface finish.\n" +#~ "\n" +#~ "Recommended range: Minimum 10% - Maximum 125%." +#~ msgstr "" +#~ "控制外部桥接线的密度(间距)。默认值为 100%。\n" +#~ "理论上 100% 意味着实心桥接,但由于桥接挤出物容易下垂,100% 可能并不足" +#~ "够。\n" +#~ "\n" +#~ "- 高于 100% 的密度(推荐最大 125%):\n" +#~ " - 优点:产生更平滑的桥接表面,因为重叠的线在打印过程中提供额外支撑。\n" +#~ " - 缺点:可能导致过度挤出,从而降低上下表面质量并增加翘曲风险。\n" +#~ "\n" +#~ "- 低于 100% 的密度(最小 10%):\n" +#~ " - 优点:可形成类似拉丝的第一层。速度更快、冷却更好,因为挤出桥接周围有更" +#~ "多空气流通的空间。\n" +#~ " - 缺点:可能导致下垂和较差的表面光洁度。\n" +#~ "\n" +#~ "推荐范围:最小 10% - 最大 125%。" + +#~ msgid "" +#~ "Controls the density (spacing) of internal bridge lines. Default is 100%. " +#~ "100% means a solid internal bridge.\n" +#~ "\n" +#~ "Internal bridges act as intermediate support between sparse infill and " +#~ "top solid infill and can strongly affect top surface quality.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Improves internal bridge strength and support under top layers, " +#~ "reducing sagging and improving top-surface finish.\n" +#~ " - Cons: Increases material use and print time; excessive density may " +#~ "cause overextrusion and internal stresses.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can reduce pillowing and improve cooling (more airflow through " +#~ "the bridge), and may speed up printing.\n" +#~ " - Cons: May reduce internal support, increasing the risk of sagging and " +#~ "top surface defects.\n" +#~ "\n" +#~ "This option works particularly well when combined with the second " +#~ "internal bridge over infill option to improve bridging further before " +#~ "solid infill is extruded." +#~ msgstr "" +#~ "控制内部桥接线的密度(间距)。默认值为 100%。100% 表示实心内部桥接。\n" +#~ "\n" +#~ "内部桥接作为稀疏填充与顶部实心填充之间的过渡支撑,会强烈影响顶面质量。\n" +#~ "\n" +#~ "- 高于 100% 的密度(推荐最大 125%):\n" +#~ " - 优点:提升内部桥接强度以及对顶层的支撑,减少下垂并改善顶面光洁度。\n" +#~ " - 缺点:增加材料用量和打印时间;密度过高可能导致过度挤出和内部应力。\n" +#~ "\n" +#~ "- 低于 100% 的密度(最小 10%):\n" +#~ " - 优点:可减少表面起鼓并改善冷却(更多气流通过桥接),还可能加快打印速" +#~ "度。\n" +#~ " - 缺点:可能降低内部支撑,增加下垂和顶面缺陷的风险。\n" +#~ "\n" +#~ "此选项与“在填充上方增加第二层内部桥接”选项结合使用时效果尤佳,可在挤出实心" +#~ "填充之前进一步改善桥接。" + +#, fuzzy, c-format, boost-format +#~ msgid "" +#~ "Bridge line width is expressed either as an absolute value or as a " +#~ "percentage of the active nozzle diameter (percentages are computed from " +#~ "the nozzle diameter).\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "桥接线宽可以表示为绝对值,或当前喷嘴直径的百分比(百分比根据喷嘴直径计" +#~ "算)。\n" +#~ "建议与较高的桥接密度或桥接流量比配合使用。\n" +#~ "\n" +#~ "最大值为 100% 或喷嘴直径。\n" +#~ "如果设置为 0,线宽将与内部实心填充宽度一致。" + #~ msgid "" #~ "The Wipe option is not available when using the Firmware Retraction " #~ "mode.\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 5f3c60c7e9..f1df580f3f 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -191,6 +191,15 @@ msgstr "完成" msgid "Support Generated" msgstr "已產生支撐" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-放置在臉上" @@ -276,6 +285,15 @@ msgstr "上色:線材 %1%" msgid "To:" msgstr "到:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "塗刷絨毛表面效果" @@ -295,6 +313,15 @@ msgstr "警告:絨毛表面功能已停用,繪製的絨毛表面效果將不 msgid "Enable painted fuzzy skin for this object" msgstr "為此物件啟用繪製的絨毛表面" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移動" @@ -680,6 +707,15 @@ msgstr "用線切割" msgid "Delete connector" msgstr "刪除連接件" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "網格名稱" @@ -1532,6 +1568,12 @@ msgstr "平行距離:" msgid "Flip by Face 2" msgstr "通過面 2 翻轉" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "組合" @@ -1568,6 +1610,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面對面裝配" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1838,6 +1886,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3081,6 +3143,45 @@ msgstr "最高溫度不能超過 " msgid "The minmum temperature should not be less than " msgstr "最低溫度不應低於 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "所有" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "取消全選" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "進階設定" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3334,6 +3435,9 @@ msgstr "字型沒有指定文字對應的形狀。" msgid "There is no valid surface for text projection." msgstr "沒有有效的表面用於文字投影。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "首層優化的熱預調節" @@ -8285,9 +8389,6 @@ msgstr "將使用者線材預設分組" msgid "Group user filament presets based on selection" msgstr "根據選擇將使用者線材預設分組" -msgid "All" -msgstr "所有" - msgid "By type" msgstr "按類型" @@ -8640,6 +8741,14 @@ msgstr "下載網路外掛程式" msgid "Associate files to OrcaSlicer" msgstr "Orca Slicer 檔案關聯" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "將 3MF 檔案關聯到 OrcaSlicer" @@ -9433,6 +9542,9 @@ msgid "" msgstr "" "檔案上傳逾時。請檢查韌體版本是否支援此操作,或確認列印設備是否正常運作。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "切片完成。" @@ -9852,6 +9964,9 @@ msgstr "設定外部和內部橋接的速度" msgid "Travel speed" msgstr "空駛速度" +msgid "Junction Deviation" +msgstr "轉折偏移值" + msgid "Jerk(XY)" msgstr "抖動(XY軸)" @@ -10684,9 +10799,6 @@ msgstr "" "根據列印設備線材依序替換專案線材清單。未使用的列印設備線材將自動新增至清單末" "端。" -msgid "Advanced settings" -msgstr "進階設定" - msgid "Add unused AMS filaments to filaments list." msgstr "將未使用的 AMS 線材新增至線材清單。" @@ -11165,12 +11277,23 @@ msgstr "新版的網路外掛程式(%s)可用,是否要安裝?" msgid "New version of Orca Slicer" msgstr "新版本的 Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "跳過這個版本" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "確認並更新噴嘴" @@ -11276,6 +11399,9 @@ msgstr "切割模組" msgid "Auto Fire Extinguishing System" msgstr "自動滅火系統" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "更新韌體" @@ -12354,7 +12480,7 @@ msgid "External bridge density" msgstr "外部橋接密度" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12368,18 +12494,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "內部橋接密度" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12414,11 +12536,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14380,9 +14500,6 @@ msgstr "Klipper 的最大煞車速度將調整為加速度的 %%" msgid "Default jerk." msgstr "預設抖動" -msgid "Junction Deviation" -msgstr "轉折偏移值" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19995,9 +20112,6 @@ msgstr "列印設備預設設定" msgid "Filament Preset Template" msgstr "線材預設設定範本" -msgid "Deselect All" -msgstr "取消全選" - msgid "Process Preset Template" msgstr "處理預設設定範本" @@ -20455,9 +20569,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "列印主機類型不符:%s" @@ -21184,6 +21310,105 @@ msgstr "無法透過串列埠連接 Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "提供的狀態不正確。" @@ -21234,6 +21459,12 @@ msgstr "邊緣支撐 (Brim)" msgid "Please select single object." msgstr "請選擇一個物件。" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "縮小" @@ -21243,6 +21474,9 @@ msgstr "放大" msgid "Load skipping objects information failed. Please try again." msgstr "載入跳過物件資訊失敗。請再試一次。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 已選擇" @@ -21388,6 +21622,100 @@ msgstr "三角面片數量" msgid "Calculating, please wait..." msgstr "正在計算,請稍候..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf b/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf index 94f8e62fbf..496b30c992 100644 Binary files a/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf and b/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf differ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index 89564df4db..96e4a96352 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 9962a3afc3..25519f9220 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index cee9b68326..cfe7baed49 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json index b67cfef0a8..6da2fc8125 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index ab89862643..af015ece59 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Creality Generic PLA @K1-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json index f218bfeb51..f5f56418bb 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json @@ -53,7 +53,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json index 3c050f0172..7060043e3f 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json index 24329d6cec..0ba20f265d 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json index 6652e9eab0..a6d31198ab 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json @@ -88,7 +88,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json index 33083cfd29..13f1ae6b89 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json @@ -86,8 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", - "machine_unload_filament_time": "0", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "manual_filament_change": "0", "nozzle_type": "hardened_steel", "nozzle_volume": "183", diff --git a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json index da3501a1fd..ec1254ff37 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json @@ -86,7 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json index cb89d24692..d6f955ae17 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json @@ -86,7 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index 8f7d6b1bc6..7f70f8a16b 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 848aefa4db..db0233fe59 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 6592a240eb..e527bb5065 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 96ed049880..4c854a7052 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json index 2ee489b7fa..6b3455edb8 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json @@ -138,8 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": ";SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\n\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", - "machine_end_gcode": "END_PRINT", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json index f3b5a9bedf..199ee93b37 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json index 1fce24ea83..8b587e79a3 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json index 660a32e6aa..2aeb72dca5 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json index 7b93cdc3ba..6aab3b5e3a 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json @@ -53,7 +53,8 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index a80b129b68..dd18bac848 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,6 +1,6 @@ { "name": "Elegoo", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json index c98a5ecfb9..5dd0f6691c 100644 --- a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json @@ -62,7 +62,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M600", "support_multi_filament": "0", - "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", - "machine_start_gcode": ";;===== date: 20251011 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "layer_change_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", + "machine_start_gcode": ";;===== date: 20251011 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "machine_end_gcode": ";===== date: 20250603 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800\nG2 I1 J0 Z{max_layer_z+0.5} F3000 ; lower z a little\nG90\n{if max_layer_z > 100}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" } diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json index a354e51d6f..5e3de2b1e6 100644 --- a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json @@ -66,7 +66,7 @@ "change_filament_gcode": "\n;==========CC_CHANGE_FILAMENT_GCODE_CCB==========\n;===== date: 2025-12-04-001 =====================\nM106 S0\nM106 P2 S0\nG1 Z{min(max_layer_z+3, printable_height+0.5)} F1200\nM6211 T[next_extruder] L[flush_length] M{old_filament_e_feedrate} N{new_filament_e_feedrate} Q[old_filament_temp] R[nozzle_temperature_range_high] S[new_filament_temp]\nT[next_extruder]\n;==========CC_CHANGE_FILAMENT_GCODE_CCE==========", "machine_pause_gcode": "M600", "support_multi_filament": "1", - "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", - "machine_start_gcode": ";===== CC_START_GCODE ================\n;===== date: 2026-04-28-001 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nM83\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\n\n\nG90\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X0 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X0.9 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "layer_change_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", + "machine_start_gcode": ";===== CC_START_GCODE ================\n;===== date: 2026-04-28-001 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nM83\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\n\n\nG90\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X0 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X0.9 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "machine_end_gcode": ";===== CC_END_GCODE ================\n;===== date: 2025-12-04-001 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800\nG2 I1 J0 Z{max_layer_z+0.5} F3000 ; lower z a little\nG90\n{if max_layer_z > 100}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM749\nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" } diff --git a/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json index a190c292c3..7b7c1619ea 100644 --- a/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json @@ -86,9 +86,9 @@ "9" ], "change_filament_gcode": "\n;==========CC2_CHANGE_FILAMENT_GCODE==========\n;===== date: 2026-01-16-001 =====================\nM106 S0\nM106 P2 S0\nG1 Z{min(max_layer_z+3, printable_height+0.5)} F1200\nM6211 T[next_extruder] L[flush_length] M{old_filament_e_feedrate} N{new_filament_e_feedrate} Q[old_filament_temp] R[nozzle_temperature_range_high] S[new_filament_temp]\nT[next_extruder]\n", - "layer_change_gcode": "M73 L{layer_num+1}\n;LAYER:{layer_num+1}\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", + "layer_change_gcode": "M73 L{layer_num+1}\n;LAYER:{layer_num+1}\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", "machine_end_gcode": ";===== CC2_END_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\n\nM140 S0 ;Turn-off bed\nM83\nG92 E0 ; zero the extruder\nG1 E-1.5 F1800\nG2 I0 J1 Z{max_layer_z+0.5} F3000 ; lower z a little\nM106 S0\nM106 P2 S0\nG90\n{if max_layer_z > 75}G1 Z{min(max_layer_z+5, printable_height+0.5)} F20000{else}G1 Z80 F20000 {endif}; Move print head up \nG180 S9\nM104 S0\nM84\n", - "machine_start_gcode": ";===== CC2_START_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\nG90\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nM190 S[bed_temperature_initial_layer_single] A\nM106 S0\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 FROM_SLICER=1\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\nG28\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n{if first_layer_print_min[1] > 0.5}\nG180 S7\nG1 X{print_bed_max[0]*0.5-1} Y-1.2 F20000\nG1 Z0.5 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 E6 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nM106 S200\nG1 X{print_bed_max[0]*0.5-41} E20 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nG1 F6000\nG1 X{print_bed_max[0]*0.5-46} E0.8\n{else}\nG1 E30 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))}\n{endif}\nM106 S0\nG180 S8\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_start_gcode": ";===== CC2_START_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\nG90\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nM190 S[bed_temperature_initial_layer_single] A\nM106 S0\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 FROM_SLICER=1\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\nG28\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n{if first_layer_print_min[1] > 0.5}\nG180 S7\nG1 X{print_bed_max[0]*0.5-1} Y-1.2 F20000\nG1 Z0.5 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 E6 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nM106 S200\nG1 X{print_bed_max[0]*0.5-41} E20 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nG1 F6000\nG1 X{print_bed_max[0]*0.5-46} E0.8\n{else}\nG1 E30 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))}\n{endif}\nM106 S0\nG180 S8\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "retract_restart_extra_toolchange": [ "0.5" ] diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json index 8667a1bbc9..295cf9b20b 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.16", "instantiation": "true", + "renamed_from": "0.16mm Optimal @EOS Giga 0.4 nozzle", "name": "0.16mm Optimal @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json index 1e52b73ec6..afa4f4a0b3 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json @@ -2,6 +2,7 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.18", "instantiation": "true", + "renamed_from": "0.18mm Fine @EOS Giga 0.6 nozzle", "name": "0.18mm Fine @Elegoo Giga 0.6 nozzle", "compatible_printers": [ "Elegoo OrangeStorm Giga 0.6 nozzle" diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json index e1ad8c344a..8f8dbf9ca9 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG04020", "instantiation": "true", + "renamed_from": "0.20mm Standard @EOS Giga 0.4 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_print_height": "0.25", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json index 7acb40bb70..398980f074 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json @@ -4,5 +4,6 @@ "wall_sequence": "inner-outer-inner wall", "reduce_crossing_wall": "1", "instantiation": "true", + "renamed_from": "0.20mm Strength @EOS Giga 0.4 nozzle", "wall_loops": "6" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json index 4b9c599c72..620a3ac8bd 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Draft @EOS Giga 0.4 nozzle", "name": "0.24mm Draft @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json index 559d02aad4..b334d0d45b 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Fine @EOS Giga 0.8 nozzle", "name": "0.24mm Fine @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json index 5386ff6e49..62764498ae 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Optimal @EOS Giga 0.6 nozzle", "name": "0.24mm Optimal @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json index c661130a05..8407214a34 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.28", "instantiation": "true", + "renamed_from": "0.28mm Extra Draft @EOS Giga 0.4 nozzle", "name": "0.28mm Extra Draft @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json index 8531d718b5..424afaed59 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.3", "instantiation": "true", + "renamed_from": "0.30mm Fine @EOS Giga 1.0 nozzle", "name": "0.30mm Fine @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json index 3f16262ffd..5ee13152a9 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG06030", "instantiation": "true", + "renamed_from": "0.30mm Standard @EOS Giga 0.6 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json index f6737db309..e5ab6e67fb 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json @@ -4,5 +4,6 @@ "wall_sequence": "inner-outer-inner wall", "reduce_crossing_wall": "1", "instantiation": "true", + "renamed_from": "0.30mm Strength @EOS Giga 0.6 nozzle", "wall_loops": "5" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json index 8358b1841e..bdd1068550 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.32", "instantiation": "true", + "renamed_from": "0.32mm Optimal @EOS Giga 0.8 nozzle", "name": "0.32mm Optimal @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json index 81ccb6eb3c..dbbd626b97 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.36", "instantiation": "true", + "renamed_from": "0.36mm Draft @EOS Giga 0.6 nozzle", "name": "0.36mm Draft @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json index 9d1d99ea00..a9b9d8f9d2 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.4", "instantiation": "true", + "renamed_from": "0.40mm Optimal @EOS Giga 1.0 nozzle", "name": "0.40mm Optimal @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json index f5001c8a5a..d2ba5ef203 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG08040", "instantiation": "true", + "renamed_from": "0.40mm Standard @EOS Giga 0.8 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json index e69eae7853..634a0d0dcc 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.42", "instantiation": "true", + "renamed_from": "0.42mm Extra Draft @EOS Giga 0.6 nozzle", "name": "0.42mm Extra Draft @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json index 460d3a4948..1d2d1eff86 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.48", "instantiation": "true", + "renamed_from": "0.48mm Draft @EOS Giga 0.8 nozzle", "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json index dd40cac324..fb0fa6878e 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json @@ -4,6 +4,7 @@ "from": "system", "setting_id": "PEOSG10050", "instantiation": "true", + "renamed_from": "0.50mm Standard @EOS Giga 1.0 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json index 9003b1cdb3..e92e167768 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json @@ -1,5 +1,6 @@ { "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "instantiation": "true", + "renamed_from": "0.56mm Extra Draft @EOS Giga 0.8 nozzle", "name": "0.56mm Extra Draft @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json index 1d50fcf903..fe6e0e6868 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.6", "instantiation": "true", + "renamed_from": "0.60mm Draft @EOS Giga 1.0 nozzle", "name": "0.60mm Draft @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 4af118e06e..2793d510f0 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json index d021e99723..cee17f94ce 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEABSS00", "instantiation": "true", + "renamed_from": "Elegoo ABS", "fan_max_speed": [ "40" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json index 1084493ef9..67881a1152 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEASACFS00", "instantiation": "true", + "renamed_from": "Elegoo ASA-CF", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json index 1303bc0c4a..1f9c14d50d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPAHTCFS00", "instantiation": "true", + "renamed_from": "Elegoo PAHT-CF", "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json index 7892facc41..79c73d4400 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPCS00", "instantiation": "true", + "renamed_from": "Elegoo PC", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json index d542425163..22dcd15ad7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPCFRS00", "instantiation": "true", + "renamed_from": "Elegoo PC-FR", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json index dfc52bf0bf..215dd7fb67 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETCFS00", "instantiation": "true", + "renamed_from": "Elegoo PET-CF", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json index cb00ed6c74..00b3abe6ba 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGS00", "instantiation": "true", + "renamed_from": "Elegoo PETG", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json index 7fbd876d93..65ca9560b0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OERPETGHFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG HF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json index d191bcf93b..90944b2256 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGTRANSS00", "instantiation": "true", + "renamed_from": "Elegoo PETG Translucent", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json index 7bacc7f84d..262967a7a3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGCFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG-CF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json index 6ae0310d35..bcd79021f7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG-GF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json index 1f7735d6ee..d305fe60b2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLABASICS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Basic", "nozzle_temperature": [ "220" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json index 9b20653149..702ca4fbf2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAGALAXYS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Galaxy", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json index c7ab217760..b5442c93cf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAGLOWS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Glow", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json index 1bcf34ce0c..b9dc720687 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAMARBLES00", "instantiation": "true", + "renamed_from": "Elegoo PLA Marble", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json index ec534f3c07..98efe996aa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLASPARKLES00", "instantiation": "true", + "renamed_from": "Elegoo PLA Sparkle", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json index 4d32ef561e..7fd5c82416 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLATRA2S00", "instantiation": "true", + "renamed_from": "Elegoo PLA Translucent2", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json index bda6a141b5..10a3680fe9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAWOODS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Wood", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json index 823ac91827..9465a56d7a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OERTPU95AS00", "instantiation": "true", + "renamed_from": "Elegoo Rapid TPU 95A", "pressure_advance": [ "0.1" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json index 1716e4bf06..9c19595a56 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OETPU95AS00", "instantiation": "true", + "renamed_from": "Elegoo TPU 95A", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/scripts/linux.d/arch b/scripts/linux.d/arch index c9342f561e..ead963e9a6 100644 --- a/scripts/linux.d/arch +++ b/scripts/linux.d/arch @@ -14,7 +14,6 @@ export REQUIRED_DEV_PACKAGES=( glew gst-plugins-good gstreamer - gstreamermm gtk3 libmspack libsecret @@ -24,7 +23,7 @@ export REQUIRED_DEV_PACKAGES=( openssl texinfo wayland-protocols - webkit2gtk + webkit2gtk-4.1 wget ) @@ -37,7 +36,7 @@ then done if [[ "${#NEEDED_PKGS[*]}" -gt 0 ]]; then - sudo pacman -Syy --noconfirm "${NEEDED_PKGS[@]}" + sudo pacman -Syu --noconfirm "${NEEDED_PKGS[@]}" fi echo -e "done\n" exit 0 diff --git a/scripts/msix/AppxManifest.xml b/scripts/msix/AppxManifest.xml new file mode 100644 index 0000000000..56477bf80a --- /dev/null +++ b/scripts/msix/AppxManifest.xml @@ -0,0 +1,75 @@ + + + + + + + OrcaSlicer + @MSIX_PUBLISHER_DISPLAY_NAME@ + Assets\StoreLogo.png + + disabled + + + $(KnownFolder:RoamingAppData)\OrcaSlicer + + + + + + + + + + + + + + + + + + + + .3mf + .stl + .step + .stp + .gcode + .drc + + + Orca.Slicer.1 + + + + + + + + + + + + + + + diff --git a/scripts/msix/assets/Square150x150Logo.png b/scripts/msix/assets/Square150x150Logo.png new file mode 100644 index 0000000000..546b5c57f9 Binary files /dev/null and b/scripts/msix/assets/Square150x150Logo.png differ diff --git a/scripts/msix/assets/Square44x44Logo.png b/scripts/msix/assets/Square44x44Logo.png new file mode 100644 index 0000000000..248a2050d2 Binary files /dev/null and b/scripts/msix/assets/Square44x44Logo.png differ diff --git a/scripts/msix/assets/Square44x44Logo.targetsize-44_altform-unplated.png b/scripts/msix/assets/Square44x44Logo.targetsize-44_altform-unplated.png new file mode 100644 index 0000000000..248a2050d2 Binary files /dev/null and b/scripts/msix/assets/Square44x44Logo.targetsize-44_altform-unplated.png differ diff --git a/scripts/msix/assets/StoreLogo.png b/scripts/msix/assets/StoreLogo.png new file mode 100644 index 0000000000..eb5a9b0c75 Binary files /dev/null and b/scripts/msix/assets/StoreLogo.png differ diff --git a/scripts/msix/build_msix.ps1 b/scripts/msix/build_msix.ps1 new file mode 100644 index 0000000000..55e9fc156f --- /dev/null +++ b/scripts/msix/build_msix.ps1 @@ -0,0 +1,67 @@ +<# +Builds the unsigned MSIX Store package from an existing install tree. +The package is intentionally NOT signed: the Microsoft Store strips and +re-signs uploads with Microsoft's certificate. For local installs use +Developer Mode loose-layout registration instead: + ./scripts/msix/build_msix.ps1 -StageOnly + Add-AppxPackage -Register \AppxManifest.xml +Requires the Windows SDK (makeappx.exe) unless -StageOnly is used. +#> +param( + [string]$InstallDir = "build/OrcaSlicer", + [string]$OutputPath = "build/OrcaSlicer_Windows_MSIX.msix", + [string]$StagingDir = "", + [switch]$StageOnly, + [string]$IdentityName = "OrcaSlicer.OrcaSlicer", + [string]$Publisher = "CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82", + [string]$PublisherDisplayName = "OrcaSlicer" +) +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent + +# MSIX version = MAJOR.MINOR.PATCH.0 from the SoftFever_VERSION semver triplet +# (Store requires the revision field to be 0). +$versionContent = Get-Content (Join-Path $repoRoot 'version.inc') -Raw +if ($versionContent -notmatch 'set\(SoftFever_VERSION "(\d+)\.(\d+)\.(\d+)') { + throw "Could not parse SoftFever_VERSION from version.inc" +} +$msixVersion = "$($Matches[1]).$($Matches[2]).$($Matches[3]).0" +Write-Output "MSIX version: $msixVersion" + +if (-not (Test-Path (Join-Path $InstallDir 'orca-slicer.exe'))) { + throw "orca-slicer.exe not found in '$InstallDir' - build the install tree first" +} + +if ([string]::IsNullOrEmpty($StagingDir)) { + $StagingDir = Join-Path ([System.IO.Path]::GetTempPath()) 'orca-msix-staging' +} +if (Test-Path $StagingDir) { Remove-Item $StagingDir -Recurse -Force } +New-Item -ItemType Directory -Force $StagingDir | Out-Null + +Copy-Item -Path (Join-Path $InstallDir '*') -Destination $StagingDir -Recurse +Copy-Item -Path (Join-Path $PSScriptRoot 'assets') -Destination (Join-Path $StagingDir 'Assets') -Recurse + +$manifest = Get-Content (Join-Path $PSScriptRoot 'AppxManifest.xml') -Raw +$manifest = $manifest.Replace('@MSIX_VERSION@', $msixVersion) +$manifest = $manifest.Replace('@MSIX_IDENTITY_NAME@', $IdentityName) +$manifest = $manifest.Replace('@MSIX_PUBLISHER@', $Publisher) +$manifest = $manifest.Replace('@MSIX_PUBLISHER_DISPLAY_NAME@', $PublisherDisplayName) +Set-Content -Path (Join-Path $StagingDir 'AppxManifest.xml') -Value $manifest -Encoding utf8 + +if ($StageOnly) { + Write-Output "Staged loose layout at: $StagingDir" + return +} + +$makeappx = Get-ChildItem "${env:ProgramFiles(x86)}\Windows Kits\10\bin\10.*\x64\makeappx.exe" -ErrorAction SilentlyContinue | + Sort-Object { [version]$_.Directory.Parent.Name } -Descending | + Select-Object -First 1 -ExpandProperty FullName +if (-not $makeappx) { + throw "makeappx.exe not found under '${env:ProgramFiles(x86)}\Windows Kits\10\bin' - install the Windows SDK" +} +Write-Output "Using makeappx: $makeappx" + +& $makeappx pack /d $StagingDir /p $OutputPath /o +if ($LASTEXITCODE -ne 0) { throw "makeappx pack failed with exit code $LASTEXITCODE" } +Write-Output "Packed: $OutputPath" diff --git a/scripts/msix/generate_assets.ps1 b/scripts/msix/generate_assets.ps1 new file mode 100644 index 0000000000..52071cb7be --- /dev/null +++ b/scripts/msix/generate_assets.ps1 @@ -0,0 +1,56 @@ +# Generates the MSIX package logo assets from the master vector logo +# (resources\images\OrcaSlicer_gradient_circle.svg). Each PNG is rendered from +# the SVG at its exact target size (true per-size vector rasterization, not +# downscaled from one bitmap), preserving alpha transparency in the corners +# outside the circle (the manifest uses BackgroundColor="transparent"). +# +# Run once locally on Windows (re-run only if the logo changes), then commit +# the PNGs in assets/. CI never runs this script. +# +# Prerequisite: Python 3 with the resvg-py package (pip install resvg-py). +# It bundles the resvg SVG renderer, needed because the master SVG uses +# gradients with alpha-fade stops that System.Drawing cannot rasterize. +param( + [string]$Python = 'python' +) +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent +$source = Join-Path $repoRoot 'resources\images\OrcaSlicer_gradient_circle.svg' +$outDir = Join-Path $PSScriptRoot 'assets' +New-Item -ItemType Directory -Force $outDir | Out-Null + +$sizes = [ordered]@{ + 'Square150x150Logo.png' = 150 + 'Square44x44Logo.png' = 44 + 'Square44x44Logo.targetsize-44_altform-unplated.png' = 44 + 'StoreLogo.png' = 50 +} + +$py = @' +import sys +from pathlib import Path + +import resvg_py + +svg, out_dir = sys.argv[1], Path(sys.argv[2]) +for spec in sys.argv[3:]: + name, px = spec.rsplit('=', 1) + px = int(px) + data = resvg_py.svg_to_bytes(svg_path=svg, width=px, height=px) + (out_dir / name).write_bytes(bytes(data)) + print(f'Wrote {name} ({px}x{px})') +'@ + +$renderScript = Join-Path $env:TEMP 'orca_msix_render.py' +Set-Content -Path $renderScript -Value $py -Encoding utf8 +try { + $specs = foreach ($name in $sizes.Keys) { "$name=$($sizes[$name])" } + & $Python $renderScript $source $outDir @specs + if ($LASTEXITCODE -ne 0) { + throw 'resvg render failed. Is resvg-py installed? (pip install resvg-py)' + } +} +finally { + Remove-Item $renderScript -ErrorAction SilentlyContinue +} diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index 292c6c9d3f..bd9e969227 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -9,4 +9,6 @@ ROOT_DIR="$(dirname "$0")/.." cd "${ROOT_DIR}" || exit 1 -ctest --test-dir build/tests -L "Http|PlaceholderParser" --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j +# Run the whole suite, excluding tests tagged [NotWorking]. +# --no-tests=error fails the job if the filter matches nothing (instead of passing green). +ctest --test-dir build/tests -LE "NotWorking" --no-tests=error --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 8ef014564c..5fedaa9b28 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -2186,7 +2186,7 @@ private: else throw ConfigurationError("Serializing NaN"); } - else { + else if (this->keys_map != nullptr) { for (const auto& kvp : *this->keys_map) if (kvp.second == v) ss << kvp.first; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 54b4d4bcff..cdcca01f38 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2194,7 +2194,7 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu BOOST_LOG_TRIVIAL(info) << "Exporting G-code finished" << log_memory_info(); print->set_done(psGCodeExport); - if(is_BBL_Printer()) + if(is_BBL_Printer() && result != nullptr) result->label_object_enabled = m_enable_exclude_object; // Write the profiler measurements to file PROFILE_UPDATE(); diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 477509e69e..95167565aa 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -19,6 +19,10 @@ arrangement::ArrangePolygons get_arrange_polys(const Model &model, ModelInstance for (ModelObject *mo : model.objects) for (ModelInstance *minst : mo->instances) { minst->get_arrange_polygon(&ap); + // ModelInstance::get_arrange_polygon leaves bed_idx at its UNARRANGED + // default; seed it to bed 0 (as get_instance_arrange_poly does) so the + // nester treats the item as placeable instead of returning it unplaced. + ap.bed_idx = 0; input.emplace_back(ap); instances.emplace_back(minst); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index ffd5c2f6e1..053c99dffd 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2366,6 +2366,10 @@ bool PresetCollection::validate_preset(const std::string &preset_name, std::stri const std::string canonical_inherit_name = this->canonical_preset_name(inherit_name); it = this->find_preset_internal(canonical_inherit_name); found = it != m_presets.end() && it->name == canonical_inherit_name && is_trusted(*it); + if (!found) { + it = this->find_preset_renamed(canonical_inherit_name); + found = it != m_presets.end() && is_trusted(*it); + } if (found) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": preset_name %1%, inherit_name %2%, found inherit in list")%preset_name %inherit_name; else @@ -2457,7 +2461,9 @@ std::pair PresetCollection::load_external_preset( if (!inherits.empty() && (different_settings_list.size() > 0)) { auto iter = this->find_preset_internal(inherits); - if (iter != m_presets.end() && iter->name == inherits) { + if (iter == m_presets.end() || iter->name != inherits) + iter = this->find_preset_renamed(inherits); + if (iter != m_presets.end()) { //std::vector dirty_options = cfg.diff(iter->config); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": change preset %1% inherit %2% 's value to %3% 's values")%original_name %inherits %path; cfg.update_non_diff_values_to_base_config(iter->config, keys, different_settings_list, extruder_id_name, extruder_variant_name, *key_set1, *key_set2); @@ -2509,7 +2515,9 @@ std::pair PresetCollection::load_external_preset( // and override its settings with the loaded ones. assert(it == m_presets.end()); it = this->find_preset_internal(inherits); - found = it != m_presets.end() && it->name == inherits; + if (it == m_presets.end() || it->name != inherits) + it = this->find_preset_renamed(inherits); + found = it != m_presets.end(); if (found && profile_print_params_same(it->config, cfg)) { // The system preset exists and it matches the values stored inside config. if (select == LoadAndSelect::Always) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 0d58e2dc00..78bdc8f1cf 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2632,7 +2632,8 @@ std::string Print::export_gcode(const std::string& path_template, GCodeProcessor gcode.do_export(this, path.c_str(), result, thumbnail_cb); gcode.export_layer_filaments(result); //BBS - result->conflict_result = m_conflict_result; + if (result != nullptr) + result->conflict_result = m_conflict_result; return path.c_str(); } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5e657971a5..b27540dd87 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1284,15 +1284,14 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_density", coPercent); def->label = L("External bridge density"); def->category = L("Strength"); - def->tooltip = L("Controls the density (spacing) of external bridge lines. Default is 100%.\n" + def->tooltip = L("Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge extrusions to sag, 100% may not be sufficient.\n\n" "- Higher than 100% density (Recommended Max 125%):\n" " - Pros: Produces smoother bridge surfaces, as overlapping lines provide additional support during printing.\n" " - Cons: Can cause overextrusion, which may reduce lower and upper surface quality and increase the risk of warping.\n\n" "- Lower than 100% density (Min 10%):\n" " - Pros: Can create a string-like first layer. Faster and with better cooling because there is more space for air to circulate around the extruded bridge.\n" - " - Cons: May lead to sagging and poorer surface finish.\n\n" - "Recommended range: Minimum 10% - Maximum 125%."); + " - Cons: May lead to sagging and poorer surface finish."); def->sidetext = "%"; def->min = 10; def->max = 125; @@ -1302,7 +1301,7 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_density", coPercent); def->label = L("Internal bridge density"); def->category = L("Strength"); - def->tooltip = L("Controls the density (spacing) of internal bridge lines. Default is 100%. 100% means a solid internal bridge.\n\n" + def->tooltip = L("Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top solid infill and can strongly affect top surface quality.\n\n" "- Higher than 100% density (Recommended Max 125%):\n" " - Pros: Improves internal bridge strength and support under top layers, reducing sagging and improving top-surface finish.\n" @@ -1332,7 +1331,7 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_line_width", coFloatOrPercent); def->label = L("Bridge"); def->category = L("Quality"); - def->tooltip = L("Bridge line width is expressed either as an absolute value or as a percentage of the active nozzle diameter (percentages are computed from the nozzle diameter).\n" + def->tooltip = L("Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width."); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 7a5bece0af..eb6f4bcb00 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -807,6 +807,8 @@ wxAuiToolBarItem* BBLTopbar::FindToolByCurrentPosition() } #ifdef __WXMSW__ +#include + WXLRESULT CenteredTitle::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { switch (nMsg) { @@ -823,6 +825,8 @@ WXLRESULT BBLTopbar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam { switch (nMsg) { case WM_NCHITTEST: { + m_last_mouse_position = ScreenToClient({GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}); + wxAuiToolBarItem* item = this->FindToolByCurrentPosition(); if (item != NULL && item->GetWindow() != m_title_ctrl) { break; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 8a5897622b..9017d39d5c 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2859,7 +2859,11 @@ bool GUI_App::on_init_inner() switch (dialog.ShowModal()) { case wxID_YES: - wxLaunchDefaultBrowser(version_info.url); + // Store builds get updates from the Microsoft Store, not the GitHub release page. + if (is_running_in_msix()) + open_ms_store_product_page(); + else + wxLaunchDefaultBrowser(version_info.url); break; case wxID_NO: break; @@ -4940,6 +4944,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt) // Parse the conflict body to extract the error code and server profile id int conflict_code = 0; std::string conflict_setting_id; + std::string conflict_preset_name; try { json conflict_body = json::parse(body_str); if (conflict_body.contains("code")) @@ -4947,21 +4952,40 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (conflict_body.contains("server_profile") && conflict_body["server_profile"].contains("id") && conflict_body["server_profile"]["id"].is_string()) conflict_setting_id = conflict_body["server_profile"]["id"].get(); + // The local preset name is injected into the conflict body by the agent (sync_push), + // since the server response itself omits it for tombstone (-3) conflicts. + if (conflict_body.contains("name") && conflict_body["name"].is_string()) + conflict_preset_name = conflict_body["name"].get(); } catch (...) { BOOST_LOG_TRIVIAL(warning) << "Failed to parse 409 conflict body."; } + // Capture the user id up front so the force-push closure does not have to touch m_agent. + std::string conflict_user_id = m_agent ? m_agent->get_user_id() : std::string(); auto* plater = wxGetApp().plater(); if (plater != nullptr && wxGetApp().imgui()->display_initialized()) { std::string text; - if (conflict_code == -1) { + + switch (conflict_code) { + case -1: text = _u8L("Cloud sync conflict: this preset has a newer version in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local preset."); - } else { + break; + case -2: text = _u8L("Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local preset."); - } + break; + case -3: + text = _u8L("Cloud sync conflict: a preset with the same name was previously deleted from the cloud.\n" + "Delete will delete your local preset. Force push overwrites it with your local preset."); + break; + default: + text = _u8L("Cloud sync conflict: there was an unexpected or unidentified preset conflict.\n" + "Pull downloads the cloud copy. Force push overwrites it with your local preset."); + break; + }; + plater->get_notification_manager()->push_orca_sync_conflict_notification( - text, + text, conflict_code, [this](wxEvtHandler*) { // Runs on the GUI thread (on_http_error is a queued wx event); restart_sync_user_preset() // already joins the old sync thread off the UI thread, so no extra thread is needed here. @@ -4971,7 +4995,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt) restart_sync_user_preset(); return true; }, - [this, conflict_setting_id](wxEvtHandler*) { + [this, conflict_setting_id, conflict_preset_name, conflict_user_id](wxEvtHandler*) { if (mainframe == nullptr) return false; MessageDialog @@ -4981,7 +5005,13 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (dlg.ShowModal() != wxID_YES) return false; - force_push_conflicting_preset(conflict_setting_id); + std::string setting_id = conflict_setting_id; + if (setting_id.empty()) { + setting_id = OrcaCloudServiceAgent::generate_uuid_for_setting_id(conflict_preset_name, conflict_user_id); + BOOST_LOG_TRIVIAL(info) << "conflict setting id empty, generated one: " << setting_id; + } + + force_push_conflicting_preset(setting_id); return true; }); } @@ -6493,16 +6523,16 @@ void GUI_App::update_single_bundle(wxCommandEvent& evt) }); } -void GUI_App::sync_bundle(std::string bundle_id, std::string version) +int GUI_App::sync_bundle(std::string bundle_id, std::string version) { // if(preset_bundle->bundles.pauseReads.load()) // { // BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread sync_bundle function yielded to main thread. 1"; // return; // if the main thread acquires the lock at the start of our operations, we will yield // } - if (!m_agent || !m_agent->is_user_login()) return; + if (!m_agent || !m_agent->is_user_login()) return 0; auto orca_agent = std::dynamic_pointer_cast(m_agent->get_cloud_agent()); - if (!orca_agent) return; + if (!orca_agent) return 0; BOOST_LOG_TRIVIAL(info) << "sync_bundle: checking bundle " << bundle_id << " for updates"; @@ -6525,12 +6555,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to parse versions for bundle " << bundle_id << " (local: " << local_version << ", remote: " << remote_version << ")"; preset_bundle->bundles.ReadUnlock(); // unlock read when fail - return; + return -1; } if (remote_version <= local_version) { BOOST_LOG_TRIVIAL(info) << "sync_bundle: bundle " << bundle_id << " is up-to-date (version " << local_version << ")"; preset_bundle->bundles.ReadUnlock(); // unlock read when fail - return; + return -1; } BOOST_LOG_TRIVIAL(info) << "sync_bundle: updating bundle " << bundle_id << " from version " << local_version @@ -6547,8 +6577,7 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) // if it is an update, we will lock and write std::string ver; - if(is_update) - { + if (is_update) { preset_bundle->bundles.WriteLock(); preset_bundle->bundles.m_bundles[bundle_id].update_available = true; preset_bundle->bundles.m_bundles[bundle_id].is_subscribed = true; @@ -6556,8 +6585,13 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) preset_bundle->bundles.WriteUnlock(); } - if(app_config->get_bool("preset_bundle_auto_update") == true || is_new) - { + const bool auto_update = app_config->get_bool("preset_bundle_auto_update"); + + if (is_update && !auto_update) { + return 1; + } + + if (auto_update || is_new) { // Fetch the latest bundle data from cloud std::map> bundle_presets; BundleMetadata remote_metadata; @@ -6565,22 +6599,23 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) if (result != 0) { BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to fetch bundle " << bundle_id << ", result=" << result; - return; + return -1; } // Import the updated bundle on the main thread - CallAfter([this, bundle_id, bundle_presets, remote_metadata,is_new,is_update,ver]() { - if (!is_closing() && preset_bundle && app_config) { - // Check the presets for any system vendors that need to be installed - for (auto data : bundle_presets) { - if (!check_preset_parent_available(data)) { - add_pending_vendor_preset(data); + CallAfter( + [this, bundle_id, bundle_presets, remote_metadata, is_new, is_update, ver]() { + if (!is_closing() && preset_bundle && app_config) { + // Check the presets for any system vendors that need to be installed + for (auto data : bundle_presets) { + if (!check_preset_parent_available(data)) { + add_pending_vendor_preset(data); + } } - } - load_pending_vendors(); + load_pending_vendors(); - // if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread - // { + // if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread + // { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : CallAfter from sync_bundle function actually updating subscribed presets"; preset_bundle->bundles.WriteLock(); @@ -6610,10 +6645,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) if (mainframe) mainframe->update_side_preset_ui(); BOOST_LOG_TRIVIAL(info) << "sync_bundle: successfully updated bundle " << bundle_id; - // } - } - }); + // } + } + }); } + + return 0; } @@ -6817,6 +6854,10 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) std::vector presets_to_sync; std::vector> bundles_to_sync; std::unordered_set bundles_synced; + + std::unordered_set known_available_updates; + + bool update_available = false; // Sync once immediately, then every 60 seconds. while (!t.expired()) { ++tick_tock; @@ -6922,17 +6963,31 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) // Iterate over the bundles, and update/create for (const auto& bundle_entry : bundles_to_sync) { - bundles_synced.insert(bundle_entry.first); - // Sync each bundle individually - // if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether - // { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles"; - sync_bundle(bundle_entry.first, bundle_entry.second); - // } - // Small delay between bundle syncs to avoid overwhelming the server - boost::this_thread::sleep_for(boost::chrono::milliseconds(100)); - + // Sync each bundle individually + // if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether + // { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles"; + int res = sync_bundle(bundle_entry.first, bundle_entry.second); + + const std::string known_update_key = bundle_entry.first + ":" + bundle_entry.second; + if (res == 1 && known_available_updates.insert(known_update_key).second) { + update_available = true; + } + + // } + // Small delay between bundle syncs to avoid overwhelming the server + boost::this_thread::sleep_for(boost::chrono::milliseconds(100)); + } + + if (update_available) { + wxGetApp() + .plater() + ->get_notification_manager() + ->push_notification(NotificationType::CustomNotification, + NotificationManager::NotificationLevel::RegularNotificationLevel, "There is an update available. Open the preset bundle dialog to update it."); + + update_available = false; } std::vector to_delete; @@ -7055,15 +7110,26 @@ void GUI_App::force_push_conflicting_preset(const std::string& setting_id) m_pending_conflict_setting_ids.push_back(setting_id); } + const std::string user_id = m_agent ? m_agent->get_user_id() : std::string(); + // The 409 left this preset on "hold", which get_user_presets() skips. Restore it to // "update" so the next push-sync re-includes it and consumes the queued force flag. // (We must NOT pull from the cloud here as the Pull path does — that would overwrite // the local changes the user is trying to force-push.) + // For a -3 tombstone on a newly created preset the on-disk setting_id is EMPTY (it only + // gets assigned after a successful first push), so derive it on the fly from the preset + // name and stamp it onto the preset — otherwise sync_with_lock's `id == preset.setting_id` + // check never fires and the force-push silently no-ops. PresetCollection* collections[] = {&preset_bundle->prints, &preset_bundle->filaments, &preset_bundle->printers}; for (PresetCollection* coll : collections) { for (const Preset& preset : coll->get_presets()) { - if (preset.setting_id == setting_id && preset.sync_info == "hold") { - coll->set_sync_info_and_save(preset.name, preset.setting_id, "update", 0); + if (preset.sync_info != "hold") + continue; + const std::string preset_id = preset.setting_id.empty() + ? OrcaCloudServiceAgent::generate_uuid_for_setting_id(preset.name, user_id) + : preset.setting_id; + if (preset_id == setting_id) { + coll->set_sync_info_and_save(preset.name, setting_id, "update", 0); break; } } @@ -9075,6 +9141,10 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t void GUI_App::associate_files(std::wstring extend) { #ifdef WIN32 + // MSIX: shell integration is declared in the package manifest; registry + // writes from a packaged process are virtualized and invisible to the shell. + if (is_running_in_msix()) + return; wchar_t app_path[MAX_PATH]; ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); @@ -9100,6 +9170,8 @@ void GUI_App::associate_files(std::wstring extend) void GUI_App::disassociate_files(std::wstring extend) { #ifdef WIN32 + if (is_running_in_msix()) + return; wchar_t app_path[MAX_PATH]; ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); @@ -9151,6 +9223,8 @@ bool GUI_App::check_url_association(std::wstring url_prefix, std::wstring& reg_b void GUI_App::associate_url(std::wstring url_prefix) { #ifdef WIN32 + if (is_running_in_msix()) + return; boost::filesystem::path binary_path(boost::filesystem::canonical(boost::dll::program_location())); wxString wbinary = from_path(binary_path); BOOST_LOG_TRIVIAL(info) << "Downloader registration: Path of binary: " << wbinary.ToUTF8().data(); @@ -9176,6 +9250,8 @@ void GUI_App::associate_url(std::wstring url_prefix) void GUI_App::disassociate_url(std::wstring url_prefix) { #ifdef WIN32 + if (is_running_in_msix()) + return; wxRegKey key_full(wxRegKey::HKCU, "Software\\Classes\\" + url_prefix + "\\shell\\open\\command"); if (!key_full.Exists()) { return; diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 60ef782f51..f72ba263aa 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -544,7 +544,7 @@ public: // Bundle subscription sync void check_bundle_updates(); - void sync_bundle(std::string bundle_id, std::string version); + int sync_bundle(std::string bundle_id, std::string version); bool unsubscribe_bundle(const std::string& id); void update_single_bundle(wxCommandEvent& evt); diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index a16d9916a6..697eefea0b 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "libslic3r/Config.hpp" @@ -171,6 +172,42 @@ template typename F::FN winapi_get_function(const wchar_t *dll, const c } #endif +bool is_running_in_msix() +{ +#ifdef _WIN32 + // The package identity APIs are Win8+ - resolved dynamically so the exe still loads on Win7 + // (same treatment as the DPI APIs below). Null-buffer probe: returns ERROR_INSUFFICIENT_BUFFER + // when packaged, APPMODEL_ERROR_NO_PACKAGE when running unpackaged. + struct GetCurrentPackageFullName_t { typedef LONG (WINAPI *FN)(UINT32 *length, PWSTR full_name); }; + static const bool packaged = []() { + auto fn = winapi_get_function(L"Kernel32.dll", "GetCurrentPackageFullName"); + UINT32 length = 0; + return fn != nullptr && fn(&length, nullptr) != APPMODEL_ERROR_NO_PACKAGE; + }(); + return packaged; +#else + return false; +#endif +} + +void open_ms_store_product_page() +{ +#ifdef _WIN32 + struct GetCurrentPackageFamilyName_t { typedef LONG (WINAPI *FN)(UINT32 *length, PWSTR family_name); }; + static auto fn = winapi_get_function(L"Kernel32.dll", "GetCurrentPackageFamilyName"); + if (fn == nullptr) + return; + UINT32 length = 0; + if (fn(&length, nullptr) != ERROR_INSUFFICIENT_BUFFER) + return; + std::wstring family_name(length, L'\0'); + if (fn(&length, family_name.data()) != ERROR_SUCCESS) + return; + family_name.resize(length > 0 ? length - 1 : 0); // drop the terminating null + wxLaunchDefaultBrowser(wxString(L"ms-windows-store://pdp/?PFN=") + family_name.c_str()); +#endif +} + // If called with nullptr, a DPI for the primary monitor is returned. int get_dpi_for_window(const wxWindow *window) { diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index e50c9254a9..d6767d3310 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -67,6 +67,10 @@ wxDECLARE_EVENT(EVT_VOLUME_DETACHED, VolumeDetachedEvent); wxTopLevelWindow* find_toplevel_parent(wxWindow *window); wxString format_nozzle_diameter(float diameter); +// True when running inside an MSIX package (Microsoft Store build); always false on non-Windows. +bool is_running_in_msix(); +// Opens the Microsoft Store product page for the current package. No-op when not packaged. +void open_ms_store_product_page(); void on_window_geometry(wxTopLevelWindow *tlw, std::function callback); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp index deb6525bfa..8b1ff2ca62 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp @@ -3,6 +3,7 @@ #include "GLGizmoBase.hpp" #include "slic3r/GUI/GLSelectionRectangle.hpp" +#include "slic3r/GUI/I18N.hpp" #include "libslic3r/BrimEarsPoint.hpp" #include "libslic3r/ObjectID.hpp" @@ -87,8 +88,8 @@ public: bool is_selection_rectangle_dragging() const { return m_selection_rectangle.is_dragging(); } bool wants_enter_leave_snapshots() const override { return true; } - std::string get_gizmo_entering_text() const override { return "Entering Brim Ears"; } - std::string get_gizmo_leaving_text() const override { return "Leaving Brim Ears"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering Brim Ears"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Brim Ears"); } private: bool on_init() override; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp index 133e71e2f1..f42d327a0e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp @@ -6,6 +6,7 @@ #include "libslic3r/Print.hpp" #include "libslic3r/ObjectID.hpp" #include "slic3r/GUI/3DScene.hpp" +#include "slic3r/GUI/I18N.hpp" #include @@ -36,9 +37,9 @@ protected: void render_tooltip_button(float x, float y); wxString handle_snapshot_action_name(bool shift_down, Button button_down) const override; - std::string get_gizmo_entering_text() const override { return "Entering Paint-on supports"; } - std::string get_gizmo_leaving_text() const override { return "Leaving Paint-on supports"; } - std::string get_action_snapshot_name() const override { return "Paint-on supports editing"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering Paint-on supports"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Paint-on supports"); } + std::string get_action_snapshot_name() const override { return _u8L("Paint-on supports editing"); } // BBS wchar_t m_current_tool = 0; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp index eb8473aea6..55308bffa9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp @@ -2,6 +2,7 @@ #define slic3r_GLGizmoMmuSegmentation_hpp_ #include "GLGizmoPainterBase.hpp" +#include "slic3r/GUI/I18N.hpp" namespace Slic3r::GUI { @@ -100,9 +101,9 @@ protected: wxString handle_snapshot_action_name(bool shift_down, Button button_down) const override; - std::string get_gizmo_entering_text() const override { return "Entering color painting"; } - std::string get_gizmo_leaving_text() const override { return "Leaving color painting"; } - std::string get_action_snapshot_name() const override { return "Color painting editing"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering color painting"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving color painting"); } + std::string get_action_snapshot_name() const override { return _u8L("Color painting editing"); } // BBS size_t m_selected_extruder_idx = 0; diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 5079dfecf0..2e8d22ebee 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -2416,7 +2416,7 @@ void NotificationManager::OrcaSyncConflictNotification::render_text(ImGuiWrapper } const float action_y = starting_y + m_endlines.size() * shift_y; - const std::string pull_text = _u8L("Pull"); + const std::string pull_text = conflict_code == -3 ? _u8L("Delete") : _u8L("Pull"); render_hyperlink_action(imgui, x_offset, action_y, pull_text, "##orca_sync_pull", [this] { if (m_pull_callback && m_pull_callback(m_evt_handler)) close(); }); if (m_force_push_callback) { @@ -2437,13 +2437,14 @@ void NotificationManager::push_shared_profiles_notification(const std::string& e } void NotificationManager::push_orca_sync_conflict_notification(const std::string& text, + int conflict_code, std::function pull_callback, std::function force_push_callback) { close_notification_of_type(NotificationType::OrcaSyncConflict); NotificationData data{ NotificationType::OrcaSyncConflict, NotificationLevel::WarningNotificationLevel, 0, text }; push_notification_data(std::make_unique( - data, m_id_provider, m_evt_handler, std::move(pull_callback), std::move(force_push_callback)), 0); + data, m_id_provider, m_evt_handler, std::move(pull_callback), std::move(force_push_callback), conflict_code), 0); } void NotificationManager::push_download_URL_progress_notification(size_t id, const std::string& text, std::function user_action_callback) diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 006de5cff6..dd17f19e42 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -279,6 +279,7 @@ public: // Shared profiles available for selected printer void push_shared_profiles_notification(const std::string& explore_url); void push_orca_sync_conflict_notification(const std::string& text, + int conflict_code, std::function pull_callback, std::function force_push_callback); @@ -905,10 +906,12 @@ private: public: OrcaSyncConflictNotification(const NotificationData& n, NotificationIDProvider& id_provider, wxEvtHandler* evt_handler, std::function pull_callback, - std::function force_push_callback) + std::function force_push_callback, + int conflict_code) : PopNotification(n, id_provider, evt_handler) , m_pull_callback(std::move(pull_callback)) , m_force_push_callback(std::move(force_push_callback)) + , conflict_code(conflict_code) { m_multiline = true; } @@ -920,6 +923,7 @@ private: std::function m_pull_callback; std::function m_force_push_callback; + int conflict_code; }; class SlicingProgressNotification; diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index d612b56298..7d054d8a1b 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -279,12 +279,9 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c }); m_mode_icon->SetToolTip(_L("Cycle settings visibility")); m_mode_view = new ModeSwitchButton(m_top_panel); - if (wxGetApp().get_mode() == comDevelop) { - m_mode_view->SetSelection(mode_to_selection(comExpert)); - m_mode_view->Enable(false); - } else { - m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); - } + bool isDevMode = wxGetApp().get_mode() == comDevelop; + m_mode_view->SetSelection(mode_to_selection(isDevMode ? comExpert : wxGetApp().get_saved_mode())); + m_mode_view->SetDevMode(isDevMode); // BBS: new layout //m_search_btn = new ScalableButton(m_top_panel, wxID_ANY, "search", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); @@ -653,13 +650,13 @@ void ParamsPanel::update_mode() if (app_mode == comDevelop) { mode_view->SetSelection(mode_to_selection(comExpert)); - mode_view->Enable(false); + mode_view->SetDevMode(true); return; } mode_view->SetSelection(mode_to_selection(Slic3r::GUI::wxGetApp().get_saved_mode())); - if (!mode_view->IsEnabled()) - mode_view->Enable(); + if (mode_view->GetDevMode()) + mode_view->SetDevMode(false); }; sync_mode_view(m_mode_view); diff --git a/src/slic3r/GUI/PartSkipDialog.cpp b/src/slic3r/GUI/PartSkipDialog.cpp index 87d8b714b6..5820a40c66 100644 --- a/src/slic3r/GUI/PartSkipDialog.cpp +++ b/src/slic3r/GUI/PartSkipDialog.cpp @@ -367,7 +367,7 @@ std::string PartSkipDialog::create_tmp_path() } std::string tmp_path = (parent_path / buf.str()).string(); - if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox("create file failed."); } + if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox(_L("Failed to create the temporary folder.")); } return tmp_path; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c6a5ac3aba..a5ba4f079d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -524,6 +524,7 @@ struct Sidebar::priv wxStaticLine * m_staticline1; StaticBox* m_panel_filament_title; wxStaticText* m_staticText_filament_settings; + wxStaticText* m_staticText_filament_count; ScalableButton * m_bpButton_add_filament; ScalableButton * m_bpButton_del_filament; ScalableButton * m_bpButton_ams_filament; @@ -650,6 +651,16 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) // Single nozzle & non ams panel_nozzle_dia->Show(!isDual && preset_bundle.get_printer_extruder_count() < 2); extruder_single_sizer->Show(false); + + // ORCA ensure printer section is visible after changing printer from printer selection dialog + // this will inform user on printer change when printer section is collapsed + if (m_panel_printer_content){ + bool isShown = m_panel_printer_content->IsShown(); + if(!isShown && m_text_printer_settings){ + m_text_printer_settings->SetLabel(_L("Printer")); // ensure title returns to default state + m_panel_printer_content->Show(); + } + } } void Sidebar::priv::flush_printer_sync(bool restart) @@ -1650,7 +1661,7 @@ Sidebar::Sidebar(Plater *parent) p->m_panel_printer_title->SetBackgroundColor2(0xF1F1F1); p->m_printer_icon = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer"); - p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT); + p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END); p->m_printer_icon->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { //auto wizard_t = new ConfigWizard(wxGetApp().mainframe); @@ -1683,8 +1694,8 @@ Sidebar::Sidebar(Plater *parent) wxBoxSizer* h_sizer_title = new wxBoxSizer(wxHORIZONTAL); h_sizer_title->Add(p->m_printer_icon, 0, wxALIGN_CENTRE | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); h_sizer_title->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - h_sizer_title->Add(p->m_text_printer_settings, 0, wxALIGN_CENTER); - h_sizer_title->AddStretchSpacer(); + h_sizer_title->Add(p->m_text_printer_settings, 1, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); + //h_sizer_title->AddStretchSpacer(); h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_setting, 0, wxALIGN_CENTER); @@ -1703,7 +1714,13 @@ Sidebar::Sidebar(Plater *parent) // add printer title scrolled_sizer->Add(p->m_panel_printer_title, 0, wxEXPAND | wxALL, 0); p->m_panel_printer_title->Bind(wxEVT_LEFT_UP, [this] (auto & e) { - p->m_panel_printer_content->Show(!p->m_panel_printer_content->IsShown()); + if (!p || !p->combo_printer || !p->m_text_printer_settings || !p->m_panel_printer_content || !m_scrolled_sizer) + return; + // ORCA Show printer name on title when its folded to inform user without expanding it again + bool isShown = p->m_panel_printer_content->IsShown(); + wxString title = _L("Printer") + wxString(!isShown ? "" : (" | " + p->combo_printer->GetValue())); + p->m_text_printer_settings->SetLabel(title); + p->m_panel_printer_content->Show(!isShown); m_scrolled_sizer->Layout(); }); @@ -2057,6 +2074,8 @@ Sidebar::Sidebar(Plater *parent) return; p->m_panel_filament_content->Show(!p->m_panel_filament_content->IsShown()); m_scrolled_sizer->Layout(); + + CallAfter([this]{update_filaments_counter(true);}); // call after all UI processing done }); wxBoxSizer* bSizer39; @@ -2064,11 +2083,13 @@ Sidebar::Sidebar(Plater *parent) p->m_filament_icon = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "filament"); p->m_staticText_filament_settings = new Label(p->m_panel_filament_title, _L("Project Filaments"), LB_PROPAGATE_MOUSE_EVENT); bSizer39->Add(p->m_filament_icon, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); - bSizer39->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - bSizer39->Add( p->m_staticText_filament_settings, 0, wxALIGN_CENTER ); - bSizer39->Add(FromDIP(10), 0, 0, 0, 0); + bSizer39->Add(p->m_staticText_filament_settings, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ElementSpacing())); bSizer39->SetMinSize(-1, FromDIP(30)); + p->m_staticText_filament_count = new Label(p->m_panel_filament_title, "(0)", LB_PROPAGATE_MOUSE_EVENT); + bSizer39->Add(p->m_staticText_filament_count, 0, wxALIGN_CENTER ); + bSizer39->Add(FromDIP(10), 0, 0, 0, 0); + p->m_panel_filament_title->SetSizer( bSizer39 ); p->m_panel_filament_title->Layout(); auto spliter_1 = new ::StaticLine(p->scrolled); @@ -2103,6 +2124,7 @@ Sidebar::Sidebar(Plater *parent) add_btn->SetToolTip(_L("Add one filament")); add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e){ add_filament(); + update_filaments_counter(); }); p->m_bpButton_add_filament = add_btn; @@ -2112,6 +2134,7 @@ Sidebar::Sidebar(Plater *parent) del_btn->SetToolTip(_L("Remove last filament")); del_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) { delete_filament(); + update_filaments_counter(); }); p->m_bpButton_del_filament = del_btn; @@ -2838,6 +2861,26 @@ void Sidebar::update_filaments_area_height() if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) min_size.y = p->m_panel_filament_content->GetMaxHeight(); p->m_panel_filament_content->SetMinSize({-1, min_size.y}); + + update_filaments_counter(); +} + +void Sidebar::update_filaments_counter(bool force_layout) +// ORCA +{ + int current_count = p->combos_filament.size(); + int preferred_count = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); + bool isShown = p->m_panel_filament_content->IsShown(); + auto counter = p->m_staticText_filament_count; + + counter->SetLabel("(" + std::to_string(current_count) + ")"); // update counter on every change + if(current_count > preferred_count || !isShown) + counter->Show(); + else if (isShown) // hide when list is visible and short enough + counter->Hide(); + + if(force_layout) + m_scrolled_sizer->Layout(); } void Sidebar::msw_rescale() @@ -3145,6 +3188,13 @@ void Sidebar::add_filament() { if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; wxColour new_col = Plater::get_next_color_for_filament(); add_custom_filament(new_col); + + auto filament_list = p->m_panel_filament_content; + if(!filament_list->IsShown()){ + filament_list->Show(); // ORCA show list if its folded + m_scrolled_sizer->Layout(); + } + filament_list->Scroll(-1, INT_MAX); // ORCA scroll to end of list on changes to inform user about filament count } void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) { @@ -3177,6 +3227,14 @@ void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) { wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); wxGetApp().plater()->update(); + + auto filament_list = p->m_panel_filament_content; + if(!filament_list->IsShown()){ + filament_list->Show(); // ORCA show list if its folded + m_scrolled_sizer->Layout(); + } + + filament_list->Scroll(-1, INT_MAX); // ORCA scroll to end of list on changes to inform user about filament count } void Sidebar::change_filament(size_t from_id, size_t to_id) @@ -6225,12 +6283,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("%1%: %2%")%it->first %it->second; // NotificationManager *notify_manager = q->get_notification_manager(); - std::string error_message = L("Invalid values found in the 3MF:"); + std::string error_message = _u8L("Invalid values found in the 3MF:"); error_message += "\n"; for (std::map::iterator it=validity.begin(); it!=validity.end(); ++it) error_message += "-" + it->first + ": " + it->second + "\n"; error_message += "\n"; - error_message += L("Please correct them in the param tabs"); + error_message += _u8L("Please correct them in the param tabs"); notify_manager->bbl_show_3mf_warn_notification(error_message); } } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index f2089c1c4f..18254383cd 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -173,6 +173,7 @@ public: bool reset_bed_type_combox_choices(bool is_sidebar_init = false); void change_top_border_for_mode_sizer(bool increase_border); void update_filaments_area_height(); + void update_filaments_counter(bool force_layout = false); void msw_rescale(); void sys_color_changed(); void search(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 1e6b1f6558..ef3d8fcee5 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1846,6 +1846,26 @@ void PreferencesDialog::create_items() //// ASSOCIATE TAB ///////////////////////////////////// #ifdef _WIN32 + // MSIX: associations are declared in the package manifest and defaults are + // managed by Windows Settings; the runtime registry toggles below cannot work. + // Show a minimal page that sends the user to Windows' Default Apps settings instead. + if (is_running_in_msix()) { + m_pref_tabs->AppendItem(_L("Associate")); + f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); + g_sizer = f_sizers.back(); + g_sizer->AddGrowableCol(0, 1); + + g_sizer->Add(create_item_title(_L("Associate files to OrcaSlicer")), 1, wxEXPAND); + + auto item_open_default_apps = create_item_button( + _L("File associations for the Microsoft Store version are managed by Windows Settings."), + _L("Open Windows Default Apps Settings"), "", "", + []() { wxLaunchDefaultBrowser("ms-settings:defaultapps"); }); + g_sizer->Add(item_open_default_apps); + + g_sizer->AddSpacer(FromDIP(10)); + sizer_page->Add(g_sizer, 0, wxEXPAND); + } else { m_pref_tabs->AppendItem(_L("Associate")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); @@ -1880,6 +1900,7 @@ void PreferencesDialog::create_items() g_sizer->AddSpacer(FromDIP(10)); sizer_page->Add(g_sizer, 0, wxEXPAND); + } #endif // _WIN32 ////////////////////////// diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 42a0108383..e4c735f142 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -562,7 +562,7 @@ void PrintHostSendDialog::init() // }); // } - add_button(wxID_CANCEL,false, L("Cancel")); + add_button(wxID_CANCEL,false, _L("Cancel")); finalize(); #ifdef __linux__ diff --git a/src/slic3r/GUI/PrinterCloudAuthDialog.cpp b/src/slic3r/GUI/PrinterCloudAuthDialog.cpp index 4d29d9b1c1..41e5cebced 100644 --- a/src/slic3r/GUI/PrinterCloudAuthDialog.cpp +++ b/src/slic3r/GUI/PrinterCloudAuthDialog.cpp @@ -23,7 +23,7 @@ namespace Slic3r { namespace GUI { PrinterCloudAuthDialog::PrinterCloudAuthDialog(wxWindow* parent, PrintHost* host) - : wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, "Login") + : wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, _L("Login")) { SetBackgroundColour(*wxWHITE); // Url diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 3dd87e8626..84546a941d 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -5,6 +5,7 @@ #include "libslic3r/Thread.hpp" #include "GUI.hpp" #include "GUI_App.hpp" +#include "GUI_Utils.hpp" #include "GUI_Preview.hpp" #include "MainFrame.hpp" #include "format.hpp" @@ -252,7 +253,9 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_text_up_info = new Label(this, Label::Head_14, wxEmptyString, LB_AUTO_WRAP); m_text_up_info->SetForegroundColour(wxColour(0x26, 0x2E, 0x30)); - auto github_link = new HyperLink(this, _L("Check on Github"), "", LB_AUTO_WRAP); + // Store builds get updates from the Microsoft Store: wxID_YES opens the Store + // product page there (see the EVT_SLIC3R_VERSION_ONLINE handler) instead of GitHub. + auto github_link = new HyperLink(this, is_running_in_msix() ? _L("Check on Microsoft Store") : _L("Check on Github"), "", LB_AUTO_WRAP); github_link->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { EndModal(wxID_YES); }); @@ -302,7 +305,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) auto sizer_button = new wxBoxSizer(wxHORIZONTAL); - m_button_download = new Button(this, _L("Download")); + m_button_download = new Button(this, is_running_in_msix() ? _L("Open Microsoft Store") : _L("Download")); m_button_download->SetStyle(ButtonStyle::Confirm, ButtonType::Choice); m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { @@ -479,7 +482,10 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve // else { //m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); m_simplebook_release_note->SetSelection(1); - m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version)); + if (is_running_in_msix()) + m_text_up_info->SetLabel(wxString::Format(_L("New version available: %s. Please update OrcaSlicer from the Microsoft Store."), version)); + else + m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version)); auto data_buf_in = release_note.utf8_str(); auto bg_color = StateColor::darkModeColorFor(wxColour("#FFFFFF")).GetAsString(); auto fg_color = StateColor::darkModeColorFor(wxColour("#262E30")).GetAsString(); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f399337c0f..9463bdb741 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -607,7 +607,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) auto completedimg = new wxStaticBitmap(m_panel_finish, wxID_ANY, create_scaled_bitmap("completed", m_panel_finish, 25), wxDefaultPosition, wxSize(imgsize, imgsize), 0); m_sizer_finish_h->Add(completedimg, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); - m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); + m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, _L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); m_statictext_finish->Wrap(-1); m_statictext_finish->SetForegroundColour(wxColour(0, 150, 136)); m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 789d080666..ed64f922c0 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -61,10 +61,10 @@ static const std::map error_messages = { {SendToPrinterDialog::SEND_ERR, L("File upload failed, please try again.")} }; -static std::string ParseErrorCode(int errorcde) +static wxString ParseErrorCode(int errorcde) { auto it = error_messages.find(errorcde); - if (it != error_messages.end()) { return it->second; } + if (it != error_messages.end()) { return _L(it->second); } return ""; } @@ -367,7 +367,7 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater) auto completedimg = new wxStaticBitmap(m_panel_finish, wxID_ANY, create_scaled_bitmap("completed", m_panel_finish, 25), wxDefaultPosition, wxSize(imgsize, imgsize), 0); m_sizer_finish_h->Add(completedimg, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); - m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); + m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, _L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); m_statictext_finish->Wrap(-1); m_statictext_finish->SetForegroundColour(wxColour(0, 150, 136)); m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); @@ -1982,7 +1982,7 @@ void SendToPrinterDialog::UploadFileRessultCallback(int res, int resp_ec, std::s if (ParseErrorCode(resp_ec) != "") update_print_status_msg(ParseErrorCode(resp_ec), false, true); else - update_print_status_msg("Sending failed, please try again!", false, true); + update_print_status_msg(_L("Sending failed, please try again!"), false, true); m_filetransfer_uploadfile_job.reset(); m_filetransfer_uploadfile_job = nullptr; } diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1e9bc53f47..60cf80a472 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -685,7 +685,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) #endif - m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, L("N/A"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_progress_left->Wrap(-1); m_staticText_progress_left->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); m_staticText_progress_left->SetForegroundColour(wxColour(146, 146, 146)); @@ -787,7 +787,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) m_printing_stage_panel->SetSizer(printingstage_vertical_sizer); // Orca: display the end time of the print - m_staticText_progress_end = new wxStaticText(penel_finish_time, wxID_ANY, L("N/A"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_end = new wxStaticText(penel_finish_time, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_progress_end->Wrap(-1); m_staticText_progress_end->SetFont( wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 3a42f7343d..406e9794bf 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -109,7 +109,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin m_staticText_ver_val->Wrap(-1); - m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, _L("Beta"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); m_staticText_beta_version->Wrap(-1); m_staticText_beta_version->Hide(); @@ -1571,7 +1571,7 @@ bool UpgradePanel::Show(bool show) m_staticText_ams_ver_val->SetForegroundColour("#262E30"); m_staticText_ams_ver_val->Wrap(-1); - m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, _L("Beta"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); m_staticText_beta_version->Wrap(-1); m_staticText_beta_version->Hide(); diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp index 60c9344077..6eae9e9615 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -262,6 +262,7 @@ ModeSwitchButton::ModeSwitchButton(wxWindow* parent, wxWindowID id) m_tooltips[0] = _L("Simple settings"); m_tooltips[1] = _L("Advanced settings"); m_tooltips[2] = _L("Expert settings"); + m_tooltips[3] = _L("Developer mode") + "\n" + _L("Launch troubleshoot center") + "..."; Bind(wxEVT_LEFT_DOWN, &ModeSwitchButton::mouseDown, this); Bind(wxEVT_LEFT_UP, &ModeSwitchButton::mouseReleased, this); @@ -280,7 +281,7 @@ void ModeSwitchButton::SetSelection(int selection) void ModeSwitchButton::SelectAndNotify(int selection) { - if (!IsEnabled()) + if (m_dev_mode || !IsEnabled()) return; SetSelection(selection); @@ -310,6 +311,15 @@ bool ModeSwitchButton::Enable(bool enable /* = true */) return changed; } +void ModeSwitchButton::SetDevMode(bool enable /* = true */) +{ + if (enable != m_dev_mode){ + m_dev_mode = enable; + update_tooltip(); + Refresh(); + } +} + void ModeSwitchButton::doRender(wxDC& dc) { const wxRect bounds = GetClientRect(); @@ -328,7 +338,7 @@ void ModeSwitchButton::doRender(wxDC& dc) dc.SetBrush(wxBrush(background_color.colorForStates(states))); dc.DrawRoundedRectangle(bounds, v_center); - if (m_enabled) { + if (!m_dev_mode) { double dot_dist = (bounds.width - bounds.height) * 0.50; // Track @@ -368,6 +378,11 @@ void ModeSwitchButton::doRender(wxDC& dc) void ModeSwitchButton::mouseDown(wxMouseEvent& event) { + if (m_dev_mode){ + Slic3r::GUI::wxGetApp().troubleshoot(); + return; + } + if (!IsEnabled()) { event.Skip(); return; @@ -425,7 +440,10 @@ wxRect ModeSwitchButton::thumb_rect_for(int selection) const void ModeSwitchButton::update_tooltip() { - SetToolTip(m_tooltips[m_selection]); + if (m_dev_mode) + SetToolTip(m_tooltips[3]); + else + SetToolTip(m_tooltips[m_selection]); } MultiSwitchButton::MultiSwitchButton(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style) diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp index 0884fa64aa..69de98c6ff 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -63,6 +63,8 @@ public: void msw_rescale() { Rescale(); } bool Enable(bool enable = true) override; + void SetDevMode(bool enable = true); + bool GetDevMode() const {return m_dev_mode;}; protected: void doRender(wxDC& dc) override; @@ -79,7 +81,8 @@ private: int m_selection { 0 }; bool m_pressed { false }; bool m_enabled { true }; - wxString m_tooltips[3]; + bool m_dev_mode { false }; + wxString m_tooltips[4]; StateColor dot_active; StateColor dot_dimmed; StateColor text_color; diff --git a/src/slic3r/Utils/3DPrinterOS.cpp b/src/slic3r/Utils/3DPrinterOS.cpp index 27a8b74916..79c8a62700 100755 --- a/src/slic3r/Utils/3DPrinterOS.cpp +++ b/src/slic3r/Utils/3DPrinterOS.cpp @@ -323,7 +323,7 @@ bool C3DPrinterOS::login(wxString& msg) const msg.clear(); std::string token = get_api_auth_token(msg); if (token.empty()) { - msg = "Error. Can't get api token for authorization"; + msg = _L("Error. Can't get api token for authorization"); return false; } @@ -341,12 +341,12 @@ bool C3DPrinterOS::login(wxString& msg) const return false; } } catch (const std::exception&) { - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); return false; } bool res = save_api_session(session, email); if (!res) { - msg = "Error saving session to file"; + msg = _L("Error saving session to file"); } return res; } @@ -395,7 +395,7 @@ bool C3DPrinterOS::upload( } } } catch (const std::exception &) { - error_fn("Could not parse server response"); + error_fn(_L("Could not parse server response.")); return false; } @@ -404,7 +404,7 @@ bool C3DPrinterOS::upload( UploadOptionsDialog dlg(GUI::wxGetApp().GetTopWindow(), cloud_projects_list, cloud_printer_types_list, m_preset_name); if (dlg.ShowModal() != wxID_OK) { - error_fn("Canceled"); + error_fn(_L("Canceled")); return false; } @@ -483,7 +483,7 @@ bool C3DPrinterOS::upload( } } catch (const std::exception &) { res = false; - error_fn("Error during file upload"); + error_fn(_L("Error during file upload")); } // set printer type for uploaded gcode if (res) { @@ -542,7 +542,7 @@ std::string C3DPrinterOS::get_api_auth_token(wxString &err) const err = wxString(resp.get("message").c_str()); } } catch (const std::exception &) { - err = "Could not parse server response"; + err = _L("Could not parse server response."); } return result; } @@ -566,7 +566,7 @@ bool C3DPrinterOS::check_session(wxString &msg) const { } } catch (const std::exception &) { - msg = wxString("Could not parse server response"); + msg = _L("Could not parse server response."); return false; } return false; diff --git a/src/slic3r/Utils/AstroBox.cpp b/src/slic3r/Utils/AstroBox.cpp index fd2bd1c78c..61f9f96c33 100644 --- a/src/slic3r/Utils/AstroBox.cpp +++ b/src/slic3r/Utils/AstroBox.cpp @@ -71,7 +71,7 @@ bool AstroBox::test(wxString &msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) .perform_sync(); diff --git a/src/slic3r/Utils/CrealityPrint.cpp b/src/slic3r/Utils/CrealityPrint.cpp index 220d046d2e..99f62a3824 100644 --- a/src/slic3r/Utils/CrealityPrint.cpp +++ b/src/slic3r/Utils/CrealityPrint.cpp @@ -137,20 +137,22 @@ bool CrealityPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, } bool res = true; - auto url = make_url("upload/" + safe_filename(upload_filename.string())); + const auto safe_upload_filename = safe_filename(upload_filename.string()); + // Only encode the URL path segment; keep the multipart filename and start-print path as the stored filename. + auto url = make_url("upload/" + Http::url_encode(safe_upload_filename)); auto http = Http::post(url); // std::move(url)); set_auth(http); if (!supports_multi_color_print()) http.form_add("path", upload_parent_path.string()); - http.form_add_file("file", upload_data.source_path.string(), upload_filename.string()) + http.form_add_file("file", upload_data.source_path.string(), safe_upload_filename) .on_complete([&](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: File uploaded: HTTP %2%: %3%") % name % status % body; if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { wxString errormsg; - if (!start_print(errormsg, safe_filename(upload_filename.string()), upload_data.extended_info)) { + if (!start_print(errormsg, safe_upload_filename, upload_data.extended_info)) { error_fn(std::move(errormsg)); res = false; } diff --git a/src/slic3r/Utils/Duet.cpp b/src/slic3r/Utils/Duet.cpp index df2e4001c5..37db6b6c33 100644 --- a/src/slic3r/Utils/Duet.cpp +++ b/src/slic3r/Utils/Duet.cpp @@ -85,7 +85,7 @@ bool Duet::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn e int err_code = dsf ? (status == 201 ? 0 : 1) : get_err_code_from_body(body); if (err_code != 0) { BOOST_LOG_TRIVIAL(error) << boost::format("Duet: Request completed but error code was received: %1%") % err_code; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); res = false; } else if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { wxString errormsg; @@ -148,13 +148,13 @@ Duet::ConnectionType Duet::connect(wxString &msg) const res = ConnectionType::rrf; break; case 1: - msg = format_error(body, L("Wrong password"), 0); + msg = format_error(body, _u8L("Wrong password"), 0); break; case 2: - msg = format_error(body, L("Could not get resources to create a new connection"), 0); + msg = format_error(body, _u8L("Could not get resources to create a new connection"), 0); break; default: - msg = format_error(body, L("Unknown error occurred"), 0); + msg = format_error(body, _u8L("Unknown error occurred"), 0); break; } diff --git a/src/slic3r/Utils/ElegooLink.cpp b/src/slic3r/Utils/ElegooLink.cpp index 72276bf7b2..0dc291d29c 100644 --- a/src/slic3r/Utils/ElegooLink.cpp +++ b/src/slic3r/Utils/ElegooLink.cpp @@ -141,9 +141,9 @@ namespace Slic3r { const int error_code = root.get("error_code", -1); if (error_code != 0) { - error_message = root.get("message", "Printer returned an error"); + error_message = root.get("message", _u8L("Printer returned an error")); if (error_message.empty()) - error_message = "Printer returned an error"; + error_message = _u8L("Printer returned an error"); error_message += " (" + std::to_string(error_code) + ")"; return false; } @@ -151,13 +151,13 @@ namespace Slic3r { if (serial_number != nullptr) { const auto system_info = root.get_child_optional("system_info"); if (!system_info) { - error_message = "Missing system_info in response"; + error_message = _u8L("Missing system_info in response"); return false; } const auto sn = system_info->get_optional("sn"); if (!sn || sn->empty()) { - error_message = "Missing printer serial number in response"; + error_message = _u8L("Missing printer serial number in response"); return false; } *serial_number = *sn; @@ -165,7 +165,7 @@ namespace Slic3r { return true; } catch (const std::exception&) { - error_message = "Error parsing response"; + error_message = _u8L("Error parsing response"); return false; } } @@ -431,7 +431,7 @@ namespace Slic3r { if (std::regex_search(body, match, re)) { res = true; } else { - msg = format_error(body, "ElegooLink not detected", 0); + msg = format_error(body, _u8L("ElegooLink not detected"), 0); res = false; } }) @@ -472,9 +472,9 @@ namespace Slic3r { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting CC2 device info: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; res = false; if (status == 401 || status == 403) - msg = format_error(body, "Invalid access code", status); + msg = format_error(body, _u8L("Invalid access code"), status); else - msg = format_error(body, error.empty() ? "CC2 device not detected" : error, status); + msg = format_error(body, error.empty() ? _u8L("CC2 device not detected") : error, status); }) .on_complete([&](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got CC2 device info: %2%") % name % body; @@ -482,7 +482,7 @@ namespace Slic3r { std::string serial_number; if (!parse_cc2_response(body, error_message, &serial_number)) { res = false; - msg = format_error(body, error_message.empty() ? "CC2 device not detected" : error_message, status); + msg = format_error(body, error_message.empty() ? _u8L("CC2 device not detected") : error_message, status); return; } persist_sn(Http::get_host_header_value(m_host), token, serial_number); @@ -531,7 +531,7 @@ namespace Slic3r { if (std::regex_search(body, match, re)) { res = true; } else { - msg = format_error(body, "ElegooLink not detected", 0); + msg = format_error(body, _u8L("ElegooLink not detected"), 0); res = false; } }) @@ -570,16 +570,16 @@ namespace Slic3r { error % status % body; res = false; if (status == 401 || status == 403) - msg = format_error(body, "Invalid access code", status); + msg = format_error(body, _u8L("Invalid access code"), status); else - msg = format_error(body, error.empty() ? "CC2 device not detected" : error, status); + msg = format_error(body, error.empty() ? _u8L("CC2 device not detected") : error, status); }) .on_complete([&](std::string body, unsigned status) { std::string error_message; std::string serial_number; if (!parse_cc2_response(body, error_message, &serial_number)) { res = false; - msg = format_error(body, error_message.empty() ? "CC2 device not detected" : error_message, status); + msg = format_error(body, error_message.empty() ? _u8L("CC2 device not detected") : error_message, status); return; } res = true; @@ -735,7 +735,7 @@ namespace Slic3r { } else { // get error messages pt::ptree messages = root.get_child("messages"); - std::string error_message = "ErrorCode : " + code + "\n"; + std::string error_message = (boost::format(_u8L("Error code: %1%")) % code).str() + "\n"; for (pt::ptree::value_type& message : messages) { std::string field = message.second.get("field"); std::string msg = message.second.get("message"); @@ -745,10 +745,10 @@ namespace Slic3r { } } catch (...) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error parsing response: %2%") % name % body; - error_fn(wxString::FromUTF8("Error parsing response")); + error_fn(_L("Error parsing response")); } } else { - error_fn(format_error(body, "upload failed", status)); + error_fn(format_error(body, _u8L("Upload failed"), status)); } }) .on_error([&](std::string body, std::string error, unsigned status) { @@ -921,7 +921,7 @@ namespace Slic3r { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: CC2 chunk uploaded: HTTP %2%: %3%") % name % status % body; std::string error_message; if (!parse_cc2_response(body, error_message)) { - error_fn(format_error(body, error_message.empty() ? "CC2 upload failed" : error_message, status)); + error_fn(format_error(body, error_message.empty() ? _u8L("CC2 upload failed") : error_message, status)); return; } result = true; @@ -929,9 +929,9 @@ namespace Slic3r { .on_error([&](std::string body, std::string error, unsigned status) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error uploading CC2 chunk: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; if (status == 401 || status == 403) - error_fn(format_error(body, "Invalid access code", status)); + error_fn(format_error(body, _u8L("Invalid access code"), status)); else - error_fn(format_error(body, error.empty() ? "CC2 upload failed" : error, status)); + error_fn(format_error(body, error.empty() ? _u8L("CC2 upload failed") : error, status)); }) .on_progress([&](Http::Progress progress, bool& cancel) { if (progress.ultotal == progress.ulnow) diff --git a/src/slic3r/Utils/FixModelByCgal.cpp b/src/slic3r/Utils/FixModelByCgal.cpp index 9e2e014d93..8d196f7201 100644 --- a/src/slic3r/Utils/FixModelByCgal.cpp +++ b/src/slic3r/Utils/FixModelByCgal.cpp @@ -85,7 +85,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro size_t ivolume = 0; // Orca: Lambda for updating progress from worker thread. - auto on_progress = [&mtx, &condition, &ivolume, &model_object, &progress](const char *msg, unsigned prcnt) { + auto on_progress = [&mtx, &condition, &ivolume, &model_object, &progress](const std::string &msg, unsigned prcnt) { std::unique_lock lock(mtx); progress.message = msg; const size_t total = std::max(1, model_object.volumes.size()); @@ -108,7 +108,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro if (canceled) throw RepairCanceledException(); - on_progress(L("Repairing model object"), 10); + on_progress(_u8L("Repairing model object"), 10); ModelVolume *volume = model_object.volumes[ivolume]; @@ -118,7 +118,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro parts_count = volume->split(1, keep_painting); if (parts_count > 1) { const std::string msg = Slic3r::format(L("Split into %1% parts"), parts_count); - on_progress(msg.c_str(), 10); + on_progress(msg, 10); } } @@ -145,7 +145,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro if (removed_parts >= parts_count) { ivolume = part_end; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); continue; } @@ -161,7 +161,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro std::string error; if (!MeshBoolean::cgal::repair(mesh, nullptr, &error)) - throw Slic3r::RuntimeError(error.empty() ? L("Repair failed") : error.c_str()); + throw Slic3r::RuntimeError(error.empty() ? _u8L("Repair failed") : error); part_volume->set_mesh(std::move(mesh)); part_volume->calculate_convex_hull(); @@ -175,20 +175,20 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro ivolume = part_end; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); } model_object.invalidate_bounding_box(); if (ivolume > 0) --ivolume; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); success = true; finished = true; } catch (RepairCanceledException &) { canceled = true; finished = true; - on_progress(L("Repair canceled"), 100); + on_progress(_u8L("Repair canceled"), 100); } catch (std::exception &ex) { success = false; finished = true; diff --git a/src/slic3r/Utils/FlashAir.cpp b/src/slic3r/Utils/FlashAir.cpp index 6976d8fb24..f2d66fd012 100644 --- a/src/slic3r/Utils/FlashAir.cpp +++ b/src/slic3r/Utils/FlashAir.cpp @@ -119,7 +119,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .perform_sync(); @@ -140,7 +140,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .perform_sync(); @@ -156,7 +156,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .on_error([&](std::string body, std::string error, unsigned status) { diff --git a/src/slic3r/Utils/MKS.cpp b/src/slic3r/Utils/MKS.cpp index 092a933c9e..c4aa4c7262 100644 --- a/src/slic3r/Utils/MKS.cpp +++ b/src/slic3r/Utils/MKS.cpp @@ -84,7 +84,7 @@ bool MKS::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn er int err_code = get_err_code_from_body(body); if (err_code != 0) { BOOST_LOG_TRIVIAL(error) << boost::format("MKS: Request completed but error code was received: %1%") % err_code; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); res = false; } else if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index ece2680a73..cfae9babdc 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -183,7 +183,7 @@ bool OctoPrint::test_with_resolved_ip(wxString &msg) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response."; + msg = _L("Could not parse server response."); } }) .ssl_revoke_best_effort(m_ssl_revoke_best_effort) @@ -232,7 +232,7 @@ bool OctoPrint::test(wxString& msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -635,7 +635,7 @@ bool PrusaLink::test(wxString& msg) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -811,7 +811,7 @@ bool PrusaLink::test_with_method_check(wxString& msg, bool& use_put) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -891,7 +891,7 @@ bool PrusaLink::test_with_resolved_ip_and_method_check(wxString& msg, bool& use_ } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 02804d1598..215216651e 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #if defined(_WIN32) @@ -101,24 +102,6 @@ std::string resolve_display_name( return username; } -std::string generate_uuid_for_setting_id(const std::string& name, const std::string& user_id = "") -{ - if (name.empty()) { - return ""; - } - - // Mix user_id into the hashed input so two different users generating a setting_id - // for an identically-named preset get distinct UUIDs. Without this, the cloud's ID - // space collides across accounts and the second user's create gets HTTP 409 with - // server_profile=null on every sync (the foreign owner's record is not exposed). - static const boost::uuids::uuid orca_namespace = - boost::uuids::string_generator()("f47ac10b-58cc-4372-a567-0e02b2c3d479"); - - boost::uuids::name_generator_sha1 gen(orca_namespace); - boost::uuids::uuid id = user_id.empty() ? gen(name) : gen(user_id + "/" + name); - return boost::uuids::to_string(id); -} - std::string base64url_encode(const std::vector& data) { std::string out; @@ -412,6 +395,24 @@ OrcaCloudServiceAgent::~OrcaCloudServiceAgent() } } +std::string OrcaCloudServiceAgent::generate_uuid_for_setting_id(const std::string& name, const std::string& user_id) +{ + if (name.empty()) { + return ""; + } + + // Mix user_id into the hashed input so two different users generating a setting_id + // for an identically-named preset get distinct UUIDs. Without this, the cloud's ID + // space collides across accounts and the second user's create gets HTTP 409 with + // server_profile=null on every sync (the foreign owner's record is not exposed). + static const boost::uuids::uuid orca_namespace = + boost::uuids::string_generator()("f47ac10b-58cc-4372-a567-0e02b2c3d479"); + + boost::uuids::name_generator_sha1 gen(orca_namespace); + boost::uuids::uuid id = user_id.empty() ? gen(name) : gen(user_id + "/" + name); + return boost::uuids::to_string(id); +} + void OrcaCloudServiceAgent::configure_urls(AppConfig* app_config) { if (!app_config) return; @@ -1250,8 +1251,10 @@ SyncPushResult OrcaCloudServiceAgent::sync_push(const std::string& profile_id, if (http_code == 409) { // Conflict - parse server version + nlohmann::json err_body; try { auto json = nlohmann::json::parse(response); + err_body = json; if (json.is_null()) { result.server_deleted = true; } else { @@ -1261,6 +1264,13 @@ SyncPushResult OrcaCloudServiceAgent::sync_push(const std::string& profile_id, result.server_version.updated_time = profile_data.value(ORCA_JSON_KEY_UPDATE_TIME, 0); } } catch (...) {} + // Surface the conflict via the http-error callback with the local preset name injected. + // The raw server body omits the name for tombstone (-3) conflicts (server_profile is null), + // but the GUI needs it to regenerate the deterministic setting_id for a force push. + if (!err_body.is_object()) + err_body = nlohmann::json::object(); + err_body["name"] = name; + invoke_http_error_callback(409, err_body.dump()); result.error_message = response; return result; } @@ -1407,6 +1417,10 @@ void OrcaCloudServiceAgent::persist_refresh_token(const std::string& token) } compute_fallback_path(); + if (refresh_fallback_path.empty()) { + BOOST_LOG_TRIVIAL(warning) << "OrcaCloudServiceAgent: no refresh-token storage path available; skipping file persistence"; + return; + } wxFileName path(wxString::FromUTF8(refresh_fallback_path.c_str())); path.Normalize(); if (!wxFileName::DirExists(path.GetPath())) { @@ -1937,7 +1951,10 @@ int OrcaCloudServiceAgent::http_post(const std::string& path, const std::string& if (response_body) *response_body = res.body; if (http_code) *http_code = res.status; - if (!suppress && (!res.success || res.status >= 400)) { + // 409 is a push-only domain conflict; sync_push re-fires the error callback with the + // local preset name injected (the raw server body omits it for tombstone conflicts), + // so skip the generic nameless auto-fire here to avoid a duplicate, nameless event. + if (!suppress && (!res.success || res.status >= 400) && res.status != 409) { invoke_http_error_callback(res.status, res.body); } @@ -2207,7 +2224,15 @@ bool OrcaCloudServiceAgent::http_post_auth(const std::string& path, const std::s void OrcaCloudServiceAgent::compute_fallback_path() { - if (!refresh_fallback_path.empty()) return; + if (!refresh_fallback_path.empty()) + return; + // wxStandardPaths::GetUserDataDir() resolves the app data directory via + // wxAppConsoleBase::GetAppName(), which dereferences wxTheApp. In headless + // contexts (CLI, unit tests) there is no wxApp, so guard the call to avoid a + // null dereference. The path can still be provided explicitly through + // set_config_dir(); when it is left empty, file persistence is skipped. + if (wxTheApp == nullptr) + return; wxFileName fallback(wxStandardPaths::Get().GetUserDataDir(), "orca_refresh_token.sec"); fallback.Normalize(); refresh_fallback_path = fallback.GetFullPath().ToStdString(); diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp index 6852992198..8820425f7f 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp @@ -300,6 +300,8 @@ public: bool set_user_session(const nlohmann::json& session_json, bool notify_login = true); void clear_session(); + static std::string generate_uuid_for_setting_id(const std::string& name, const std::string& user_id = ""); + private: // Sync protocol helpers int sync_pull( diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index 0b52309da4..0d269e1cd5 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -90,7 +90,7 @@ bool Repetier::test(wxString &msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) .perform_sync(); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6b93962a33..1108fe9350 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -47,6 +47,11 @@ function(orcaslicer_copy_test_dlls) endforeach() endfunction() +# Register Catch2 tags as CTest labels so `ctest -L`/`-LE` can filter by tag. +function(orcaslicer_discover_tests TARGET) + catch_discover_tests(${TARGET} ADD_TAGS_AS_LABELS) +endfunction() + add_subdirectory(libnest2d) add_subdirectory(libslic3r) add_subdirectory(slic3rutils) diff --git a/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini b/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini deleted file mode 100644 index 9d44cd43e7..0000000000 --- a/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini +++ /dev/null @@ -1,30 +0,0 @@ -before_layer_gcode = -between_objects_gcode = -end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n" -end_gcode = M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n -extrusion_axis = E -extrusion_multiplier = 1 -filament_cost = 0 -filament_density = 0 -filament_diameter = 3 -filament_max_volumetric_speed = 0 -gcode_comments = 0 -gcode_flavor = reprap -layer_gcode = -max_print_speed = 80 -max_volumetric_speed = 0 -retract_length = 2 -retract_length_toolchange = 10 -retract_lift = 1.5 -retract_lift_above = 0 -retract_lift_below = 0 -retract_restart_extra = 0 -retract_restart_extra_toolchange = 0 -retract_speed = 40 -start_filament_gcode = "; Filament gcode\n" -start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n -toolchange_gcode = -travel_speed = 130 -use_firmware_retraction = 0 -use_relative_e_distances = 0 -use_volumetric_e = 0 diff --git a/tests/fff_print/CMakeLists.txt b/tests/fff_print/CMakeLists.txt index 452a40adb9..1467c1397f 100644 --- a/tests/fff_print/CMakeLists.txt +++ b/tests/fff_print/CMakeLists.txt @@ -21,4 +21,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/fff_print/test_data.cpp b/tests/fff_print/test_data.cpp index 307a279bef..b1096307c8 100644 --- a/tests/fff_print/test_data.cpp +++ b/tests/fff_print/test_data.cpp @@ -10,10 +10,11 @@ #include #include -#include #include #include +#include "test_utils.hpp" + using namespace std; namespace Slic3r { namespace Test { @@ -282,16 +283,36 @@ void init_and_process_print(std::initializer_list meshes, Slic3r:: std::string gcode(Print & print) { - boost::filesystem::path temp = boost::filesystem::unique_path(); + ScopedTemporaryFile temp(".gcode"); print.set_status_silent(); print.process(); print.export_gcode(temp.string(), nullptr, nullptr); std::ifstream t(temp.string()); std::string str((std::istreambuf_iterator(t)), std::istreambuf_iterator()); - boost::nowide::remove(temp.string().c_str()); return str; } +std::set layers_with_role(const std::string &gcode, const std::string &role) +{ + std::set layers; + GCodeReader parser; + parser.parse_buffer(gcode, [&layers, &role](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (line.extruding(self) && line.comment().find(role) != std::string_view::npos) + layers.insert(self.z()); + }); + return layers; +} + +double max_z(const std::string &gcode) +{ + double z = 0.0; + GCodeReader parser; + parser.parse_buffer(gcode, [&z](GCodeReader &self, const GCodeReader::GCodeLine &) { + z = std::max(z, static_cast(self.z())); + }); + return z; +} + Slic3r::Model model(const std::string &model_name, TriangleMesh &&_mesh) { Slic3r::Model result; @@ -338,7 +359,7 @@ std::string slice(std::initializer_list meshes, std::initializer_l #include -SCENARIO("init_print functionality", "[test_data][.]") { +SCENARIO("init_print functionality", "[test_data]") { GIVEN("A default config") { Slic3r::DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); WHEN("init_print is called with a single mesh.") { diff --git a/tests/fff_print/test_data.hpp b/tests/fff_print/test_data.hpp index 378d7fce7a..721446bc7e 100644 --- a/tests/fff_print/test_data.hpp +++ b/tests/fff_print/test_data.hpp @@ -8,6 +8,8 @@ #include "libslic3r/Print.hpp" #include "libslic3r/TriangleMesh.hpp" +#include +#include #include namespace Slic3r { namespace Test { @@ -80,6 +82,13 @@ std::string slice(std::initializer_list meshes, const DynamicPrint std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); +// Distinct layer Z heights that carry an extrusion tagged with the given role +// comment (requires gcode_comments), e.g. "skirt", "brim", "support". +std::set layers_with_role(const std::string &gcode, const std::string &role); + +// Highest Z reached by any move in the gcode. +double max_z(const std::string &gcode); + } } // namespace Slic3r::Test diff --git a/tests/fff_print/test_flow.cpp b/tests/fff_print/test_flow.cpp index 7c0ad00ef1..4419d7f5bf 100644 --- a/tests/fff_print/test_flow.cpp +++ b/tests/fff_print/test_flow.cpp @@ -15,82 +15,7 @@ using namespace Slic3r::Test; using namespace Slic3r; -SCENARIO("Extrusion width specifics", "[Flow][.]") { - GIVEN("A config with a skirt, brim, some fill density, 3 perimeters, and 1 bottom solid layer and a 20mm cube mesh") { - // this is a sharedptr - DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); - config.set_deserialize_strict({ - { "brim_width", 2 }, - { "skirts", 1 }, - { "perimeters", 3 }, - { "fill_density", "40%" }, - { "first_layer_height", 0.3 } - }); - - WHEN("first layer width set to 2mm") { - Slic3r::Model model; - config.set("first_layer_extrusion_width", 2); - Slic3r::Print print; - Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, config); - - std::vector E_per_mm_bottom; - std::string gcode = Test::gcode(print); - Slic3r::GCodeReader parser; - const double layer_height = config.opt_float("layer_height"); - parser.parse_buffer(gcode, [&E_per_mm_bottom, layer_height] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) - { - if (self.z() == Catch::Approx(layer_height).margin(0.01)) { // only consider first layer - if (line.extruding(self) && line.dist_XY(self) > 0) { - E_per_mm_bottom.emplace_back(line.dist_E(self) / line.dist_XY(self)); - } - } - }); - THEN(" First layer width applies to everything on first layer.") { - bool pass = false; - double avg_E = std::accumulate(E_per_mm_bottom.cbegin(), E_per_mm_bottom.cend(), 0.0) / static_cast(E_per_mm_bottom.size()); - - pass = (std::count_if(E_per_mm_bottom.cbegin(), E_per_mm_bottom.cend(), [avg_E] (const double& v) { return v == Catch::Approx(avg_E); }) == 0); - REQUIRE(pass == true); - REQUIRE(E_per_mm_bottom.size() > 0); // make sure it actually passed because of extrusion - } - THEN(" First layer width does not apply to upper layer.") { - } - } - } -} -// needs gcode export -SCENARIO(" Bridge flow specifics.", "[Flow]") { - GIVEN("A default config with no cooling and a fixed bridge speed, flow ratio and an overhang mesh.") { - WHEN("bridge_flow_ratio is set to 1.0") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 0.5") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 2.0") { - THEN("Output flow is as expected.") { - } - } - } - GIVEN("A default config with no cooling and a fixed bridge speed, flow ratio, fixed extrusion width of 0.4mm and an overhang mesh.") { - WHEN("bridge_flow_ratio is set to 1.0") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 0.5") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 2.0") { - THEN("Output flow is as expected.") { - } - } - } -} - -/// Test the expected behavior for auto-width, +/// Test the expected behavior for auto-width, /// spacing, etc SCENARIO("Flow: Flow math for non-bridges", "[Flow]") { GIVEN("Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5") { diff --git a/tests/fff_print/test_gcodewriter.cpp b/tests/fff_print/test_gcodewriter.cpp index ef8fb58b41..2d53dd099d 100644 --- a/tests/fff_print/test_gcodewriter.cpp +++ b/tests/fff_print/test_gcodewriter.cpp @@ -6,68 +6,6 @@ using namespace Slic3r; -SCENARIO("lift() is not ignored after unlift() at normal values of Z", "[GCodeWriter][.]") { - GIVEN("A config from a file and a single extruder.") { - GCodeWriter writer; - GCodeConfig &config = writer.config; - config.load(std::string(TEST_DATA_DIR) + "/fff_print_tests/test_gcodewriter/config_lift_unlift.ini", ForwardCompatibilitySubstitutionRule::Disable); - - std::vector extruder_ids {0}; - writer.set_extruders(extruder_ids); - writer.set_extruder(0); - - WHEN("Z is set to 203") { - double trouble_Z = 203; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - WHEN("Z is set to 500003") { - double trouble_Z = 500003; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - WHEN("Z is set to 10.3") { - double trouble_Z = 10.3; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - // The test above will fail for trouble_Z == 9007199254740992, where trouble_Z + 1.5 will be rounded to trouble_Z + 2.0 due to double mantisa overflow. - } -} - SCENARIO("set_speed emits values with fixed-point output.", "[GCodeWriter]") { GIVEN("GCodeWriter instance") { @@ -94,3 +32,28 @@ SCENARIO("set_speed emits values with fixed-point output.", "[GCodeWriter]") { } } } + +SCENARIO("z_hop lifts the nozzle when a lift is requested", "[GCodeWriter]") { + GIVEN("A writer with the nozzle parked at Z = 10") { + GCodeWriter writer; + std::vector extruder_ids { 0 }; + writer.set_extruders(extruder_ids); + writer.set_extruder(0); + writer.travel_to_z(10.0); + + WHEN("z_hop is 1 and an eager lift is requested") { + writer.config.z_hop.values = { 1.0 }; + std::string gcode = writer.eager_lift(LiftType::NormalLift); + THEN("a Z move up by z_hop is emitted") { + REQUIRE_THAT(gcode, Catch::Matchers::ContainsSubstring("Z11")); + } + } + WHEN("z_hop is 0") { + writer.config.z_hop.values = { 0.0 }; + std::string gcode = writer.eager_lift(LiftType::NormalLift); + THEN("no lift is emitted") { + REQUIRE(gcode.empty()); + } + } + } +} diff --git a/tests/fff_print/test_model.cpp b/tests/fff_print/test_model.cpp index a802782607..fc25e0eef8 100644 --- a/tests/fff_print/test_model.cpp +++ b/tests/fff_print/test_model.cpp @@ -4,15 +4,15 @@ #include "libslic3r/Model.hpp" #include "libslic3r/ModelArrange.hpp" -#include #include #include "test_data.hpp" +#include "test_utils.hpp" using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("Model construction", "[Model][.]") { +SCENARIO("Model construction", "[Model]") { GIVEN("A Slic3r Model") { Slic3r::Model model; Slic3r::TriangleMesh sample_mesh = Slic3r::make_cube(20,20,20); @@ -49,12 +49,11 @@ SCENARIO("Model construction", "[Model][.]") { print.set_status_silent(); print.apply(model, config); print.process(); - boost::filesystem::path temp = boost::filesystem::unique_path(); + ScopedTemporaryFile temp(".gcode"); print.export_gcode(temp.string(), nullptr, nullptr); - REQUIRE(boost::filesystem::exists(temp)); - REQUIRE(boost::filesystem::is_regular_file(temp)); - REQUIRE(boost::filesystem::file_size(temp) > 0); - boost::nowide::remove(temp.string().c_str()); + REQUIRE(boost::filesystem::exists(temp.path())); + REQUIRE(boost::filesystem::is_regular_file(temp.path())); + REQUIRE(boost::filesystem::file_size(temp.path()) > 0); } } } diff --git a/tests/fff_print/test_print.cpp b/tests/fff_print/test_print.cpp index c94e302e9a..8c59b30292 100644 --- a/tests/fff_print/test_print.cpp +++ b/tests/fff_print/test_print.cpp @@ -9,35 +9,14 @@ using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("PrintObject: Perimeter generation", "[PrintObject][.]") { +SCENARIO("Print: Skirt generation", "[Print]") { GIVEN("20mm cube and default config") { - WHEN("make_perimeters() is called") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { { "fill_density", 0 } }); - const PrintObject &object = *print.objects().front(); - THEN("67 layers exist in the model") { - REQUIRE(object.layers().size() == 66); - } - THEN("Every layer in region 0 has 1 island of perimeters") { - for (const Layer *layer : object.layers()) - REQUIRE(layer->regions().front()->perimeters.entities.size() == 1); - } - THEN("Every layer in region 0 has 3 paths in its perimeters list.") { - for (const Layer *layer : object.layers()) - REQUIRE(layer->regions().front()->perimeters.items_count() == 3); - } - } - } -} - -SCENARIO("Print: Skirt generation", "[Print][.]") { - GIVEN("20mm cube and default config") { - WHEN("Skirts is set to 2 loops") { + WHEN("skirt_loops is set to 2") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "skirt_height", 1 }, - { "skirt_distance", 1 }, - { "skirts", 2 } + { "skirt_height", 1 }, + { "skirt_distance", 1 }, + { "skirt_loops", 2 } }); THEN("Skirt Extrusion collection has 2 loops in it") { REQUIRE(print.skirt().items_count() == 2); @@ -47,19 +26,19 @@ SCENARIO("Print: Skirt generation", "[Print][.]") { } } -SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces to become internal.", "[Print][.]") { - GIVEN("sliced 20mm cube and config with top_solid_surfaces = 2 and bottom_solid_surfaces = 1") { +SCENARIO("Print: Changing number of solid shell layers does not cause all surfaces to become internal.", "[Print]") { + GIVEN("sliced 20mm cube and config with top_shell_layers = 2 and bottom_shell_layers = 1") { Slic3r::DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_deserialize_strict({ - { "top_solid_layers", 2 }, - { "bottom_solid_layers", 1 }, - { "layer_height", 0.25 }, // get a known number of layers - { "first_layer_height", 0.25 } + { "top_shell_layers", 2 }, + { "bottom_shell_layers", 1 }, + { "layer_height", 0.25 }, // get a known number of layers + { "initial_layer_print_height", 0.25 } }); Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, config); - // Precondition: Ensure that the model has 2 solid top layers (39, 38) + // Precondition: Ensure that the model has 2 solid top layers (79, 78) // and one solid bottom layer (0). auto test_is_solid_infill = [&print](size_t obj_id, size_t layer_id) { const Layer &layer = *(print.objects().at(obj_id)->get_layer((int)layer_id)); @@ -74,8 +53,8 @@ SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces t test_is_solid_infill(0, 0); // should be solid test_is_solid_infill(0, 79); // should be solid test_is_solid_infill(0, 78); // should be solid - WHEN("Model is re-sliced with top_solid_layers == 3") { - config.set("top_solid_layers", 3); + WHEN("Model is re-sliced with top_shell_layers == 3") { + config.set("top_shell_layers", 3); print.apply(model, config); print.process(); THEN("Print object does not have 0 solid bottom layers.") { @@ -90,27 +69,14 @@ SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces t } } -SCENARIO("Print: Brim generation", "[Print][.]") { +SCENARIO("Print: Brim generation", "[Print]") { GIVEN("20mm cube and default config, 1mm first layer width") { - WHEN("Brim is set to 3mm") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 3 } - }); - THEN("Brim Extrusion collection has 3 loops in it") { - size_t total_items = 0; - for (const auto& pair : print.get_brimMap()) { - total_items += pair.second.items_count(); - } - REQUIRE(total_items == 3); - } - } WHEN("Brim is set to 6mm") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 6 } + { "brim_type", "outer_only" }, + { "initial_layer_line_width", 1 }, + { "brim_width", 6 } }); THEN("Brim Extrusion collection has 6 loops in it") { size_t total_items = 0; @@ -123,17 +89,16 @@ SCENARIO("Print: Brim generation", "[Print][.]") { WHEN("Brim is set to 6mm, extrusion width 0.5mm") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 6 }, - { "first_layer_extrusion_width", 0.5 } + { "brim_type", "outer_only" }, + { "brim_width", 6 }, + { "initial_layer_line_width", 0.5 } }); - print.process(); THEN("Brim Extrusion collection has 12 loops in it") { size_t total_items = 0; for (const auto& pair : print.get_brimMap()) { total_items += pair.second.items_count(); } - REQUIRE(total_items == 14); + REQUIRE(total_items == 12); } } } diff --git a/tests/fff_print/test_printgcode.cpp b/tests/fff_print/test_printgcode.cpp index 180fc6d998..7ac2f43231 100644 --- a/tests/fff_print/test_printgcode.cpp +++ b/tests/fff_print/test_printgcode.cpp @@ -14,9 +14,14 @@ #include "libslic3r/GCodeReader.hpp" #include "test_data.hpp" +#include "test_utils.hpp" #include #include +#include +#include +#include +#include using namespace Slic3r; using namespace Slic3r::Test; @@ -25,25 +30,26 @@ boost::regex perimeters_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; perimeter"); boost::regex infill_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; infill"); boost::regex skirt_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; skirt"); -SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { +// [NotWorking]: slice() intermittently throws clipper's "Coordinate outside allowed +// range" in CI (Linux) while passing locally. Disabled pending a root-cause fix in a +// follow-up PR. +SCENARIO( "PrintGCode basic functionality", "[PrintGCode][NotWorking]") { GIVEN("A default configuration and a print test object") { WHEN("the output is executed with no support material") { Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, { - { "layer_height", 0.2 }, - { "first_layer_height", 0.2 }, - { "first_layer_extrusion_width", 0 }, - { "gcode_comments", true }, - { "start_gcode", "" } + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "initial_layer_line_width", 0 }, + { "gcode_comments", true }, + { "machine_start_gcode", "" }, + { "z_hop", 0 } }); std::string gcode = Slic3r::Test::gcode(print); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); } - THEN("Exported text contains slic3r version") { - REQUIRE(gcode.find(SLIC3R_VERSION) != std::string::npos); - } //THEN("Exported text contains git commit id") { // REQUIRE(gcode.find("; Git Commit") != std::string::npos); // REQUIRE(gcode.find(SLIC3R_BUILD_ID) != std::string::npos); @@ -61,14 +67,9 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(gcode.find(";_EXTRUDE_SET_SPEED") == std::string::npos); } - THEN("GCode preamble is emitted.") { - REQUIRE(gcode.find("G21 ; set units to millimeters") != std::string::npos); - } - - THEN("Config options emitted for print config, default region config, default object config") { - REQUIRE(gcode.find("; first_layer_temperature") != std::string::npos); + THEN("The config trailer includes print and region settings") { REQUIRE(gcode.find("; layer_height") != std::string::npos); - REQUIRE(gcode.find("; fill_density") != std::string::npos); + REQUIRE(gcode.find("; sparse_infill_density") != std::string::npos); } THEN("Infill is emitted.") { boost::smatch has_match; @@ -83,27 +84,22 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(boost::regex_search(gcode, has_match, skirt_regex)); } THEN("final Z height is 20mm") { - double final_z = 0.0; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - }); - REQUIRE(final_z == Catch::Approx(20.)); + REQUIRE_THAT(max_z(gcode), Catch::Matchers::WithinAbs(20., 1e-4)); } } - WHEN("output is executed with complete objects and two differently-sized meshes") { + WHEN("output is executed with two objects printed sequentially") { Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20,TestMesh::cube_20x20x20}, print, model, { - { "first_layer_extrusion_width", 0 }, - { "first_layer_height", 0.3 }, - { "layer_height", 0.2 }, - { "support_material", false }, - { "raft_layers", 0 }, - { "complete_objects", true }, - { "gcode_comments", true }, - { "between_objects_gcode", "; between-object-gcode" } + { "initial_layer_line_width", 0 }, + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.2 }, + { "enable_support", false }, + { "raft_layers", 0 }, + { "print_sequence", "by object" }, + { "gcode_comments", true }, + { "printing_by_object_gcode", "; between-object-gcode" }, + { "z_hop", 0 } }); std::string gcode = Slic3r::Test::gcode(print); THEN("Some text output is generated.") { @@ -125,13 +121,7 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(gcode.find("; between-object-gcode") != std::string::npos); } THEN("final Z height is 20.1mm") { - double final_z = 0.0; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - }); - REQUIRE(final_z == Catch::Approx(20.1)); + REQUIRE_THAT(max_z(gcode), Catch::Matchers::WithinAbs(20.1, 1e-4)); } THEN("Z height resets on object change") { double final_z = 0.0; @@ -147,27 +137,13 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { }); REQUIRE(reset == true); } - THEN("Shorter object is printed before taller object.") { - double final_z = 0.0; - bool reset = false; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z, &reset] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - if (final_z > 0 && std::abs(self.z() - 0.3) < 0.01 ) { - reset = (final_z > 20.0); - } else { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - } - }); - REQUIRE(reset == true); - } } WHEN("the output is executed with support material") { std::string gcode = ::Test::slice({TestMesh::cube_20x20x20}, { - { "first_layer_extrusion_width", 0 }, - { "support_material", true }, - { "raft_layers", 3 }, - { "gcode_comments", true } + { "initial_layer_line_width", 0 }, + { "enable_support", true }, + { "raft_layers", 3 }, + { "gcode_comments", true } }); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); @@ -187,7 +163,7 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } WHEN("the output is executed with a separate first layer extrusion width") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "first_layer_extrusion_width", "0.5" } + { "initial_layer_line_width", "0.5" } }); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); @@ -204,18 +180,18 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } WHEN("Cooling is enabled and the fan is disabled.") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "cooling", true }, - { "disable_fan_first_layers", 5 } + { "cooling", true }, + { "close_fan_the_first_x_layers", 5 } }); THEN("GCode to disable fan is emitted."){ - REQUIRE(gcode.find("M107") != std::string::npos); + REQUIRE(gcode.find("M106 S0") != std::string::npos); } } WHEN("end_gcode exists with layer_num and layer_z") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "end_gcode", "; Layer_num [layer_num]\n; Layer_z [layer_z]" }, - { "layer_height", 0.1 }, - { "first_layer_height", 0.1 } + { "machine_end_gcode", "; Layer_num [layer_num]\n; Layer_z [layer_z]" }, + { "layer_height", 0.1 }, + { "initial_layer_print_height", 0.1 } }); THEN("layer_num and layer_z are processed in the end gcode") { REQUIRE(gcode.find("; Layer_num 199") != std::string::npos); @@ -223,39 +199,21 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } } WHEN("current_extruder exists in start_gcode") { - { - std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "start_gcode", "; Extruder [current_extruder]" } - }); - THEN("current_extruder is processed in the start gcode and set for first extruder") { - REQUIRE(gcode.find("; Extruder 0") != std::string::npos); - } - } - { - DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - config.set_num_extruders(4); - config.set_deserialize_strict({ - { "start_gcode", "; Extruder [current_extruder]" }, - { "infill_extruder", 2 }, - { "solid_infill_extruder", 2 }, - { "perimeter_extruder", 2 }, - { "support_material_extruder", 2 }, - { "support_material_interface_extruder", 2 } - }); - std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - THEN("current_extruder is processed in the start gcode and set for second extruder") { - REQUIRE(gcode.find("; Extruder 1") != std::string::npos); - } + std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { + { "machine_start_gcode", "; Extruder [current_extruder]" } + }); + THEN("current_extruder is processed in the start gcode and set for first extruder") { + REQUIRE(gcode.find("; Extruder 0") != std::string::npos); } } WHEN("layer_num represents the layer's index from z=0") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20, TestMesh::cube_20x20x20 }, { - { "complete_objects", true }, - { "gcode_comments", true }, - { "layer_gcode", ";Layer:[layer_num] ([layer_z] mm)" }, - { "layer_height", 0.1 }, - { "first_layer_height", 0.1 } + { "print_sequence", "by object" }, + { "gcode_comments", true }, + { "layer_change_gcode", ";Layer:[layer_num] ([layer_z] mm)" }, + { "layer_height", 0.1 }, + { "initial_layer_print_height", 0.1 } }); // End of the 1st object. std::string token = ";Layer:199 "; @@ -267,15 +225,82 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(pos < gcode.size()); double z = 0; REQUIRE((sscanf(gcode.data() + pos, "(%lf mm)", &z) == 1)); - REQUIRE(z == Catch::Approx(20.)); + REQUIRE_THAT(z, Catch::Matchers::WithinAbs(20., 1e-4)); // Second object pos = gcode.find(";Layer:399 ", pos); REQUIRE(pos != std::string::npos); pos += token.size(); REQUIRE(pos < gcode.size()); REQUIRE((sscanf(gcode.data() + pos, "(%lf mm)", &z) == 1)); - REQUIRE(z == Catch::Approx(20.)); + REQUIRE_THAT(z, Catch::Matchers::WithinAbs(20., 1e-4)); } } } } + +TEST_CASE("export_gcode writes G-code without a result pointer", "[PrintGCode][export_gcode]") +{ + Print print; + Model model; + Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model); + print.process(); + + SECTION("non-BBL printer") {} + SECTION("BBL printer") { print.is_BBL_printer() = true; } + + ScopedTemporaryFile temp(".gcode"); + REQUIRE_NOTHROW(print.export_gcode(temp.string(), nullptr, nullptr)); + + std::ifstream in(temp.string()); + const std::string gcode((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + + REQUIRE_FALSE(gcode.empty()); +} + +TEST_CASE("Initial layer height is honored", "[PrintGCode]") +{ + const std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, { + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.2 }, + { "z_hop", 0 } // keep recorded Z equal to the printed layer height + }); + + std::set layer_zs; + GCodeReader reader; + reader.parse_buffer(gcode, [&layer_zs] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (line.extruding(self) && line.dist_XY(self) > 0) + layer_zs.insert(self.z()); + }); + + REQUIRE(layer_zs.size() > 1); + REQUIRE_THAT(*layer_zs.begin(), Catch::Matchers::WithinAbs(0.3, 1e-4)); + REQUIRE_THAT(*std::next(layer_zs.begin()), Catch::Matchers::WithinAbs(0.5, 1e-4)); +} + +TEST_CASE("Sequential printing follows model order", "[PrintGCode]") +{ + // Two objects of different heights, taller one added first. Orca prints + // sequential objects in model order, so the taller one is printed first. + const std::string gcode = Slic3r::Test::slice({ Slic3r::make_cube(20, 20, 20), Slic3r::make_cube(20, 20, 10) }, { + { "print_sequence", "by object" }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "z_hop", 0 } + }); + + // The first object's height is the peak Z reached before Z drops back to the + // first layer (the object change). With by-object printing only an object + // change returns Z to the bottom. + double first_object_peak_z = 0.0; + double running_peak = 0.0; + GCodeReader reader; + reader.parse_buffer(gcode, [&] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (first_object_peak_z != 0.0 || !line.extruding(self)) return; // ignore travels (e.g. start-gcode Z lift) + if (running_peak > 1.0 && self.z() < 1.0) + first_object_peak_z = running_peak; + else + running_peak = std::max(running_peak, static_cast(self.z())); + }); + + REQUIRE_THAT(first_object_peak_z, Catch::Matchers::WithinAbs(20.0, 0.3)); +} diff --git a/tests/fff_print/test_printobject.cpp b/tests/fff_print/test_printobject.cpp index 88b88826a3..c569384acb 100644 --- a/tests/fff_print/test_printobject.cpp +++ b/tests/fff_print/test_printobject.cpp @@ -9,14 +9,14 @@ using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("PrintObject: object layer heights", "[PrintObject][.]") { - GIVEN("20mm cube and default initial config, initial layer height of 2mm") { - WHEN("generate_object_layers() is called for 2mm layer heights and nozzle diameter of 3mm") { +SCENARIO("PrintObject: object layer heights", "[PrintObject]") { + GIVEN("A 20mm cube") { + WHEN("sliced with a 2mm layer height and a 3mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 2 }, - { "nozzle_diameter", 3 } + { "initial_layer_print_height", 2 }, + { "layer_height", 2 }, + { "nozzle_diameter", 3 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 10 entries") { @@ -25,65 +25,84 @@ SCENARIO("PrintObject: object layer heights", "[PrintObject][.]") { AND_THEN("Each layer is approximately 2mm above the previous Z") { coordf_t last = 0.0; for (size_t i = 0; i < layers.size(); ++ i) { - REQUIRE((layers[i]->print_z - last) == Catch::Approx(2.0)); + REQUIRE_THAT(layers[i]->print_z - last, Catch::Matchers::WithinAbs(2.0, 1e-4)); last = layers[i]->print_z; } } } - WHEN("generate_object_layers() is called for 10mm layer heights and nozzle diameter of 11mm") { + WHEN("sliced with a 10mm layer height and an 11mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 10 }, - { "nozzle_diameter", 11 } + { "initial_layer_print_height", 2 }, + { "layer_height", 10 }, + { "nozzle_diameter", 11 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 3 entries") { REQUIRE(layers.size() == 3); } AND_THEN("Layer 0 is at 2mm") { - REQUIRE(layers.front()->print_z == Catch::Approx(2.0)); + REQUIRE_THAT(layers.front()->print_z, Catch::Matchers::WithinAbs(2.0, 1e-4)); } AND_THEN("Layer 1 is at 12mm") { - REQUIRE(layers[1]->print_z == Catch::Approx(12.0)); + REQUIRE_THAT(layers[1]->print_z, Catch::Matchers::WithinAbs(12.0, 1e-4)); } } - WHEN("generate_object_layers() is called for 15mm layer heights and nozzle diameter of 16mm") { + WHEN("sliced with a 15mm layer height and a 16mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 15 }, - { "nozzle_diameter", 16 } + { "initial_layer_print_height", 2 }, + { "layer_height", 15 }, + { "nozzle_diameter", 16 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 2 entries") { REQUIRE(layers.size() == 2); } AND_THEN("Layer 0 is at 2mm") { - REQUIRE(layers[0]->print_z == Catch::Approx(2.0)); + REQUIRE_THAT(layers[0]->print_z, Catch::Matchers::WithinAbs(2.0, 1e-4)); } AND_THEN("Layer 1 is at 17mm") { - REQUIRE(layers[1]->print_z == Catch::Approx(17.0)); + REQUIRE_THAT(layers[1]->print_z, Catch::Matchers::WithinAbs(17.0, 1e-4)); } } -#if 0 - WHEN("generate_object_layers() is called for 15mm layer heights and nozzle diameter of 5mm") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 15 }, - { "nozzle_diameter", 5 } - }); - const std::vector &layers = print.objects().front()->layers(); - THEN("The layer height is limited to 5mm.") { - CHECK(layers.size() == 5); - coordf_t last = 2.0; - for (size_t i = 1; i < layers.size(); i++) { - REQUIRE((layers[i]->print_z - last) == Catch::Approx(5.0)); - last = layers[i]->print_z; - } + WHEN("layer height exceeds the nozzle diameter") { + // Orca does not clamp an over-large layer height to the nozzle; it + // rejects the slice during flow computation. Pin that behavior. + THEN("Slicing is rejected") { + Slic3r::Print print; + REQUIRE_THROWS(Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.5 }, + { "nozzle_diameter", 0.4 } + })); + } + } + } +} + +SCENARIO("PrintObject: Perimeter generation", "[PrintObject]") { + GIVEN("20mm cube and default config") { + WHEN("make_perimeters() is called") { + Slic3r::Print print; + Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { { "sparse_infill_density", 0 } }); + const PrintObject &object = *print.objects().front(); + THEN("Every layer in region 0 has 1 island of perimeters") { + for (const Layer *layer : object.layers()) + REQUIRE(layer->regions().front()->perimeters.entities.size() == 1); + } + } + WHEN("wall_loops is set to 3") { + Slic3r::Print print; + Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { + { "sparse_infill_density", 0 }, + { "wall_loops", 3 } + }); + const PrintObject &object = *print.objects().front(); + THEN("Every layer in region 0 has 3 perimeter loops") { + for (const Layer *layer : object.layers()) + REQUIRE(layer->regions().front()->perimeters.items_count() == 3); } } -#endif } } diff --git a/tests/fff_print/test_skirt_brim.cpp b/tests/fff_print/test_skirt_brim.cpp index 88032730c7..7a927fade2 100644 --- a/tests/fff_print/test_skirt_brim.cpp +++ b/tests/fff_print/test_skirt_brim.cpp @@ -3,16 +3,19 @@ #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/Geometry.hpp" +#include "libslic3r/Geometry/ConvexHull.hpp" #include +#include + #include "test_data.hpp" // get access to init_print, etc using namespace Slic3r::Test; using namespace Slic3r; -/// Helper method to find the tool used for the brim (always the first extrusion) -static int get_brim_tool(const std::string &gcode) +/// Helper method to find the tool used for the brim (always the first extrusion). +[[maybe_unused]] static int get_brim_tool(const std::string &gcode) { int brim_tool = -1; int tool = -1; @@ -29,16 +32,16 @@ static int get_brim_tool(const std::string &gcode) return brim_tool; } -TEST_CASE("Skirt height is honored", "[Skirt][.]") { +// [NotWorking]: slice() intermittently throws clipper's "Coordinate outside allowed +// range" in CI (Linux) while passing locally. Disabled pending a root-cause fix in a +// follow-up PR. +TEST_CASE("Skirt height is honored", "[SkirtBrim][NotWorking]") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_deserialize_strict({ - { "skirts", 1 }, - { "skirt_height", 5 }, - { "perimeters", 0 }, - { "support_material_speed", 99 }, - // avoid altering speeds unexpectedly - { "cooling", false }, - { "first_layer_speed", "100%" } + { "skirt_loops", 1 }, + { "skirt_height", 5 }, + { "wall_loops", 0 }, + { "gcode_comments", true } }); std::string gcode; @@ -49,75 +52,39 @@ TEST_CASE("Skirt height is honored", "[Skirt][.]") { gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20, TestMesh::cube_20x20x20}, config); } - std::map layers_with_skirt; - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - GCodeReader parser; - parser.parse_buffer(gcode, [&layers_with_skirt, &support_speed] (Slic3r::GCodeReader &self, const Slic3r::GCodeReader::GCodeLine &line) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - layers_with_skirt[self.z()] = 1; - } - }); - REQUIRE(layers_with_skirt.size() == (size_t)config.opt_int("skirt_height")); + REQUIRE(layers_with_role(gcode, "skirt").size() == (size_t)config.opt_int("skirt_height")); } -SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { +// [NotWorking]: see "Skirt height is honored" above; same CI-only clipper range throw. +SCENARIO("Skirt and brim generation", "[SkirtBrim][NotWorking]") { GIVEN("A default configuration") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_num_extruders(4); config.set_deserialize_strict({ - { "support_material_speed", 99 }, - { "first_layer_height", 0.3 }, - { "gcode_comments", true }, + { "initial_layer_print_height", 0.3 }, + { "gcode_comments", true }, // avoid altering speeds unexpectedly - { "cooling", false }, - { "first_layer_speed", "100%" }, + { "slow_down_for_layer_cooling", false }, + { "initial_layer_speed", "100%" }, // remove noise from top/solid layers - { "top_solid_layers", 0 }, - { "bottom_solid_layers", 1 }, - { "start_gcode", "T[initial_tool]\n" } + { "top_shell_layers", 0 }, + { "bottom_shell_layers", 1 }, + { "machine_start_gcode", "T[initial_tool]\n" } }); WHEN("Brim width is set to 5") { config.set_deserialize_strict({ - { "perimeters", 0 }, - { "skirts", 0 }, - { "brim_width", 5 } + { "wall_loops", 0 }, + { "skirt_loops", 0 }, + { "brim_type", "outer_only" }, + { "brim_width", 5 } }); THEN("Brim is generated") { std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - bool brim_generated = false; - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - Slic3r::GCodeReader parser; - parser.parse_buffer(gcode, [&brim_generated, support_speed] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) { - if (self.z() == Catch::Approx(0.3) || line.new_Z(self) == Catch::Approx(0.3)) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - brim_generated = true; - } - } - }); - REQUIRE(brim_generated); + REQUIRE(! layers_with_role(gcode, "brim").empty()); } } - WHEN("Skirt area is smaller than the brim") { - config.set_deserialize_strict({ - { "skirts", 1 }, - { "brim_width", 10} - }); - THEN("Gcode generates") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); - } - } - - WHEN("Skirt height is 0 and skirts > 0") { - config.set_deserialize_strict({ - { "skirts", 2 }, - { "skirt_height", 0 } - }); - THEN("Gcode generates") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); - } - } #if 0 // This is a real error! One shall print the brim with the external perimeter extruder! @@ -154,10 +121,11 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { WHEN("brim width to 1 with layer_width of 0.5") { config.set_deserialize_strict({ - { "skirts", 0 }, - { "first_layer_extrusion_width", 0.5 }, - { "brim_width", 1 } - }); + { "skirt_loops", 0 }, + { "initial_layer_line_width", 0.5 }, + { "brim_type", "outer_only" }, + { "brim_width", 1 } + }); THEN("2 brim lines") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, config); @@ -203,68 +171,68 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { WHEN("Object is plated with overhang support and a brim") { config.set_deserialize_strict({ - { "layer_height", 0.4 }, - { "first_layer_height", 0.4 }, - { "skirts", 1 }, - { "skirt_distance", 0 }, - { "support_material_speed", 99 }, - { "perimeter_extruder", 1 }, - { "support_material_extruder", 2 }, - { "infill_extruder", 3 }, // ensure that a tool command gets emitted. - { "cooling", false }, // to prevent speeds to be altered - { "first_layer_speed", "100%" }, // to prevent speeds to be altered - { "start_gcode", "T[initial_tool]\n" } + { "layer_height", 0.4 }, + { "initial_layer_print_height", 0.4 }, + { "skirt_loops", 1 }, + { "skirt_distance", 0 }, + { "enable_support", 1 }, + { "brim_type", "outer_only" }, + { "brim_width", 5 } }); - THEN("overhang generates?") { - //FIXME does it make sense? - REQUIRE(! Slic3r::Test::slice({TestMesh::overhang}, config).empty()); + THEN("Support and brim are both emitted") { + std::string gcode = Slic3r::Test::slice({TestMesh::overhang}, config); + REQUIRE(! layers_with_role(gcode, "support").empty()); + REQUIRE(! layers_with_role(gcode, "brim").empty()); } - // config.set("support_material", true); // to prevent speeds to be altered - -#if 0 - // This test is not finished. - THEN("skirt length is large enough to contain object with support") { - CHECK(config.opt_bool("support_material")); // test is not valid if support material is off - std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - double skirt_length = 0.0; - Points extrusion_points; - int tool = -1; - GCodeReader parser; - parser.parse_buffer(gcode, [config, &extrusion_points, &tool, &skirt_length, support_speed] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) { - // std::cerr << line.cmd() << "\n"; - if (boost::starts_with(line.cmd(), "T")) { - tool = atoi(line.cmd().data() + 1); - } else if (self.z() == Catch::Approx(config.opt("first_layer_height")->value)) { - // on first layer - if (line.extruding(self) && line.dist_XY(self) > 0) { - float speed = ( self.f() > 0 ? self.f() : line.new_F(self)); - // std::cerr << "Tool " << tool << "\n"; - if (speed == Catch::Approx(support_speed) && tool == config.opt_int("perimeter_extruder") - 1) { - // Skirt uses first material extruder, support material speed. - skirt_length += line.dist_XY(self); - } else - extrusion_points.push_back(Slic3r::Point::new_scale(line.new_X(self), line.new_Y(self))); - } - } - if (self.z() == Catch::Approx(0.3) || line.new_Z(self) == Catch::Approx(0.3)) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - } - } - }); - Slic3r::Polygon convex_hull = Slic3r::Geometry::convex_hull(extrusion_points); - double hull_perimeter = unscale(convex_hull.split_at_first_point().length()); - REQUIRE(skirt_length > hull_perimeter); - } -#endif - + } + WHEN("an object with support is surrounded by a skirt") { + config.set_deserialize_strict({ + { "enable_support", 1 }, + { "skirt_loops", 1 }, + { "skirt_distance", 2 }, + { "brim_type", "no_brim" }, + { "z_hop", 0 } + }); + THEN("the skirt is long enough to enclose the object and its support") { + std::string gcode = Slic3r::Test::slice({TestMesh::overhang}, config); + const double first_layer_z = config.opt_float("initial_layer_print_height"); + + // On the first layer, accumulate the skirt loop length and collect the + // object + support extrusion points; the skirt must enclose them. + double skirt_length = 0.0; + Points footprint; + GCodeReader parser; + parser.parse_buffer(gcode, [&] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (! line.extruding(self) || line.dist_XY(self) <= 0 || std::abs(self.z() - first_layer_z) > 0.01) + return; + if (line.comment().find("skirt") != std::string_view::npos) + skirt_length += line.dist_XY(self); + else + footprint.push_back(Point::new_scale(line.new_X(self), line.new_Y(self))); + }); + + const double hull_perimeter = unscale(Geometry::convex_hull(footprint).split_at_first_point().length()); + REQUIRE(hull_perimeter > 0.0); // guard against an empty footprint passing trivially + REQUIRE(skirt_length > hull_perimeter); + } } WHEN("Large minimum skirt length is used.") { - config.set("min_skirt_length", 20); - THEN("Gcode generation doesn't crash") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); + // One skirt loop around a 20mm cube is ~88mm, so 500mm forces extra loops. + config.set_deserialize_strict({ + { "skirt_loops", 1 }, + { "min_skirt_length", 500 } + }); + THEN("The skirt is extended to at least the minimum length") { + std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); + double skirt_length = 0.0; + GCodeReader parser; + parser.parse_buffer(gcode, [&skirt_length] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (line.extruding(self) && line.comment().find("skirt") != std::string_view::npos) + skirt_length += line.dist_XY(self); + }); + REQUIRE(skirt_length >= 500.0); } } } diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index d61f97ca81..d1fc9d66e4 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -8,24 +8,41 @@ using namespace Slic3r::Test; using namespace Slic3r; -TEST_CASE("SupportMaterial: Three raft layers created", "[SupportMaterial][.]") +TEST_CASE("SupportMaterial: Three raft layers created", "[SupportMaterial]") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ TestMesh::cube_20x20x20 }, print, { - { "support_material", 1 }, - { "raft_layers", 3 } + { "enable_support", 1 }, + { "raft_layers", 3 } }); REQUIRE(print.objects().front()->support_layers().size() == 3); } -SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMaterial][.]") +TEST_CASE("SupportMaterial: enforced support layers are generated", "[SupportMaterial]") +{ + // enforce_support_layers forces support on the first N layers even with support off. + Slic3r::Print baseline; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, baseline, { + { "enable_support", 0 }, + { "enforce_support_layers", 0 } + }); + REQUIRE(baseline.objects().front()->support_layers().empty()); + + Slic3r::Print enforced; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, enforced, { + { "enable_support", 0 }, + { "enforce_support_layers", 100 } + }); + REQUIRE(enforced.objects().front()->support_layers().size() > 0); +} + +SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMaterial]") { // Box h = 20mm, hole bottom at 5mm, hole height 10mm (top edge at 15mm). TriangleMesh mesh = Slic3r::Test::mesh(Slic3r::Test::TestMesh::cube_with_hole); mesh.rotate_x(float(M_PI / 2)); -// mesh.write_binary("d:\\temp\\cube_with_hole.stl"); - auto check = [](Slic3r::Print &print, bool &first_support_layer_height_ok, bool &layer_height_minimum_ok, bool &layer_height_maximum_ok, bool &top_spacing_ok) + auto check = [](Slic3r::Print &print, bool &first_support_layer_height_ok, bool &layer_height_minimum_ok, bool &layer_height_maximum_ok) { ConstSupportLayerPtrsAdaptor support_layers = print.objects().front()->support_layers(); @@ -43,196 +60,36 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate if (support_layers[i]->print_z - support_layers[i - 1]->print_z > max_layer_height + EPSILON) layer_height_maximum_ok = false; } - -#if 0 - double expected_top_spacing = print.default_object_config().layer_height + print.config().nozzle_diameter.get_at(0); - bool wrong_top_spacing = 0; - std::vector top_z { 1.1 }; - for (coordf_t top_z_el : top_z) { - // find layer index of this top surface. - size_t layer_id = -1; - for (size_t i = 0; i < support_z.size(); ++ i) { - if (abs(support_z[i] - top_z_el) < EPSILON) { - layer_id = i; - i = static_cast(support_z.size()); - } - } - - // check that first support layer above this top surface (or the next one) is spaced with nozzle diameter - if (abs(support_z[layer_id + 1] - support_z[layer_id] - expected_top_spacing) > EPSILON && - abs(support_z[layer_id + 2] - support_z[layer_id] - expected_top_spacing) > EPSILON) { - wrong_top_spacing = 1; - } - } - d = ! wrong_top_spacing; -#else - top_spacing_ok = true; -#endif }; GIVEN("A print object having one modelObject") { - WHEN("First layer height = 0.4") { + WHEN("Layer height = 0.2 and first layer height = 0.4") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.4 }, - { "dont_support_bridges", false }, + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.4 }, + { "dont_support_bridges", false }, }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } + bool first_layer_ok, layer_min_ok, layer_max_ok; + check(print, first_layer_ok, layer_min_ok, layer_max_ok); + THEN("First layer height is honored") { REQUIRE(first_layer_ok == true); } + THEN("No null or negative support layers") { REQUIRE(layer_min_ok == true); } + THEN("No layers thicker than nozzle diameter") { REQUIRE(layer_max_ok == true); } } - WHEN("Layer height = 0.2 and, first layer height = 0.3") { + WHEN("Layer height = 0.2 and first layer height = 0.3") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.3 }, - { "dont_support_bridges", false }, + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.3 }, + { "dont_support_bridges", false }, }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } - } - WHEN("Layer height = nozzle_diameter[0]") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.3 }, - { "dont_support_bridges", false }, - }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } + bool first_layer_ok, layer_min_ok, layer_max_ok; + check(print, first_layer_ok, layer_min_ok, layer_max_ok); + THEN("First layer height is honored") { REQUIRE(first_layer_ok == true); } + THEN("No null or negative support layers") { REQUIRE(layer_min_ok == true); } + THEN("No layers thicker than nozzle diameter") { REQUIRE(layer_max_ok == true); } } } } - -#if 0 -// Test 8. -TEST_CASE("SupportMaterial: forced support is generated", "[SupportMaterial]") -{ - // Create a mesh & modelObject. - TriangleMesh mesh = TriangleMesh::make_cube(20, 20, 20); - - Model model = Model(); - ModelObject *object = model.add_object(); - object->add_volume(mesh); - model.add_default_instances(); - model.align_instances_to_origin(); - - Print print = Print(); - - std::vector contact_z = {1.9}; - std::vector top_z = {1.1}; - print.default_object_config.support_material_enforce_layers = 100; - print.default_object_config.support_material = 0; - print.default_object_config.layer_height = 0.2; - print.default_object_config.set_deserialize("first_layer_height", "0.3"); - - print.add_model_object(model.objects[0]); - print.objects.front()->_slice(); - - SupportMaterial *support = print.objects.front()->_support_material(); - auto support_z = support->support_layers_z(contact_z, top_z, print.default_object_config.layer_height); - - bool check = true; - for (size_t i = 1; i < support_z.size(); i++) { - if (support_z[i] - support_z[i - 1] <= 0) - check = false; - } - - REQUIRE(check == true); -} - -// TODO -bool test_6_checks(Print& print) -{ - bool has_bridge_speed = true; - - // Pre-Processing. - PrintObject* print_object = print.objects.front(); - print_object->infill(); - SupportMaterial* support_material = print.objects.front()->_support_material(); - support_material->generate(print_object); - // TODO but not needed in test 6 (make brims and make skirts). - - // Exporting gcode. - // TODO validation found in Simple.pm - - - return has_bridge_speed; -} - -// Test 6. -SCENARIO("SupportMaterial: Checking bridge speed", "[SupportMaterial]") -{ - GIVEN("Print object") { - // Create a mesh & modelObject. - TriangleMesh mesh = TriangleMesh::make_cube(20, 20, 20); - - Model model = Model(); - ModelObject *object = model.add_object(); - object->add_volume(mesh); - model.add_default_instances(); - model.align_instances_to_origin(); - - Print print = Print(); - print.config.brim_width = 0; - print.config.skirts = 0; - print.config.skirts = 0; - print.default_object_config.support_material = 1; - print.default_region_config.top_solid_layers = 0; // so that we don't have the internal bridge over infill. - print.default_region_config.bridge_speed = 99; - print.config.cooling = 0; - print.config.set_deserialize("first_layer_speed", "100%"); - - WHEN("support_material_contact_distance = 0.2") { - print.default_object_config.support_material_contact_distance = 0.2; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is used. - } - - WHEN("support_material_contact_distance = 0") { - print.default_object_config.support_material_contact_distance = 0; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is not used. - } - - WHEN("support_material_contact_distance = 0.2 & raft_layers = 5") { - print.default_object_config.support_material_contact_distance = 0.2; - print.default_object_config.raft_layers = 5; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is used. - } - - WHEN("support_material_contact_distance = 0 & raft_layers = 5") { - print.default_object_config.support_material_contact_distance = 0; - print.default_object_config.raft_layers = 5; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - - REQUIRE(check == true); // bridge speed is not used. - } - } -} - -#endif diff --git a/tests/libnest2d/CMakeLists.txt b/tests/libnest2d/CMakeLists.txt index 6ead7f11a0..2c36b9cdcb 100644 --- a/tests/libnest2d/CMakeLists.txt +++ b/tests/libnest2d/CMakeLists.txt @@ -10,4 +10,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 1824df8dc0..9c451e0456 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -38,4 +38,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/sla_print/CMakeLists.txt b/tests/sla_print/CMakeLists.txt index bb53f5bee2..b348e21bdc 100644 --- a/tests/sla_print/CMakeLists.txt +++ b/tests/sla_print/CMakeLists.txt @@ -9,4 +9,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/slic3rutils/CMakeLists.txt b/tests/slic3rutils/CMakeLists.txt index e734fcf6c6..30f58a9562 100644 --- a/tests/slic3rutils/CMakeLists.txt +++ b/tests/slic3rutils/CMakeLists.txt @@ -12,4 +12,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/slic3rutils/slic3rutils_tests_main.cpp b/tests/slic3rutils/slic3rutils_tests_main.cpp index cea6934e8e..e29b518f3d 100644 --- a/tests/slic3rutils/slic3rutils_tests_main.cpp +++ b/tests/slic3rutils/slic3rutils_tests_main.cpp @@ -53,7 +53,8 @@ TEST_CASE("Check SSL certificates paths", "[Http][NotWorking]") { REQUIRE(status == 200); } -TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCloudServiceAgent]") +// [NotWorking]: OrcaCloudServiceAgent ctor segfaults headless (wxStandardPaths::Get() -> null wxTheApp). +TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCloudServiceAgent][NotWorking]") { CHECK(resolved_display_name(flat_session_json({ {"username", "orca_username"}, @@ -81,7 +82,8 @@ TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCl })) == "orca_username"); } -TEST_CASE("Orca cloud nested session resolves display name consistently", "[OrcaCloudServiceAgent]") +// [NotWorking]: see flat-session test above. +TEST_CASE("Orca cloud nested session resolves display name consistently", "[OrcaCloudServiceAgent][NotWorking]") { CHECK(resolved_display_name(nested_session_json({ {"username", "orca_username"}, diff --git a/tests/test_utils.hpp b/tests/test_utils.hpp index 3cdd717643..7fe55c5333 100644 --- a/tests/test_utils.hpp +++ b/tests/test_utils.hpp @@ -4,6 +4,8 @@ #include #include +#include + #if defined(WIN32) || defined(_WIN32) #define PATH_SEPARATOR R"(\)" #else @@ -20,4 +22,26 @@ inline Slic3r::TriangleMesh load_model(const std::string &obj_filename) return mesh; } +// RAII holder for a unique temporary file path, removed when the guard goes out +// of scope so a failing assertion never leaks it. Uses the system temp dir with +// a unique name (parallel-safe, cross-platform). The file itself is created by +// whoever writes to path()/string(); this only reserves the name and cleans up. +class ScopedTemporaryFile +{ +public: + explicit ScopedTemporaryFile(const std::string &extension = ".tmp") + : m_path(boost::filesystem::temp_directory_path() + / boost::filesystem::unique_path("orca-%%%%-%%%%-%%%%" + extension)) + {} + ~ScopedTemporaryFile() { boost::system::error_code ec; boost::filesystem::remove(m_path, ec); } + ScopedTemporaryFile(const ScopedTemporaryFile &) = delete; + ScopedTemporaryFile &operator=(const ScopedTemporaryFile &) = delete; + + const boost::filesystem::path &path() const { return m_path; } + std::string string() const { return m_path.string(); } + +private: + boost::filesystem::path m_path; +}; + #endif // SLIC3R_TEST_UTILS