mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-19 06:53:02 +00:00
Update translations. Code dedup and cleanup
This commit is contained in:
@@ -49,6 +49,12 @@ jobs:
|
||||
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
|
||||
useLocalCache: true
|
||||
useCloudCache: true
|
||||
- name: Run web dialog JS tests
|
||||
timeout-minutes: 5
|
||||
shell: bash
|
||||
run: |
|
||||
node resources/web/js/fuzzy-search.test.js
|
||||
node resources/web/dialog/SpeedDial/speeddial.test.js
|
||||
- name: Unpackage and Run Unit Tests
|
||||
timeout-minutes: 20
|
||||
shell: bash
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -2293,13 +2293,6 @@ msgstr ""
|
||||
msgid "%s has been removed."
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr ""
|
||||
@@ -2327,6 +2320,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr ""
|
||||
|
||||
@@ -4322,6 +4328,12 @@ msgid ""
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr ""
|
||||
@@ -6129,6 +6141,9 @@ msgstr ""
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
@@ -8292,7 +8307,6 @@ msgstr ""
|
||||
msgid "Language selection"
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr ""
|
||||
|
||||
@@ -8386,6 +8400,9 @@ msgstr ""
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
|
||||
@@ -8568,6 +8585,12 @@ msgstr ""
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr ""
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -9232,6 +9255,9 @@ msgstr ""
|
||||
msgid "Detach from parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique preset"
|
||||
msgstr ""
|
||||
|
||||
@@ -10983,6 +11009,16 @@ msgstr ""
|
||||
msgid "Switch table page"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr ""
|
||||
|
||||
@@ -11138,13 +11174,6 @@ msgstr ""
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open actions speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plater"
|
||||
msgstr ""
|
||||
|
||||
@@ -11403,7 +11432,7 @@ msgstr ""
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
@@ -11412,6 +11441,12 @@ msgstr ""
|
||||
msgid " updated to "
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr ""
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr ""
|
||||
|
||||
@@ -12754,6 +12789,9 @@ msgstr ""
|
||||
msgid "Concentric"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr ""
|
||||
|
||||
@@ -12823,7 +12861,7 @@ msgid "Top surface fill order"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
@@ -12832,7 +12870,7 @@ msgid "Bottom surface fill order"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2025-03-15 10:55+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -2522,13 +2522,6 @@ msgstr "Hi ha una actualització disponible. Obriu el quadre de diàleg del paqu
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s s'ha eliminat."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Seleccioneu l'idioma"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2566,6 +2559,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "No s'ha pogut obrir el quadre de diàleg de Connectors (error desconegut)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal de connectors"
|
||||
@@ -4687,6 +4693,12 @@ msgstr ""
|
||||
"Error en copiar el codi-G temporal al codi-G de sortida. Potser la targeta SD està bloquejada contra escriptura?\n"
|
||||
"Missatge d'error: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Error en copiar el codi-G temporal al codi-G de sortida. Hi pot haver un problema amb el dispositiu de destinació, intenteu exportar novament o utilitzeu un dispositiu diferent. El codi-G de sortida malmès és a %1%.tmp."
|
||||
@@ -6599,6 +6611,9 @@ msgstr "Mostrar el contorn al voltant de l'objecte seleccionat a l'escena 3D"
|
||||
msgid "Preferences"
|
||||
msgstr "Preferències"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8922,7 +8937,6 @@ msgstr "Voleu continuar?"
|
||||
msgid "Language selection"
|
||||
msgstr "Selecció d'idiomes"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Àsia-Pacífic"
|
||||
|
||||
@@ -9028,6 +9042,9 @@ msgstr "Ruta de la Instància Actual: "
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Mètric"
|
||||
|
||||
@@ -9236,6 +9253,12 @@ msgstr "Gestió multidispositiu"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Amb aquesta opció habilitada, podeu enviar una tasca a diversos dispositius alhora i gestionar múltiples dispositius."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Finestra emergent per seleccionar el mode d'agrupació de filaments"
|
||||
|
||||
@@ -9989,6 +10012,9 @@ msgstr "Copia en aquest perfil tots els valors heretats del perfil pare i elimin
|
||||
msgid "Detach from parent"
|
||||
msgstr "Desvincula del pare"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Perfil únic"
|
||||
@@ -11912,6 +11938,17 @@ msgstr "Mostrar/Amagar quadre de diàleg Configuració de Dispositius 3Dconnexio
|
||||
msgid "Switch table page"
|
||||
msgstr "Canviar de pàgina de taula"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espai"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Mostrar la llista de dreceres de teclat"
|
||||
|
||||
@@ -12077,15 +12114,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Canviar entre Preparar/Previsualitzar"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espai"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Obrir el marcatge ràpid d'accions"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plataforma"
|
||||
|
||||
@@ -12359,8 +12387,8 @@ msgstr "Reparació cancel·lada"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "La còpia del fitxer %1% a %2% ha fallat: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Cal comprovar els canvis no desats abans de les actualitzacions de configuració."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Paquet de configuració: "
|
||||
@@ -12368,6 +12396,12 @@ msgstr "Paquet de configuració: "
|
||||
msgid " updated to "
|
||||
msgstr " actualitzat a "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Cal comprovar els canvis no desats abans de les actualitzacions de configuració."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Obre el fitxer de Codi-G:"
|
||||
|
||||
@@ -13991,6 +14025,9 @@ msgstr "Alineat Rectilini"
|
||||
msgid "Concentric"
|
||||
msgstr "Concèntric"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Corba de Hilbert"
|
||||
|
||||
@@ -14080,29 +14117,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Ordre d'emplenament de la superfície superior"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direcció en què s'omplen les superfícies superiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n"
|
||||
"Cap a fora comença al centre de la superfície, de manera que l'excés de material es desplaça cap a la vora, on és menys visible. Cap a dins comença a la vora i acaba amb les corbes tancades del centre.\n"
|
||||
"Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Ordre d'emplenament de la superfície inferior"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direcció en què s'omplen les superfícies inferiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n"
|
||||
"Cap a dins comença cada superfície amb les corbes exteriors més amples, cosa que millora l'adherència de la capa inicial en plaques on les corbes tancades del centre poden no adherir-se. Cap a fora comença al centre i desplaça l'excés de material cap a la vora.\n"
|
||||
"Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Patró de farciment sòlid intern"
|
||||
@@ -22204,6 +22233,33 @@ msgstr ""
|
||||
"Evitar la deformació( warping )\n"
|
||||
"Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Seleccioneu l'idioma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Obrir el marcatge ràpid d'accions"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direcció en què s'omplen les superfícies superiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n"
|
||||
#~ "Cap a fora comença al centre de la superfície, de manera que l'excés de material es desplaça cap a la vora, on és menys visible. Cap a dins comença a la vora i acaba amb les corbes tancades del centre.\n"
|
||||
#~ "Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direcció en què s'omplen les superfícies inferiors quan s'utilitza un patró centrat (Concèntric, Acords d'Arquimedes, Octograma en Espiral).\n"
|
||||
#~ "Cap a dins comença cada superfície amb les corbes exteriors més amples, cosa que millora l'adherència de la capa inicial en plaques on les corbes tancades del centre poden no adherir-se. Cap a fora comença al centre i desplaça l'excés de material cap a la vora.\n"
|
||||
#~ "Per defecte utilitza l'ordenació pel camí més curt, que pot anar en qualsevol direcció."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "La visualització en directe nativa de Wayland requereix el sink de vídeo GTK de GStreamer. Instal·leu el connector gtksink per a GStreamer i reinicieu l'OrcaSlicer."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Jakub Hencl\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2482,13 +2482,6 @@ msgstr "Je k dispozici aktualizace. Otevřete dialog balíčku předvoleb a prov
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s bylo odstraněno."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Zvolte jazyk"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Jazyk"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2526,6 +2519,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Nepodařilo se otevřít dialog Pluginy (neznámá chyba)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminál pluginu"
|
||||
@@ -4647,6 +4653,12 @@ msgstr ""
|
||||
"Kopírování dočasného G-kódu do výstupního G-kódu selhalo. Možná je SD karta uzamčená pro zápis?\n"
|
||||
"Chybová zpráva: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Kopírování dočasného G-kódu do výstupního G-kódu selhalo. Může být problém s cílovým zařízením, zkuste prosím exportovat znovu nebo použijte jiné zařízení. Poškozený výstupní G-kód je na %1%.tmp."
|
||||
@@ -6564,6 +6576,9 @@ msgstr "Zobrazit obrys kolem vybraného objektu ve 3D scéně."
|
||||
msgid "Preferences"
|
||||
msgstr "Předvolby"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8880,7 +8895,6 @@ msgstr "Chcete pokračovat?"
|
||||
msgid "Language selection"
|
||||
msgstr "Výběr jazyka"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asie-Pacifik"
|
||||
|
||||
@@ -8986,6 +9000,9 @@ msgstr "Cesta k aktuální instanci: "
|
||||
msgid "General"
|
||||
msgstr "Obecné"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Jazyk"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrika"
|
||||
|
||||
@@ -9190,6 +9207,12 @@ msgstr "Správa více zařízení"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Pokud je tato volba povolena, můžete odeslat úlohu na více zařízení současně a spravovat více zařízení."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Zobrazit dialog pro výběr režimu seskupení filamentů"
|
||||
|
||||
@@ -9938,6 +9961,9 @@ msgstr "Zkopíruje do této předvolby všechny hodnoty zděděné z nadřazené
|
||||
msgid "Detach from parent"
|
||||
msgstr "Oddělit od nadřazeného"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Samostatná předvolba"
|
||||
@@ -11899,6 +11925,17 @@ msgstr "Zobrazit/Skrýt dialog nastavení zařízení 3Dconnexion"
|
||||
msgid "Switch table page"
|
||||
msgstr "Přepnout stránku tabulky"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Mezerník"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Zobrazit seznam klávesových zkratek"
|
||||
|
||||
@@ -12061,15 +12098,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Přepnout mezi Přípravou/Náhledem"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Mezerník"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Otevřít rychlou nabídku akcí"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Deska"
|
||||
|
||||
@@ -12343,8 +12371,8 @@ msgstr "Oprava zrušena"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Kopírování souboru %1% do %2% selhalo: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Nejprve je třeba zkontrolovat neuložené změny před aktualizací konfigurace."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Balíček konfigurace: "
|
||||
@@ -12352,6 +12380,12 @@ msgstr "Balíček konfigurace: "
|
||||
msgid " updated to "
|
||||
msgstr " aktualizováno na "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Nejprve je třeba zkontrolovat neuložené změny před aktualizací konfigurace."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Otevřít G-code soubor:"
|
||||
|
||||
@@ -13956,6 +13990,9 @@ msgstr "Zarovnaná pravoúhlá"
|
||||
msgid "Concentric"
|
||||
msgstr "Koncentrický"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbertova křivka"
|
||||
|
||||
@@ -14045,29 +14082,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Pořadí vyplňování horního povrchu"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Směr, ve kterém jsou horní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n"
|
||||
"Ven začíná ve středu povrchu, takže je přebytečný materiál vytlačen k okraji, kde je nejméně viditelný. Dovnitř začíná u okraje a končí těsnými oblouky ve středu.\n"
|
||||
"Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Pořadí vyplňování spodního povrchu"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Směr, ve kterém jsou spodní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n"
|
||||
"Dovnitř začíná každý povrch širšími vnějšími oblouky, což zlepšuje přilnavost první vrstvy na podložkách, kde se těsné oblouky ve středu nemusí přichytit. Ven začíná ve středu a přebytečný materiál vytlačuje k okraji.\n"
|
||||
"Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Vzor vnitřní plné výplně"
|
||||
@@ -22185,6 +22214,33 @@ msgstr ""
|
||||
"Zamezte kroucení\n"
|
||||
"Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Zvolte jazyk"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Otevřít rychlou nabídku akcí"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Směr, ve kterém jsou horní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n"
|
||||
#~ "Ven začíná ve středu povrchu, takže je přebytečný materiál vytlačen k okraji, kde je nejméně viditelný. Dovnitř začíná u okraje a končí těsnými oblouky ve středu.\n"
|
||||
#~ "Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Směr, ve kterém jsou spodní povrchy vyplňovány při použití vzoru vycházejícího ze středu (Koncentrický, Archimédovy akordy, Oktagramová spirála).\n"
|
||||
#~ "Dovnitř začíná každý povrch širšími vnějšími oblouky, což zlepšuje přilnavost první vrstvy na podložkách, kde se těsné oblouky ve středu nemusí přichytit. Ven začíná ve středu a přebytečný materiál vytlačuje k okraji.\n"
|
||||
#~ "Výchozí používá řazení podle nejkratší dráhy, které může probíhat v obou směrech."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Nativní živý náhled ve Waylandu vyžaduje video sink GStreamer GTK. Nainstalujte prosím plugin gtksink pro GStreamer a poté restartujte OrcaSlicer."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2430,13 +2430,6 @@ msgstr "Es ist ein Update verfügbar. Öffnen Sie den Profilbündel-Dialog, um e
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s wurde entfernt."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Sprache wählen"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2474,6 +2467,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Öffnen des Plugins-Dialogs fehlgeschlagen (unbekannter Fehler)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Plugin-Terminal"
|
||||
@@ -4554,6 +4560,12 @@ msgstr ""
|
||||
"Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. Ist die SD-Karte schreibgeschützt?\n"
|
||||
"Fehlermeldung: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Das Kopieren des temporären G-Codes in den Ausgabe-G-Code ist fehlgeschlagen. Es könnte ein Problem mit dem Zielgerät geben. Versuchen Sie es erneut oder verwenden Sie ein anderes Gerät. Der beschädigte Ausgabe-G-Code befindet sich in %1%.tmp."
|
||||
@@ -6452,6 +6464,9 @@ msgstr "Kontur um das ausgewählte Objekt in der 3D-Szene anzeigen."
|
||||
msgid "Preferences"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8752,7 +8767,6 @@ msgstr "Möchten Sie fortfahren?"
|
||||
msgid "Language selection"
|
||||
msgstr "Sprachauswahl"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asien-Pazifik"
|
||||
|
||||
@@ -8857,6 +8871,9 @@ msgstr "Aktueller Instanzpfad: "
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrisch"
|
||||
|
||||
@@ -9061,6 +9078,12 @@ msgstr "Multi-Geräte-Verwaltung"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig an mehrere Geräte senden und mehrere Geräte verwalten."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Popup zum Auswählen des Filament-Gruppierungsmodus"
|
||||
|
||||
@@ -9771,6 +9794,9 @@ msgstr "Kopiert alle vom übergeordneten Profil geerbten Werte in dieses Profil
|
||||
msgid "Detach from parent"
|
||||
msgstr "Vom übergeordneten Element trennen"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Eigenständiges Profil"
|
||||
@@ -11655,6 +11681,17 @@ msgstr "Dialogfeld für 3Dconnexion Geräteeinstellungen anzeigen/ausblenden"
|
||||
msgid "Switch table page"
|
||||
msgstr "Seitenwechsel"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Leertaste"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Liste der Tastaturkürzel anzeigen"
|
||||
|
||||
@@ -11815,15 +11852,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Zwischen Vorbereiten/ Vorschau wechseln"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Leertaste"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Aktions-Schnellwahl öffnen"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Druckplatte"
|
||||
|
||||
@@ -12090,8 +12118,8 @@ msgstr "Reparatur abgebrochen"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Kopieren der Datei %1% nach %2% fehlgeschlagen: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Vor der Aktualisierung der Konfiguration müssen die nicht gespeicherten Änderungen überprüft werden."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Konfigurationspaket:"
|
||||
@@ -12099,6 +12127,12 @@ msgstr "Konfigurationspaket:"
|
||||
msgid " updated to "
|
||||
msgstr " aktualisiert auf "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Vor der Aktualisierung der Konfiguration müssen die nicht gespeicherten Änderungen überprüft werden."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Öffne G-Code-Datei:"
|
||||
|
||||
@@ -13665,6 +13699,9 @@ msgstr "Geradlinig ausgerichtet"
|
||||
msgid "Concentric"
|
||||
msgstr "Konzentrisch"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbert-Kurve"
|
||||
|
||||
@@ -13754,29 +13791,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Füllreihenfolge der oberen Oberfläche"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Richtung, in der obere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n"
|
||||
"Nach außen beginnt in der Mitte der Oberfläche, sodass überschüssiges Material zum Rand geschoben wird, wo es am wenigsten sichtbar ist. Nach innen beginnt am Rand und endet mit den engen Kurven in der Mitte.\n"
|
||||
"Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Füllreihenfolge der unteren Oberfläche"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Richtung, in der untere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n"
|
||||
"Nach innen beginnt jede Oberfläche mit den breiteren äußeren Kurven, was die Haftung der ersten Schicht auf Druckbetten verbessert, auf denen die engen Kurven in der Mitte möglicherweise nicht haften. Nach außen beginnt in der Mitte und schiebt überschüssiges Material zum Rand.\n"
|
||||
"Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Muster für das interne feste Füllmuster"
|
||||
@@ -21605,6 +21634,33 @@ msgstr ""
|
||||
"Verwerfungen vermeiden\n"
|
||||
"Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Sprache wählen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Aktions-Schnellwahl öffnen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Richtung, in der obere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n"
|
||||
#~ "Nach außen beginnt in der Mitte der Oberfläche, sodass überschüssiges Material zum Rand geschoben wird, wo es am wenigsten sichtbar ist. Nach innen beginnt am Rand und endet mit den engen Kurven in der Mitte.\n"
|
||||
#~ "Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Richtung, in der untere Oberflächen gefüllt werden, wenn ein mittenbasiertes Muster (Konzentrisch, Archimedische Akkorde, Oktagramm Spirale) verwendet wird.\n"
|
||||
#~ "Nach innen beginnt jede Oberfläche mit den breiteren äußeren Kurven, was die Haftung der ersten Schicht auf Druckbetten verbessert, auf denen die engen Kurven in der Mitte möglicherweise nicht haften. Nach außen beginnt in der Mitte und schiebt überschüssiges Material zum Rand.\n"
|
||||
#~ "Standard verwendet die Sortierung nach kürzestem Pfad, die in beide Richtungen verlaufen kann."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
|
||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2289,13 +2289,6 @@ msgstr ""
|
||||
msgid "%s has been removed."
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr ""
|
||||
@@ -2323,6 +2316,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr ""
|
||||
|
||||
@@ -4318,6 +4324,12 @@ msgid ""
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr ""
|
||||
@@ -6125,6 +6137,9 @@ msgstr ""
|
||||
msgid "Preferences"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
@@ -8288,7 +8303,6 @@ msgstr ""
|
||||
msgid "Language selection"
|
||||
msgstr ""
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr ""
|
||||
|
||||
@@ -8382,6 +8396,9 @@ msgstr ""
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Metric"
|
||||
msgstr ""
|
||||
|
||||
@@ -8564,6 +8581,12 @@ msgstr ""
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr ""
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr ""
|
||||
|
||||
@@ -9228,6 +9251,9 @@ msgstr ""
|
||||
msgid "Detach from parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique preset"
|
||||
msgstr ""
|
||||
|
||||
@@ -10979,6 +11005,16 @@ msgstr ""
|
||||
msgid "Switch table page"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr ""
|
||||
|
||||
@@ -11134,13 +11170,6 @@ msgstr ""
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Open actions speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plater"
|
||||
msgstr ""
|
||||
|
||||
@@ -11399,7 +11428,7 @@ msgstr ""
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
@@ -11408,6 +11437,12 @@ msgstr ""
|
||||
msgid " updated to "
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr ""
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr ""
|
||||
|
||||
@@ -12750,6 +12785,9 @@ msgstr ""
|
||||
msgid "Concentric"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr ""
|
||||
|
||||
@@ -12819,7 +12857,7 @@ msgid "Top surface fill order"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
@@ -12828,7 +12866,7 @@ msgid "Bottom surface fill order"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Ian A. Bassi <>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2356,13 +2356,6 @@ msgstr "Hay una actualización disponible. Abra el cuadro de diálogo del paquet
|
||||
msgid "%s has been removed."
|
||||
msgstr "Se ha eliminado %s."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Seleccionar el idioma"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "No se pudo cambiar Orca Slicer al idioma %s."
|
||||
@@ -2394,6 +2387,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "No se pudo abrir el cuadro de diálogo de plugins (error desconocido)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal de plugins"
|
||||
|
||||
@@ -4424,6 +4430,12 @@ msgstr ""
|
||||
"Error al copiar el G-Code temporal en el G-Code de salida. ¿Quizás la tarjeta SD está protegida contra escritura?\n"
|
||||
"Mensaje de error: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "La copia del G-Code temporal al G-Code de salida ha fallado. Puede haber un problema con el dispositivo de destino, intenta exportar nuevamente o usa un dispositivo diferente. El G-Code de salida dañado está en %1%.tmp."
|
||||
@@ -6307,6 +6319,9 @@ msgstr "Mostrar el contorno alrededor del objeto seleccionado en la escena 3D."
|
||||
msgid "Preferences"
|
||||
msgstr "Preferencias"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
msgstr "Edición"
|
||||
@@ -8527,7 +8542,6 @@ msgstr "¿Quieres continuar?"
|
||||
msgid "Language selection"
|
||||
msgstr "Selección de idiomas"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asia-Pacífico"
|
||||
|
||||
@@ -8632,6 +8646,9 @@ msgstr "Ruta de Instancia Actual: "
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Métrico"
|
||||
|
||||
@@ -8828,6 +8845,12 @@ msgstr "Gestión multidispositivo"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Con esta opción activada, puede enviar una tarea a varios dispositivos al mismo tiempo y gestionar varios dispositivos."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Ventana emergente para seleccionar el modo de agrupación de filamentos"
|
||||
|
||||
@@ -9528,6 +9551,9 @@ msgstr "Copia en este perfil todos los valores heredados del perfil padre y elim
|
||||
msgid "Detach from parent"
|
||||
msgstr "Separar del elemento padre"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Perfil único"
|
||||
@@ -11357,6 +11383,16 @@ msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion"
|
||||
msgid "Switch table page"
|
||||
msgstr "Cambiar de página de tabla"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espacio"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Muestra lista de atajos de teclado"
|
||||
|
||||
@@ -11512,13 +11548,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Cambiar entre Preparar/Previsualizar"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espacio"
|
||||
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Abrir el menú rápido de acciones"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Cama"
|
||||
|
||||
@@ -11779,8 +11808,8 @@ msgstr "Reparación cancelada"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "La copia del archivo %1% a %2% falló: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Es necesario comprobar los cambios no guardados antes de actualizar la configuración."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Paquete de configuración: "
|
||||
@@ -11788,6 +11817,12 @@ msgstr "Paquete de configuración: "
|
||||
msgid " updated to "
|
||||
msgstr " Actualizado a "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Es necesario comprobar los cambios no guardados antes de actualizar la configuración."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Abrir archivo G-Code:"
|
||||
|
||||
@@ -13344,6 +13379,9 @@ msgstr "Rectilíneo Alineado"
|
||||
msgid "Concentric"
|
||||
msgstr "Concéntrico"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Curva de Hilbert"
|
||||
|
||||
@@ -13424,25 +13462,19 @@ msgid "Top surface fill order"
|
||||
msgstr "Orden de relleno de la superficie superior"
|
||||
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Dirección en la que se rellenan las superficies superiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n"
|
||||
"Hacia afuera comienza en el centro de la superficie, de modo que cualquier exceso de material se empuja hacia el borde, donde es menos visible. Hacia adentro comienza en el borde y termina con las curvas cerradas del centro.\n"
|
||||
"Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección."
|
||||
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Orden de relleno de la superficie inferior"
|
||||
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Dirección en la que se rellenan las superficies inferiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n"
|
||||
"Hacia adentro comienza cada superficie con las curvas exteriores más amplias, lo que mejora la adherencia de la primera capa en las camas donde las curvas cerradas del centro pueden no adherirse. Hacia afuera comienza en el centro, empujando cualquier exceso de material hacia el borde.\n"
|
||||
"Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Patrón de relleno sólido interno"
|
||||
@@ -21148,6 +21180,30 @@ msgstr ""
|
||||
"Evita la deformación\n"
|
||||
"¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Seleccionar el idioma"
|
||||
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Abrir el menú rápido de acciones"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Dirección en la que se rellenan las superficies superiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n"
|
||||
#~ "Hacia afuera comienza en el centro de la superficie, de modo que cualquier exceso de material se empuja hacia el borde, donde es menos visible. Hacia adentro comienza en el borde y termina con las curvas cerradas del centro.\n"
|
||||
#~ "Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Dirección en la que se rellenan las superficies inferiores al usar un patrón basado en el centro (Concéntrico, Cuerdas de Arquímedes, Espiral de octograma).\n"
|
||||
#~ "Hacia adentro comienza cada superficie con las curvas exteriores más amplias, lo que mejora la adherencia de la primera capa en las camas donde las curvas cerradas del centro pueden no adherirse. Hacia afuera comienza en el centro, empujando cualquier exceso de material hacia el borde.\n"
|
||||
#~ "Por defecto usa el orden de ruta más corta, que puede ir en cualquier dirección."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer."
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-07-20 13:33+0200\n"
|
||||
"Last-Translator: Manu Goiogana <mgoiogana@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2390,13 +2390,6 @@ msgstr "Eguneratze bat dago erabilgarri. Ireki aurrezarpen-paketeen elkarrizketa
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s kendu da."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Hautatu hizkuntza"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Hizkuntza"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "Ezin izan da OrcaSlicer %s hizkuntzara aldatu."
|
||||
@@ -2428,6 +2421,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Ezin izan da pluginen elkarrizketa-koadroa ireki (errore ezezaguna)"
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Plugin-terminala"
|
||||
|
||||
@@ -4470,6 +4476,12 @@ msgstr ""
|
||||
"Aldi baterako G-code-a irteerako G-code-an kopiatzeak huts egin du. Agian SD txartela idazteko blokeatuta dago?\n"
|
||||
"Errore- mezua: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Aldi baterako G-code-a irteerako G-code-an kopiatzeak huts egin du. Arazoak egon daitezke helburuko gailuarekin, saiatu berriro esportatzen edo beste gailu bat erabiltzen. Hondatutako irteerako G-code-a hemen da: %1%.tmp."
|
||||
@@ -6353,6 +6365,9 @@ msgstr "Erakutsi hautatutako objektuaren inguruko ingerada 3D eszenan."
|
||||
msgid "Preferences"
|
||||
msgstr "Hobespenak"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8608,7 +8623,6 @@ msgstr "Jarraitu nahi duzu?"
|
||||
msgid "Language selection"
|
||||
msgstr "Hizkuntza-hautaketa"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asia-Pazifikoa"
|
||||
|
||||
@@ -8713,6 +8727,9 @@ msgstr "Uneko instantziaren bide-izena: "
|
||||
msgid "General"
|
||||
msgstr "Orokorra"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Hizkuntza"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrikoa"
|
||||
|
||||
@@ -8909,6 +8926,12 @@ msgstr "Gailu anitzen kudeaketa"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Aukera hau gaituta, zeregin bat hainbat gailutara bidali eta hainbat gailu kudea ditzakezu aldi berean."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Erakutsi filamentuak taldekatzeko modua hautatzeko leihoa"
|
||||
|
||||
@@ -9614,6 +9637,9 @@ msgstr "Aurrezarpen honetara gurasoaren balio heredatu guztiak kopiatzen ditu et
|
||||
msgid "Detach from parent"
|
||||
msgstr "Bereizi gurasotik"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Aurrezarpen bakarra"
|
||||
@@ -11467,6 +11493,17 @@ msgstr "Erakutsi/Ezkutatu 3Dconnexion gailuen ezarpenen elkarrizketa-koadroa"
|
||||
msgid "Switch table page"
|
||||
msgstr "Aldatu taula-orria"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Zuriunea"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Erakutsi teklatu-lasterbideen zerrenda"
|
||||
|
||||
@@ -11627,14 +11664,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Aldatu Prestatu/Aurrebista artean"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Zuriunea"
|
||||
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Ekintzen markatze azkarra ireki"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plaka-antolatzailea"
|
||||
|
||||
@@ -11899,8 +11928,8 @@ msgstr "Konponketa bertan behera utzi da"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "%1% fitxategia %2% helmugara kopiatzeak huts egin du: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Egiaztatu gorde gabeko aldaketarik dagoen konfigurazioa eguneratu aurretik."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Konfigurazio-paketea: "
|
||||
@@ -11908,6 +11937,12 @@ msgstr "Konfigurazio-paketea: "
|
||||
msgid " updated to "
|
||||
msgstr " hona eguneratu da: "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Egiaztatu gorde gabeko aldaketarik dagoen konfigurazioa eguneratu aurretik."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Ireki G-code fitxategia:"
|
||||
|
||||
@@ -13477,6 +13512,9 @@ msgstr "Lerrozuzen lerrokatua"
|
||||
msgid "Concentric"
|
||||
msgstr "Kontzentrikoa"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbert kurba"
|
||||
|
||||
@@ -13560,28 +13598,20 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Goiko gainazala betetzeko ordena"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Goiko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
|
||||
"Kanporanzkoa erdialdean hasten da, beraz, gehiegizko materiala gutxien ikusten den ertzera bultzatzen da. Barruranzkoa ertzean hasten da eta erdian kurba estuekin amaitzen da.\n"
|
||||
"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
|
||||
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Beheko gainazala betetzeko ordena"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
|
||||
"Barruranzkoa hasten da gainazal bakoitza kanpoko kurba zabalagoekin, eta horrek lehen geruzaren atxikimendua hobetzen du erdiko kurba estuak itsatsi ez daitezkeen inprimatze-plaketan. Kanporanzkoa erdialdean hasten da, gehiegizko materiala ertzera bultzatuz.\n"
|
||||
"Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
|
||||
|
||||
# AI Translated
|
||||
msgid "Internal solid infill pattern"
|
||||
@@ -21337,6 +21367,32 @@ msgstr ""
|
||||
"Saihestu okertzea\n"
|
||||
"Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Hautatu hizkuntza"
|
||||
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Ekintzen markatze azkarra ireki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Goiko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
|
||||
#~ "Kanporanzkoa erdialdean hasten da, beraz, gehiegizko materiala gutxien ikusten den ertzera bultzatzen da. Barruranzkoa ertzean hasten da eta erdian kurba estuekin amaitzen da.\n"
|
||||
#~ "Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Beheko gainazalak betetzen diren noranzkoa zentroan oinarritutako patroia erabiltzen denean (Kontzentrikoa, Arkimedesen kordak, Oktagrama-kiribila).\n"
|
||||
#~ "Barruranzkoa hasten da gainazal bakoitza kanpoko kurba zabalagoekin, eta horrek lehen geruzaren atxikimendua hobetzen du erdiko kurba estuak itsatsi ez daitezkeen inprimatze-plaketan. Kanporanzkoa erdialdean hasten da, gehiegizko materiala ertzera bultzatuz.\n"
|
||||
#~ "Lehenetsiak bide laburreneko ordena erabiltzen du, zeina norabide batean zein bestean ibil daitekeen."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Waylanden jatorrizko zuzeneko ikuspegiak GStreamer GTK bideo-hustubidea behar du. Instalatu GStreamerrerako gtksink plugina eta berrabiarazi OrcaSlicer."
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Guislain Cyril, Thomas Lété\n"
|
||||
@@ -2414,13 +2414,6 @@ msgstr "Une mise à jour est disponible. Ouvrez la boîte de dialogue du paquet
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s a été supprimé."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Sélectionner la langue"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "Le passage d’Orca Slicer à la langue %s a échoué."
|
||||
@@ -2455,6 +2448,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Échec de l'ouverture de la boîte de dialogue des plugins (erreur inconnue)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal des plugins"
|
||||
@@ -4507,6 +4513,12 @@ msgstr ""
|
||||
"La copie du G-code temporaire vers le G-code de sortie a échoué. La carte SD est peut-être bloquée en écriture ?\n"
|
||||
"Message d’erreur : %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué. Il se peut qu’il y ait un problème avec le dispositif cible, veuillez essayer d’exporter à nouveau ou d’utiliser un autre périphérique. Le G-code de sortie corrompu se trouve dans %1%.tmp."
|
||||
@@ -6401,6 +6413,9 @@ msgstr "Afficher le tracé contour de l’objet sélectionné dans la scène 3D.
|
||||
msgid "Preferences"
|
||||
msgstr "Préférences"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8676,7 +8691,6 @@ msgstr "Voulez-vous continuer ?"
|
||||
msgid "Language selection"
|
||||
msgstr "Sélection de la langue"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asie-Pacifique"
|
||||
|
||||
@@ -8781,6 +8795,9 @@ msgstr "Chemin d’accès à l’instance courante : "
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Métrique"
|
||||
|
||||
@@ -8977,6 +8994,12 @@ msgstr "Gestion multi appareils"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Si cette option est activée, vous pouvez envoyer une tâche à plusieurs appareils en même temps et gérer plusieurs appareils."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Fenêtre contextuelle pour sélectionner le mode de regroupement des filaments"
|
||||
|
||||
@@ -9685,6 +9708,9 @@ msgstr "Copie dans ce préréglage toutes les valeurs héritées du préréglage
|
||||
msgid "Detach from parent"
|
||||
msgstr "Détacher du parent"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Préréglage unique"
|
||||
@@ -11563,6 +11589,17 @@ msgstr "Afficher/Masquer la boîte de dialogue des paramètres des périphériqu
|
||||
msgid "Switch table page"
|
||||
msgstr "Page du tableau de commutation"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espace"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Afficher la liste des raccourcis clavier"
|
||||
|
||||
@@ -11723,15 +11760,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Basculer entre Préparer/Aperçu"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espace"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Ouvrir le menu d'actions rapides"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plateau"
|
||||
|
||||
@@ -11997,8 +12025,8 @@ msgstr "Réparation annulée"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Échec de la copie du fichier %1% vers %2% : %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Besoin de vérifier les modifications non enregistrées avant les mises à jour de configuration."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Paquet de configuration : "
|
||||
@@ -12006,6 +12034,12 @@ msgstr "Paquet de configuration : "
|
||||
msgid " updated to "
|
||||
msgstr " mis à jour en "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Besoin de vérifier les modifications non enregistrées avant les mises à jour de configuration."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Ouvrir un fichier G-code :"
|
||||
|
||||
@@ -13571,6 +13605,9 @@ msgstr "Rectiligne Aligné"
|
||||
msgid "Concentric"
|
||||
msgstr "Concentrique"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Courbe de Hilbert"
|
||||
|
||||
@@ -13660,29 +13697,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Ordre de remplissage de la surface supérieure"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direction dans laquelle les surfaces supérieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n"
|
||||
"Vers l'extérieur commence au centre de la surface, de sorte que tout excès de matière est poussé vers le bord où il est le moins visible. Vers l'intérieur commence au bord et se termine par les courbes serrées au centre.\n"
|
||||
"Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Ordre de remplissage de la surface inférieure"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direction dans laquelle les surfaces inférieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n"
|
||||
"Vers l'intérieur commence chaque surface par les courbes extérieures plus larges, ce qui améliore l'adhérence de la première couche sur les plateaux où les courbes serrées au centre peuvent ne pas adhérer. Vers l'extérieur commence au centre, poussant tout excès de matière vers le bord.\n"
|
||||
"Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Motif de remplissage plein interne"
|
||||
@@ -21495,6 +21524,33 @@ msgstr ""
|
||||
"Éviter la déformation\n"
|
||||
"Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Sélectionner la langue"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Ouvrir le menu d'actions rapides"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direction dans laquelle les surfaces supérieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n"
|
||||
#~ "Vers l'extérieur commence au centre de la surface, de sorte que tout excès de matière est poussé vers le bord où il est le moins visible. Vers l'intérieur commence au bord et se termine par les courbes serrées au centre.\n"
|
||||
#~ "Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direction dans laquelle les surfaces inférieures sont remplies lors de l'utilisation d'un motif centré (Concentrique, Cordes d'Archimède, Spirale d'octogramme).\n"
|
||||
#~ "Vers l'intérieur commence chaque surface par les courbes extérieures plus larges, ce qui améliore l'adhérence de la première couche sur les plateaux où les courbes serrées au centre peuvent ne pas adhérer. Vers l'extérieur commence au centre, poussant tout excès de matière vers le bord.\n"
|
||||
#~ "Par défaut utilise un ordonnancement par chemin le plus court, qui peut aller dans les deux sens."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "L’aperçu en direct natif sous Wayland nécessite le récepteur vidéo GStreamer GTK. Veuillez installer le plugin gtksink pour GStreamer, puis redémarrer OrcaSlicer."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -2460,13 +2460,6 @@ msgstr "Frissítés érhető el. Nyisd meg a beállításcsomag párbeszédablak
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s eltávolítva."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Válaszd ki a nyelvet"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Nyelv"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2504,6 +2497,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Nem sikerült megnyitni a Bővítmények párbeszédablakot (ismeretlen hiba)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Bővítményterminál"
|
||||
@@ -4601,6 +4607,12 @@ msgstr ""
|
||||
"Nem sikerült az ideiglenes G-kódot a kimeneti G-kódba másolni. Lehet, hogy az SD-kártya írásvédett?\n"
|
||||
"Hibaüzenet: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Nem sikerült az ideiglenes G-kódot a kimeneti G-kódba másolni. Probléma lehet a céleszközzel. Kérlek, exportáld újra, vagy használj másik eszközt. A sérült kimeneti G-kód helye: %1%.tmp."
|
||||
@@ -6503,6 +6515,9 @@ msgstr "Körvonal megjelenítése a kijelölt objektum körül a 3D nézetben."
|
||||
msgid "Preferences"
|
||||
msgstr "Beállítások"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8804,7 +8819,6 @@ msgstr "Szeretnéd folytatni?"
|
||||
msgid "Language selection"
|
||||
msgstr "Nyelv kiválasztása"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Ázsia-Csendes-óceáni térség"
|
||||
|
||||
@@ -8909,6 +8923,9 @@ msgstr "Jelenlegi példány útvonala: "
|
||||
msgid "General"
|
||||
msgstr "Általános"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Nyelv"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrikus"
|
||||
|
||||
@@ -9113,6 +9130,12 @@ msgstr "Többeszközös kezelés"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Ezzel az opcióval egyszerre több eszközre küldhetsz feladatot és több eszközt kezelhetsz."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Felugró ablak a filamentcsoportosítási mód kiválasztásához"
|
||||
|
||||
@@ -9845,6 +9868,9 @@ msgstr "Az összes örökölt értéket átmásolja a szülő előbeállításb
|
||||
msgid "Detach from parent"
|
||||
msgstr "Leválasztás a szülőről"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Önálló előbeállítás"
|
||||
@@ -11747,6 +11773,17 @@ msgstr "3Dconnexion-eszközbeállítások párbeszédablak megjelenítése/elrej
|
||||
msgid "Switch table page"
|
||||
msgstr "Váltás táblázatra"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Szóköz"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Gyorsgombok listájának megjelenítése"
|
||||
|
||||
@@ -11907,15 +11944,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Váltás előkészítés/előnézet között"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Szóköz"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Műveletek gyorsmenüjének megnyitása"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Tálca"
|
||||
|
||||
@@ -12187,8 +12215,8 @@ msgstr "Javítás megszakítva"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "%1% fájl másolása sikertelen a következő helyre: %2% Hiba: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Kérlek, ellenőrizd a nem mentett módosításokat a konfiguráció frissítése előtt."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Konfigurációs csomag: "
|
||||
@@ -12196,6 +12224,12 @@ msgstr "Konfigurációs csomag: "
|
||||
msgid " updated to "
|
||||
msgstr " frissítve erre: "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Kérlek, ellenőrizd a nem mentett módosításokat a konfiguráció frissítése előtt."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "G-kód fájl megnyitása:"
|
||||
|
||||
@@ -13794,6 +13828,9 @@ msgstr "Igazított vonal"
|
||||
msgid "Concentric"
|
||||
msgstr "Koncentrikus"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbert-görbe"
|
||||
|
||||
@@ -13883,29 +13920,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Felső felület kitöltési sorrendje"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Az az irány, amelyben a felső felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n"
|
||||
"A Kifelé a felület közepén kezd, így a felesleges anyag a szélek felé tolódik, ahol a legkevésbé látszik. A Befelé a szélén kezd, és a középen lévő szűk ívekkel fejeződik be.\n"
|
||||
"Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Alsó felület kitöltési sorrendje"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Az az irány, amelyben az alsó felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n"
|
||||
"A Befelé minden felületet a szélesebb külső ívekkel kezd, ami javítja az első réteg tapadását azokon az asztalokon, ahol a középen lévő szűk ívek nem tapadnak meg jól. A Kifelé a közepén kezd, a felesleges anyagot a szélek felé tolva.\n"
|
||||
"Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat."
|
||||
|
||||
# AI Translated
|
||||
msgid "Internal solid infill pattern"
|
||||
@@ -21926,6 +21955,33 @@ msgstr ""
|
||||
"Kunkorodás elkerülése\n"
|
||||
"Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Válaszd ki a nyelvet"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Műveletek gyorsmenüjének megnyitása"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Az az irány, amelyben a felső felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n"
|
||||
#~ "A Kifelé a felület közepén kezd, így a felesleges anyag a szélek felé tolódik, ahol a legkevésbé látszik. A Befelé a szélén kezd, és a középen lévő szűk ívekkel fejeződik be.\n"
|
||||
#~ "Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Az az irány, amelyben az alsó felületek kitöltése történik középpont alapú mintázat (Koncentrikus, Archimédeszi vonalak, Nyolcágú spirál) használatakor.\n"
|
||||
#~ "A Befelé minden felületet a szélesebb külső ívekkel kezd, ami javítja az első réteg tapadását azokon az asztalokon, ahol a középen lévő szűk ívek nem tapadnak meg jól. A Kifelé a közepén kezd, a felesleges anyagot a szélek felé tolva.\n"
|
||||
#~ "Az Alapértelmezett a legrövidebb útvonal szerinti sorrendet használja, amely bármelyik irányba haladhat."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -2466,13 +2466,6 @@ msgstr "È disponibile un aggiornamento. Apri la finestra di dialogo del bundle
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s è stato rimosso."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Seleziona la lingua"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Lingua"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2510,6 +2503,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Impossibile aprire la finestra di dialogo Plugin (errore sconosciuto)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminale plugin"
|
||||
@@ -4603,6 +4609,12 @@ msgstr ""
|
||||
"Copia del G-code temporaneo sul G-code di uscita non riuscita. Forse la scheda SD è protetta da scrittura?\n"
|
||||
"Messaggio di errore: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Copia del G-code temporaneo nel G-code di uscita non riuscita. Potrebbe esserci un problema nel dispositivo di destinazione. Prova ad esportare di nuovo o usa un dispositivo diverso. Il file G-code corrotto è su %1%.tmp."
|
||||
@@ -6505,6 +6517,9 @@ msgstr "Mostra il contorno attorno all'oggetto selezionato nella scena 3D."
|
||||
msgid "Preferences"
|
||||
msgstr "Preferenze"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8805,7 +8820,6 @@ msgstr "Vuoi continuare?"
|
||||
msgid "Language selection"
|
||||
msgstr "Selezione lingua"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asia-Pacifico"
|
||||
|
||||
@@ -8911,6 +8925,9 @@ msgstr "Percorso istanza attuale: "
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Lingua"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrico"
|
||||
|
||||
@@ -9115,6 +9132,12 @@ msgstr "Gestione multi-dispositivo"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Abilitando questa opzione, puoi inviare un'attività a più dispositivi contemporaneamente e gestire più dispositivi."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Popup per selezionare la modalità di raggruppamento filamenti"
|
||||
|
||||
@@ -9863,6 +9886,9 @@ msgstr "Copia in questo profilo tutti i valori ereditati dal profilo padre e rim
|
||||
msgid "Detach from parent"
|
||||
msgstr "Scollega dal genitore"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Profilo unico"
|
||||
@@ -11767,6 +11793,17 @@ msgstr "Mostra/nascondi la finestra di dialogo delle impostazioni dei dispositiv
|
||||
msgid "Switch table page"
|
||||
msgstr "Cambia pagina tabella"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spazio"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Mostra elenco scorciatoie da tastiera"
|
||||
|
||||
@@ -11928,15 +11965,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Passa tra Prepara e Anteprima"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spazio"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Apri la selezione rapida delle azioni"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Piatto"
|
||||
|
||||
@@ -12208,8 +12236,8 @@ msgstr "Riparazione annullata"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Copia del file %1% su %2% non riuscita: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Controllare le modifiche non salvate prima di aggiornare la configurazione."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Pacchetto di configurazione: "
|
||||
@@ -12217,6 +12245,12 @@ msgstr "Pacchetto di configurazione: "
|
||||
msgid " updated to "
|
||||
msgstr " aggiornato a "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Controllare le modifiche non salvate prima di aggiornare la configurazione."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Apri un file G-code:"
|
||||
|
||||
@@ -13814,6 +13848,9 @@ msgstr "Rettilineo allineato"
|
||||
msgid "Concentric"
|
||||
msgstr "Concentrico"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Curva di Hilbert"
|
||||
|
||||
@@ -13903,29 +13940,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Ordine di riempimento della superficie superiore"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direzione in cui vengono riempite le superfici superiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n"
|
||||
"Verso l'esterno inizia dal centro della superficie, in modo che il materiale in eccesso venga spinto verso il bordo dove è meno visibile. Verso l'interno inizia dal bordo e termina con le curve strette al centro.\n"
|
||||
"L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Ordine di riempimento della superficie inferiore"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direzione in cui vengono riempite le superfici inferiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n"
|
||||
"Verso l'interno inizia ogni superficie con le curve esterne più ampie, il che migliora l'adesione del primo strato sui piatti di stampa dove le curve strette al centro potrebbero non aderire. Verso l'esterno inizia dal centro, spingendo il materiale in eccesso verso il bordo.\n"
|
||||
"L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Motivo riempimento solido interno"
|
||||
@@ -21950,6 +21979,33 @@ msgstr ""
|
||||
"Evita le deformazioni\n"
|
||||
"Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Seleziona la lingua"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Apri la selezione rapida delle azioni"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direzione in cui vengono riempite le superfici superiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n"
|
||||
#~ "Verso l'esterno inizia dal centro della superficie, in modo che il materiale in eccesso venga spinto verso il bordo dove è meno visibile. Verso l'interno inizia dal bordo e termina con le curve strette al centro.\n"
|
||||
#~ "L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direzione in cui vengono riempite le superfici inferiori quando si utilizza un motivo basato sul centro (Concentrico, Corde di Archimede, Spirale a ottagramma).\n"
|
||||
#~ "Verso l'interno inizia ogni superficie con le curve esterne più ampie, il che migliora l'adesione del primo strato sui piatti di stampa dove le curve strette al centro potrebbero non aderire. Verso l'esterno inizia dal centro, spingendo il materiale in eccesso verso il bordo.\n"
|
||||
#~ "L'impostazione predefinita utilizza l'ordinamento a percorso più breve, che può procedere in entrambe le direzioni."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -2473,13 +2473,6 @@ msgstr "アップデートが利用可能です。プリセットバンドルの
|
||||
msgid "%s has been removed."
|
||||
msgstr "%sを削除しました。"
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "言語を選択"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "言語"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2517,6 +2510,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "プラグインダイアログを開けませんでした (不明なエラー)。"
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "プラグインターミナル"
|
||||
@@ -4610,6 +4616,12 @@ msgstr ""
|
||||
"一時的なGコードの出力Gコードへのコピーに失敗しました。 もしかしたらSDカードが書き込みロックされていませんか?\n"
|
||||
"エラーメッセージ:%1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "一時Gコードの出力Gコードへのコピーに失敗しました。 ターゲットデバイスに問題がある可能性があります。もう一度エクスポートするか、別のデバイスを使用してみてください。 破損した出力Gコードは%1%.tmpにあります。"
|
||||
@@ -6514,6 +6526,9 @@ msgstr "3Dシーンで選択したオブジェクトの周りにアウトライ
|
||||
msgid "Preferences"
|
||||
msgstr "設定"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8823,7 +8838,6 @@ msgstr "続行しますか?"
|
||||
msgid "Language selection"
|
||||
msgstr "言語選択"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "アジア太平洋地域"
|
||||
|
||||
@@ -8928,6 +8942,9 @@ msgstr "現在のインスタンスのパス: "
|
||||
msgid "General"
|
||||
msgstr "一般"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "言語"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "メートル"
|
||||
|
||||
@@ -9135,6 +9152,12 @@ msgstr "マルチデバイス管理"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "このオプションを有効にすると、複数のデバイスに同時にタスクを送信し、複数のデバイスを管理できます。"
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "フィラメントグルーピングモード選択のポップアップ"
|
||||
|
||||
@@ -9885,6 +9908,9 @@ msgstr "親プリセットから継承したすべての値をこのプリセッ
|
||||
msgid "Detach from parent"
|
||||
msgstr "親から分離"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "独立したプリセット"
|
||||
@@ -11788,6 +11814,17 @@ msgstr "3Dconnexion設定を表示/非表示"
|
||||
msgid "Switch table page"
|
||||
msgstr "テーブルページを切り替え"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "ショートカット一覧を表示"
|
||||
|
||||
@@ -11950,15 +11987,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "準備/プレビュー間の切り替え"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "アクションスピードダイヤルを開く"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "準備"
|
||||
|
||||
@@ -12234,8 +12262,8 @@ msgstr "修復を取消しました"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "ファイル %1% を %2% へのコピーが失敗しました (%3%)"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "構成を更新する前に、未保存の変更をご確認ください"
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "設定パッケージ: "
|
||||
@@ -12243,6 +12271,12 @@ msgstr "設定パッケージ: "
|
||||
msgid " updated to "
|
||||
msgstr " を更新しました "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "構成を更新する前に、未保存の変更をご確認ください"
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "G-codeファイルを開く"
|
||||
|
||||
@@ -13905,6 +13939,9 @@ msgstr "整列直線"
|
||||
msgid "Concentric"
|
||||
msgstr "同心"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "ヒルベルト曲線"
|
||||
|
||||
@@ -13996,29 +14033,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "上面の充填順序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、上面を充填する方向です。\n"
|
||||
"外向きは面の中心から始まるため、余分な材料が最も目立たない縁へ押し出されます。内向きは縁から始まり、中心の細かいカーブで終わります。\n"
|
||||
"デフォルトは最短経路順で、どちらの方向にもなり得ます。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "底面の充填順序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、底面を充填する方向です。\n"
|
||||
"内向きは各面を幅の広い外側のカーブから始めるため、中心の細かいカーブが定着しにくいベッドでも1層目の密着性が向上します。外向きは中心から始まり、余分な材料を縁へ押し出します。\n"
|
||||
"デフォルトは最短経路順で、どちらの方向にもなり得ます。"
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "内部ソリッドインフィルパターン"
|
||||
@@ -22505,6 +22534,33 @@ msgstr ""
|
||||
"反りを避ける\n"
|
||||
"ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "言語を選択"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "アクションスピードダイヤルを開く"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、上面を充填する方向です。\n"
|
||||
#~ "外向きは面の中心から始まるため、余分な材料が最も目立たない縁へ押し出されます。内向きは縁から始まり、中心の細かいカーブで終わります。\n"
|
||||
#~ "デフォルトは最短経路順で、どちらの方向にもなり得ます。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "中心を基準とするパターン (同心円、アルキメデス弦、八芒星スパイラル) を使用する場合に、底面を充填する方向です。\n"
|
||||
#~ "内向きは各面を幅の広い外側のカーブから始めるため、中心の細かいカーブが定着しにくいベッドでも1層目の密着性が向上します。外向きは中心から始まり、余分な材料を縁へ押し出します。\n"
|
||||
#~ "デフォルトは最短経路順で、どちらの方向にもなり得ます。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "ネイティブWaylandのライブビューにはGStreamer GTKビデオシンクが必要です。GStreamer用のgtksinkプラグインをインストールし、OrcaSlicerを再起動してください。"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2025-06-02 17:12+0900\n"
|
||||
"Last-Translator: crwusiz <crwusiz@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2481,13 +2481,6 @@ msgstr "사용 가능한 업데이트가 있습니다. 사전 설정 번들 대
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s이(가) 제거되었습니다."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "언어 선택"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "언어"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2525,6 +2518,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "플러그인 대화 상자를 열지 못했습니다(알 수 없는 오류)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "플러그인 터미널"
|
||||
@@ -4625,6 +4631,12 @@ msgstr ""
|
||||
"임시 Gcode를 출력 Gcode로 복사하지 못했습니다. SD 카드가 쓰기 잠겨 있나요?\n"
|
||||
"오류 메시지입니다: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "임시 Gcode를 출력 Gcode로 복사하지 못했습니다. 대상 장치에 문제가 있을 수 있으니 다시 내보내거나 다른 장치를 사용해 보세요. 손상된 출력 Gcode는 %1%.tmp에 있습니다."
|
||||
@@ -6528,6 +6540,9 @@ msgstr "3D 장면에서 선택한 객체 주변에 윤곽선 표시"
|
||||
msgid "Preferences"
|
||||
msgstr "기본 설정"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8858,7 +8873,6 @@ msgstr "계속하시겠습니까?"
|
||||
msgid "Language selection"
|
||||
msgstr "언어 선택"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "아시아 태평양"
|
||||
|
||||
@@ -8972,6 +8986,9 @@ msgstr "현재 인스턴스 경로: "
|
||||
msgid "General"
|
||||
msgstr "일반"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "언어"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "미터법"
|
||||
|
||||
@@ -9197,6 +9214,12 @@ msgstr "다중 장치 관리"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "활성화하면 여러 장치에 동시에 작업을 보내고 여러 장치를 관리할 수 있습니다."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "필라멘트 그룹화 모드를 선택하기 위한 팝업"
|
||||
|
||||
@@ -9976,6 +9999,9 @@ msgstr "상위 사전 설정에서 상속한 모든 값을 이 사전 설정으
|
||||
msgid "Detach from parent"
|
||||
msgstr "상위 항목에서 분리"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "독립 사전 설정"
|
||||
@@ -11922,6 +11948,17 @@ msgstr "3D 연결 장치 설정 표시/숨기기 대화상자"
|
||||
msgid "Switch table page"
|
||||
msgstr "테이블 페이지 전환"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "키보드 단축키 목록 보기"
|
||||
|
||||
@@ -12086,15 +12123,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "준비 하기/미리 보기 전환"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "작업 스피드 다이얼 열기"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "출력판"
|
||||
|
||||
@@ -12368,8 +12396,8 @@ msgstr "수리 취소됨"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "파일 %1%를 %2%으로 복사 실패: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "구성 업데이트 전에 저장되지 않은 변경 사항을 확인해야 합니다."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "구성 패키지: "
|
||||
@@ -12377,6 +12405,12 @@ msgstr "구성 패키지: "
|
||||
msgid " updated to "
|
||||
msgstr " 로 업데이트되었습니다 "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "구성 업데이트 전에 저장되지 않은 변경 사항을 확인해야 합니다."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Gcode 파일 열기:"
|
||||
|
||||
@@ -14033,6 +14067,9 @@ msgstr "정렬된 직선"
|
||||
msgid "Concentric"
|
||||
msgstr "동심"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "힐베르트 곡선"
|
||||
|
||||
@@ -14124,29 +14161,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "상단 표면 채우기 순서"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 상단 표면을 채우는 방향입니다.\n"
|
||||
"바깥쪽은 표면 중앙에서 시작하므로 남는 재료가 가장 눈에 덜 띄는 가장자리로 밀려납니다. 안쪽은 가장자리에서 시작하여 중앙의 좁은 곡선에서 끝납니다.\n"
|
||||
"기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "하단 표면 채우기 순서"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 하단 표면을 채우는 방향입니다.\n"
|
||||
"안쪽은 각 표면을 더 넓은 바깥쪽 곡선에서 시작하므로, 중앙의 좁은 곡선이 잘 붙지 않는 빌드 플레이트에서 초기 레이어 접착력이 향상됩니다. 바깥쪽은 중앙에서 시작하여 남는 재료를 가장자리로 밀어냅니다.\n"
|
||||
"기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "꽉찬 내부 채우기 패턴"
|
||||
@@ -22372,6 +22401,33 @@ msgstr ""
|
||||
"뒤틀림 방지\n"
|
||||
"ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "언어 선택"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "작업 스피드 다이얼 열기"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 상단 표면을 채우는 방향입니다.\n"
|
||||
#~ "바깥쪽은 표면 중앙에서 시작하므로 남는 재료가 가장 눈에 덜 띄는 가장자리로 밀려납니다. 안쪽은 가장자리에서 시작하여 중앙의 좁은 곡선에서 끝납니다.\n"
|
||||
#~ "기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "중심 기반 패턴(동심원, 아르키메데스 현, 팔각별 나선)을 사용할 때 하단 표면을 채우는 방향입니다.\n"
|
||||
#~ "안쪽은 각 표면을 더 넓은 바깥쪽 곡선에서 시작하므로, 중앙의 좁은 곡선이 잘 붙지 않는 빌드 플레이트에서 초기 레이어 접착력이 향상됩니다. 바깥쪽은 중앙에서 시작하여 남는 재료를 가장자리로 밀어냅니다.\n"
|
||||
#~ "기본값은 최단 경로 순서를 사용하며 어느 방향으로든 진행될 수 있습니다."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "네이티브 Wayland 실시간 보기에는 GStreamer GTK 비디오 싱크가 필요합니다. GStreamer용 gtksink 플러그인을 설치한 후 OrcaSlicer를 다시 시작하십시오."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-07-02 14:13+0300\n"
|
||||
"Last-Translator: Gintaras Kučinskas <sharanchius@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2449,13 +2449,6 @@ msgstr "Yra prieinamas atnaujinimas. Atidarykite profilių paketo dialogo langą
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s buvo pašalintas."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Pasirinkite kalbą"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Kalba"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2493,6 +2486,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Nepavyko atidaryti papildinių dialogo lango (nežinoma klaida)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Papildinio terminalas"
|
||||
@@ -4587,6 +4593,12 @@ msgstr ""
|
||||
"Nepavyko nukopijuoti laikinojo G-kodo į išvesties G-kodą. Gal draudžiama įrašinėti į SD kortelę?\n"
|
||||
"Klaidos pranešimas: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Nepavyko nukopijuoti laikinojo G-kodo į išvesties G-kodą. Gali kilti problemų dėl tikslinio įrenginio. Bandykite eksportuoti dar kartą arba naudokite kitą įrenginį. Sugadintas išvesties G-kodas yra %1%.tmp."
|
||||
@@ -6490,6 +6502,9 @@ msgstr "Rodyti kontūrą aplink pasirinktą objektą 3D scenoje."
|
||||
msgid "Preferences"
|
||||
msgstr "Parinktys"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8795,7 +8810,6 @@ msgstr "Ar norite tęsti?"
|
||||
msgid "Language selection"
|
||||
msgstr "Kalbos pasirinkimas"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Azija-Ramusis vandenynas"
|
||||
|
||||
@@ -8900,6 +8914,9 @@ msgstr "Dabartinės versijos kelias: "
|
||||
msgid "General"
|
||||
msgstr "Bendras"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Kalba"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrinė"
|
||||
|
||||
@@ -9096,6 +9113,12 @@ msgstr "Kelių įrenginių valdymas"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Kai įjungta ši funkcija, jūs galite siųsti užduotį keliems įrenginiams vienu metu, taip apt kontroliuoti keletą įrenginių."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Iššokantis langas gijų grupavimo režimui pasirinkti"
|
||||
|
||||
@@ -9802,6 +9825,9 @@ msgstr "Nukopijuoja į šį profilį visas iš pirminio profilio paveldėtas rei
|
||||
msgid "Detach from parent"
|
||||
msgstr "Atskirti nuo tėvinio profilio"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Savarankiškas profilis"
|
||||
@@ -11692,6 +11718,17 @@ msgstr "Rodyti/slėpti 3DConnexion įrenginių nustatymų dialogo langą"
|
||||
msgid "Switch table page"
|
||||
msgstr "Perjungti lentelės puslapį"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Tarpas"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Rodyti sparčiųjų klavišų sąrašą"
|
||||
|
||||
@@ -11852,15 +11889,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Perjungimas tarp Paruošti / Peržiūrėti"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Tarpas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Atidaryti veiksmų greitosios prieigos meniu"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plokštė"
|
||||
|
||||
@@ -12128,8 +12156,8 @@ msgstr "Taisymas atšauktas"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Failo %1% kopijavimas į %2% nepavyko: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Prieš atnaujinant konfigūraciją reikia patikrinti neišsaugotus pakeitimus."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Konfigūracijos paketas: "
|
||||
@@ -12137,6 +12165,12 @@ msgstr "Konfigūracijos paketas: "
|
||||
msgid " updated to "
|
||||
msgstr " atnaujintas į "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Prieš atnaujinant konfigūraciją reikia patikrinti neišsaugotus pakeitimus."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Atidaryti G-kodo failą:"
|
||||
|
||||
@@ -13703,6 +13737,9 @@ msgstr "Sulygiuotas tiesiaeigis"
|
||||
msgid "Concentric"
|
||||
msgstr "Koncentrinis"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilberto kreivė"
|
||||
|
||||
@@ -13792,29 +13829,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Viršutinio paviršiaus užpildymo tvarka"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Kryptis, kuria užpildomi viršutiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n"
|
||||
"„Į išorę“ prasideda paviršiaus centre, todėl bet koks perteklinė medžiaga stumiama link krašto, kur ji mažiausiai matoma. „Į vidų“ prasideda nuo krašto ir baigiasi ankštomis kreivėmis centre.\n"
|
||||
"Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Apatinio paviršiaus užpildymo tvarka"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Kryptis, kuria užpildomi apatiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n"
|
||||
"„Į vidų“ pradeda kiekvieną paviršių platesnėmis išorinėmis kreivėmis, o tai pagerina pirmojo sluoksnio sukibimą ant pagrindų, kur ankštos kreivės centre gali nesilaikyti. „Į išorę“ prasideda centre, stumdama bet kokią perteklinę medžiagą link krašto.\n"
|
||||
"Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Vidinio tvirto užpildo raštas"
|
||||
@@ -21652,6 +21681,33 @@ msgstr ""
|
||||
"Venkite deformacijų (warping)\n"
|
||||
"Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Pasirinkite kalbą"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Atidaryti veiksmų greitosios prieigos meniu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Kryptis, kuria užpildomi viršutiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n"
|
||||
#~ "„Į išorę“ prasideda paviršiaus centre, todėl bet koks perteklinė medžiaga stumiama link krašto, kur ji mažiausiai matoma. „Į vidų“ prasideda nuo krašto ir baigiasi ankštomis kreivėmis centre.\n"
|
||||
#~ "Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Kryptis, kuria užpildomi apatiniai paviršiai naudojant į centrą orientuotą raštą (koncentrinį, Archimedo stygų, Oktogramos spiralės).\n"
|
||||
#~ "„Į vidų“ pradeda kiekvieną paviršių platesnėmis išorinėmis kreivėmis, o tai pagerina pirmojo sluoksnio sukibimą ant pagrindų, kur ankštos kreivės centre gali nesilaikyti. „Į išorę“ prasideda centre, stumdama bet kokią perteklinę medžiagą link krašto.\n"
|
||||
#~ "Numatytoji tvarka naudoja trumpiausio kelio rikiavimą, kuris gali vykti bet kuria kryptimi."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Tiesioginei „Native Wayland“ peržiūrai reikalingas „GStreamer GTK“ vaizdo sinchronizatorius (video sink). Įdiekite „GStreamer“ skirtą „gtksink“ papildinį, tada iš naujo paleiskite „OrcaSlicer“."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -2679,13 +2679,6 @@ msgstr "Er is een update beschikbaar. Open het dialoogvenster voor de voorinstel
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s is verwijderd."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Kies de taal"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Taal"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2723,6 +2716,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Openen van het dialoogvenster Plug-ins is mislukt (onbekende fout)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Plug-in-terminal"
|
||||
@@ -5008,6 +5014,12 @@ msgstr ""
|
||||
"Fout bij het exporteren naar output-G-code. Is de SD-kaart geblokkeerd tegen schrijven?\n"
|
||||
"Foutbericht: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Fout bij het exporteren naar output-G-code. Het probleem ligt mogelijk bij het doelapparaat. Probeer het opnieuw te exporteren of gebruik een ander apparat. De beschadigde G-code is opgeslagen als %1%.tmp."
|
||||
@@ -7086,6 +7098,9 @@ msgstr "Toon een omtrek rond het geselecteerde object in de 3D-scène."
|
||||
msgid "Preferences"
|
||||
msgstr "Voorkeuren"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -9600,7 +9615,6 @@ msgstr "Wilt u doorgaan?"
|
||||
msgid "Language selection"
|
||||
msgstr "Taal selectie"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Azië-Pacific"
|
||||
|
||||
@@ -9715,6 +9729,9 @@ msgstr "Huidig instancepad: "
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Taal"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrisch"
|
||||
|
||||
@@ -9946,6 +9963,12 @@ msgstr "Beheer van meerdere apparaten"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Met deze optie ingeschakeld kunt u een taak tegelijkertijd naar meerdere apparaten sturen en meerdere apparaten beheren."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Pop-up om de filamentgroeperingsmodus te kiezen"
|
||||
@@ -10737,6 +10760,9 @@ msgstr "Kopieert alle overgeërfde waarden van de bovenliggende voorinstelling n
|
||||
msgid "Detach from parent"
|
||||
msgstr "Losmaken van bovenliggend element"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Unieke voorinstelling"
|
||||
@@ -12818,6 +12844,17 @@ msgstr "Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/ver
|
||||
msgid "Switch table page"
|
||||
msgstr "Schakeltabel pagina"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spatie"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Toon lijst met sneltoetsen"
|
||||
|
||||
@@ -12985,15 +13022,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Wisselen tussen Voorbereiden/Voorvertoning"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spatie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Snelmenu met acties openen"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plaat"
|
||||
|
||||
@@ -13292,8 +13320,8 @@ msgstr "Repareren geannuleerd"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Het kopieeren van bestand %1% naar %2% is mislukt: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Configuration package: "
|
||||
@@ -13303,6 +13331,12 @@ msgstr "Configuratiepakket: "
|
||||
msgid " updated to "
|
||||
msgstr " bijgewerkt naar "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Controleer niet-opgeslagen wijzigingen voordat u de configuratie bijwerkt."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Open G-code bestand:"
|
||||
|
||||
@@ -15049,6 +15083,9 @@ msgstr "Uitgelijnd Rechtlijnig"
|
||||
msgid "Concentric"
|
||||
msgstr "Concentrisch"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbertkromme"
|
||||
@@ -15144,29 +15181,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Vulvolgorde bovenoppervlak"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Richting waarin bovenoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n"
|
||||
"Naar buiten begint in het midden van het oppervlak, zodat overtollig materiaal naar de rand wordt geduwd, waar het het minst zichtbaar is. Naar binnen begint aan de rand en eindigt met de krappe bochten in het midden.\n"
|
||||
"Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Vulvolgorde onderoppervlak"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Richting waarin onderoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n"
|
||||
"Naar binnen begint elk oppervlak met de bredere buitenbochten, wat de hechting van de eerste laag verbetert op printbedden waar de krappe bochten in het midden mogelijk niet hechten. Naar buiten begint in het midden en duwt overtollig materiaal naar de rand.\n"
|
||||
"Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Intern massief invulpatroon"
|
||||
@@ -24092,6 +24121,33 @@ msgstr ""
|
||||
"Kromtrekken voorkomen\n"
|
||||
"Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Kies de taal"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Snelmenu met acties openen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Richting waarin bovenoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n"
|
||||
#~ "Naar buiten begint in het midden van het oppervlak, zodat overtollig materiaal naar de rand wordt geduwd, waar het het minst zichtbaar is. Naar binnen begint aan de rand en eindigt met de krappe bochten in het midden.\n"
|
||||
#~ "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Richting waarin onderoppervlakken worden gevuld bij gebruik van een patroon dat vanuit het midden werkt (Concentrisch, Archimedische koorden, Octagramspiraal).\n"
|
||||
#~ "Naar binnen begint elk oppervlak met de bredere buitenbochten, wat de hechting van de eerste laag verbetert op printbedden waar de krappe bochten in het midden mogelijk niet hechten. Naar buiten begint in het midden en duwt overtollig materiaal naar de rand.\n"
|
||||
#~ "Standaard gebruikt de volgorde van het kortste pad, die beide kanten op kan lopen."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Voor de native Wayland-liveview is de GStreamer GTK-videosink nodig. Installeer de gtksink-plug-in voor GStreamer en start OrcaSlicer opnieuw."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OrcaSlicer 2.3.0-rc\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Krzysztof Morga <<tlumaczeniebs@gmail.com>>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2512,13 +2512,6 @@ msgstr "Dostępna jest aktualizacja. Otwórz okno pakietu profili, aby ją zains
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s został usunięty."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Wybierz język"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Język"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2556,6 +2549,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Nie udało się otworzyć okna wtyczek (nieznany błąd)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal wtyczek"
|
||||
@@ -4702,6 +4708,12 @@ msgstr ""
|
||||
"Kopiowanie tymczasowego G-code do wyjściowego pliku G-code nie powiodło się. Być może karta SD jest zablokowana do zapisu?\n"
|
||||
"Komunikat błędu: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Kopiowanie tymczasowego G-code do wyjściowego pliku G-code nie powiodło się. Może być problem z urządzeniem docelowym, spróbuj ponownie wyeksportować lub użyć innego urządzenia. Uszkodzony plik wyjściowego G-code znajduje się w pliku %1%.tmp."
|
||||
@@ -6651,6 +6663,9 @@ msgstr "Przełącza wyświetlanie konturu wokół zaznaczonego obiektu w scenie
|
||||
msgid "Preferences"
|
||||
msgstr "Preferencje"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -9014,7 +9029,6 @@ msgstr "Czy kontynuować?"
|
||||
msgid "Language selection"
|
||||
msgstr "Wybór języka"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Azja i Pacyfik"
|
||||
|
||||
@@ -9128,6 +9142,9 @@ msgstr "Aktualna ścieżka instancji: "
|
||||
msgid "General"
|
||||
msgstr "Ogólne"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Język"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metryczne"
|
||||
|
||||
@@ -9352,6 +9369,12 @@ msgstr "Obsługiwanie wielu urządzeń"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Umożliwia wysyłanie zadania do wielu urządzeń jednocześnie i zarządzanie nimi."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Okno dialogowe do wyboru trybu grupowania filamentów"
|
||||
|
||||
@@ -10132,6 +10155,9 @@ msgstr "Kopiuje do tego profilu wszystkie wartości odziedziczone z profilu nadr
|
||||
msgid "Detach from parent"
|
||||
msgstr "Odłącz od elementu nadrzędnego"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Profil niezależny"
|
||||
@@ -12095,6 +12121,17 @@ msgstr "Pokaż/ukryj okno dialogowe ustawień urządzeń 3Dconnexion"
|
||||
msgid "Switch table page"
|
||||
msgstr "Przełącz stronę tabeli"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spacja"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Pokaż listę skrótów klawiszowych"
|
||||
|
||||
@@ -12257,15 +12294,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Przełączanie między przygotowaniem/podglądem"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Spacja"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Otwórz szybkie menu akcji"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Płyta"
|
||||
|
||||
@@ -12540,8 +12568,8 @@ msgstr "Naprawa anulowana"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Nie udało się skopiować pliku %1% do %2%: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Należy sprawdzić niezapisane zmiany przed aktualizacją konfiguracji."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Pakiet konfiguracyjny:"
|
||||
@@ -12549,6 +12577,12 @@ msgstr "Pakiet konfiguracyjny:"
|
||||
msgid " updated to "
|
||||
msgstr " aktualizacja do "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Należy sprawdzić niezapisane zmiany przed aktualizacją konfiguracji."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Otwórz plik G-code:"
|
||||
|
||||
@@ -14206,6 +14240,9 @@ msgstr "Wyrównany prostoliniowy"
|
||||
msgid "Concentric"
|
||||
msgstr "Koncentryczny"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Krzywa Hilberta"
|
||||
|
||||
@@ -14297,29 +14334,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Kolejność wypełniania górnej powierzchni"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Kierunek wypełniania górnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n"
|
||||
"Na zewnątrz zaczyna od środka powierzchni, dzięki czemu nadmiar materiału jest wypychany ku krawędzi, gdzie jest najmniej widoczny. Do wewnątrz zaczyna od krawędzi i kończy ciasnymi łukami na środku.\n"
|
||||
"Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Kolejność wypełniania dolnej powierzchni"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Kierunek wypełniania dolnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n"
|
||||
"Do wewnątrz rozpoczyna każdą powierzchnię od szerszych łuków zewnętrznych, co poprawia przyczepność pierwszej warstwy na stołach, do których ciasne łuki na środku mogą nie przylegać. Na zewnątrz zaczyna od środka, wypychając nadmiar materiału ku krawędzi.\n"
|
||||
"Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Wzór wewnętrznego pełnego wypełnienia"
|
||||
@@ -22549,6 +22578,33 @@ msgstr ""
|
||||
"Unikaj odkształceń\n"
|
||||
"Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Wybierz język"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Otwórz szybkie menu akcji"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Kierunek wypełniania górnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n"
|
||||
#~ "Na zewnątrz zaczyna od środka powierzchni, dzięki czemu nadmiar materiału jest wypychany ku krawędzi, gdzie jest najmniej widoczny. Do wewnątrz zaczyna od krawędzi i kończy ciasnymi łukami na środku.\n"
|
||||
#~ "Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Kierunek wypełniania dolnych powierzchni przy użyciu wzoru opartego na środku (Koncentryczny, Cięciwy Archimedesa, Spirala Octagram).\n"
|
||||
#~ "Do wewnątrz rozpoczyna każdą powierzchnię od szerszych łuków zewnętrznych, co poprawia przyczepność pierwszej warstwy na stołach, do których ciasne łuki na środku mogą nie przylegać. Na zewnątrz zaczyna od środka, wypychając nadmiar materiału ku krawędzi.\n"
|
||||
#~ "Domyślnie używana jest kolejność najkrótszej ścieżki, która może przebiegać w dowolnym kierunku."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Natywny podgląd na żywo w Wayland wymaga ujścia wideo GStreamer GTK. Zainstaluj wtyczkę gtksink dla GStreamer, a następnie uruchom ponownie OrcaSlicer."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-07-26 11:14-0300\n"
|
||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
@@ -2356,13 +2356,6 @@ msgstr "Há uma atualização disponível. Abra a caixa de diálogo do pacote de
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s foi removido."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Selecione o idioma"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "Falha ao mudar o idioma do OrcaSlicer para %s."
|
||||
@@ -2395,6 +2388,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Falha ao abrir a caixa de diálogo de Plugins (erro desconhecido)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal de plugin"
|
||||
@@ -4441,6 +4447,12 @@ msgstr ""
|
||||
"A cópia do G-code temporário para o G-code de saída falhou. Talvez o cartão SD esteja travado pra escrita?\n"
|
||||
"Mensagem de erro: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "A cópia do G-code temporário para o G-code de saída falhou. Pode haver problema com o dispositivo de destino, por favor tente exportar novamente ou usar outro dispositivo. O G-code de saída corrompido está em %1%.tmp."
|
||||
@@ -6323,6 +6335,9 @@ msgstr "Mostrar contorno ao redor do objeto selecionado na cena 3D."
|
||||
msgid "Preferences"
|
||||
msgstr "Preferências"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
@@ -8570,7 +8585,6 @@ msgstr "Você deseja continuar?"
|
||||
msgid "Language selection"
|
||||
msgstr "Seleção de idioma"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Ásia-Pacífico"
|
||||
|
||||
@@ -8675,6 +8689,9 @@ msgstr "Caminho da Instância Atual: "
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Métrico"
|
||||
|
||||
@@ -8879,6 +8896,12 @@ msgstr "Gerenciamento de multi dispositivos"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Com esta opção habilitada, você pode enviar uma tarefa para vários dispositivos ao mesmo tempo e gerenciar vários dispositivos."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Abrir seleção do modo de agrupamento de filamento"
|
||||
|
||||
@@ -9587,6 +9610,9 @@ msgstr "Copia para esta predefinição todos os valores herdados da predefiniç
|
||||
msgid "Detach from parent"
|
||||
msgstr "Separar do pai"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Predefinição única"
|
||||
@@ -11450,6 +11476,16 @@ msgstr "Mostrar/Ocultar diálogo de configurações de dispositivos 3Dconnexion"
|
||||
msgid "Switch table page"
|
||||
msgstr "Trocar página da tabela"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espaço"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Mostrar lista de atalhos de teclado"
|
||||
|
||||
@@ -11605,14 +11641,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Alternar entre Preparar/Pré-visualizar"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Espaço"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Abrir menu rápido de ações"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Mesa"
|
||||
|
||||
@@ -11877,8 +11905,8 @@ msgstr "Reparo cancelado"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Falha ao copiar o arquivo %1% para %2%: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Verifique as alterações não salvas antes de atualizar a configuração."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Pacote de configuração: "
|
||||
@@ -11886,6 +11914,12 @@ msgstr "Pacote de configuração: "
|
||||
msgid " updated to "
|
||||
msgstr " atualizado para "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Verifique as alterações não salvas antes de atualizar a configuração."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Abrir arquivo G-code:"
|
||||
|
||||
@@ -13455,6 +13489,9 @@ msgstr "Retilíneo alinhado"
|
||||
msgid "Concentric"
|
||||
msgstr "Concêntrico"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Curva de Hilbert"
|
||||
|
||||
@@ -13535,25 +13572,19 @@ msgid "Top surface fill order"
|
||||
msgstr "Ordem de preenchimento da superfície superior"
|
||||
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direção em que as superfícies superiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n"
|
||||
"Para fora começa no centro da superfície, de modo que qualquer excesso de material seja empurrado em direção à borda, onde é menos visível. Para dentro começa na borda e termina com as curvas fechadas no centro.\n"
|
||||
"O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção."
|
||||
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Ordem de preenchimento da superfície inferior"
|
||||
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Direção em que as superfícies inferiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n"
|
||||
"Para dentro começa cada superfície com as curvas externas mais largas, o que melhora a aderência da primeira camada em mesas onde as curvas fechadas no centro podem não aderir. Para fora começa no centro, empurrando qualquer excesso de material em direção à borda.\n"
|
||||
"O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Padrão de preenchimento sólido interno"
|
||||
@@ -21261,6 +21292,31 @@ msgstr ""
|
||||
"Evitar empenamento\n"
|
||||
"Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Selecione o idioma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Abrir menu rápido de ações"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direção em que as superfícies superiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n"
|
||||
#~ "Para fora começa no centro da superfície, de modo que qualquer excesso de material seja empurrado em direção à borda, onde é menos visível. Para dentro começa na borda e termina com as curvas fechadas no centro.\n"
|
||||
#~ "O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Direção em que as superfícies inferiores são preenchidas ao usar um padrão baseado no centro (Concêntrico, Cordas de Arquimedes, Espiral de Octograma).\n"
|
||||
#~ "Para dentro começa cada superfície com as curvas externas mais largas, o que melhora a aderência da primeira camada em mesas onde as curvas fechadas no centro podem não aderir. Para fora começa no centro, empurrando qualquer excesso de material em direção à borda.\n"
|
||||
#~ "O padrão usa a ordenação de caminho mais curto, que pode seguir em qualquer direção."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "A visualização ao vivo nativa do Wayland requer o receptor de vídeo GTK do GStreamer. Instale o plugin gtksink para GStreamer e reinicie o OrcaSlicer."
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OrcaSlicer V2.5.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\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), Andylg <andylg@yandex.ru>\n"
|
||||
@@ -2431,13 +2431,6 @@ msgstr "Доступно обновление. Проверьте меню па
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s был удалён."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Выбор языка"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Язык"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "Не удалось переключить язык на %s."
|
||||
@@ -2469,6 +2462,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Не удалось открыть меню плагинов (неизвестная ошибка)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Консоль плагина"
|
||||
|
||||
@@ -4577,6 +4583,12 @@ msgstr ""
|
||||
"Не удалось скопировать временный G-код в целевое расположение. Возможно, накопитель защищён от записи?\n"
|
||||
"Сообщение об ошибке: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Не удалось скопировать временный G-код в целевое расположение. Возможно, проблема с устройством хранения, попробуйте выполнить экспорт снова или использовать другое устройство. Повреждённый выходной файл G-кода находится в %1%.tmp."
|
||||
@@ -6558,6 +6570,9 @@ msgstr "Отображение контура вокруг выбранных м
|
||||
msgid "Preferences"
|
||||
msgstr "Настройки"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
msgstr "Правка"
|
||||
@@ -8850,7 +8865,6 @@ msgstr "Хотите продолжить?"
|
||||
msgid "Language selection"
|
||||
msgstr "Выбор языка"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Азиатско-Тихоокеанский"
|
||||
|
||||
@@ -8956,6 +8970,9 @@ msgstr "Расположение: "
|
||||
msgid "General"
|
||||
msgstr "Общие"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Язык"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Метрическая СИ"
|
||||
|
||||
@@ -9159,6 +9176,12 @@ msgstr "Управление несколькими устройствами Bam
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Если включено, вы сможете управлять несколькими устройствами и отправлять задания на печать на несколько устройств одновременно."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
# Запрашивать выбор режима группировки?
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Всплывающее окно для выбора режима группировки материалов"
|
||||
@@ -9879,6 +9902,9 @@ msgstr "Копирует в этот профиль все значения, у
|
||||
msgid "Detach from parent"
|
||||
msgstr "Сделать независимым"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Независимый профиль"
|
||||
@@ -11780,6 +11806,16 @@ msgstr "Показать/скрыть диалоговое окно настро
|
||||
msgid "Switch table page"
|
||||
msgstr "Переключение между вкладками"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Пробел"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Показать список сочетаний клавиш"
|
||||
|
||||
@@ -11936,13 +11972,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Переключение между подготовкой и просмотром нарезки"
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Пробел"
|
||||
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Открыть строку быстрых действий"
|
||||
|
||||
# Plater – это название библиотеки. Используется в меню горячих клавиш в качестве заголовка сочетаний клавиш, которые работают внутри пространства Plater. Как минимум на Windows не отображается.
|
||||
msgid "Plater"
|
||||
msgstr "Рабочая область"
|
||||
@@ -12207,8 +12236,8 @@ msgstr "Восстановление отменено"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Не удалось скопировать файл %1% в %2%: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Перед обновлением профилей необходимо проверить несохранённые изменения."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Пакет профилей: "
|
||||
@@ -12216,6 +12245,12 @@ msgstr "Пакет профилей: "
|
||||
msgid " updated to "
|
||||
msgstr " обновлён до "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Перед обновлением профилей необходимо проверить несохранённые изменения."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Выберите G-код файл:"
|
||||
|
||||
@@ -13850,6 +13885,9 @@ msgstr "Ровный зигзаг"
|
||||
msgid "Concentric"
|
||||
msgstr "Эквидистанты"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Кривая Гильберта"
|
||||
|
||||
@@ -13944,27 +13982,19 @@ msgid "Top surface fill order"
|
||||
msgstr "Направление печати"
|
||||
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Направление печати спирали/эквидистант на верхних поверхностях. Позволяет управляемо распределять избыток материала.\n"
|
||||
"• По умолчанию: использовать кратчайший путь.\n"
|
||||
"• Наружу: от центра шаблона к краю модели.\n"
|
||||
"• Внутрь: от края модели к центру шаблона."
|
||||
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Направление печати"
|
||||
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Направление печати спирали/эквидистант на нижних поверхностях. Позволяет управляемо распределять избыток материала.\n"
|
||||
"• По умолчанию: использовать кратчайший путь.\n"
|
||||
"• Наружу: от центра шаблона к краю модели.\n"
|
||||
"• Внутрь: от края модели к центру шаблона."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Шаблон сплошного заполнения"
|
||||
@@ -22301,6 +22331,32 @@ msgstr ""
|
||||
"Предотвращение коробления материала\n"
|
||||
"Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Выбор языка"
|
||||
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Открыть строку быстрых действий"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Направление печати спирали/эквидистант на верхних поверхностях. Позволяет управляемо распределять избыток материала.\n"
|
||||
#~ "• По умолчанию: использовать кратчайший путь.\n"
|
||||
#~ "• Наружу: от центра шаблона к краю модели.\n"
|
||||
#~ "• Внутрь: от края модели к центру шаблона."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Направление печати спирали/эквидистант на нижних поверхностях. Позволяет управляемо распределять избыток материала.\n"
|
||||
#~ "• По умолчанию: использовать кратчайший путь.\n"
|
||||
#~ "• Наружу: от центра шаблона к краю модели.\n"
|
||||
#~ "• Внутрь: от края модели к центру шаблона."
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Для нативного отображения трансляции в Wayland требуется gtksink (плагин для GStreamer). Установите необходимый пакет плагинов и перезапустите OrcaSlicer."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -2767,13 +2767,6 @@ msgstr "Det finns en uppdatering tillgänglig. Öppna dialogrutan för förinst
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s har tagits bort."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Välj språk"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Språk"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2811,6 +2804,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Det gick inte att öppna dialogrutan Insticksmoduler (okänt fel)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal för insticksmoduler"
|
||||
@@ -5066,6 +5072,12 @@ msgstr ""
|
||||
"Det gick inte att kopiera den tillfälliga G-code-filen till utdatafilen. Kanske är SD-kortet skrivskyddat?\n"
|
||||
"Felmeddelande: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
@@ -7169,6 +7181,9 @@ msgstr "Visa en kontur runt det markerade objektet i 3D-scenen."
|
||||
msgid "Preferences"
|
||||
msgstr "Inställningar"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -9692,7 +9707,6 @@ msgstr "Fortsätta?"
|
||||
msgid "Language selection"
|
||||
msgstr "Språkval"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asien-Stillahavsområdet"
|
||||
|
||||
@@ -9812,6 +9826,9 @@ msgstr "Sökväg till aktuell instans: "
|
||||
msgid "General"
|
||||
msgstr "Allmän"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Språk"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrisk"
|
||||
|
||||
@@ -10052,6 +10069,12 @@ msgstr "Hantering av flera enheter"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Med det här alternativet aktiverat kan du skicka en uppgift till flera enheter samtidigt och hantera flera enheter."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Visa dialogruta för val av filamentgrupperingsläge"
|
||||
@@ -10851,6 +10874,9 @@ msgstr "Kopierar alla ärvda värden från den överordnade förinställningen t
|
||||
msgid "Detach from parent"
|
||||
msgstr "Koppla loss från överordnad"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Unik förinställning"
|
||||
@@ -12982,6 +13008,17 @@ msgstr "Visa/Dölj 3Dconnexion enheternas inställnings dialogruta"
|
||||
msgid "Switch table page"
|
||||
msgstr "Byt tabellsida"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Blanksteg"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Visa tangentbordets genvägs lista"
|
||||
|
||||
@@ -13147,15 +13184,6 @@ msgstr "Tabb"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Växla mellan Förbered/Förhandsgranska"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Blanksteg"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Öppna snabbvalsmenyn för åtgärder"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plätering/Förgyllning"
|
||||
|
||||
@@ -13454,8 +13482,8 @@ msgstr "Reparation avbruten"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Kopierar fil %1% till %2% misslyckade: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Kontrollera ej sparade ändringar innan konfigureringen uppdateras."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Configuration package: "
|
||||
@@ -13465,6 +13493,12 @@ msgstr "Konfigurationspaket: "
|
||||
msgid " updated to "
|
||||
msgstr " uppdaterat till "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Kontrollera ej sparade ändringar innan konfigureringen uppdateras."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Öppna G-kod fil:"
|
||||
|
||||
@@ -15218,6 +15252,9 @@ msgstr "Justerade Rätlinjig"
|
||||
msgid "Concentric"
|
||||
msgstr "Koncentrisk"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbert kurvan"
|
||||
|
||||
@@ -15313,29 +15350,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Fyllordning för ovansidan"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Riktning i vilken ovansidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n"
|
||||
"Utåt börjar i ytans mitt, så att överskottsmaterial trycks ut mot kanten där det syns minst. Inåt börjar vid kanten och slutar med de trånga kurvorna i mitten.\n"
|
||||
"Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Fyllordning för undersidan"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Riktning i vilken undersidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n"
|
||||
"Inåt börjar varje yta med de bredare yttre kurvorna, vilket förbättrar det första lagrets vidhäftning på byggplattor där de trånga kurvorna i mitten kanske inte fastnar. Utåt börjar i mitten och trycker överskottsmaterial mot kanten.\n"
|
||||
"Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Invändigt mönster för fyllning av solida ytor"
|
||||
@@ -24380,6 +24409,33 @@ msgstr ""
|
||||
"Undvik vridning\n"
|
||||
"Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Välj språk"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Öppna snabbvalsmenyn för åtgärder"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Riktning i vilken ovansidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n"
|
||||
#~ "Utåt börjar i ytans mitt, så att överskottsmaterial trycks ut mot kanten där det syns minst. Inåt börjar vid kanten och slutar med de trånga kurvorna i mitten.\n"
|
||||
#~ "Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Riktning i vilken undersidor fylls när ett centrumbaserat mönster används (Koncentrisk, Arkimediska kordor, Oktagramspiral).\n"
|
||||
#~ "Inåt börjar varje yta med de bredare yttre kurvorna, vilket förbättrar det första lagrets vidhäftning på byggplattor där de trånga kurvorna i mitten kanske inte fastnar. Utåt börjar i mitten och trycker överskottsmaterial mot kanten.\n"
|
||||
#~ "Standard använder ordning efter kortaste väg, vilken kan gå i endera riktningen."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Liveview i Wayland kräver GStreamers GTK-videosink. Installera insticksmodulen gtksink för GStreamer och starta sedan om OrcaSlicer."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-06-19 13:40+0700\n"
|
||||
"Last-Translator: Icezaza\n"
|
||||
"Language-Team: Thai\n"
|
||||
@@ -2456,13 +2456,6 @@ msgstr "มีอัปเดตพร้อมใช้งาน เปิด
|
||||
msgid "%s has been removed."
|
||||
msgstr "ลบ %s แล้ว"
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "เลือกภาษา"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "ภาษา"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2500,6 +2493,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "ไม่สามารถเปิดกล่องโต้ตอบปลั๊กอินได้ (ข้อผิดพลาดที่ไม่รู้จัก)"
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "เทอร์มินัลปลั๊กอิน"
|
||||
@@ -4582,6 +4588,12 @@ msgstr ""
|
||||
"การคัดลอก G-code ชั่วคราวไปยังเอาต์พุต G-code ล้มเหลว บางทีการ์ด SD อาจถูกล็อคการเขียน?\n"
|
||||
"ข้อความแสดงข้อผิดพลาด: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "การคัดลอก G-code ชั่วคราวไปยังเอาต์พุต G-code ล้มเหลว อาจมีปัญหากับอุปกรณ์เป้าหมาย โปรดลองส่งออกอีกครั้งหรือใช้อุปกรณ์อื่น G-code เอาต์พุตที่เสียหายอยู่ที่ %1%.tmp"
|
||||
@@ -6482,6 +6494,9 @@ msgstr "แสดงเค้าร่างรอบๆ วัตถุที
|
||||
msgid "Preferences"
|
||||
msgstr "การตั้งค่า"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8756,7 +8771,6 @@ msgstr "ต้องการดำเนินการต่อหรือไ
|
||||
msgid "Language selection"
|
||||
msgstr "การเลือกภาษา"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "เอเชียแปซิฟิก"
|
||||
|
||||
@@ -8861,6 +8875,9 @@ msgstr "เส้นทางอินสแตนซ์ปัจจุบัน
|
||||
msgid "General"
|
||||
msgstr "ทั่วไป"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "ภาษา"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "เมตริก"
|
||||
|
||||
@@ -9065,6 +9082,12 @@ msgstr "การจัดการอุปกรณ์หลายเครื
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "เมื่อเปิดใช้งานตัวเลือกนี้ คุณสามารถส่งงานไปยังอุปกรณ์หลายเครื่องพร้อมกันและจัดการอุปกรณ์หลายเครื่องได้"
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "ปรากฏขึ้นเพื่อเลือกโหมดการจัดกลุ่มเส้นพลาสติก"
|
||||
|
||||
@@ -9776,6 +9799,9 @@ msgstr "คัดลอกค่าที่สืบทอดมาจากพ
|
||||
msgid "Detach from parent"
|
||||
msgstr "แยกออกจากพรีเซ็ตแม่"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "พรีเซ็ตอิสระ"
|
||||
@@ -11664,6 +11690,17 @@ msgstr "แสดง/ซ่อนกล่องโต้ตอบการต
|
||||
msgid "Switch table page"
|
||||
msgstr "สลับหน้าตาราง"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "แสดงรายการแป้นพิมพ์ลัด"
|
||||
|
||||
@@ -11824,15 +11861,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "สลับระหว่างการเตรียม/ดูตัวอย่าง"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "เปิดสปีดไดอัลการดำเนินการ"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "เพลเตอร์"
|
||||
|
||||
@@ -12100,8 +12128,8 @@ msgstr "ยกเลิกการซ่อมแล้ว"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "การคัดลอกไฟล์ %1% ถึง %2% ล้มเหลว: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "โปรดตรวจสอบการเปลี่ยนแปลงที่ยังไม่ได้บันทึกก่อนอัปเดตการกำหนดค่า"
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "แพคเกจการกำหนดค่า:"
|
||||
@@ -12109,6 +12137,12 @@ msgstr "แพคเกจการกำหนดค่า:"
|
||||
msgid " updated to "
|
||||
msgstr "อัปเดตเป็น"
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "โปรดตรวจสอบการเปลี่ยนแปลงที่ยังไม่ได้บันทึกก่อนอัปเดตการกำหนดค่า"
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "เปิดไฟล์ G-code:"
|
||||
|
||||
@@ -13674,6 +13708,9 @@ msgstr "จัดแนวเป็นเส้นตรง"
|
||||
msgid "Concentric"
|
||||
msgstr "ศูนย์กลาง"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "ฮิลเบิร์ต เคิร์ฟ"
|
||||
|
||||
@@ -13763,29 +13800,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "ลำดับการเติมพื้นผิวด้านบน"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"ทิศทางที่พื้นผิวด้านบนถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n"
|
||||
"ออกด้านนอกเริ่มที่กึ่งกลางของพื้นผิว ดังนั้นวัสดุส่วนเกินจะถูกดันไปทางขอบซึ่งมองเห็นได้น้อยที่สุด เข้าด้านในเริ่มที่ขอบและจบด้วยเส้นโค้งแคบที่กึ่งกลาง\n"
|
||||
"ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "ลำดับการเติมพื้นผิวด้านล่าง"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"ทิศทางที่พื้นผิวด้านล่างถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n"
|
||||
"เข้าด้านในเริ่มแต่ละพื้นผิวด้วยเส้นโค้งด้านนอกที่กว้างกว่า ซึ่งช่วยเพิ่มการยึดเกาะเลเยอร์แรกบนฐานพิมพ์ที่เส้นโค้งแคบตรงกลางอาจไม่ติด ออกด้านนอกเริ่มที่กึ่งกลาง โดยดันวัสดุส่วนเกินไปทางขอบ\n"
|
||||
"ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้"
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "รูปแบบไส้ในของแข็งภายใน"
|
||||
@@ -21680,6 +21709,33 @@ msgstr ""
|
||||
"หลีกเลี่ยงการบิดเบี้ยว\n"
|
||||
"คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "เลือกภาษา"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "เปิดสปีดไดอัลการดำเนินการ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "ทิศทางที่พื้นผิวด้านบนถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n"
|
||||
#~ "ออกด้านนอกเริ่มที่กึ่งกลางของพื้นผิว ดังนั้นวัสดุส่วนเกินจะถูกดันไปทางขอบซึ่งมองเห็นได้น้อยที่สุด เข้าด้านในเริ่มที่ขอบและจบด้วยเส้นโค้งแคบที่กึ่งกลาง\n"
|
||||
#~ "ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "ทิศทางที่พื้นผิวด้านล่างถูกเติมเมื่อใช้ลวดลายแบบอิงจุดศูนย์กลาง (Concentric, Archimedean Chords, Octagram Spiral)\n"
|
||||
#~ "เข้าด้านในเริ่มแต่ละพื้นผิวด้วยเส้นโค้งด้านนอกที่กว้างกว่า ซึ่งช่วยเพิ่มการยึดเกาะเลเยอร์แรกบนฐานพิมพ์ที่เส้นโค้งแคบตรงกลางอาจไม่ติด ออกด้านนอกเริ่มที่กึ่งกลาง โดยดันวัสดุส่วนเกินไปทางขอบ\n"
|
||||
#~ "ค่าเริ่มต้นใช้การเรียงลำดับเส้นทางสั้นที่สุด ซึ่งอาจทำงานในทิศทางใดก็ได้"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Native Wayland liveview ต้องใช้ GStreamer GTK video sink โปรดติดตั้งปลั๊กอิน gtksink สำหรับ GStreamer จากนั้นรีสตาร์ท OrcaSlicer"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-08-21 23:18+0300\n"
|
||||
"Last-Translator: GlauTech\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2480,13 +2480,6 @@ msgstr "Kullanılabilir bir güncelleme var. Güncellemek için ön ayar paketi
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s kaldırıldı."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Dili seçin"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Dil"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2524,6 +2517,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Eklentiler iletişim kutusu açılamadı (bilinmeyen hata)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Eklenti Terminali"
|
||||
@@ -4641,6 +4647,12 @@ msgstr ""
|
||||
"Geçici G-code'un çıkış G-code'a kopyalanması başarısız oldu. Belki SD kart yazma kilitlidir.\n"
|
||||
"Hata mesajı: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Geçici G-code'un çıkış G-code'a kopyalanması başarısız oldu. Hedef cihazda sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı deneyin. Bozuk çıktı G-code %1%.tmp konumunda."
|
||||
@@ -6550,6 +6562,9 @@ msgstr "3D sahnede seçilen nesnenin etrafındaki ana hatları göster."
|
||||
msgid "Preferences"
|
||||
msgstr "Tercihler"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8858,7 +8873,6 @@ msgstr "Devam etmek istiyor musun?"
|
||||
msgid "Language selection"
|
||||
msgstr "Dil seçimi"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asya Pasifik"
|
||||
|
||||
@@ -8963,6 +8977,9 @@ msgstr "Mevcut Örnek Yolu: "
|
||||
msgid "General"
|
||||
msgstr "Genel"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Dil"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Metrik"
|
||||
|
||||
@@ -9170,6 +9187,12 @@ msgstr "Çoklu cihaz yönetimi"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev gönderebilir ve birden fazla cihazı yönetebilirsiniz."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Filament gruplama modunu seçmek için açılır pencere"
|
||||
|
||||
@@ -9920,6 +9943,9 @@ msgstr "Üst ön ayardan devralınan tüm değerleri bu ön ayara kopyalar ve ü
|
||||
msgid "Detach from parent"
|
||||
msgstr "Ebeveynden ayrıl"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Bağımsız ön ayar"
|
||||
@@ -11850,6 +11876,17 @@ msgstr "3Dconnexion cihazları ayarları iletişim kutusunu Göster/Gizle"
|
||||
msgid "Switch table page"
|
||||
msgstr "Tablo sayfasını değiştir"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Boşluk"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Klavye kısayolları listesini göster"
|
||||
|
||||
@@ -12012,15 +12049,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Hazırlama/Önizleme arasında geçiş yap"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Boşluk"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Eylem hızlı erişim menüsünü aç"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Plakacı"
|
||||
|
||||
@@ -12295,8 +12323,8 @@ msgstr "Onarım iptal edildi"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "%1% dosyasının %2% dosyasına kopyalanması başarısız oldu: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Yapılandırma güncellemelerinden önce kaydedilmemiş değişiklikleri kontrol etmeniz gerekir."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Yapılandırma paketi: "
|
||||
@@ -12304,6 +12332,12 @@ msgstr "Yapılandırma paketi: "
|
||||
msgid " updated to "
|
||||
msgstr " güncellendi "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Yapılandırma güncellemelerinden önce kaydedilmemiş değişiklikleri kontrol etmeniz gerekir."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "G-code dosyasını açın:"
|
||||
|
||||
@@ -13922,6 +13956,9 @@ msgstr "Hizalanmış doğrusal"
|
||||
msgid "Concentric"
|
||||
msgstr "Konsantrik"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Hilbert eğrisi"
|
||||
|
||||
@@ -14011,29 +14048,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Üst yüzey doldurma sırası"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken üst yüzeylerin doldurulma yönü.\n"
|
||||
"Dışarı, yüzeyin merkezinden başlar; böylece fazla malzeme en az göründüğü kenara doğru itilir. İçeri kenardan başlar ve merkezdeki dar kavislerle biter.\n"
|
||||
"Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Alt yüzey doldurma sırası"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken alt yüzeylerin doldurulma yönü.\n"
|
||||
"İçeri, her yüzeye daha geniş dış kavislerle başlar; bu da merkezdeki dar kavislerin yapışmayabileceği yapı plakalarında ilk katman yapışmasını iyileştirir. Dışarı merkezden başlar ve fazla malzemeyi kenara doğru iter.\n"
|
||||
"Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "İç katı dolgu deseni"
|
||||
@@ -22135,6 +22164,33 @@ msgstr ""
|
||||
"Eğilmeyi önleyin\n"
|
||||
"ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Dili seçin"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Eylem hızlı erişim menüsünü aç"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken üst yüzeylerin doldurulma yönü.\n"
|
||||
#~ "Dışarı, yüzeyin merkezinden başlar; böylece fazla malzeme en az göründüğü kenara doğru itilir. İçeri kenardan başlar ve merkezdeki dar kavislerle biter.\n"
|
||||
#~ "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Merkez tabanlı bir desen (Konsantrik, Arşimet akorları, Sekizgen spiral) kullanılırken alt yüzeylerin doldurulma yönü.\n"
|
||||
#~ "İçeri, her yüzeye daha geniş dış kavislerle başlar; bu da merkezdeki dar kavislerin yapışmayabileceği yapı plakalarında ilk katman yapışmasını iyileştirir. Dışarı merkezden başlar ve fazla malzemeyi kenara doğru iter.\n"
|
||||
#~ "Varsayılan, her iki yönde de ilerleyebilen en kısa yol sıralamasını kullanır."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Yerel Wayland canlı görüntüsü, GStreamer GTK video alıcısını gerektirir. Lütfen GStreamer için gtksink eklentisini yükleyin ve ardından OrcaSlicer'ı yeniden başlatın."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: orcaslicerua\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-07-17 16:25+0300\n"
|
||||
"Last-Translator: Andrij Mizyk <andm1zyk@proton.me>\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
@@ -2424,13 +2424,6 @@ msgstr "Доступне оновлення. Відкрийте вікно на
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s вилучено."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Вибрати мову"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Мова"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "Не вдалося перемкнути Orca Slicer на мову %s."
|
||||
@@ -2465,6 +2458,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Не вдалося відкрити діалогове вікно плагінів (невідома помилка)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Термінал плагіна"
|
||||
@@ -4577,6 +4583,12 @@ msgstr ""
|
||||
"Не вдалося скопіювати тимчасовий G-код у місцезнаходження вихідного файлу G-коду. Чи може ваша SD карта захищена від запису?\n"
|
||||
"Повідомлення про помилку: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Не вдалося скопіювати тимчасовий G-код у вихідний G-код. Можливо, проблема з цільовим пристроєм, спробуйте експортувати ще раз або використати інший пристрій. Пошкоджений вихідний G-код - %1% .tmp."
|
||||
@@ -6519,6 +6531,9 @@ msgstr "Показувати контур навколо виділеного о
|
||||
msgid "Preferences"
|
||||
msgstr "Налаштування"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8872,7 +8887,6 @@ msgstr "Ви хочете продовжувати?"
|
||||
msgid "Language selection"
|
||||
msgstr "Вибір мови"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Азіатсько-Тихоокеанський регіон"
|
||||
|
||||
@@ -8980,6 +8994,9 @@ msgstr "Шлях Поточної Інсталяції: "
|
||||
msgid "General"
|
||||
msgstr "Загальні"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Мова"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Метрика"
|
||||
|
||||
@@ -9188,6 +9205,12 @@ msgstr "Керування кількома пристроями"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "З цією опцією ввімкненою, ви можете відправляти завдання на кілька пристроїв одночасно та керувати декількома пристроями."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Показувати вікно вибору режиму групування філаментів"
|
||||
@@ -9924,6 +9947,9 @@ msgstr "Копіює в цей пресет усі значення, успад
|
||||
msgid "Detach from parent"
|
||||
msgstr "Відʼєднати від батьківського"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Незалежний пресет"
|
||||
@@ -11912,6 +11938,17 @@ msgstr "Показати/приховати діалог налаштувань
|
||||
msgid "Switch table page"
|
||||
msgstr "Перемкнути сторінку таблиці"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Пробіл"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Показати список клавіш"
|
||||
|
||||
@@ -12074,15 +12111,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Переключення між Підготовка/Попередній перегляд"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Пробіл"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Відкрити панель швидких дій"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Тарілка"
|
||||
|
||||
@@ -12353,9 +12381,8 @@ msgstr "Ремонт скасовано"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Копіювання %1% у %2% не вдалося: %3%"
|
||||
|
||||
# AI Translated
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Будь ласка, перевірте незбережені зміни перед оновленням конфігурації."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Пакет конфігурації: "
|
||||
@@ -12363,6 +12390,13 @@ msgstr "Пакет конфігурації: "
|
||||
msgid " updated to "
|
||||
msgstr " оновлено до "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Будь ласка, перевірте незбережені зміни перед оновленням конфігурації."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Відкрити файл G-коду:"
|
||||
|
||||
@@ -14018,6 +14052,9 @@ msgstr "Вирівняний прямолінійний"
|
||||
msgid "Concentric"
|
||||
msgstr "Концентричний"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Крива Гільберта"
|
||||
|
||||
@@ -14106,29 +14143,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Порядок заповнення верхньої поверхні"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Напрямок, у якому заповнюються верхні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n"
|
||||
"Назовні починає з центру поверхні, тож надлишок матеріалу виштовхується до краю, де він найменш помітний. Усередину починає з краю та завершується щільними кривими в центрі.\n"
|
||||
"Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Порядок заповнення нижньої поверхні"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Напрямок, у якому заповнюються нижні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n"
|
||||
"Усередину починає кожну поверхню з ширших зовнішніх кривих, що покращує зчеплення першого шару на столах, де щільні криві в центрі можуть не прилипати. Назовні починає з центру, виштовхуючи надлишок матеріалу до краю.\n"
|
||||
"Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Шаблон внутрішнього суцільного заповнення"
|
||||
@@ -22296,6 +22325,33 @@ msgstr ""
|
||||
"Уникнення деформації\n"
|
||||
"Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Вибрати мову"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Відкрити панель швидких дій"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Напрямок, у якому заповнюються верхні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n"
|
||||
#~ "Назовні починає з центру поверхні, тож надлишок матеріалу виштовхується до краю, де він найменш помітний. Усередину починає з краю та завершується щільними кривими в центрі.\n"
|
||||
#~ "Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Напрямок, у якому заповнюються нижні поверхні при використанні шаблону з центром (Концентричний, Хорди Архімеда, Спіральна октограма).\n"
|
||||
#~ "Усередину починає кожну поверхню з ширших зовнішніх кривих, що покращує зчеплення першого шару на столах, де щільні криві в центрі можуть не прилипати. Назовні починає з центру, виштовхуючи надлишок матеріалу до краю.\n"
|
||||
#~ "Типово використовується впорядкування за найкоротшим шляхом, яке може йти в будь-якому напрямку."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Нативний перегляд у Wayland потребує відеоприймача GStreamer GTK. Встановіть плагін gtksink для GStreamer, а потім перезапустіть OrcaSlicer."
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2025-10-02 17:43+0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: hainguyen.ts13@gmail.com\n"
|
||||
@@ -2568,13 +2568,6 @@ msgstr "Có bản cập nhật khả dụng. Hãy mở hộp thoại gói cài
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s đã bị xóa."
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Chọn ngôn ngữ"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Ngôn ngữ"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2612,6 +2605,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "Không thể mở hộp thoại Plugin (lỗi không xác định)."
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "Terminal plugin"
|
||||
@@ -4834,6 +4840,12 @@ msgstr ""
|
||||
"Sao chép G-code tạm thời sang G-code đầu ra thất bại. Có thể thẻ SD bị khóa ghi?\n"
|
||||
"Thông báo lỗi: %1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "Sao chép G-code tạm thời sang G-code đầu ra thất bại. Có thể có vấn đề với thiết bị đích, vui lòng thử xuất lại hoặc dùng thiết bị khác. G-code đầu ra bị hỏng ở %1%.tmp."
|
||||
@@ -6871,6 +6883,9 @@ msgstr "Hiện đường viền xung quanh vật thể đã chọn trong cảnh
|
||||
msgid "Preferences"
|
||||
msgstr "Tùy chọn"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -9307,7 +9322,6 @@ msgstr "Bạn có muốn tiếp tục?"
|
||||
msgid "Language selection"
|
||||
msgstr "Chọn ngôn ngữ"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Châu Á-Thái Bình Dương"
|
||||
|
||||
@@ -9423,6 +9437,9 @@ msgstr "Đường dẫn phiên bản hiện tại: "
|
||||
msgid "General"
|
||||
msgstr "Chung"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Ngôn ngữ"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "Hệ mét"
|
||||
|
||||
@@ -9651,6 +9668,12 @@ msgstr "Quản lý nhiều thiết bị"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "Với tùy chọn này được bật, bạn có thể gửi tác vụ đến nhiều thiết bị cùng lúc và quản lý nhiều thiết bị."
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Hiện cửa sổ để chọn chế độ nhóm filament"
|
||||
@@ -10437,6 +10460,9 @@ msgstr "Sao chép tất cả các giá trị kế thừa từ preset cha vào pr
|
||||
msgid "Detach from parent"
|
||||
msgstr "Tách khỏi vật thể cha"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Preset độc lập"
|
||||
@@ -12465,6 +12491,17 @@ msgstr "Hiển thị/Ẩn hộp thoại cài đặt thiết bị 3Dconnexion"
|
||||
msgid "Switch table page"
|
||||
msgstr "Chuyển trang bảng"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "Hiển thị danh sách phím tắt"
|
||||
|
||||
@@ -12631,15 +12668,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "Chuyển đổi giữa Chuẩn bị/Xem trước"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "Mở vòng quay thao tác nhanh"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "Bàn in"
|
||||
|
||||
@@ -12925,8 +12953,8 @@ msgstr "Sửa chữa đã hủy"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "Sao chép file %1% sang %2% thất bại: %3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Cần kiểm tra các thay đổi chưa lưu trước khi cập nhật cấu hình."
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "Gói cấu hình: "
|
||||
@@ -12934,6 +12962,12 @@ msgstr "Gói cấu hình: "
|
||||
msgid " updated to "
|
||||
msgstr " đã cập nhật lên "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "Cần kiểm tra các thay đổi chưa lưu trước khi cập nhật cấu hình."
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "Mở file G-code:"
|
||||
|
||||
@@ -14585,6 +14619,9 @@ msgstr "Thẳng hàng căn chỉnh"
|
||||
msgid "Concentric"
|
||||
msgstr "Đồng tâm"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "Đường cong Hilbert"
|
||||
|
||||
@@ -14674,29 +14711,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "Thứ tự lấp bề mặt trên"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Hướng lấp các bề mặt trên khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n"
|
||||
"Ra ngoài bắt đầu từ tâm bề mặt, nhờ đó vật liệu dư bị đẩy về phía mép nơi ít nhìn thấy nhất. Vào trong bắt đầu từ mép và kết thúc bằng các đường cong hẹp ở tâm.\n"
|
||||
"Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ."
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "Thứ tự lấp bề mặt dưới"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"Hướng lấp các bề mặt dưới khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n"
|
||||
"Vào trong bắt đầu mỗi bề mặt bằng các đường cong ngoài rộng hơn, giúp cải thiện độ bám lớp đầu tiên trên những bàn in mà các đường cong hẹp ở tâm có thể không dính. Ra ngoài bắt đầu từ tâm, đẩy vật liệu dư về phía mép.\n"
|
||||
"Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ."
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "Mẫu infill đặc bên trong"
|
||||
@@ -23019,6 +23048,33 @@ msgstr ""
|
||||
"Tránh cong vênh\n"
|
||||
"Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "Chọn ngôn ngữ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "Mở vòng quay thao tác nhanh"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Hướng lấp các bề mặt trên khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n"
|
||||
#~ "Ra ngoài bắt đầu từ tâm bề mặt, nhờ đó vật liệu dư bị đẩy về phía mép nơi ít nhìn thấy nhất. Vào trong bắt đầu từ mép và kết thúc bằng các đường cong hẹp ở tâm.\n"
|
||||
#~ "Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "Hướng lấp các bề mặt dưới khi dùng mẫu dựa trên tâm (Đồng tâm, Dây cung Archimedes, Xoắn ốc bát giác).\n"
|
||||
#~ "Vào trong bắt đầu mỗi bề mặt bằng các đường cong ngoài rộng hơn, giúp cải thiện độ bám lớp đầu tiên trên những bàn in mà các đường cong hẹp ở tâm có thể không dính. Ra ngoài bắt đầu từ tâm, đẩy vật liệu dư về phía mép.\n"
|
||||
#~ "Mặc định dùng thứ tự đường đi ngắn nhất, có thể chạy theo hướng bất kỳ."
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Xem trực tiếp trên Wayland thuần cần GStreamer GTK video sink. Vui lòng cài đặt plugin gtksink cho GStreamer, sau đó khởi động lại OrcaSlicer."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Slic3rPE\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2026-06-11 12:37-0300\n"
|
||||
"Last-Translator: Handle <mail@bysb.net>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2361,13 +2361,6 @@ msgstr "有更新可用。打开预设包对话框进行更新。"
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s 已被移除。"
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "选择语言"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "语言"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
msgstr "切换 Orca Slicer 语言到 %s 失败。"
|
||||
@@ -2400,6 +2393,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "无法打开插件对话框(未知错误)。"
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "插件终端"
|
||||
|
||||
@@ -4437,6 +4443,12 @@ msgstr ""
|
||||
"将临时 G-Code 复制到输出 G-Code 失败。也许 SD 卡被写锁定了?\n"
|
||||
"错误消息:%1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "将临时 G-Code 复制到输出 G-Code 失败。目标设备可能有问题,请再次尝试导出或使用其他设备。损坏的输出 G-Code 在 %1%.tmp。"
|
||||
@@ -6337,6 +6349,9 @@ msgstr "在3D场景中显示选中对象的轮廓"
|
||||
msgid "Preferences"
|
||||
msgstr "偏好设置"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8585,7 +8600,6 @@ msgstr "是否继续?"
|
||||
msgid "Language selection"
|
||||
msgstr "语言选择"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "亚太"
|
||||
|
||||
@@ -8683,6 +8697,9 @@ msgstr "当前实例路径"
|
||||
msgid "General"
|
||||
msgstr "常规"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "语言"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "公制(Metric)"
|
||||
|
||||
@@ -8887,6 +8904,12 @@ msgstr "多设备管理"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "启用此选项后,您可以同时向多个设备发送任务并管理多个设备。"
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "弹出选择耗材丝分组模式"
|
||||
|
||||
@@ -9598,6 +9621,9 @@ msgstr "将父预设继承的所有数值复制到当前预设,并解除继承
|
||||
msgid "Detach from parent"
|
||||
msgstr "与父级分离"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "独立预设"
|
||||
@@ -11453,6 +11479,17 @@ msgstr "显示/隐藏 3Dconnexion设备的设置对话框"
|
||||
msgid "Switch table page"
|
||||
msgstr "切换标签页"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "显示键盘快捷键列表"
|
||||
|
||||
@@ -11620,15 +11657,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "准备/预览之间的切换"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "打开快捷操作盘"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "准备"
|
||||
|
||||
@@ -11896,8 +11924,8 @@ msgstr "修复被取消"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "从%1%拷贝文件到%2%失败:%3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "需要在配置更新之前检查没有保存的参数修改。"
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "配置包:"
|
||||
@@ -11905,6 +11933,12 @@ msgstr "配置包:"
|
||||
msgid " updated to "
|
||||
msgstr "更新到"
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "需要在配置更新之前检查没有保存的参数修改。"
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "打开G-code文件:"
|
||||
|
||||
@@ -13431,6 +13465,9 @@ msgstr "直线排列"
|
||||
msgid "Concentric"
|
||||
msgstr "同心"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "希尔伯特曲线"
|
||||
|
||||
@@ -13524,29 +13561,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "顶面填充顺序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充顶面的方向。\n"
|
||||
"向外从表面中心开始,因此多余的材料会被推向边缘等最不显眼的位置。向内从边缘开始,并以中心处的紧密曲线结束。\n"
|
||||
"默认使用最短路径排序,可能沿任一方向进行。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "底面填充顺序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充底面的方向。\n"
|
||||
"向内以较宽的外侧曲线开始每个表面,这可以改善在热床上的首层附着,因为中心处的紧密曲线可能无法粘牢。向外从中心开始,将多余的材料推向边缘。\n"
|
||||
"默认使用最短路径排序,可能沿任一方向进行。"
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "内部实心填充图案"
|
||||
@@ -21428,6 +21457,33 @@ msgstr ""
|
||||
"避免翘曲\n"
|
||||
"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "选择语言"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "打开快捷操作盘"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充顶面的方向。\n"
|
||||
#~ "向外从表面中心开始,因此多余的材料会被推向边缘等最不显眼的位置。向内从边缘开始,并以中心处的紧密曲线结束。\n"
|
||||
#~ "默认使用最短路径排序,可能沿任一方向进行。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "使用基于中心的图案(同心、阿基米德和弦、八角螺旋)时填充底面的方向。\n"
|
||||
#~ "向内以较宽的外侧曲线开始每个表面,这可以改善在热床上的首层附着,因为中心处的紧密曲线可能无法粘牢。向外从中心开始,将多余的材料推向边缘。\n"
|
||||
#~ "默认使用最短路径排序,可能沿任一方向进行。"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"POT-Creation-Date: 2026-09-11 12:33+0800\n"
|
||||
"PO-Revision-Date: 2025-11-28 13:48-0600\n"
|
||||
"Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2425,13 +2425,6 @@ msgstr "有可用的更新。請開啟預設組合對話框進行更新。"
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s 已移除。"
|
||||
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "選擇語言"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "語言"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Switching Orca Slicer to language %s failed."
|
||||
@@ -2469,6 +2462,19 @@ msgstr ""
|
||||
msgid "Failed to open the Plugins dialog (unknown error)."
|
||||
msgstr "無法開啟外掛對話框(未知錯誤)。"
|
||||
|
||||
msgid "Plugins refreshed."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Failed to refresh plugins: %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select plugin package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Plugin files (*.py;*.whl)|*.py;*.whl"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Plugin Terminal"
|
||||
msgstr "外掛終端機"
|
||||
@@ -4550,6 +4556,12 @@ msgstr ""
|
||||
"錯誤訊息:%1%將臨時的 G-code 複製到輸出的 G-code 失敗 ,也許 SD 卡寫入被鎖定?\n"
|
||||
"錯誤訊息:%1%"
|
||||
|
||||
#, boost-format
|
||||
msgid ""
|
||||
"Copying of the temporary G-code to the output G-code failed.\n"
|
||||
"Error message: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Copying of the temporary G-code to the output G-code failed. There might be problem with target device, please try exporting again or using different device. The corrupted output G-code is at %1%.tmp."
|
||||
msgstr "將臨時 G-code 複製到輸出 G-code 時失敗。目標裝置可能存在問題,請嘗試再次匯出或使用不同的裝置。損壞的 G-code 已輸出為 %1%.tmp。將臨時 G-code 複製到輸出 G-code 時失敗。目標裝置可能存在問題,請嘗試再次匯出或使用不同的裝置。損壞的 G-code 已輸出為 %1%.tmp。"
|
||||
@@ -6467,6 +6479,9 @@ msgstr "在 3D 場景中顯示選定物件的輪廓"
|
||||
msgid "Preferences"
|
||||
msgstr "偏好設定"
|
||||
|
||||
msgid "Open speed dial..."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Menu"
|
||||
msgid "Edit"
|
||||
@@ -8751,7 +8766,6 @@ msgstr "是否繼續?"
|
||||
msgid "Language selection"
|
||||
msgstr "語言選擇"
|
||||
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "亞太"
|
||||
|
||||
@@ -8856,6 +8870,9 @@ msgstr "目前實例路徑:"
|
||||
msgid "General"
|
||||
msgstr "一般"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "語言"
|
||||
|
||||
msgid "Metric"
|
||||
msgstr "公制"
|
||||
|
||||
@@ -9060,6 +9077,12 @@ msgstr "多臺裝置管理"
|
||||
msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."
|
||||
msgstr "啟用時可以同時傳送到並管理多個機臺。"
|
||||
|
||||
msgid "Open the Speed Dial with the Space key"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "彈出視窗選擇線材分組模式"
|
||||
|
||||
@@ -9771,6 +9794,9 @@ msgstr "將父配置繼承的所有數值複製到目前的配置,並解除繼
|
||||
msgid "Detach from parent"
|
||||
msgstr "從父預設分離"
|
||||
|
||||
msgid "Save without parent"
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "獨立配置"
|
||||
@@ -11661,6 +11687,17 @@ msgstr "顯示/隱藏 3Dconnexion 裝置的設定對話框"
|
||||
msgid "Switch table page"
|
||||
msgstr "切換表單頁面"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
msgid "Open speed dial"
|
||||
msgstr ""
|
||||
|
||||
msgid "Run a Speed Dial favourite (while the Speed Dial is open)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show keyboard shortcuts list"
|
||||
msgstr "顯示鍵盤快速鍵清單"
|
||||
|
||||
@@ -11825,15 +11862,6 @@ msgstr "Tab"
|
||||
msgid "Switch between Prepare/Preview"
|
||||
msgstr "在準備/預覽模式之中切換"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
|
||||
# AI Translated
|
||||
msgid "Open actions speed dial"
|
||||
msgstr "開啟操作快捷選單"
|
||||
|
||||
msgid "Plater"
|
||||
msgstr "準備"
|
||||
|
||||
@@ -12100,8 +12128,8 @@ msgstr "修復被取消"
|
||||
msgid "Copying of file %1% to %2% failed: %3%"
|
||||
msgstr "從 %1% 複製檔案到 %2% 失敗:%3%"
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "在設定更新之前需要檢查未儲存的設定變更。"
|
||||
msgid "Downloading new vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration package: "
|
||||
msgstr "設定檔:"
|
||||
@@ -12109,6 +12137,12 @@ msgstr "設定檔:"
|
||||
msgid " updated to "
|
||||
msgstr "更新到 "
|
||||
|
||||
msgid "Failed to download vendor profile(s): "
|
||||
msgstr ""
|
||||
|
||||
msgid "Please check any unsaved changes before updating the configuration."
|
||||
msgstr "在設定更新之前需要檢查未儲存的設定變更。"
|
||||
|
||||
msgid "Open G-code file:"
|
||||
msgstr "開啟 G-code 檔案:"
|
||||
|
||||
@@ -13646,6 +13680,9 @@ msgstr "直線排列"
|
||||
msgid "Concentric"
|
||||
msgstr "同心"
|
||||
|
||||
msgid "Spiral Inset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hilbert Curve"
|
||||
msgstr "希爾伯特曲線"
|
||||
|
||||
@@ -13735,29 +13772,21 @@ msgstr ""
|
||||
msgid "Top surface fill order"
|
||||
msgstr "頂面填充順序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which top surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,頂面填充的方向。\n"
|
||||
"「向外」從表面中心開始,因此多餘的材料會被推向最不明顯的邊緣。「向內」從邊緣開始,並以中心的緊密曲線結束。\n"
|
||||
"預設使用最短路徑排序,方向可能為任一種。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom surface fill order"
|
||||
msgstr "底面填充順序"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Spiral Inset, Archimedean Chords, Octagram Spiral).\n"
|
||||
"Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
"Default uses shortest-path ordering, which may run in either direction."
|
||||
msgstr ""
|
||||
"使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,底面填充的方向。\n"
|
||||
"「向內」讓每個表面從較寬的外側曲線開始,可改善中心緊密曲線可能無法附著的列印板上的第一層附著。「向外」從中心開始,將多餘的材料推向邊緣。\n"
|
||||
"預設使用最短路徑排序,方向可能為任一種。"
|
||||
|
||||
msgid "Internal solid infill pattern"
|
||||
msgstr "內部實心填充圖案"
|
||||
@@ -21642,6 +21671,33 @@ msgstr ""
|
||||
"避免翹曲\n"
|
||||
"您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。"
|
||||
|
||||
#~ msgid "Select the language"
|
||||
#~ msgstr "選擇語言"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Open actions speed dial"
|
||||
#~ msgstr "開啟操作快捷選單"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which top surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Outward starts at the center of the surface, so any excess material is pushed towards the edge where it is least visible. Inward starts at the edge and ends with the tight curves at the center.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,頂面填充的方向。\n"
|
||||
#~ "「向外」從表面中心開始,因此多餘的材料會被推向最不明顯的邊緣。「向內」從邊緣開始,並以中心的緊密曲線結束。\n"
|
||||
#~ "預設使用最短路徑排序,方向可能為任一種。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid ""
|
||||
#~ "Direction in which bottom surfaces are filled when using a center-based pattern (Concentric, Archimedean Chords, Octagram Spiral).\n"
|
||||
#~ "Inward starts each surface with the wider outer curves, which improves first layer adhesion on build plates where the tight curves at the center may not stick. Outward starts at the center, pushing any excess material towards the edge.\n"
|
||||
#~ "Default uses shortest-path ordering, which may run in either direction."
|
||||
#~ msgstr ""
|
||||
#~ "使用以中心為基礎的圖樣(同心、阿基米德弦線、八角星螺旋)時,底面填充的方向。\n"
|
||||
#~ "「向內」讓每個表面從較寬的外側曲線開始,可改善中心緊密曲線可能無法附著的列印板上的第一層附著。「向外」從中心開始,將多餘的材料推向邊緣。\n"
|
||||
#~ "預設使用最短路徑排序,方向可能為任一種。"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。"
|
||||
|
||||
|
||||
@@ -118,6 +118,36 @@ var LangText = {
|
||||
orca10: "Not connected",
|
||||
orca11: "Connected",
|
||||
orca12: "Note: When Stealth Mode is enabled, your user profiles will not be backed up to Orca Cloud.",
|
||||
sd_search: "Search actions",
|
||||
sd_clear: "Clear",
|
||||
sd_search_n: "Search %s actions",
|
||||
sd_showing: "Showing",
|
||||
sd_of: "of",
|
||||
sd_actions: "actions",
|
||||
sd_recent: "recent",
|
||||
sd_matches: "matches",
|
||||
sd_tabs: "tabs",
|
||||
sd_no_match: "No actions match",
|
||||
sd_total: "Total",
|
||||
sd_no_actions: "No actions yet",
|
||||
sd_no_tabs_match: "No tabs match",
|
||||
sd_no_tabs: "No tabs",
|
||||
sd_go_to_pct: "Go to %s% of the layer range",
|
||||
sd_enter_pct: "Enter a layer percentage (0-100)",
|
||||
sd_go_layer_ph: "Go to layer % (0-100)",
|
||||
sd_go_tab_ph: "Go to tab",
|
||||
sd_favs_full: "Favourites are full",
|
||||
sd_max: "max",
|
||||
sd_pin_fav: "Pin to favourites (Ctrl+B)",
|
||||
sd_unpin_fav: "Unpin from favourites (Ctrl+B)",
|
||||
sd_remove_fav: "Remove from favourites",
|
||||
sd_favourite: "Favourite",
|
||||
sd_move_left: "Move left",
|
||||
sd_move_right: "Move right",
|
||||
sd_unpin: "Unpin",
|
||||
sd_mode_advanced: "Advanced",
|
||||
sd_mode_expert: "Expert",
|
||||
sd_mode_develop: "Developer",
|
||||
},
|
||||
ca_ES: {
|
||||
t1: "Benvingut a Orca Slicer",
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<link rel="stylesheet" href="./style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
<script type="text/javascript" src="../../include/globalapi.js"></script>
|
||||
<script type="text/javascript" src="../../data/text.js"></script>
|
||||
<script src="../../js/fuzzy-search.js"></script>
|
||||
<script src="./speeddial.js"></script>
|
||||
</head>
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
// node vm can exercise the pure helpers (searchActions / filterTabs / actionLabel / nextSel / commandList).
|
||||
|
||||
// ---- state (populated by the C++ bridge via window.HandleStudio) ----
|
||||
var ACTIONS = []; // [{id,title,source,group,input,shortcut}], already frecency-sorted by C++
|
||||
var ACTIONS = []; // [{id,title,source,group,input,icon,mode}], already frecency-sorted by C++
|
||||
var FAVS = []; // [id...]
|
||||
var RECENTS = []; // [{id,title,source,group,input,shortcut}] - last-N launched
|
||||
var RECENTS = []; // [{id,title,source,group,input,icon,mode}] - last-N launched
|
||||
var query = "";
|
||||
var sel = { zone: "list", i: 0 }; // zone: 'list' | 'fav'
|
||||
var lastResizeHeight = 0;
|
||||
@@ -15,6 +15,26 @@ var matchIndex = {};
|
||||
var USER_MODE = "simple";
|
||||
var MODE_RANK = { simple: 0, advanced: 1, expert: 2, develop: 3 };
|
||||
|
||||
// Search ranking weights: every contiguous match must outrank every fuzzy one regardless of field,
|
||||
// and title must outrank group, which outranks source.
|
||||
var SCORE_CONTIGUOUS = 100000;
|
||||
var SCORE_TITLE = 2000;
|
||||
var SCORE_GROUP = 1000;
|
||||
|
||||
// Localized lookup for strings this page builds at runtime. text.js (loaded before this script)
|
||||
// defines LangText; a missing entry falls back to the English literal. Extra args replace
|
||||
// successive %s placeholders.
|
||||
function T(key, fallback) {
|
||||
var table = (typeof LangText !== "undefined" && LangText) || null;
|
||||
var lang = "en";
|
||||
try { lang = localStorage.getItem(LANG_COOKIE_NAME) || "en"; } catch (e) {}
|
||||
var s = table && table[lang] && table[lang][key] !== undefined ? table[lang][key] :
|
||||
table && table.en && table.en[key] !== undefined ? table.en[key] : fallback;
|
||||
for (var i = 2; i < arguments.length; i++)
|
||||
s = s.replace("%s", arguments[i]);
|
||||
return s;
|
||||
}
|
||||
|
||||
// ---- windowed list render ----------------------------------------------------
|
||||
// The command list is rendered in windows (append-on-scroll) so a huge settings pool doesn't build
|
||||
// the whole DOM per keystroke. Rows are exactly ROW_H tall (matches .row min-height 44px; see --row-h,
|
||||
@@ -36,11 +56,11 @@ var searchNeedle = "";
|
||||
var phase = "commands";
|
||||
var tabOptions = []; // [{id,title}] - notebook pages, fetched on entering the tab phase
|
||||
|
||||
// why: the fuzzy matcher (NormText/FuzzyRangesNorm/WholeWordRangesNorm) lives in shared
|
||||
// why: the fuzzy matcher (NormText/FuzzyRangesNorm) lives in shared
|
||||
// ../../js/fuzzy-search.js, loaded before this script. Search is always case-insensitive.
|
||||
|
||||
// element handles, assigned in OnInit (kept null so load-time touches no DOM)
|
||||
var qEl = null, listEl = null, favEl = null, clearEl = null, eyeEl = null, countEl = null, headEl = null;
|
||||
var qEl = null, listEl = null, favEl = null, clearEl = null, eyeEl = null, countEl = null;
|
||||
|
||||
// ---- pure helpers (no DOM; unit-tested) -------------------------------------
|
||||
// Pre-normalized haystacks, cached on the action object. The fold is length-preserving (1:1 per
|
||||
@@ -89,14 +109,20 @@ function fieldMatchScore(norm, wwRe) {
|
||||
return { score: 1000 - r[0][0] * 10 - gaps * 10, ranges: r, contiguous: r.length === 1 && len === searchNeedle.length };
|
||||
}
|
||||
|
||||
// Combine the per-field match scores into one comparable value. Ranking tiers, strongest first:
|
||||
// Combine the per-field match scores into one comparable value, or null when no field matched.
|
||||
// Ranking tiers, strongest first:
|
||||
// tier (contiguous/perfect vs fuzzy) > field (title > group > source) > start/gaps.
|
||||
// The additive weights keep every contiguous match above every fuzzy one regardless of field.
|
||||
function scoreFields(t, g, s) {
|
||||
var best = -1;
|
||||
if (t) best = Math.max(best, (t.contiguous ? 100000 : 0) + 2000 + t.score);
|
||||
if (g) best = Math.max(best, (g.contiguous ? 100000 : 0) + 1000 + g.score);
|
||||
if (s) best = Math.max(best, (s.contiguous ? 100000 : 0) + s.score);
|
||||
var best = null;
|
||||
function consider(m, weight) {
|
||||
if (!m) return;
|
||||
var v = (m.contiguous ? SCORE_CONTIGUOUS : 0) + weight + m.score;
|
||||
best = best === null ? v : Math.max(best, v);
|
||||
}
|
||||
consider(t, SCORE_TITLE);
|
||||
consider(g, SCORE_GROUP);
|
||||
consider(s, 0);
|
||||
return best;
|
||||
}
|
||||
|
||||
@@ -125,7 +151,7 @@ function searchActions(actions, query) {
|
||||
var g = fieldMatchScore(groupNorm(a), wwRe);
|
||||
var s = fieldMatchScore(sourceNorm(a), wwRe);
|
||||
var score = scoreFields(t, g, s);
|
||||
if (score < 0) continue;
|
||||
if (score === null) continue;
|
||||
// Ranges are per-field against the ACTUAL text drawn: title for the row-name, and group (or
|
||||
// source when group is empty) for the eyebrow - so highlight offsets stay aligned to the label.
|
||||
matchIndex[a.id] = {
|
||||
@@ -198,7 +224,8 @@ function favIndexForDigit(d) {
|
||||
}
|
||||
|
||||
function resultCountText(total, shown, query) {
|
||||
return (query || "").trim() ? "Showing " + shown + " of " + total + " actions" : total + " actions";
|
||||
var n = total + " " + T("sd_actions", "actions");
|
||||
return (query || "").trim() ? T("sd_showing", "Showing") + " " + shown + " " + T("sd_of", "of") + " " + n : n;
|
||||
}
|
||||
|
||||
// Display label for a notebook tab. Trim any stray whitespace; pages added with an empty title
|
||||
@@ -259,7 +286,7 @@ function commandList(actions, recents, query) {
|
||||
// visible favourites, list zone the active commands list. `actions` must be the already-resolved
|
||||
// list (recents for an empty query, the filtered list otherwise) - pure so runSelected() shares
|
||||
// one lookup and the node-vm test can call it directly.
|
||||
function selectedActionId(sel, actions, favIds, query) {
|
||||
function selectedActionId(sel, actions, favIds) {
|
||||
if (sel.zone === "fav")
|
||||
return favIds[sel.i];
|
||||
if (!actions || !actions.length)
|
||||
@@ -286,9 +313,9 @@ function needsModeSwitch(item, userMode) {
|
||||
// Short mode tag for an action that needs a switch, or "" when it is already available.
|
||||
function modeBadge(item, userMode) {
|
||||
if (!needsModeSwitch(item, userMode)) return "";
|
||||
if (item.mode === "develop") return "Developer";
|
||||
if (item.mode === "expert") return "Expert";
|
||||
if (item.mode === "advanced") return "Advanced";
|
||||
if (item.mode === "develop") return T("sd_mode_develop", "Developer");
|
||||
if (item.mode === "expert") return T("sd_mode_expert", "Expert");
|
||||
if (item.mode === "advanced") return T("sd_mode_advanced", "Advanced");
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -334,12 +361,7 @@ function stateFromPayload(payload) {
|
||||
actions: payload.actions || [],
|
||||
favourites: payload.favourites || [],
|
||||
recent: payload.recent || [],
|
||||
userMode: payload.user_mode || "simple",
|
||||
query: "",
|
||||
sel: { zone: "list", i: 0 },
|
||||
lastResizeHeight: 0,
|
||||
phase: "commands",
|
||||
tabOptions: []
|
||||
userMode: payload.user_mode || "simple"
|
||||
};
|
||||
}
|
||||
|
||||
@@ -395,19 +417,19 @@ window.HandleStudio = function (payload) {
|
||||
FAVS = next.favourites;
|
||||
RECENTS = next.recent;
|
||||
USER_MODE = next.userMode;
|
||||
query = next.query;
|
||||
sel = next.sel;
|
||||
lastResizeHeight = next.lastResizeHeight;
|
||||
phase = next.phase;
|
||||
tabOptions = next.tabOptions;
|
||||
// A fresh payload re-opens the main phase; C++ never rehydrates the transient phase/query state.
|
||||
phase = "commands";
|
||||
tabOptions = [];
|
||||
query = "";
|
||||
sel = { zone: "list", i: 0 };
|
||||
lastResizeHeight = 0;
|
||||
// why: builtKey caches phase|query so renderCommandsList can skip a rebuild on arrow-nav.
|
||||
// It survives a re-open (which never goes through exitPhase), so without a reset the cached
|
||||
// empty-query key would skip the rebuild and leave stale list content.
|
||||
builtKey = "";
|
||||
if (headEl) headEl.hidden = false;
|
||||
if (qEl) {
|
||||
qEl.value = "";
|
||||
qEl.placeholder = "Search " + ACTIONS.length + " actions";
|
||||
qEl.placeholder = T("sd_search_n", "Search %s actions", ACTIONS.length);
|
||||
syncClearButton();
|
||||
}
|
||||
render({ resize: true, resetScroll: true });
|
||||
@@ -422,7 +444,7 @@ window.HandleStudio = function (payload) {
|
||||
var fid = payload.id;
|
||||
if (fid && FAVS.indexOf(fid) !== -1) FAVS.splice(FAVS.indexOf(fid), 1);
|
||||
render({ resize: true, keepScroll: true });
|
||||
flashHint("Favourites are full (" + (payload.limit || K_FAV_LIMIT) + " max)");
|
||||
flashHint(T("sd_favs_full", "Favourites are full") + " (" + (payload.limit || K_FAV_LIMIT) + " " + T("sd_max", "max") + ")");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -485,7 +507,7 @@ function pinSvg(on) {
|
||||
function setPinState(pin, on) {
|
||||
pin.classList.toggle("on", on);
|
||||
pin.innerHTML = pinSvg(on);
|
||||
pin.title = on ? "Unpin from favourites (Ctrl+B)" : "Pin to favourites (Ctrl+B)";
|
||||
pin.title = on ? T("sd_unpin_fav", "Unpin from favourites (Ctrl+B)") : T("sd_pin_fav", "Pin to favourites (Ctrl+B)");
|
||||
}
|
||||
|
||||
// ---- render ------------------------------------------------------------------
|
||||
@@ -519,15 +541,16 @@ function renderFav() {
|
||||
var badge = document.createElement("span");
|
||||
badge.className = "fav-slot";
|
||||
badge.textContent = slot;
|
||||
badge.title = slot === "0" ? "Favourite 10 (Alt+0)" : "Favourite " + slot + " (Alt+" + slot + ")";
|
||||
badge.title = slot === "0" ? T("sd_favourite", "Favourite") + " 10 (Alt+0)" :
|
||||
T("sd_favourite", "Favourite") + " " + slot + " (Alt+" + slot + ")";
|
||||
tile.appendChild(badge);
|
||||
}
|
||||
// Direct removal: a hover-revealed ✕ in the tile's corner. click() stops propagation so it
|
||||
// unpins without activating the action.
|
||||
var unpin = document.createElement("button");
|
||||
unpin.className = "fav-unpin";
|
||||
unpin.title = "Remove from favourites";
|
||||
unpin.setAttribute("aria-label", "Remove from favourites");
|
||||
unpin.title = T("sd_remove_fav", "Remove from favourites");
|
||||
unpin.setAttribute("aria-label", T("sd_remove_fav", "Remove from favourites"));
|
||||
unpin.innerHTML = '<svg width="9" height="9" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>';
|
||||
unpin.onclick = function (ev) { ev.stopPropagation(); toggleFav(id); };
|
||||
tile.appendChild(unpin);
|
||||
@@ -567,9 +590,9 @@ function showFavMenu(x, y, id) {
|
||||
favMenuEl.innerHTML = "";
|
||||
var favs = currentVisibleFavs();
|
||||
var vi = favs.indexOf(id);
|
||||
addFavMenuItem("Move left", vi > 0, function () { moveFav(id, -1); });
|
||||
addFavMenuItem("Move right", vi >= 0 && vi < favs.length - 1, function () { moveFav(id, 1); });
|
||||
addFavMenuItem("Unpin", true, function () { toggleFav(id); });
|
||||
addFavMenuItem(T("sd_move_left", "Move left"), vi > 0, function () { moveFav(id, -1); });
|
||||
addFavMenuItem(T("sd_move_right", "Move right"), vi >= 0 && vi < favs.length - 1, function () { moveFav(id, 1); });
|
||||
addFavMenuItem(T("sd_unpin", "Unpin"), true, function () { toggleFav(id); });
|
||||
favMenuEl.hidden = false;
|
||||
favMenuEl.style.left = Math.max(0, Math.min(x, window.innerWidth - favMenuEl.offsetWidth - 4)) + "px";
|
||||
favMenuEl.style.top = Math.max(0, Math.min(y, window.innerHeight - favMenuEl.offsetHeight - 4)) + "px";
|
||||
@@ -598,52 +621,47 @@ function updateFavEyebrow(favs) {
|
||||
eyeEl.hidden = !a;
|
||||
}
|
||||
|
||||
// Row shell shared by action and tab rows: the row (selection class + aria label), the icon tile and
|
||||
// the text column. Returns the pieces the caller fills in (eyebrow/name/badge/pin, handlers).
|
||||
function beginRow(item, i, mono, ariaLabel) {
|
||||
var row = document.createElement("div");
|
||||
row.className = "row" + (sel.zone === "list" && sel.i === i ? " sel" : "");
|
||||
row.setAttribute("aria-label", ariaLabel);
|
||||
|
||||
var tile = document.createElement("div");
|
||||
tile.className = "tile";
|
||||
fillTile(tile, item, mono);
|
||||
|
||||
var left = document.createElement("div");
|
||||
left.className = "row-left";
|
||||
var line = document.createElement("div");
|
||||
line.className = "row-line";
|
||||
left.appendChild(line);
|
||||
row.appendChild(tile);
|
||||
row.appendChild(left);
|
||||
return { row: row, left: left, line: line };
|
||||
}
|
||||
|
||||
// A command/action row - used for search results, recents, and (because settings are actions now)
|
||||
// the setting options too. All rows are pinnable, so every row carries a bookmark.
|
||||
function renderActionRow(a, i) {
|
||||
var on = FAVS.indexOf(a.id) !== -1;
|
||||
var row = document.createElement("div");
|
||||
row.className = "row" + (sel.zone === "list" && sel.i === i ? " sel" : "");
|
||||
row.setAttribute("aria-label", actionLabel(a, ACTIONS));
|
||||
|
||||
var tile = document.createElement("div");
|
||||
tile.className = "tile";
|
||||
fillTile(tile, a);
|
||||
|
||||
var left = document.createElement("div");
|
||||
left.className = "row-left";
|
||||
var shell = beginRow(a, i, false, actionLabel(a, ACTIONS));
|
||||
var mi = matchIndex[a.id];
|
||||
// The eyebrow shows group when present, else source. Highlight with the ranges of whichever of the
|
||||
// two the eyebrow actually renders (so a "Recent Projects"/"Object" header match lights up like a
|
||||
// setting path does - the offsets are computed against the same string we are marking).
|
||||
var eyebrow = a.group || a.source;
|
||||
var eyebrowMatch = mi ? (mi.useEyebrowGroup ? mi.group : mi.source) : null;
|
||||
var sourceEl = markedText("row-eyebrow", eyebrow, eyebrowMatch);
|
||||
var line = document.createElement("div");
|
||||
line.className = "row-line";
|
||||
var name = markedText("row-name", a.title, mi ? mi.title : null);
|
||||
line.appendChild(name);
|
||||
shell.left.insertBefore(markedText("row-eyebrow", eyebrow, eyebrowMatch), shell.line);
|
||||
shell.line.appendChild(markedText("row-name", a.title, mi ? mi.title : null));
|
||||
var badge = modeBadge(a, USER_MODE);
|
||||
if (badge) {
|
||||
var tag = document.createElement("span");
|
||||
tag.className = "row-mode";
|
||||
tag.textContent = badge;
|
||||
line.appendChild(tag);
|
||||
shell.line.appendChild(tag);
|
||||
}
|
||||
if (a.shortcut) {
|
||||
var sc = document.createElement("div");
|
||||
sc.className = "row-sc";
|
||||
a.shortcut.split("+").forEach(function (k) {
|
||||
var key = document.createElement("kbd");
|
||||
key.textContent = k;
|
||||
sc.appendChild(key);
|
||||
});
|
||||
line.appendChild(sc);
|
||||
}
|
||||
left.appendChild(sourceEl);
|
||||
left.appendChild(line);
|
||||
row.appendChild(tile);
|
||||
row.appendChild(left);
|
||||
|
||||
var pin = document.createElement("button");
|
||||
pin.className = "pin";
|
||||
@@ -651,11 +669,11 @@ function renderActionRow(a, i) {
|
||||
pin.onclick = function (ev) { ev.stopPropagation(); toggleFav(a.id); };
|
||||
// why: two quick fav/unfav clicks must not dblclick-run the row
|
||||
pin.ondblclick = function (ev) { ev.stopPropagation(); };
|
||||
row.appendChild(pin);
|
||||
shell.row.appendChild(pin);
|
||||
|
||||
row.onclick = function () { sel = { zone: "list", i: i }; render({ resize: true }); };
|
||||
row.ondblclick = function () { sel = { zone: "list", i: i }; activateEntry(a); };
|
||||
return row;
|
||||
shell.row.onclick = function () { sel = { zone: "list", i: i }; render({ resize: true }); };
|
||||
shell.row.ondblclick = function () { sel = { zone: "list", i: i }; activateEntry(a); };
|
||||
return shell.row;
|
||||
}
|
||||
|
||||
// Append rows [from, to) into listEl, always inserting before the bottom spacer so row order is preserved.
|
||||
@@ -731,6 +749,18 @@ function updatePins(list) {
|
||||
}
|
||||
}
|
||||
|
||||
// Replace the list with a single placeholder message (no matches / empty state). Shared by all phases.
|
||||
function renderEmpty(text) {
|
||||
listEl.innerHTML = "";
|
||||
spacerEl = null;
|
||||
listEl.className = "dial-list empty";
|
||||
if (countEl) countEl.hidden = true;
|
||||
var empty = document.createElement("div");
|
||||
empty.className = "dial-empty";
|
||||
empty.textContent = text;
|
||||
listEl.appendChild(empty);
|
||||
}
|
||||
|
||||
function renderCommandsList() {
|
||||
var list = currentList();
|
||||
var total = list.length;
|
||||
@@ -742,14 +772,8 @@ function renderCommandsList() {
|
||||
matchIndex = {};
|
||||
|
||||
if (!total) {
|
||||
listEl.innerHTML = "";
|
||||
spacerEl = null;
|
||||
listEl.className = "dial-list empty";
|
||||
if (countEl) countEl.hidden = true;
|
||||
var empty = document.createElement("div");
|
||||
empty.className = "dial-empty";
|
||||
empty.textContent = showList ? ("No actions match (Total: " + ACTIONS.length + ")") : "No actions yet";
|
||||
listEl.appendChild(empty);
|
||||
renderEmpty(showList ? (T("sd_no_match", "No actions match") + " (" + T("sd_total", "Total") + ": " + ACTIONS.length + ")")
|
||||
: T("sd_no_actions", "No actions yet"));
|
||||
renderEnd = 0;
|
||||
builtKey = buildKey() + "|0";
|
||||
return;
|
||||
@@ -767,7 +791,7 @@ function renderCommandsList() {
|
||||
listEl.className = "dial-list";
|
||||
if (countEl) {
|
||||
countEl.hidden = false;
|
||||
countEl.textContent = showList ? resultCountText(ACTIONS.length, total, query) : total + " recent";
|
||||
countEl.textContent = showList ? resultCountText(ACTIONS.length, total, query) : total + " " + T("sd_recent", "recent");
|
||||
}
|
||||
updateSelection();
|
||||
updatePins(list);
|
||||
@@ -777,29 +801,14 @@ function renderCommandsList() {
|
||||
// tabTitle so pages added with an empty text (e.g. Home) still show a label.
|
||||
function renderTabRow(t, i) {
|
||||
var label = tabTitle(t);
|
||||
var row = document.createElement("div");
|
||||
row.className = "row" + (sel.zone === "list" && sel.i === i ? " sel" : "");
|
||||
row.setAttribute("aria-label", label);
|
||||
|
||||
var tile = document.createElement("div");
|
||||
tile.className = "tile";
|
||||
fillTile(tile, t, true);
|
||||
|
||||
var left = document.createElement("div");
|
||||
left.className = "row-left";
|
||||
var line = document.createElement("div");
|
||||
line.className = "row-line";
|
||||
var shell = beginRow(t, i, true, label);
|
||||
var name = document.createElement("div");
|
||||
name.className = "row-name";
|
||||
name.textContent = label;
|
||||
line.appendChild(name);
|
||||
left.appendChild(line);
|
||||
|
||||
row.appendChild(tile);
|
||||
row.appendChild(left);
|
||||
row.onclick = function () { sel = { zone: "list", i: i }; render({ resize: true }); };
|
||||
row.ondblclick = function () { sel = { zone: "list", i: i }; jumpToTab(t); };
|
||||
return row;
|
||||
shell.line.appendChild(name);
|
||||
shell.row.onclick = function () { sel = { zone: "list", i: i }; render({ resize: true }); };
|
||||
shell.row.ondblclick = function () { sel = { zone: "list", i: i }; jumpToTab(t); };
|
||||
return shell.row;
|
||||
}
|
||||
|
||||
function renderTabList() {
|
||||
@@ -808,12 +817,7 @@ function renderTabList() {
|
||||
listEl.innerHTML = "";
|
||||
|
||||
if (!list.length) {
|
||||
listEl.className = "dial-list empty";
|
||||
if (countEl) countEl.hidden = true;
|
||||
var empty = document.createElement("div");
|
||||
empty.className = "dial-empty";
|
||||
empty.textContent = q ? "No tabs match" : "No tabs";
|
||||
listEl.appendChild(empty);
|
||||
renderEmpty(q ? T("sd_no_tabs_match", "No tabs match") : T("sd_no_tabs", "No tabs"));
|
||||
return;
|
||||
}
|
||||
if (sel.zone === "list")
|
||||
@@ -821,20 +825,14 @@ function renderTabList() {
|
||||
listEl.className = "dial-list";
|
||||
if (countEl) {
|
||||
countEl.hidden = false;
|
||||
countEl.textContent = q ? list.length + " matches" : list.length + " tabs";
|
||||
countEl.textContent = q ? list.length + " " + T("sd_matches", "matches") : list.length + " " + T("sd_tabs", "tabs");
|
||||
}
|
||||
list.forEach(function (t, i) { listEl.appendChild(renderTabRow(t, i)); });
|
||||
}
|
||||
|
||||
function renderPercentList() {
|
||||
var q = (query || "").trim();
|
||||
listEl.innerHTML = "";
|
||||
listEl.className = "dial-list empty";
|
||||
if (countEl) countEl.hidden = true;
|
||||
var ph = document.createElement("div");
|
||||
ph.className = "dial-empty";
|
||||
ph.textContent = q ? ("Go to " + q + "% of the layer range") : "Enter a layer percentage (0-100)";
|
||||
listEl.appendChild(ph);
|
||||
renderEmpty(q ? T("sd_go_to_pct", "Go to %s% of the layer range", q) : T("sd_enter_pct", "Enter a layer percentage (0-100)"));
|
||||
}
|
||||
|
||||
function renderList() {
|
||||
@@ -936,7 +934,7 @@ function runSelected() {
|
||||
return;
|
||||
}
|
||||
var list = currentList();
|
||||
var id = selectedActionId(sel, list, currentVisibleFavs(), query);
|
||||
var id = selectedActionId(sel, list, currentVisibleFavs());
|
||||
if (id) activateEntry(byId(id));
|
||||
}
|
||||
|
||||
@@ -950,38 +948,43 @@ function runJumpToLayer(pct) {
|
||||
}
|
||||
|
||||
function jumpToTab(t) {
|
||||
SendMessage({ command: "go_to_tab", id: t.id, title: tabTitle(t) });
|
||||
var a = findActionByInput("tab");
|
||||
if (!a || !t) return;
|
||||
SendMessage({ command: "run_action", id: a.id, title: a.title, param: t.id });
|
||||
}
|
||||
|
||||
// Clear the shared query/cursor state when entering or leaving a phase. Callers set the
|
||||
// phase-specific placeholder, then render.
|
||||
function resetPhaseInput() {
|
||||
query = ""; qEl.value = ""; sel = { zone: "list", i: 0 };
|
||||
syncClearButton();
|
||||
}
|
||||
|
||||
function enterPercentPhase() {
|
||||
phase = "percent"; query = ""; qEl.value = "";
|
||||
sel = { zone: "list", i: 0 };
|
||||
qEl.placeholder = "Go to layer % (0-100)";
|
||||
syncClearButton();
|
||||
phase = "percent";
|
||||
resetPhaseInput();
|
||||
qEl.placeholder = T("sd_go_layer_ph", "Go to layer % (0-100)");
|
||||
render({ resize: true, resetScroll: true });
|
||||
qEl.focus();
|
||||
}
|
||||
|
||||
function enterTabsPhase() {
|
||||
phase = "tab"; tabOptions = []; query = ""; qEl.value = "";
|
||||
sel = { zone: "list", i: 0 };
|
||||
qEl.placeholder = "Go to tab";
|
||||
syncClearButton();
|
||||
phase = "tab"; tabOptions = [];
|
||||
resetPhaseInput();
|
||||
qEl.placeholder = T("sd_go_tab_ph", "Go to tab");
|
||||
render({ resize: true, resetScroll: true });
|
||||
qEl.focus();
|
||||
SendMessage({ command: "search_tabs" });
|
||||
}
|
||||
|
||||
function exitPhase() {
|
||||
phase = "commands"; tabOptions = []; query = ""; qEl.value = "";
|
||||
if (headEl) headEl.hidden = false;
|
||||
sel = { zone: "list", i: 0 };
|
||||
phase = "commands"; tabOptions = [];
|
||||
resetPhaseInput();
|
||||
// why: builtKey caches phase|query so renderCommandsList can skip a rebuild on arrow-nav/click.
|
||||
// It survives a second-phase exit (which never goes through exitPhase from the commands view),
|
||||
// so without a reset the cached empty-query key would skip the rebuild and leave stale content.
|
||||
builtKey = "";
|
||||
qEl.placeholder = "Search " + ACTIONS.length + " actions";
|
||||
syncClearButton();
|
||||
qEl.placeholder = T("sd_search_n", "Search %s actions", ACTIONS.length);
|
||||
render({ resize: true, resetScroll: true });
|
||||
qEl.focus();
|
||||
}
|
||||
@@ -991,13 +994,20 @@ function focusInput() { setTimeout(function () { if (qEl) qEl.focus(); }, 0); }
|
||||
// ---- init --------------------------------------------------------------------
|
||||
function OnInit() {
|
||||
qEl = $("q"); listEl = $("list"); favEl = $("favBar"); clearEl = $("clear"); eyeEl = $("favEyebrow"); countEl = $("count");
|
||||
headEl = document.querySelector(".dial-head");
|
||||
// text.js's TranslatePage() targets jQuery `.trans` nodes; this page has none and defines its own
|
||||
// `$`, so don't call it. Runtime strings go through T() instead.
|
||||
qEl.placeholder = T("sd_search", "Search actions");
|
||||
qEl.setAttribute("aria-label", T("sd_search", "Search actions"));
|
||||
if (clearEl) {
|
||||
clearEl.title = T("sd_clear", "Clear");
|
||||
clearEl.setAttribute("aria-label", T("sd_clear", "Clear"));
|
||||
}
|
||||
syncClearButton();
|
||||
|
||||
$("clear").onclick = function () {
|
||||
query = ""; qEl.value = ""; sel = { zone: "list", i: 0 };
|
||||
render({ resize: true, resetScroll: true }); qEl.focus();
|
||||
syncClearButton();
|
||||
resetPhaseInput();
|
||||
render({ resize: true, resetScroll: true });
|
||||
qEl.focus();
|
||||
};
|
||||
qEl.addEventListener("input", function () {
|
||||
query = qEl.value; sel = { zone: "list", i: 0 }; syncClearButton();
|
||||
@@ -1026,7 +1036,7 @@ function OnInit() {
|
||||
if (phase === "commands" && (e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey &&
|
||||
e.key.toLowerCase() === "b") {
|
||||
e.preventDefault();
|
||||
var id = selectedActionId(sel, currentList(), currentVisibleFavs(), query);
|
||||
var id = selectedActionId(sel, currentList(), currentVisibleFavs());
|
||||
if (id) toggleFav(id);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -109,6 +109,14 @@ ctx.searchActions(orientPool, "orient");
|
||||
assert.deepEqual(ctx.matchIndex.ao.title, [[5, 11]],
|
||||
"a whole-word match highlights the full word, not a scattered fuzzy pick");
|
||||
|
||||
// A fuzzy source-only match with a very late start still counts, even though its score is negative;
|
||||
// the old `score < 0` sentinel mistook it for "no field matched" and dropped the action.
|
||||
const negativePool = [
|
||||
{ id: "n", title: "Unrelated", source: "o" + "x".repeat(200) + "rnt", group: "", input: "" }
|
||||
];
|
||||
assert.equal(ctx.searchActions(negativePool, "ornt").length, 1,
|
||||
"a low-score fuzzy match is not mistaken for no match");
|
||||
|
||||
// commandList (the main-phase list) delegates to the ranked search for a typed query and returns
|
||||
// the mixed recents (no discrimination) for an empty query.
|
||||
const mixed = [
|
||||
@@ -122,22 +130,22 @@ assert.deepEqual(ctx.commandList(mixed, mixed.slice(0, 1), "").map(function (a)
|
||||
|
||||
// selectedActionId: resolves the active list (recents for an empty query, filtered list otherwise).
|
||||
assert.equal(
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [], ""), [], ""),
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [], ""), []),
|
||||
null,
|
||||
"Enter with an empty query and no recents must not resolve to an action the list never showed"
|
||||
);
|
||||
assert.equal(
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [], "rep"), [], "rep"),
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [], "rep"), []),
|
||||
"0123456789abcdef",
|
||||
"a typed query resolves the list selection"
|
||||
);
|
||||
assert.equal(
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [duplicateActions[0]], ""), [], ""),
|
||||
ctx.selectedActionId({ zone: "list", i: 0 }, ctx.commandList(duplicateActions, [duplicateActions[0]], ""), []),
|
||||
"0123456789abcdef",
|
||||
"Enter with an empty query resolves the recent entry"
|
||||
);
|
||||
assert.equal(
|
||||
ctx.selectedActionId({ zone: "fav", i: 0 }, duplicateActions, ["fedcba9876543210"], ""),
|
||||
ctx.selectedActionId({ zone: "fav", i: 0 }, duplicateActions, ["fedcba9876543210"]),
|
||||
"fedcba9876543210",
|
||||
"favourites stay runnable with an empty query - the fav bar is always visible"
|
||||
);
|
||||
|
||||
@@ -19,18 +19,31 @@ function Norm(ch, caseSensitive) {
|
||||
return caseSensitive ? folded : folded.toLowerCase(); // case-sensitivity is the only toggle
|
||||
}
|
||||
|
||||
// Pre-normalize a whole haystack with the SAME per-char fold FuzzyRanges uses, so a caller can match
|
||||
// it repeatedly against one cached string. The fold is 1:1 in length, so indices stay aligned to the
|
||||
// ORIGINAL text - the highlight ranges that FuzzyRangesNorm returns slice the original correctly.
|
||||
// Iterate by UTF-16 code unit (not Array.from code point) to mirror FuzzyRanges' own indexing exactly.
|
||||
// Pre-normalize a whole haystack with a length-preserving fold, so a caller can match it repeatedly
|
||||
// against one cached string. One input UTF-16 code unit always maps to one output code unit, so
|
||||
// indices stay aligned to the ORIGINAL text - the highlight ranges that FuzzyRangesNorm returns slice
|
||||
// the original correctly. Iterate by UTF-16 code unit (not Array.from code point) to mirror
|
||||
// FuzzyRanges' own indexing exactly.
|
||||
function NormText(text, caseSensitive) {
|
||||
const src = text || "";
|
||||
let out = "";
|
||||
for (let i = 0; i < src.length; i++)
|
||||
out += Norm(src[i], caseSensitive);
|
||||
out += NormStable(src[i], caseSensitive);
|
||||
return out;
|
||||
}
|
||||
|
||||
// Length-preserving variant of Norm: NFD can expand a code unit (Hangul syllables become Jamo) or
|
||||
// drop it (combining diacritics), and toLowerCase can expand one too (U+0130). Any of those would
|
||||
// desync highlight offsets, so fall back to the original unit whenever the fold is not 1:1.
|
||||
function NormStable(ch, caseSensitive) {
|
||||
const folded = FoldChar(ch);
|
||||
const stable = folded.length === 1 ? folded : ch;
|
||||
if (caseSensitive)
|
||||
return stable;
|
||||
const lower = stable.toLowerCase();
|
||||
return lower.length === 1 ? lower : stable;
|
||||
}
|
||||
|
||||
// Match a PRE-normalized haystack against a PRE-normalized needle (both produced by NormText with the
|
||||
// same caseSensitive flag). Skipping the per-character fold makes repeated matching (per keystroke over a
|
||||
// cached pool) cheap. Returns ranges in original coordinates, or null on no match.
|
||||
@@ -115,18 +128,3 @@ function WholeWordRanges(text, query, caseSensitive) {
|
||||
ranges.push([match.index, match.index + match[0].length]);
|
||||
return ranges.length > 0 ? ranges : null;
|
||||
}
|
||||
|
||||
// Same whole-word (\b-bounded) match as WholeWordRanges, but against PRE-normalized haystack/needle
|
||||
// (NormText output, so offsets stay length-aligned to the original text). Returns the first match as
|
||||
// [[i, i+len]] in original coordinates, or null. Non-global so the caller can reuse one compiled regex
|
||||
// across many fields without re-setting lastIndex. Skipping the per-char fold keeps the Speed Dial's
|
||||
// per-keystroke scan over thousands of cached settings cheap.
|
||||
function WholeWordRangesNorm(haystackNorm, needleNorm) {
|
||||
const t = haystackNorm || "";
|
||||
const needle = needleNorm || "";
|
||||
if (!needle)
|
||||
return null;
|
||||
const re = new RegExp(`\\b${EscapeRegExp(needle)}\\b`);
|
||||
const match = re.exec(t);
|
||||
return match ? [[match.index, match.index + match[0].length]] : null;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ const vm = require("vm"), assert = require("assert"), fs = require("fs");
|
||||
const ctx = {};
|
||||
vm.createContext(ctx);
|
||||
vm.runInContext(fs.readFileSync(__dirname + "/fuzzy-search.js", "utf8"), ctx);
|
||||
const { FoldChar, Norm, NormText, EscapeRegExp, FuzzyRanges, WholeWordRanges, FuzzyRangesNorm, WholeWordRangesNorm } = ctx;
|
||||
const { FoldChar, Norm, NormText, EscapeRegExp, FuzzyRanges, WholeWordRanges, FuzzyRangesNorm } = ctx;
|
||||
|
||||
// FoldChar / Norm: accents fold, case only folds when case-insensitive.
|
||||
assert.equal(FoldChar("é"), "e");
|
||||
@@ -41,8 +41,11 @@ assert.deepEqual(FuzzyRangesNorm(NormText("Auto-Orient", false), NormText("orien
|
||||
assert.deepEqual(FuzzyRangesNorm(NormText("AutoOriented", false), NormText("orient", false)), [[4, 10]]);
|
||||
assert.equal(FuzzyRangesNorm(NormText("Measure", false), NormText("xyz", false)), null); // no subsequence
|
||||
|
||||
// WholeWordRangesNorm: \b-bounded literal against a pre-normalized haystack, offsets in original coords.
|
||||
assert.deepEqual(WholeWordRangesNorm(NormText("Auto-Orient", false), NormText("orient", false)), [[5, 11]]);
|
||||
assert.equal(WholeWordRangesNorm(NormText("AutoOriented", false), NormText("orient", false)), null); // inside a word
|
||||
// NormText stays 1:1 with the original even when NFD expands (Hangul syllables) or drops (combining
|
||||
// diacritics, U+0130) a code unit, so highlight ranges remain aligned to the original string.
|
||||
assert.equal(NormText("각x", false).length, "각x".length);
|
||||
assert.equal(NormText("e\u0301x", false).length, "e\u0301x".length);
|
||||
assert.equal(NormText("\u0130x", false).length, "\u0130x".length);
|
||||
assert.equal(FuzzyRangesNorm(NormText("각abcdeXfgh", false), NormText("X", false))[0][0], 6);
|
||||
|
||||
console.log("ok");
|
||||
|
||||
@@ -141,9 +141,6 @@ std::unique_ptr<AppAction> make_action(const std::string& plugin_key, const std:
|
||||
|
||||
// ---- built-in command actions (the speed dial "commands" section) ------
|
||||
|
||||
constexpr const char* kCommandPrefix = "orca_command";
|
||||
constexpr const char* kOrcaSourceKey = "orca";
|
||||
constexpr const char* kOrcaSourceName = "OrcaSlicer";
|
||||
constexpr const char* kSettingPrefix = "orca_setting";
|
||||
constexpr const char* kPlateGotoPrefix = "orca_plate_goto";
|
||||
constexpr const char* kRecentProjectPrefix = "orca_recent_project";
|
||||
@@ -212,29 +209,28 @@ struct SettingAction : AppAction
|
||||
}
|
||||
};
|
||||
|
||||
// A built-in command action. Thin value: identity + presentation come from the NativeCommands
|
||||
// catalog, and run() routes back to it - the catalog is the single source of truth for its
|
||||
// behaviour. The id is keyed by the stable catalog key (NOT the display title), so a rename or a
|
||||
// UI-language switch never re-keys the action; the title is display-only.
|
||||
struct CommandAction : AppAction
|
||||
// Seed one action's persisted state (favourite flag + frecency counters) from an already-parsed
|
||||
// stats blob and capped favourite list. Shared by the dynamic materialisers.
|
||||
void seed_from(const nlohmann::json& stats, const std::vector<std::string>& favs, const std::string& id, AppAction& a)
|
||||
{
|
||||
static std::unique_ptr<CommandAction> make(const NativeCommand& c) { return std::unique_ptr<CommandAction>(new CommandAction(c)); }
|
||||
|
||||
std::string command_key;
|
||||
|
||||
AppActionRunResult run(const std::string& param) const override { return NativeCommands::run(command_key, param); }
|
||||
|
||||
private:
|
||||
explicit CommandAction(const NativeCommand& c)
|
||||
: AppAction(AppActionId{AppAction::compose_id(kCommandPrefix, c.key, kOrcaSourceKey)}, c.title, kOrcaSourceKey, kOrcaSourceName)
|
||||
, command_key(c.key)
|
||||
{
|
||||
this->kind = AppActionKind::Command;
|
||||
this->group = c.group;
|
||||
this->input = c.input;
|
||||
this->icon = c.icon;
|
||||
a.favourite = std::find(favs.begin(), favs.end(), id) != favs.end();
|
||||
if (auto it = stats.find(id); it != stats.end() && it->is_object()) {
|
||||
a.count = it->value("count", 0);
|
||||
a.last = it->value("last", 0LL);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Drop actions whose id starts with `prefix` but that were not seen in this pass (a stale materialisation).
|
||||
void drop_stale(std::unordered_map<std::string, std::shared_ptr<AppAction>>& actions, const char* prefix,
|
||||
const std::unordered_set<std::string>& seen)
|
||||
{
|
||||
for (auto it = actions.begin(); it != actions.end();) {
|
||||
if (it->first.rfind(prefix, 0) == 0 && !seen.count(it->first))
|
||||
it = actions.erase(it);
|
||||
else
|
||||
++it;
|
||||
}
|
||||
}
|
||||
|
||||
// A dynamic "Go to Plate N" action, one per live plate, rebuilt on every snapshot() (so a
|
||||
// rename/move immediately shows up). id is keyed by plate index, NOT the display title, so
|
||||
@@ -343,10 +339,10 @@ void ActionRegistry::init()
|
||||
|
||||
// Built-in palette commands (Save/Load, Preferences, Mode switch, Slice/Preview, Go to layer).
|
||||
// Register after plugins so the plugin ids win on any (unlikely) id collision - ids are distinct
|
||||
// by prefix, so this is order-independent. The catalog lives in NativeCommands - the registry
|
||||
// only materialises thin CommandAction values from it.
|
||||
// by prefix, so this is order-independent. The catalog (and its thin AppAction adapter) lives in
|
||||
// NativeCommands; the registry only stores and dispatches the result.
|
||||
for (const NativeCommand& c : NativeCommands::catalog())
|
||||
upsert(CommandAction::make(c));
|
||||
upsert(NativeCommands::make_action(c));
|
||||
}
|
||||
|
||||
void ActionRegistry::refresh_source(const std::string& plugin_key, ActionChange change)
|
||||
@@ -429,6 +425,14 @@ void ActionRegistry::seed_state(AppAction& a) const
|
||||
}
|
||||
}
|
||||
|
||||
void ActionRegistry::load_persisted(nlohmann::json& stats, std::vector<std::string>& favs) const
|
||||
{
|
||||
stats = read_section("stats", nlohmann::json::object());
|
||||
if (!stats.is_object())
|
||||
stats = nlohmann::json::object();
|
||||
favs = favourite_ids();
|
||||
}
|
||||
|
||||
// ---- read surface -----------------------------------------------------------
|
||||
|
||||
const AppAction* ActionRegistry::by_id(const std::string& id) const
|
||||
@@ -529,10 +533,9 @@ void ActionRegistry::materialize_setting_actions()
|
||||
|
||||
// Load the persisted per-action state ONCE (not per-option) so a re-materialised setting keeps
|
||||
// its recency/favourite; mirroring seed_state but amortised over the whole option set.
|
||||
nlohmann::json stats = read_section("stats", nlohmann::json::object());
|
||||
if (!stats.is_object())
|
||||
stats = nlohmann::json::object();
|
||||
const std::vector<std::string> favs = favourite_ids();
|
||||
nlohmann::json stats;
|
||||
std::vector<std::string> favs;
|
||||
load_persisted(stats, favs);
|
||||
|
||||
std::unordered_set<std::string> seen;
|
||||
for (const Search::Option& opt : options) {
|
||||
@@ -568,11 +571,7 @@ void ActionRegistry::materialize_setting_actions()
|
||||
}
|
||||
}
|
||||
|
||||
action->favourite = std::find(favs.begin(), favs.end(), id) != favs.end();
|
||||
if (auto it = stats.find(id); it != stats.end() && it->is_object()) {
|
||||
action->count = it->value("count", 0);
|
||||
action->last = it->value("last", 0LL);
|
||||
}
|
||||
seed_from(stats, favs, id, *action);
|
||||
auto const action_id = action->id();
|
||||
auto const app_action = std::shared_ptr<AppAction>(std::move(action));
|
||||
m_actions.insert_or_assign(action_id, app_action);
|
||||
@@ -580,12 +579,7 @@ void ActionRegistry::materialize_setting_actions()
|
||||
|
||||
// Drop SettingActions whose option no longer exists in the current configs (e.g. the printer
|
||||
// technology / UI mode changed). Non-setting actions are untouched.
|
||||
for (auto it = m_actions.begin(); it != m_actions.end();) {
|
||||
if (it->first.rfind(kSettingPrefix, 0) == 0 && !seen.count(it->first))
|
||||
it = m_actions.erase(it);
|
||||
else
|
||||
++it;
|
||||
}
|
||||
drop_stale(m_actions, kSettingPrefix, seen);
|
||||
}
|
||||
|
||||
void ActionRegistry::materialize_plate_actions()
|
||||
@@ -597,21 +591,15 @@ void ActionRegistry::materialize_plate_actions()
|
||||
Plater* plater = wxTheApp ? wxGetApp().plater() : nullptr;
|
||||
if (!plater || plater->printer_technology() != ptFFF || plater->only_gcode_mode()) {
|
||||
// Drop any stale plate actions (e.g. the printer technology switched to SLA).
|
||||
for (auto it = m_actions.begin(); it != m_actions.end();) {
|
||||
if (it->first.rfind(kPlateGotoPrefix, 0) == 0)
|
||||
it = m_actions.erase(it);
|
||||
else
|
||||
++it;
|
||||
}
|
||||
drop_stale(m_actions, kPlateGotoPrefix, {});
|
||||
return;
|
||||
}
|
||||
|
||||
// Persisted per-action state, read ONCE (mirrors materialize_setting_actions) so a relisted
|
||||
// "Go to Plate N" keeps its recency/favourite when the plate is renamed - the id is index-keyed.
|
||||
nlohmann::json stats = read_section("stats", nlohmann::json::object());
|
||||
if (!stats.is_object())
|
||||
stats = nlohmann::json::object();
|
||||
const std::vector<std::string> favs = favourite_ids();
|
||||
nlohmann::json stats;
|
||||
std::vector<std::string> favs;
|
||||
load_persisted(stats, favs);
|
||||
|
||||
const std::vector<PartPlate*>& list = plater->get_partplate_list().get_plate_list();
|
||||
std::unordered_set<std::string> seen;
|
||||
@@ -629,24 +617,15 @@ void ActionRegistry::materialize_plate_actions()
|
||||
if (!name.empty())
|
||||
title += " (" + name + ")";
|
||||
|
||||
auto action = std::make_unique<PlateAction>(int(i), title, kOrcaSourceName);
|
||||
action->favourite = std::find(favs.begin(), favs.end(), id) != favs.end();
|
||||
if (auto it = stats.find(id); it != stats.end() && it->is_object()) {
|
||||
action->count = it->value("count", 0);
|
||||
action->last = it->value("last", 0LL);
|
||||
}
|
||||
auto action = std::make_unique<PlateAction>(int(i), title, kOrcaSourceName);
|
||||
seed_from(stats, favs, id, *action);
|
||||
auto const action_id = action->id();
|
||||
auto const app_action = std::shared_ptr<AppAction>(std::move(action));
|
||||
m_actions.insert_or_assign(action_id, app_action);
|
||||
}
|
||||
|
||||
// Drop plate actions whose index no longer exists (a plate was deleted / moved to the front).
|
||||
for (auto it = m_actions.begin(); it != m_actions.end();) {
|
||||
if (it->first.rfind(kPlateGotoPrefix, 0) == 0 && !seen.count(it->first))
|
||||
it = m_actions.erase(it);
|
||||
else
|
||||
++it;
|
||||
}
|
||||
drop_stale(m_actions, kPlateGotoPrefix, seen);
|
||||
}
|
||||
|
||||
void ActionRegistry::materialize_recent_project_actions()
|
||||
@@ -655,10 +634,9 @@ void ActionRegistry::materialize_recent_project_actions()
|
||||
|
||||
// Persisted per-action state, read ONCE (mirrors materialize_plate_actions) so a relisted recent
|
||||
// project keeps its recency/favourite when the recents list reorders - the id is path-keyed.
|
||||
nlohmann::json stats = read_section("stats", nlohmann::json::object());
|
||||
if (!stats.is_object())
|
||||
stats = nlohmann::json::object();
|
||||
const std::vector<std::string> favs = favourite_ids();
|
||||
nlohmann::json stats;
|
||||
std::vector<std::string> favs;
|
||||
load_persisted(stats, favs);
|
||||
|
||||
// app_config stores recents oldest-first; the palette shows newest-first.
|
||||
std::vector<std::string> recents = wxGetApp().app_config->get_recent_projects();
|
||||
@@ -680,24 +658,15 @@ void ActionRegistry::materialize_recent_project_actions()
|
||||
if (title.empty())
|
||||
title = path;
|
||||
|
||||
auto action = std::make_unique<RecentProjectAction>(path, std::move(title), path);
|
||||
action->favourite = std::find(favs.begin(), favs.end(), id) != favs.end();
|
||||
if (auto it = stats.find(id); it != stats.end() && it->is_object()) {
|
||||
action->count = it->value("count", 0);
|
||||
action->last = it->value("last", 0LL);
|
||||
}
|
||||
auto action = std::make_unique<RecentProjectAction>(path, std::move(title), path);
|
||||
seed_from(stats, favs, id, *action);
|
||||
auto const action_id = action->id();
|
||||
auto const app_action = std::shared_ptr<AppAction>(std::move(action));
|
||||
m_actions.insert_or_assign(action_id, app_action);
|
||||
}
|
||||
|
||||
// Drop recent-project actions whose file no longer exists / was removed from the recents list.
|
||||
for (auto it = m_actions.begin(); it != m_actions.end();) {
|
||||
if (it->first.rfind(kRecentProjectPrefix, 0) == 0 && !seen.count(it->first))
|
||||
it = m_actions.erase(it);
|
||||
else
|
||||
++it;
|
||||
}
|
||||
drop_stale(m_actions, kRecentProjectPrefix, seen);
|
||||
}
|
||||
|
||||
bool ActionRegistry::should_ask(const std::string& id) const
|
||||
@@ -753,7 +722,6 @@ nlohmann::json ActionRegistry::snapshot()
|
||||
{"group", a->group},
|
||||
{"input", a->input},
|
||||
{"icon", a->icon},
|
||||
{"shortcut", ""},
|
||||
{"mode", mode_key(a->required_mode)}});
|
||||
};
|
||||
|
||||
@@ -816,7 +784,7 @@ nlohmann::json ActionRegistry::tab_options() const
|
||||
if (id.empty())
|
||||
continue;
|
||||
out.push_back({{"id", id.ToStdString()},
|
||||
{"title", notebook->GetPageText(i).ToStdString()},
|
||||
{"title", notebook->GetPageLabel(i).ToStdString()},
|
||||
{"icon", notebook->GetPageIcon(i)}});
|
||||
}
|
||||
return out;
|
||||
|
||||
@@ -114,6 +114,12 @@ private:
|
||||
std::string m_source_name; // display name of the action's source
|
||||
};
|
||||
|
||||
// Stable identity/display name of the built-in ("OrcaSlicer") action source. Shared by the native
|
||||
// command catalog and the dynamically materialised setting/plate/recent actions so every built-in
|
||||
// action re-keys together.
|
||||
inline constexpr const char* kOrcaSourceKey = "orca";
|
||||
inline constexpr const char* kOrcaSourceName = "OrcaSlicer";
|
||||
|
||||
// True when a setting at `setting_mode` cannot be edited in `current_mode` and the UI must switch
|
||||
// first. Developer settings are handled as a separate prompt by the Speed Dial.
|
||||
inline bool requires_mode_switch(ConfigOptionMode setting_mode, ConfigOptionMode current_mode)
|
||||
@@ -128,15 +134,17 @@ std::vector<std::string> cap_favourites(const std::vector<std::string>& ids, siz
|
||||
// Self-contained sink and single owner of runnable actions for the app session.
|
||||
//
|
||||
// Workflow:
|
||||
// 1. init() (once, UI thread) subscribes to the plugin loader and enumerates the
|
||||
// current script capabilities into actions.
|
||||
// 1. init() (once, UI thread) subscribes to the plugin loader and enumerates the current script
|
||||
// capabilities into actions, then materialises the static built-ins from the NativeCommands catalog.
|
||||
// 2. Loader load/unload callbacks route through refresh_source()/refresh_capability(),
|
||||
// which upsert()/remove() actions. The registry keeps the only action list and
|
||||
// restores persisted user state as actions arrive.
|
||||
// 3. Consumers use by_id(), snapshot(), and run() without knowing the source.
|
||||
// 3. Dynamic built-in families (settings, plates, recent projects) are re-materialised at the top of
|
||||
// snapshot(), because their membership follows live state (the current configs, plate list, recents).
|
||||
// 4. Consumers use by_id(), snapshot(), and run() without knowing the source.
|
||||
//
|
||||
// note: there is exactly one source (script plugins), so it lives inline here rather
|
||||
// than behind a polymorphic source interface.
|
||||
// note: the static catalog lives in NativeCommands; the registry owns the pool, persistence and
|
||||
// dispatch, and materialises the dynamic families inline rather than behind a source interface.
|
||||
class ActionRegistry
|
||||
{
|
||||
public:
|
||||
@@ -180,16 +188,20 @@ public:
|
||||
nlohmann::json snapshot();
|
||||
|
||||
// "Go to tab..." Speed Dial helper: enumerate the MainFrame notebook's current pages
|
||||
// as [{id,title},...]. Live by construction - built-in tabs (Home/Prepare/Preview/Device/
|
||||
// Project/Calibration) and plugin tabs (plugin.<key>.<name>) are all Notebook pages, so a
|
||||
// page appears/disappears with the notebook. Plugin tabs hidden in the overflow menu (many
|
||||
// plugins) aren't separate pages and are not listed. Call on the UI thread; null-safe.
|
||||
// as [{id,title,icon},...], using the page's real label (not the compact-blanked button text).
|
||||
// Live by construction - built-in tabs (Home/Prepare/Preview/Device/Project/Calibration) and
|
||||
// plugin tabs (plugin.<key>.<name>) are all Notebook pages, so a page appears/disappears with
|
||||
// the notebook. Plugin tabs hidden in the overflow menu (many plugins) aren't separate pages and
|
||||
// are not listed. Call on the UI thread; null-safe.
|
||||
nlohmann::json tab_options() const;
|
||||
|
||||
private:
|
||||
void seed_state(AppAction& a) const; // favourite/stats from config
|
||||
AppAction* find(const std::string& id);
|
||||
|
||||
// Read the persisted stats blob + capped favourite list once for a materialisation pass.
|
||||
void load_persisted(nlohmann::json& stats, std::vector<std::string>& favs) const;
|
||||
|
||||
// (Re)materialise the current visible config settings as SettingActions from the live
|
||||
// searcher (respecting printer-tech + user-mode + visibility filtering), removing stale ones.
|
||||
// Called at the top of snapshot() so the palette always reflects the current configs.
|
||||
|
||||
@@ -2616,6 +2616,10 @@ void GUI_App::init_app_config()
|
||||
}
|
||||
#endif // _WIN32
|
||||
}
|
||||
// Speed Dial opens on a bare Space from any page by default. Seed the flag so Preferences and the
|
||||
// MainFrame shortcut read the same value; an existing config (true or false) is left untouched.
|
||||
if (app_config->get("enable_speed_dial").empty())
|
||||
app_config->set_bool("enable_speed_dial", true);
|
||||
set_logging_level(Slic3r::level_string_to_boost(app_config->get("log_severity_level")));
|
||||
|
||||
}
|
||||
@@ -8163,6 +8167,22 @@ void GUI_App::save_mode(const /*ConfigOptionMode*/int mode)
|
||||
update_mode();
|
||||
}
|
||||
|
||||
void GUI_App::set_mode(ConfigOptionMode mode)
|
||||
{
|
||||
const bool was_developer = app_config->get_bool("developer_mode");
|
||||
if (was_developer)
|
||||
app_config->set_bool("developer_mode", false);
|
||||
save_mode(mode);
|
||||
if (was_developer)
|
||||
app_config->save();
|
||||
}
|
||||
|
||||
void GUI_App::enable_developer_mode()
|
||||
{
|
||||
app_config->set_bool("developer_mode", true);
|
||||
update_mode();
|
||||
}
|
||||
|
||||
// Update view mode according to selected menu
|
||||
void GUI_App::update_mode()
|
||||
{
|
||||
@@ -8316,17 +8336,32 @@ void GUI_App::refresh_plugins()
|
||||
// The metadata refresh blocks on disc discovery and a cloud round-trip, so run it on a worker
|
||||
// and report completion through the notification manager -- the speed dial needs no dialog.
|
||||
std::thread([]() {
|
||||
refresh_plugin_metadata_blocking(/*fetch_cloud=*/true);
|
||||
wxTheApp->CallAfter([]() {
|
||||
wxString error;
|
||||
try {
|
||||
refresh_plugin_metadata_blocking(/*fetch_cloud=*/true);
|
||||
} catch (const std::exception& ex) {
|
||||
error = from_u8(ex.what());
|
||||
} catch (...) {
|
||||
error = "Unknown error"; // plain literal: wx translation isn't safe off the UI thread
|
||||
}
|
||||
if (!wxTheApp)
|
||||
return;
|
||||
wxTheApp->CallAfter([error]() {
|
||||
if (wxGetApp().is_closing())
|
||||
return;
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater == nullptr)
|
||||
return;
|
||||
plater->get_notification_manager()->push_notification(
|
||||
NotificationType::CustomNotification,
|
||||
NotificationManager::NotificationLevel::RegularNotificationLevel,
|
||||
into_u8(_L("Plugins refreshed.")));
|
||||
if (error.IsEmpty())
|
||||
plater->get_notification_manager()->push_notification(
|
||||
NotificationType::CustomNotification,
|
||||
NotificationManager::NotificationLevel::RegularNotificationLevel,
|
||||
into_u8(_L("Plugins refreshed.")));
|
||||
else
|
||||
plater->get_notification_manager()->push_notification(
|
||||
NotificationType::CustomNotification,
|
||||
NotificationManager::NotificationLevel::ErrorNotificationLevel,
|
||||
into_u8(wxString::Format(_L("Failed to refresh plugins: %s"), error)));
|
||||
});
|
||||
}).detach();
|
||||
}
|
||||
|
||||
@@ -593,6 +593,11 @@ public:
|
||||
std::string get_saved_mode_str();
|
||||
std::string get_mode_str();
|
||||
void save_mode(const /*ConfigOptionMode*/int mode) ;
|
||||
// Switch to `mode` from the Speed Dial: a developer-mode override hides the saved mode
|
||||
// (get_mode returns comDevelop), so clear it first and persist the choice.
|
||||
void set_mode(ConfigOptionMode mode);
|
||||
// Turn the developer-mode override on and refresh the UI (used before jumping to a Developer setting).
|
||||
void enable_developer_mode();
|
||||
void update_mode();
|
||||
void update_internal_development();
|
||||
void show_ip_address_enter_dialog(wxString title = wxEmptyString);
|
||||
|
||||
@@ -199,8 +199,8 @@ void KBShortcutsDialog::fill_shortcuts()
|
||||
// Switch table page
|
||||
{ ctrl + L("Tab"), L("Switch table page")},
|
||||
// Open speed dial
|
||||
{ "Space", L("Open speed dial") },
|
||||
{ alt + "1..9,0", L("Run a Speed Dial favourite") },
|
||||
{ L_CONTEXT("Space", "Keyboard Shortcut"), L("Open speed dial") },
|
||||
{ alt + "1..9,0", L("Run a Speed Dial favourite (while the Speed Dial is open)") },
|
||||
//DEL
|
||||
#ifdef __APPLE__
|
||||
{"fn+⌫", L("Delete Selected")},
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "Preferences.hpp"
|
||||
#include "Widgets/Button.hpp"
|
||||
#include "Widgets/ProgressDialog.hpp"
|
||||
#include "Widgets/StaticBox.hpp"
|
||||
#include "BindDialog.hpp"
|
||||
#include "../Utils/MacDarkMode.hpp"
|
||||
#include "../Utils/NetworkAgentFactory.hpp"
|
||||
@@ -109,17 +110,21 @@ namespace {
|
||||
|
||||
// Space opens the speed dial, but it is the activation key for buttons, checkboxes and other
|
||||
// controls. CHAR_HOOK runs before the focused child, so only take Space when the focused window has
|
||||
// no keyboard-activation meaning of its own. Canvases (GLCanvas3D) and panels are not wxControls and
|
||||
// fall through to "open"; Notebook and wxWebView are wxControls that don't use Space, so allow them.
|
||||
// no keyboard-activation meaning of its own. Canvases (GLCanvas3D) and panels are not controls and
|
||||
// fall through to "open"; the Notebook itself does too, so Space still opens the dial on any page.
|
||||
bool focus_keeps_space(wxWindow* focus)
|
||||
{
|
||||
if (!focus)
|
||||
return false;
|
||||
if (dynamic_cast<wxTextEntryBase*>(focus))
|
||||
return true; // typing a space into a text field
|
||||
if (dynamic_cast<wxWebView*>(focus))
|
||||
return true; // web content scrolls and hosts its own text fields
|
||||
if (dynamic_cast<::Button*>(focus))
|
||||
return true; // custom button: Space clicks it (it is a wxWindow, not a wxControl)
|
||||
if (dynamic_cast<wxControl*>(focus) && !dynamic_cast<Notebook*>(focus) && !dynamic_cast<wxWebView*>(focus))
|
||||
if (dynamic_cast<StaticBox*>(focus))
|
||||
return true; // custom composites (ComboBox, SpinInput, ...) activate with Space and are wxWindow
|
||||
if (dynamic_cast<wxControl*>(focus) && !dynamic_cast<Notebook*>(focus))
|
||||
return true; // stock button/checkbox/choice/list/etc. keep Space
|
||||
return false;
|
||||
}
|
||||
@@ -724,8 +729,10 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_
|
||||
// Orca: open the speed dial from any page with a bare Space. Only when no modifier is held (so
|
||||
// editing shortcuts like Ctrl+Shift+Space in the canvas still reach it) and the focused window
|
||||
// doesn't use Space to activate itself (buttons, checkboxes, list/choice controls, text fields),
|
||||
// so a bare Space there still clicks/toggles instead of being hijacked.
|
||||
if (!evt.CmdDown() && !evt.ShiftDown() && !evt.AltDown() && evt.GetKeyCode() == WXK_SPACE) {
|
||||
// so a bare Space there still clicks/toggles instead of being hijacked. Gated by a preference
|
||||
// (default on) so users can hand Space back to the focused control entirely.
|
||||
if (wxGetApp().app_config->get_bool("enable_speed_dial") && !evt.CmdDown() && !evt.ShiftDown() &&
|
||||
!evt.AltDown() && evt.GetKeyCode() == WXK_SPACE) {
|
||||
if (focus_keeps_space(wxWindow::FindFocus())) {
|
||||
evt.Skip(); // let the focused control keep Space
|
||||
return;
|
||||
@@ -4325,7 +4332,7 @@ void MainFrame::technology_changed()
|
||||
// update menu titles
|
||||
PrinterTechnology pt = plater()->printer_technology();
|
||||
if (int id = m_menubar->FindMenu(pt == ptFFF ? _omitL("Material Settings") : _L("Filament settings")); id != wxNOT_FOUND)
|
||||
m_menubar->SetMenuLabel(id, pt == ptFFF ? _omitL("Material Settings") : _L("Filament settings"));
|
||||
m_menubar->SetMenuLabel(id, pt == ptSLA ? _omitL("Material Settings") : _L("Filament settings"));
|
||||
}
|
||||
|
||||
// Opens the calibration wizard for `calib_kind`. Single source of truth for the wizard lifecycle:
|
||||
|
||||
+112
-179
@@ -25,7 +25,7 @@
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <exception>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
@@ -120,120 +120,43 @@ AppActionRunResult calib_command(CalibKind kind)
|
||||
return {AppActionRunResult::Level::Success};
|
||||
}
|
||||
|
||||
// Palette-only: developer mode overrides the saved mode (get_mode returns comDevelop), so choosing
|
||||
// Simple/Advanced/Expert must clear it first. Mirrors Preferences: persist the flag, then update.
|
||||
void select_mode(ConfigOptionMode mode)
|
||||
{
|
||||
GUI_App& app = wxGetApp();
|
||||
const bool was_developer = app.app_config->get_bool("developer_mode");
|
||||
if (was_developer)
|
||||
app.app_config->set_bool("developer_mode", false);
|
||||
app.save_mode(mode);
|
||||
if (was_developer)
|
||||
app.app_config->save();
|
||||
}
|
||||
constexpr const char* kCommandPrefix = "orca_command";
|
||||
|
||||
// Tile pictogram per command: the SVG base name of the icon the matching GUI control already uses
|
||||
// (menu/toolbar/sidebar). Absent key => blank tile. Keeping this as one table makes the curation
|
||||
// reviewable and lets a test check every value resolves to a real file.
|
||||
const std::map<std::string, std::string>& command_icons()
|
||||
// Thin AppAction wrapper for one catalog entry: identity and presentation come from the catalog,
|
||||
// run() routes back to it. The id is keyed by the stable catalog key (not the display title), so a
|
||||
// rename or a UI-language switch never re-keys the action.
|
||||
struct CommandAction : AppAction
|
||||
{
|
||||
static const std::map<std::string, std::string> icons = {
|
||||
// Slice & Export
|
||||
{"slice_and_preview", "media_play"},
|
||||
{"export_gcode", "menu_export_gcode"},
|
||||
{"export_stl", "menu_export_stl"},
|
||||
{"export_stl_multi", "menu_export_stl"},
|
||||
{"export_sliced_file", "menu_export_sliced_file"},
|
||||
{"export_all_sliced_file", "menu_export_sliced_file"},
|
||||
{"export_toolpaths_obj", "menu_export_toolpaths"},
|
||||
{"export_config", "menu_export_config"},
|
||||
{"export_3mf", "menu_save"},
|
||||
{"export_drc_single", "menu_export_stl"},
|
||||
{"export_drc_multi", "menu_export_stl"},
|
||||
// Commands
|
||||
{"load_project", "menu_open"},
|
||||
{"save_project", "menu_save"},
|
||||
{"save_project_as", "menu_save"},
|
||||
{"open_preferences", "cog"},
|
||||
{"go_to_layer", "height_range_layer"},
|
||||
// Mode: the sidebar mode toggle's own icon (ParamsPanel).
|
||||
{"mode_simple", "advanced"},
|
||||
{"mode_advanced", "advanced"},
|
||||
{"mode_expert", "advanced"},
|
||||
{"toggle_developer_mode", "advanced"},
|
||||
// Calibration
|
||||
{"calib_temperature", "calib_sf"},
|
||||
{"calib_max_volumetric", "calib_sf"},
|
||||
{"calib_pressure_advance", "calib_sf"},
|
||||
{"calib_flow_ratio", "calib_sf"},
|
||||
{"calib_retraction", "calib_sf"},
|
||||
{"calib_cornering", "calib_sf"},
|
||||
{"calib_input_shaping_freq", "calib_sf"},
|
||||
{"calib_input_shaping_damp", "calib_sf"},
|
||||
{"calib_vfa", "calib_sf"},
|
||||
// View
|
||||
{"reset_window_layout", "toolbar_reset"},
|
||||
// Object
|
||||
{"obj_delete", "menu_delete"},
|
||||
{"obj_delete_all", "menu_remove"},
|
||||
{"obj_mirror_x", "menu_mirror_x"},
|
||||
{"obj_mirror_y", "menu_mirror_y"},
|
||||
{"obj_mirror_z", "menu_mirror_z"},
|
||||
{"obj_split_objects", "menu_split_objects"},
|
||||
{"obj_split_parts", "menu_split_parts"},
|
||||
{"obj_drop", "toolbar_flatten"},
|
||||
{"obj_instances_up", "instance_add"},
|
||||
{"obj_instances_down", "instance_remove"},
|
||||
{"obj_arrange", "toolbar_arrange"},
|
||||
{"obj_orient", "toolbar_orient"},
|
||||
// Add Primitive
|
||||
{"add_primitive_cube", "menu_obj_cube"},
|
||||
{"add_primitive_cylinder", "menu_obj_cylinder"},
|
||||
{"add_primitive_sphere", "menu_obj_sphere"},
|
||||
{"add_primitive_cone", "menu_obj_cone"},
|
||||
{"add_primitive_disc", "menu_obj_disc"},
|
||||
{"add_primitive_torus", "menu_obj_torus"},
|
||||
{"add_primitive_text", "menu_obj_text"},
|
||||
{"add_primitive_svg", "menu_obj_svg"},
|
||||
// Plate
|
||||
{"plate_add", "toolbar_add_plate"},
|
||||
{"plate_duplicate", "menu_copy"},
|
||||
{"plate_delete", "menu_delete"},
|
||||
{"plate_rename", "plate_name_edit"},
|
||||
{"plate_toggle_lock", "lock_normal"},
|
||||
{"plate_goto", "go_next_plate"},
|
||||
// Printer / Presets
|
||||
{"sync_ams", "ams_fila_sync"},
|
||||
{"sync_presets", "printer_sync_ok"},
|
||||
{"preset_bundle", "menu_edit_preset"},
|
||||
// Import
|
||||
{"import_file", "menu_import"},
|
||||
{"import_zip_archive", "menu_import"},
|
||||
{"import_configs", "menu_import"},
|
||||
// Help
|
||||
{"help_open_config_folder", "folder-closed"},
|
||||
{"help_tip_of_the_day", "info"},
|
||||
{"help_check_updates", "ams_refresh_normal"},
|
||||
{"help_about", "OrcaSlicer_about"},
|
||||
{"open_wiki", "link_wiki_img"},
|
||||
};
|
||||
return icons;
|
||||
}
|
||||
std::string command_key;
|
||||
|
||||
AppActionRunResult run(const std::string& param) const override { return NativeCommands::run(command_key, param); }
|
||||
|
||||
explicit CommandAction(const NativeCommand& c)
|
||||
: AppAction(AppActionId{AppAction::compose_id(kCommandPrefix, c.key, kOrcaSourceKey)}, c.title, kOrcaSourceKey, kOrcaSourceName)
|
||||
, command_key(c.key)
|
||||
{
|
||||
this->kind = AppActionKind::Command;
|
||||
this->group = c.group;
|
||||
this->input = c.input;
|
||||
this->icon = c.icon;
|
||||
}
|
||||
};
|
||||
|
||||
std::vector<NativeCommand> build_command_catalog()
|
||||
{
|
||||
std::vector<NativeCommand> out;
|
||||
auto add = [&](std::string key, std::string title, std::string group, std::function<AppActionRunResult(const std::string&)> runner,
|
||||
std::string input = {}) {
|
||||
std::string icon;
|
||||
if (auto it = command_icons().find(key); it != command_icons().end())
|
||||
icon = it->second;
|
||||
std::string input = {}, std::string icon = {}) {
|
||||
out.push_back({std::move(key), std::move(title), std::move(group), std::move(input), std::move(icon), std::move(runner)});
|
||||
};
|
||||
// Presentation-first overload: keeps the tile icon next to the title/group it belongs to.
|
||||
auto add_with_icon = [&](std::string key, std::string title, std::string group, std::string icon,
|
||||
std::function<AppActionRunResult(const std::string&)> runner, std::string input = {}) {
|
||||
add(std::move(key), std::move(title), std::move(group), std::move(runner), std::move(input), std::move(icon));
|
||||
};
|
||||
|
||||
// ---- Slice & Export ----
|
||||
add("slice_and_preview", _u8L("Slice and Preview"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("slice_and_preview", _u8L("Slice and Preview"), _u8L("Slice & Export"), "media_play", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater) {
|
||||
plater->reslice();
|
||||
@@ -244,8 +167,8 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
|
||||
add(
|
||||
"go_to_layer", _u8L("Go to layer (percent)"), _u8L("Commands"),
|
||||
add_with_icon(
|
||||
"go_to_layer", _u8L("Go to layer (percent)"), _u8L("Commands"), "height_range_layer",
|
||||
[](const std::string& param) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater) {
|
||||
@@ -258,47 +181,52 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
},
|
||||
"percent");
|
||||
|
||||
// "go_to_tab" is two-phase: the palette collects the tab after activating it, so dispatch here
|
||||
// is a no-op (the jump goes through the go_to_tab web command).
|
||||
// "go_to_tab" is two-phase: the palette collects the tab after activating it, then hands the tab
|
||||
// id back as `param` (same contract as go_to_layer's percent).
|
||||
add(
|
||||
"go_to_tab", _u8L("Go to tab..."), _u8L("Commands"),
|
||||
[](const std::string&) { return AppActionRunResult{AppActionRunResult::Level::Success}; }, "tab");
|
||||
[](const std::string& param) {
|
||||
if (MainFrame* mf = wxGetApp().mainframe; mf && !param.empty())
|
||||
mf->select_tab(from_u8(param));
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
},
|
||||
"tab");
|
||||
|
||||
add("load_project", _u8L("Load Project"), _u8L("Commands"), [](const std::string&) {
|
||||
add_with_icon("load_project", _u8L("Load Project"), _u8L("Commands"), "menu_open", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->load_project();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("save_project", _u8L("Save Project"), _u8L("Commands"), [](const std::string&) {
|
||||
add_with_icon("save_project", _u8L("Save Project"), _u8L("Commands"), "menu_save", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->save_project(false);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("save_project_as", _u8L("Save Project As"), _u8L("Commands"), [](const std::string&) {
|
||||
add_with_icon("save_project_as", _u8L("Save Project As"), _u8L("Commands"), "menu_save", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->save_project(true);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("open_preferences", _u8L("Preferences"), _u8L("Commands"), [](const std::string&) {
|
||||
add_with_icon("open_preferences", _u8L("Preferences"), _u8L("Commands"), "cog", [](const std::string&) {
|
||||
wxGetApp().open_preferences();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
|
||||
// ---- Mode ----
|
||||
add("mode_simple", _u8L("Mode: Simple"), _u8L("Mode"), [](const std::string&) {
|
||||
select_mode(comSimple);
|
||||
add_with_icon("mode_simple", _u8L("Mode: Simple"), _u8L("Mode"), "advanced", [](const std::string&) {
|
||||
wxGetApp().set_mode(comSimple);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("mode_advanced", _u8L("Mode: Advanced"), _u8L("Mode"), [](const std::string&) {
|
||||
select_mode(comAdvanced);
|
||||
add_with_icon("mode_advanced", _u8L("Mode: Advanced"), _u8L("Mode"), "advanced", [](const std::string&) {
|
||||
wxGetApp().set_mode(comAdvanced);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("mode_expert", _u8L("Mode: Expert"), _u8L("Mode"), [](const std::string&) {
|
||||
select_mode(comExpert);
|
||||
add_with_icon("mode_expert", _u8L("Mode: Expert"), _u8L("Mode"), "advanced", [](const std::string&) {
|
||||
wxGetApp().set_mode(comExpert);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
// Mirrors Preferences > Developer > Developer mode: flip the flag, persist, refresh the UI.
|
||||
add("toggle_developer_mode", _u8L("Toggle Developer Mode"), _u8L("Mode"), [](const std::string&) {
|
||||
add_with_icon("toggle_developer_mode", _u8L("Toggle Developer Mode"), _u8L("Mode"), "advanced", [](const std::string&) {
|
||||
GUI_App& app = wxGetApp();
|
||||
const bool on = !app.app_config->get_bool("developer_mode");
|
||||
app.app_config->set_bool("developer_mode", on);
|
||||
@@ -308,50 +236,50 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
});
|
||||
|
||||
// ---- Export pipeline ----
|
||||
add("export_gcode", _u8L("Export G-code"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("export_gcode", _u8L("Export G-code"), _u8L("Slice & Export"), "menu_export_gcode", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_gcode(false);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_stl", _u8L("Export STL"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("export_stl", _u8L("Export STL"), _u8L("Slice & Export"), "menu_export_stl", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_stl();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_3mf", _u8L("Export 3MF"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("export_3mf", _u8L("Export 3MF"), _u8L("Slice & Export"), "menu_save", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_core_3mf();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_sliced_file", _u8L("Export Sliced File"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("export_sliced_file", _u8L("Export Sliced File"), _u8L("Slice & Export"), "menu_export_sliced_file", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_gcode_3mf(false);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_all_sliced_file", _u8L("Export All Sliced Files"), _u8L("Slice & Export"), [](const std::string&) {
|
||||
add_with_icon("export_all_sliced_file", _u8L("Export All Sliced Files"), _u8L("Slice & Export"), "menu_export_sliced_file", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_gcode_3mf(true);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
|
||||
// ---- Calibration ----
|
||||
add("calib_temperature", _u8L("Temperature Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_temperature", _u8L("Temperature Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::Temperature); });
|
||||
add("calib_max_volumetric", _u8L("Max Volumetric Speed Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_max_volumetric", _u8L("Max Volumetric Speed Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::MaxVolumetric); });
|
||||
add("calib_pressure_advance", _u8L("Pressure Advance Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_pressure_advance", _u8L("Pressure Advance Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::PressureAdvance); });
|
||||
add("calib_flow_ratio", _u8L("Flow Ratio Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_flow_ratio", _u8L("Flow Ratio Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::FlowRatio); });
|
||||
add("calib_retraction", _u8L("Retraction Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_retraction", _u8L("Retraction Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::Retraction); });
|
||||
add("calib_cornering", _u8L("Cornering Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_cornering", _u8L("Cornering Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::Cornering); });
|
||||
add("calib_input_shaping_freq", _u8L("Input Shaping Frequency Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_input_shaping_freq", _u8L("Input Shaping Frequency Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::InputShapingFreq); });
|
||||
add("calib_input_shaping_damp", _u8L("Input Shaping Damping Calibration"), _u8L("Calibration"),
|
||||
add_with_icon("calib_input_shaping_damp", _u8L("Input Shaping Damping Calibration"), _u8L("Calibration"), "calib_sf",
|
||||
[](const std::string&) { return calib_command(CalibKind::InputShapingDamp); });
|
||||
add("calib_vfa", _u8L("VFA Calibration"), _u8L("Calibration"), [](const std::string&) { return calib_command(CalibKind::VFA); });
|
||||
add_with_icon("calib_vfa", _u8L("VFA Calibration"), _u8L("Calibration"), "calib_sf", [](const std::string&) { return calib_command(CalibKind::VFA); });
|
||||
|
||||
// ---- View ----
|
||||
for (auto [key, dir, title] :
|
||||
@@ -386,39 +314,39 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
plater->get_camera().select_next_type();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("reset_window_layout", _u8L("Reset Window Layout"), _u8L("View"), [](const std::string&) {
|
||||
add_with_icon("reset_window_layout", _u8L("Reset Window Layout"), _u8L("View"), "toolbar_reset", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->reset_window_layout();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
|
||||
// ---- Object ----
|
||||
add("obj_delete", _u8L("Delete Selected"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_delete", _u8L("Delete Selected"), _u8L("Object"), "menu_delete", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return !p->is_selection_empty(); }, [](Plater* p) { p->remove_selected(); });
|
||||
});
|
||||
add("obj_delete_all", _u8L("Delete All Objects"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_delete_all", _u8L("Delete All Objects"), _u8L("Object"), "menu_remove", [](const std::string&) {
|
||||
return object_op(
|
||||
wxGetApp().plater(), [](Plater* p) { return p->can_delete_all(); }, [](Plater* p) { p->delete_all_objects_from_model(); });
|
||||
});
|
||||
add("obj_mirror_x", _u8L("Mirror X"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_mirror_x", _u8L("Mirror X"), _u8L("Object"), "menu_mirror_x", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_mirror(); }, [](Plater* p) { p->mirror(Axis::X); });
|
||||
});
|
||||
add("obj_mirror_y", _u8L("Mirror Y"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_mirror_y", _u8L("Mirror Y"), _u8L("Object"), "menu_mirror_y", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_mirror(); }, [](Plater* p) { p->mirror(Axis::Y); });
|
||||
});
|
||||
add("obj_mirror_z", _u8L("Mirror Z"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_mirror_z", _u8L("Mirror Z"), _u8L("Object"), "menu_mirror_z", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_mirror(); }, [](Plater* p) { p->mirror(Axis::Z); });
|
||||
});
|
||||
add("obj_split_objects", _u8L("Split to Objects"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_split_objects", _u8L("Split to Objects"), _u8L("Object"), "menu_split_objects", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_split_to_objects(); }, [](Plater* p) { p->split_object(true); });
|
||||
});
|
||||
add("obj_split_parts", _u8L("Split to Parts"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_split_parts", _u8L("Split to Parts"), _u8L("Object"), "menu_split_parts", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_split_to_volumes(); }, [](Plater* p) { p->split_volume(); });
|
||||
});
|
||||
add("obj_center", _u8L("Center Selected on Plate"), _u8L("Object"), [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return !p->is_selection_empty(); }, [](Plater* p) { p->center_selection(); });
|
||||
});
|
||||
add("obj_drop", _u8L("Drop to Bed"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_drop", _u8L("Drop to Bed"), _u8L("Object"), "toolbar_flatten", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return !p->is_selection_empty(); }, [](Plater* p) { p->drop_selection(); });
|
||||
});
|
||||
add("obj_fit_volume", _u8L("Scale to Fit Print Volume"), _u8L("Object"), [](const std::string&) {
|
||||
@@ -426,24 +354,24 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
wxGetApp().plater(), [](Plater* p) { return p->can_scale_to_print_volume(); },
|
||||
[](Plater* p) { p->scale_selection_to_fit_print_volume(); });
|
||||
});
|
||||
add("obj_instances_up", _u8L("Increase Instances"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_instances_up", _u8L("Increase Instances"), _u8L("Object"), "instance_add", [](const std::string&) {
|
||||
return object_op(
|
||||
wxGetApp().plater(), [](Plater* p) { return p->can_increase_instances(); }, [](Plater* p) { p->increase_instances(); });
|
||||
});
|
||||
add("obj_instances_down", _u8L("Decrease Instances"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_instances_down", _u8L("Decrease Instances"), _u8L("Object"), "instance_remove", [](const std::string&) {
|
||||
return object_op(
|
||||
wxGetApp().plater(), [](Plater* p) { return p->can_decrease_instances(); }, [](Plater* p) { p->decrease_instances(); });
|
||||
});
|
||||
add("obj_arrange", _u8L("Auto-Arrange"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_arrange", _u8L("Auto-Arrange"), _u8L("Object"), "toolbar_arrange", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_arrange(); }, [](Plater* p) { p->arrange(); });
|
||||
});
|
||||
add("obj_orient", _u8L("Auto-Orient"), _u8L("Object"), [](const std::string&) {
|
||||
add_with_icon("obj_orient", _u8L("Auto-Orient"), _u8L("Object"), "toolbar_orient", [](const std::string&) {
|
||||
return object_op(wxGetApp().plater(), [](Plater* p) { return p->can_arrange(); }, [](Plater* p) { p->orient(); });
|
||||
});
|
||||
|
||||
// ---- Add Primitive ---- (the Add > Add Primitive submenu; creates a new object)
|
||||
auto add_primitive = [&](std::string key, std::string title, const char* type_name) {
|
||||
add(std::move(key), std::move(title), _u8L("Add Primitive"), [type_name](const std::string&) {
|
||||
auto add_primitive = [&](std::string key, std::string title, std::string icon, const char* type_name) {
|
||||
add_with_icon(std::move(key), std::move(title), _u8L("Add Primitive"), std::move(icon), [type_name](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater) {
|
||||
ensure_3d_view(plater);
|
||||
@@ -453,13 +381,13 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
};
|
||||
add_primitive("add_primitive_cube", _u8L("Cube"), "Cube");
|
||||
add_primitive("add_primitive_cylinder", _u8L("Cylinder"), "Cylinder");
|
||||
add_primitive("add_primitive_sphere", _u8L("Sphere"), "Sphere");
|
||||
add_primitive("add_primitive_cone", _u8L("Cone"), "Cone");
|
||||
add_primitive("add_primitive_disc", _u8L("Disc"), "Disc");
|
||||
add_primitive("add_primitive_torus", _u8L("Torus"), "Torus");
|
||||
add("add_primitive_text", _u8L("Text"), _u8L("Add Primitive"), [](const std::string&) {
|
||||
add_primitive("add_primitive_cube", _u8L("Cube"), "menu_obj_cube", "Cube");
|
||||
add_primitive("add_primitive_cylinder", _u8L("Cylinder"), "menu_obj_cylinder", "Cylinder");
|
||||
add_primitive("add_primitive_sphere", _u8L("Sphere"), "menu_obj_sphere", "Sphere");
|
||||
add_primitive("add_primitive_cone", _u8L("Cone"), "menu_obj_cone", "Cone");
|
||||
add_primitive("add_primitive_disc", _u8L("Disc"), "menu_obj_disc", "Disc");
|
||||
add_primitive("add_primitive_torus", _u8L("Torus"), "menu_obj_torus", "Torus");
|
||||
add_with_icon("add_primitive_text", _u8L("Text"), _u8L("Add Primitive"), "menu_obj_text", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater) {
|
||||
ensure_3d_view(plater);
|
||||
@@ -469,7 +397,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
}
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("add_primitive_svg", _u8L("SVG"), _u8L("Add Primitive"), [](const std::string&) {
|
||||
add_with_icon("add_primitive_svg", _u8L("SVG"), _u8L("Add Primitive"), "menu_obj_svg", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (plater) {
|
||||
ensure_3d_view(plater);
|
||||
@@ -493,7 +421,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
}
|
||||
|
||||
// ---- Plate ----
|
||||
add("plate_add", _u8L("Add Plate"), _u8L("Plate"), [](const std::string&) {
|
||||
add_with_icon("plate_add", _u8L("Add Plate"), _u8L("Plate"), "toolbar_add_plate", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -502,7 +430,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
plater->add_plate();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("plate_duplicate", _u8L("Duplicate Plate"), _u8L("Plate"), [](const std::string&) {
|
||||
add_with_icon("plate_duplicate", _u8L("Duplicate Plate"), _u8L("Plate"), "menu_copy", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -511,7 +439,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
plater->duplicate_plate();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("plate_delete", _u8L("Delete Plate"), _u8L("Plate"), [](const std::string&) {
|
||||
add_with_icon("plate_delete", _u8L("Delete Plate"), _u8L("Plate"), "menu_delete", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -520,7 +448,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
plater->delete_plate();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("plate_rename", _u8L("Rename Plate"), _u8L("Plate"), [](const std::string&) {
|
||||
add_with_icon("plate_rename", _u8L("Rename Plate"), _u8L("Plate"), "plate_name_edit", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -531,7 +459,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
curr->set_plate_name(dlg.get_plate_name().ToUTF8().data());
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("plate_toggle_lock", _u8L("Toggle Plate Lock"), _u8L("Plate"), [](const std::string&) {
|
||||
add_with_icon("plate_toggle_lock", _u8L("Toggle Plate Lock"), _u8L("Plate"), "lock_normal", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -541,7 +469,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
plates.lock_plate(index, !plates.is_locked(index));
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("plate_goto", _u8L("Go to Plate"), _u8L("Plate"), [](const std::string& param) {
|
||||
add_with_icon("plate_goto", _u8L("Go to Plate"), _u8L("Plate"), "go_next_plate", [](const std::string& param) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
if (!is_fff_plater(plater))
|
||||
return plate_unavailable();
|
||||
@@ -559,7 +487,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
});
|
||||
|
||||
// ---- Printer / device connection ----
|
||||
add("sync_ams", _u8L("Synchronize Filament List from AMS"), _u8L("Printer"), [](const std::string&) {
|
||||
add_with_icon("sync_ams", _u8L("Synchronize Filament List from AMS"), _u8L("Printer"), "ams_fila_sync", [](const std::string&) {
|
||||
Plater* plater = wxGetApp().plater();
|
||||
DeviceManager* dev = wxGetApp().getDeviceManager();
|
||||
if (dev && dev->get_selected_machine() && plater) {
|
||||
@@ -570,11 +498,11 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
});
|
||||
|
||||
// ---- Presets / cloud ----
|
||||
add("preset_bundle", _u8L("Open Preset Bundle"), _u8L("Presets"), [](const std::string&) {
|
||||
add_with_icon("preset_bundle", _u8L("Open Preset Bundle"), _u8L("Presets"), "menu_edit_preset", [](const std::string&) {
|
||||
wxGetApp().open_presetbundledialog();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("sync_presets", _u8L("Sync Presets"), _u8L("Presets"), [](const std::string&) {
|
||||
add_with_icon("sync_presets", _u8L("Sync Presets"), _u8L("Presets"), "printer_sync_ok", [](const std::string&) {
|
||||
if (!wxGetApp().is_user_login())
|
||||
return AppActionRunResult{AppActionRunResult::Level::Info, _L("Sign in to sync presets.")};
|
||||
wxGetApp().restart_sync_user_preset();
|
||||
@@ -582,7 +510,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
});
|
||||
|
||||
// ---- Import ----
|
||||
add("import_file", _u8L("Import 3MF/STL/STEP/SVG/OBJ/AMF"), _u8L("Import"), [](const std::string&) {
|
||||
add_with_icon("import_file", _u8L("Import 3MF/STL/STEP/SVG/OBJ/AMF"), _u8L("Import"), "menu_import", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater()) {
|
||||
#ifdef __APPLE__
|
||||
plater->add_model();
|
||||
@@ -592,39 +520,39 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
}
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("import_zip_archive", _u8L("Import ZIP Archive"), _u8L("Import"), [](const std::string&) {
|
||||
add_with_icon("import_zip_archive", _u8L("Import ZIP Archive"), _u8L("Import"), "menu_import", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->import_zip_archive();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("import_configs", _u8L("Import Configs"), _u8L("Import"), [](const std::string&) {
|
||||
add_with_icon("import_configs", _u8L("Import Configs"), _u8L("Import"), "menu_import", [](const std::string&) {
|
||||
if (MainFrame* mf = wxGetApp().mainframe)
|
||||
mf->load_config_file();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
|
||||
// ---- Export extras ----
|
||||
add("export_stl_multi", _u8L("Export All Objects as STLs"), _u8L("Export"), [](const std::string&) {
|
||||
add_with_icon("export_stl_multi", _u8L("Export All Objects as STLs"), _u8L("Export"), "menu_export_stl", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_stl(false, false, true);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_drc_single", _u8L("Export All Objects as DRC (one file)"), _u8L("Export"), [](const std::string&) {
|
||||
add_with_icon("export_drc_single", _u8L("Export All Objects as DRC (one file)"), _u8L("Export"), "menu_export_stl", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_stl(false, false, false, FT_DRC);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_drc_multi", _u8L("Export All Objects as DRCs"), _u8L("Export"), [](const std::string&) {
|
||||
add_with_icon("export_drc_multi", _u8L("Export All Objects as DRCs"), _u8L("Export"), "menu_export_stl", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_stl(false, false, true, FT_DRC);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_toolpaths_obj", _u8L("Export Toolpaths as OBJ"), _u8L("Export"), [](const std::string&) {
|
||||
add_with_icon("export_toolpaths_obj", _u8L("Export Toolpaths as OBJ"), _u8L("Export"), "menu_export_toolpaths", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater())
|
||||
plater->export_toolpaths_to_obj();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("export_config", _u8L("Export Preset Bundle"), _u8L("Export"), [](const std::string&) {
|
||||
add_with_icon("export_config", _u8L("Export Preset Bundle"), _u8L("Export"), "menu_export_config", [](const std::string&) {
|
||||
if (MainFrame* mf = wxGetApp().mainframe)
|
||||
mf->export_config();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
@@ -639,7 +567,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
wxGetApp().ShowUserGuide();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("help_open_config_folder", _u8L("Show Configuration Folder"), _u8L("Help"), [](const std::string&) {
|
||||
add_with_icon("help_open_config_folder", _u8L("Show Configuration Folder"), _u8L("Help"), "folder-closed", [](const std::string&) {
|
||||
Slic3r::GUI::desktop_open_datadir_folder();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
@@ -652,7 +580,7 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
dlg.ShowModal();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("help_tip_of_the_day", _u8L("Show Tip of the Day"), _u8L("Help"), [](const std::string&) {
|
||||
add_with_icon("help_tip_of_the_day", _u8L("Show Tip of the Day"), _u8L("Help"), "info", [](const std::string&) {
|
||||
if (Plater* plater = wxGetApp().plater()) {
|
||||
plater->get_dailytips()->open();
|
||||
if (GLCanvas3D* canvas = plater->get_current_canvas3D())
|
||||
@@ -660,15 +588,15 @@ std::vector<NativeCommand> build_command_catalog()
|
||||
}
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("help_check_updates", _u8L("Check for Updates"), _u8L("Help"), [](const std::string&) {
|
||||
add_with_icon("help_check_updates", _u8L("Check for Updates"), _u8L("Help"), "ams_refresh_normal", [](const std::string&) {
|
||||
wxGetApp().check_new_version_sf(true, 1);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("help_about", _u8L("About OrcaSlicer"), _u8L("Help"), [](const std::string&) {
|
||||
add_with_icon("help_about", _u8L("About OrcaSlicer"), _u8L("Help"), "OrcaSlicer_about", [](const std::string&) {
|
||||
Slic3r::GUI::about();
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
add("open_wiki", _u8L("Open Wiki"), _u8L("Help"), [](const std::string&) {
|
||||
add_with_icon("open_wiki", _u8L("Open Wiki"), _u8L("Help"), "link_wiki_img", [](const std::string&) {
|
||||
wxLaunchDefaultBrowser("https://www.orcaslicer.com/wiki/", wxBROWSER_NEW_WINDOW);
|
||||
return AppActionRunResult{AppActionRunResult::Level::Success};
|
||||
});
|
||||
@@ -706,6 +634,11 @@ const std::vector<NativeCommand>& NativeCommands::catalog()
|
||||
return commands;
|
||||
}
|
||||
|
||||
std::unique_ptr<AppAction> NativeCommands::make_action(const NativeCommand& command)
|
||||
{
|
||||
return std::make_unique<CommandAction>(command);
|
||||
}
|
||||
|
||||
AppActionRunResult NativeCommands::run(const std::string& key, const std::string& param)
|
||||
{
|
||||
GUI_App& app = wxGetApp();
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "ActionRegistry.hpp" // for AppActionRunResult
|
||||
#include "ActionRegistry.hpp" // for AppAction / AppActionRunResult
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
// A built-in speed-dial command: identity + how to run it. The registry keeps commands as thin
|
||||
// values (CommandAction) and routes run() here, so this catalog is the single source of truth for
|
||||
// the behaviour (runner => an owner method), the presentation (title/group/input), and the tile
|
||||
// pictogram (icon = an SVG base name under resources/images, "" for no icon).
|
||||
// A built-in speed-dial command: identity + how to run it. make_action() wraps a value as a thin
|
||||
// AppAction for the registry, so this catalog is the single source of truth for the behaviour
|
||||
// (runner => an owner method), the presentation (title/group/input), and the tile pictogram
|
||||
// (icon = an SVG base name under resources/images, "" for no icon).
|
||||
struct NativeCommand
|
||||
{
|
||||
std::string key;
|
||||
@@ -28,6 +29,11 @@ const std::vector<NativeCommand>& catalog();
|
||||
|
||||
// Dispatches `key` to its runner (unknown keys return a quiet Info). UI thread only.
|
||||
AppActionRunResult run(const std::string& key, const std::string& param = {});
|
||||
|
||||
// Materialises one catalog entry as a runnable AppAction. Keeps the catalog's identity,
|
||||
// presentation and behaviour as the single source of truth; ActionRegistry only stores and
|
||||
// dispatches the result. UI thread only.
|
||||
std::unique_ptr<AppAction> make_action(const NativeCommand& command);
|
||||
} // namespace NativeCommands
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
|
||||
@@ -267,6 +267,12 @@ wxString ButtonsListCtrl::GetPageText(size_t n) const
|
||||
return btn->GetLabel();
|
||||
}
|
||||
|
||||
// ORCA
|
||||
wxString ButtonsListCtrl::GetPageLabel(size_t n) const
|
||||
{
|
||||
return n < m_pageLabels.size() ? m_pageLabels[n] : wxString();
|
||||
}
|
||||
|
||||
// ORCA
|
||||
void ButtonsListCtrl::SetOverflowButton(wxWindow* button)
|
||||
{
|
||||
|
||||
@@ -33,8 +33,14 @@ public:
|
||||
void SetPageText(size_t n, const wxString& strText);
|
||||
void SetCompact(size_t n, bool compact); // ORCA
|
||||
wxString GetPageText(size_t n) const;
|
||||
// ORCA: the full page label, unaffected by SetCompact() blanking the button text.
|
||||
wxString GetPageLabel(size_t n) const;
|
||||
// Resource name the page was inserted with (empty for plugin pages, which pass a wxBitmap).
|
||||
const std::string& GetPageIcon(size_t n) const { return m_pageIcons[n]; }
|
||||
const std::string& GetPageIcon(size_t n) const
|
||||
{
|
||||
static const std::string empty;
|
||||
return n < m_pageIcons.size() ? m_pageIcons[n] : empty;
|
||||
}
|
||||
wxFlexGridSizer* GetBtnsSizer(){return m_buttons_sizer;}; // ORCA
|
||||
// ORCA: a companion widget shown right after the tab buttons (before any side_tools), e.g.
|
||||
// an overflow indicator. Pass nullptr to remove it; ownership stays with the caller.
|
||||
@@ -244,6 +250,13 @@ public:
|
||||
return GetBtnsListCtrl()->GetPageText(n);
|
||||
}
|
||||
|
||||
// ORCA: the real page label. GetPageText() returns the button label, which SetCompact() blanks.
|
||||
wxString GetPageLabel(size_t n) const
|
||||
{
|
||||
wxCHECK_MSG(n < GetPageCount(), wxString(), wxS("Invalid page"));
|
||||
return GetBtnsListCtrl()->GetPageLabel(n);
|
||||
}
|
||||
|
||||
// Resource icon name the page was inserted with; empty for pages added with a wxBitmap.
|
||||
std::string GetPageIcon(size_t n) const
|
||||
{
|
||||
|
||||
@@ -543,15 +543,16 @@ bool install_local_plugin_package(const boost::filesystem::path& package_file, w
|
||||
});
|
||||
timer->Start(100);
|
||||
|
||||
bool finished = false;
|
||||
wxEventLoop loop;
|
||||
auto on_finish = [&finished, &loop]() {
|
||||
finished = true;
|
||||
if (loop.IsRunning())
|
||||
loop.Exit();
|
||||
// finished/loop live on the heap: the worker's completion callback is posted to the UI loop
|
||||
// and can still fire after this stack frame is gone, so it must not reference locals.
|
||||
struct WaitState
|
||||
{
|
||||
bool finished = false;
|
||||
wxEventLoop loop;
|
||||
};
|
||||
auto wait = std::make_shared<WaitState>();
|
||||
|
||||
std::thread([state, package_file, on_finish]() mutable {
|
||||
std::thread([state, package_file, wait]() mutable {
|
||||
std::string error;
|
||||
bool ok = false;
|
||||
try {
|
||||
@@ -570,11 +571,17 @@ bool install_local_plugin_package(const boost::filesystem::path& package_file, w
|
||||
state->ok = ok;
|
||||
state->error = std::move(error);
|
||||
}
|
||||
wxTheApp->CallAfter(on_finish);
|
||||
if (!wxTheApp)
|
||||
return;
|
||||
wxTheApp->CallAfter([wait]() {
|
||||
wait->finished = true;
|
||||
if (wait->loop.IsRunning())
|
||||
wait->loop.Exit();
|
||||
});
|
||||
}).detach();
|
||||
|
||||
if (!finished)
|
||||
loop.Run();
|
||||
if (!wait->finished)
|
||||
wait->loop.Run();
|
||||
|
||||
timer->Stop();
|
||||
delete timer;
|
||||
|
||||
@@ -1723,6 +1723,11 @@ void PreferencesDialog::create_items()
|
||||
auto item_multi_machine = create_item_checkbox(_L("Multi device management"), _L("With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."), "enable_multi_machine", _L("(Requires restart)"));
|
||||
g_sizer->Add(item_multi_machine);
|
||||
|
||||
auto item_speed_dial = create_item_checkbox(_L("Open the Speed Dial with the Space key"),
|
||||
_L("When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."),
|
||||
"enable_speed_dial");
|
||||
g_sizer->Add(item_speed_dial);
|
||||
|
||||
#if 0
|
||||
g_sizer->Add(create_item_title(_L("Filament Grouping")), 1, wxEXPAND);
|
||||
//temporarily disable it
|
||||
|
||||
@@ -322,7 +322,9 @@ void OptionsSearcher::init(std::vector<InputInfo> input_values)
|
||||
|
||||
void OptionsSearcher::apply(DynamicPrintConfig *config, Preset::Type type, ConfigOptionMode mode)
|
||||
{
|
||||
if (options.empty()) return;
|
||||
// options_all_modes is a separate consumer (the Speed Dial), so "nothing initialised yet" means
|
||||
// both views are empty - the mode-filtered options can be empty while the all-modes view is not.
|
||||
if (options.empty() && options_all_modes.empty()) return;
|
||||
|
||||
options.erase(std::remove_if(options.begin(), options.end(), [type](Option opt) { return opt.type == type; }), options.end());
|
||||
options_all_modes.erase(std::remove_if(options_all_modes.begin(), options_all_modes.end(), [type](Option opt) { return opt.type == type; }),
|
||||
|
||||
@@ -156,10 +156,6 @@ public:
|
||||
void dlg_sys_color_changed();
|
||||
void dlg_msw_rescale();
|
||||
|
||||
// The full gated option set built by init() (after visibility/mode/printer-tech filtering).
|
||||
// Used by the Speed Dial to materialise config settings as first-class actions.
|
||||
const std::vector<Option>& all_options() const { return options; }
|
||||
|
||||
// Every option across all UI modes (Developer included), regardless of the current mode.
|
||||
// Used by the Speed Dial so it can list settings the user would have to switch mode to edit.
|
||||
const std::vector<Option>& all_modes_options() const { return options_all_modes; }
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
#include "Plater.hpp"
|
||||
#include "Widgets/WebViewHostDialog.hpp"
|
||||
|
||||
#include <libslic3r/AppConfig.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include <wx/display.h>
|
||||
@@ -156,15 +154,7 @@ void SpeedDialWebDialog::handle_web_command(const nlohmann::json& payload)
|
||||
run_action(payload.value("id", ""), payload.value("title", ""), payload.value("param", ""));
|
||||
else if (command == "search_tabs")
|
||||
search_tabs();
|
||||
else if (command == "go_to_tab") {
|
||||
// "Go to tab..." second phase: the page hands back the tab id it matched.
|
||||
const std::string tab_id = payload.value("id", "");
|
||||
if (!tab_id.empty()) {
|
||||
Hide();
|
||||
if (wxGetApp().mainframe)
|
||||
wxGetApp().mainframe->select_tab(from_u8(tab_id));
|
||||
}
|
||||
} else if (command == "resize")
|
||||
else if (command == "resize")
|
||||
resize_to_content(json_int_or(payload, "height", 0));
|
||||
}
|
||||
|
||||
@@ -218,8 +208,7 @@ void SpeedDialWebDialog::run_action(const std::string& id, const std::string& ti
|
||||
_L("Developer setting"), wxOK | wxCANCEL);
|
||||
if (dlg.ShowModal() != wxID_OK)
|
||||
return;
|
||||
wxGetApp().app_config->set_bool("developer_mode", true);
|
||||
wxGetApp().update_mode();
|
||||
wxGetApp().enable_developer_mode();
|
||||
} else {
|
||||
RichMessageDialog dlg(wxGetApp().mainframe,
|
||||
wxString::Format(_L("\"%s\" is a %s setting. Switch from %s mode to %s mode to edit it?"),
|
||||
|
||||
@@ -29,14 +29,14 @@ public:
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST_CASE("AppAction composes a stable id from prefix:title:source_key", "[speeddial][actions]")
|
||||
TEST_CASE("AppAction composes a stable id from prefix:title:source_key", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
CHECK(AppAction::compose_id("test", "Action title", "src-key") == "test:Action title:src-key");
|
||||
// source_key (not the display name) carries identity, so it is the third field.
|
||||
CHECK(AppAction::compose_id("script", "Do Thing", "pack.py") == "script:Do Thing:pack.py");
|
||||
}
|
||||
|
||||
TEST_CASE("AppAction definitions are immutable after construction", "[speeddial][actions]")
|
||||
TEST_CASE("AppAction definitions are immutable after construction", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
using StringAccessor = const std::string& (AppAction::*) () const;
|
||||
|
||||
@@ -52,7 +52,7 @@ TEST_CASE("AppAction definitions are immutable after construction", "[speeddial]
|
||||
CHECK(action.source_name() == "Action source");
|
||||
}
|
||||
|
||||
TEST_CASE("ActionRegistry takes exclusive ownership of published actions", "[speeddial][actions]")
|
||||
TEST_CASE("ActionRegistry takes exclusive ownership of published actions", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
using ExpectedUpsert = void (ActionRegistry::*)(std::unique_ptr<AppAction>);
|
||||
|
||||
@@ -61,7 +61,7 @@ TEST_CASE("ActionRegistry takes exclusive ownership of published actions", "[spe
|
||||
|
||||
// A dynamic "Go to Plate N" action is keyed by plate index (not the display title), so renaming
|
||||
// a plate never re-keys it - the same contract as a setting action.
|
||||
TEST_CASE("Go-to-plate actions are keyed by index, not title", "[speeddial][actions]")
|
||||
TEST_CASE("Go-to-plate actions are keyed by index, not title", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
CHECK(AppAction::compose_id("orca_plate_goto", "0", "orca") == "orca_plate_goto:0:orca");
|
||||
CHECK(AppAction::compose_id("orca_plate_goto", "2", "orca") == "orca_plate_goto:2:orca");
|
||||
@@ -69,7 +69,7 @@ TEST_CASE("Go-to-plate actions are keyed by index, not title", "[speeddial][acti
|
||||
|
||||
// A dynamic "Open recent project" action is keyed by file path (not the display name), so renaming
|
||||
// a project or reordering the recents list never re-keys it - the same contract as a setting action.
|
||||
TEST_CASE("Recent-project actions are keyed by path, not title", "[speeddial][actions]")
|
||||
TEST_CASE("Recent-project actions are keyed by path, not title", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
CHECK(AppAction::compose_id("orca_recent_project", "/a/b/project.3mf", "orca") ==
|
||||
"orca_recent_project:/a/b/project.3mf:orca");
|
||||
@@ -79,7 +79,7 @@ TEST_CASE("Recent-project actions are keyed by path, not title", "[speeddial][ac
|
||||
|
||||
// A built-in command is keyed by its stable catalog key (not the localized display title), so a
|
||||
// rename or a UI-language switch never re-keys the action and its persisted favourite/stats survive.
|
||||
TEST_CASE("Command actions are keyed by catalog key, not display title", "[speeddial][actions]")
|
||||
TEST_CASE("Command actions are keyed by catalog key, not display title", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
CHECK(AppAction::compose_id("orca_command", "save_project", "orca") == "orca_command:save_project:orca");
|
||||
// The second field is the stable key, so distinct commands never collide.
|
||||
@@ -87,11 +87,42 @@ TEST_CASE("Command actions are keyed by catalog key, not display title", "[speed
|
||||
AppAction::compose_id("orca_command", "load_project", "orca"));
|
||||
}
|
||||
|
||||
// The real catalog -> action mapping keys by the stable catalog key and copies presentation from the
|
||||
// catalog, so a rename or a UI-language switch never re-keys the action.
|
||||
TEST_CASE("Command action construction keys by catalog key", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
const std::vector<Slic3r::GUI::NativeCommand>& commands = Slic3r::GUI::NativeCommands::catalog();
|
||||
REQUIRE_FALSE(commands.empty());
|
||||
const Slic3r::GUI::NativeCommand& c = commands.front();
|
||||
|
||||
std::unique_ptr<AppAction> action = Slic3r::GUI::NativeCommands::make_action(c);
|
||||
REQUIRE(action != nullptr);
|
||||
CHECK(action->id() == AppAction::compose_id("orca_command", c.key, "orca"));
|
||||
CHECK(action->id() != AppAction::compose_id("orca_command", c.title, "orca"));
|
||||
CHECK(action->title() == c.title);
|
||||
CHECK(action->group == c.group);
|
||||
CHECK(action->input == c.input);
|
||||
CHECK(action->icon == c.icon);
|
||||
}
|
||||
|
||||
// Two-phase commands declare the input the palette must collect before they can run.
|
||||
TEST_CASE("Two-phase commands declare their input phase", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
auto input_of = [](const std::string& key) -> std::string {
|
||||
for (const auto& c : Slic3r::GUI::NativeCommands::catalog())
|
||||
if (c.key == key)
|
||||
return c.input;
|
||||
return {};
|
||||
};
|
||||
CHECK(input_of("go_to_layer") == "percent");
|
||||
CHECK(input_of("go_to_tab") == "tab");
|
||||
}
|
||||
|
||||
// The quick-launch cap must stay 10 to match the numbered Alt/Option+1..9,0 keys. The web palette
|
||||
// mirrors it as K_FAV_LIMIT (asserted in speeddial.test.js); the C++ side pins it here.
|
||||
static_assert(Slic3r::GUI::ActionRegistry::kFavLimit == 10, "kFavLimit must stay 10");
|
||||
|
||||
TEST_CASE("Favourite lists are capped and deduped preserving order", "[speeddial][actions]")
|
||||
TEST_CASE("Favourite lists are capped and deduped preserving order", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
using Slic3r::GUI::cap_favourites;
|
||||
|
||||
@@ -101,7 +132,7 @@ TEST_CASE("Favourite lists are capped and deduped preserving order", "[speeddial
|
||||
CHECK(cap_favourites({"a", "b"}, 0) == std::vector<std::string>{});
|
||||
}
|
||||
|
||||
TEST_CASE("Native command catalog has unique keys and present titles", "[speeddial][actions]")
|
||||
TEST_CASE("Native command catalog has unique keys and present titles", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
const std::vector<Slic3r::GUI::NativeCommand>& commands = Slic3r::GUI::NativeCommands::catalog();
|
||||
CHECK_FALSE(commands.empty());
|
||||
@@ -118,7 +149,7 @@ TEST_CASE("Native command catalog has unique keys and present titles", "[speeddi
|
||||
// Every command's tile pictogram is the SVG the matching GUI control already uses; an absent icon
|
||||
// means a blank tile (like the tab picker). Guard representative names and that every non-empty
|
||||
// value resolves to a shipped file, so a rename/typo cannot leave broken images in the palette.
|
||||
TEST_CASE("Native command icons resolve to shipped SVGs", "[speeddial][actions]")
|
||||
TEST_CASE("Native command icons resolve to shipped SVGs", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
const std::vector<Slic3r::GUI::NativeCommand>& commands = Slic3r::GUI::NativeCommands::catalog();
|
||||
auto icon_of = [&commands](const std::string& key) -> const std::string* {
|
||||
@@ -159,7 +190,7 @@ TEST_CASE("Native command icons resolve to shipped SVGs", "[speeddial][actions]"
|
||||
// The Help-menu commands, wiki/YouTube links and the developer-mode toggle are part of the palette.
|
||||
// Guard their presence and that they stay grouped with their peers, so a catalog edit cannot drop
|
||||
// or scatter them. Groups are compared to the peer's own group to stay independent of translation.
|
||||
TEST_CASE("Native command catalog includes the Help and developer-mode commands", "[speeddial][actions]")
|
||||
TEST_CASE("Native command catalog includes the Help and developer-mode commands", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
const std::vector<Slic3r::GUI::NativeCommand>& commands = Slic3r::GUI::NativeCommands::catalog();
|
||||
auto find = [&commands](const std::string& key) -> const Slic3r::GUI::NativeCommand* {
|
||||
@@ -187,7 +218,7 @@ TEST_CASE("Native command catalog includes the Help and developer-mode commands"
|
||||
|
||||
// Every "Add Primitive" item and shipped handy model has a palette command, grouped as in the Add
|
||||
// menu. Groups are compared to a peer's own group to stay independent of translation.
|
||||
TEST_CASE("Native command catalog covers the Add menus", "[speeddial][actions]")
|
||||
TEST_CASE("Native command catalog covers the Add menus", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
const std::vector<Slic3r::GUI::NativeCommand>& commands = Slic3r::GUI::NativeCommands::catalog();
|
||||
auto group_of = [&commands](const std::string& key) -> const std::string* {
|
||||
@@ -221,7 +252,7 @@ TEST_CASE("Native command catalog covers the Add menus", "[speeddial][actions]")
|
||||
|
||||
// A setting whose mode is above the user's current mode must be prompted before it can be edited.
|
||||
// Developer settings (comDevelop) are above every non-developer mode, so they always prompt then.
|
||||
TEST_CASE("Settings above the current mode require a switch", "[speeddial][actions]")
|
||||
TEST_CASE("Settings above the current mode require a switch", "[ActionSource][SpeedDial]")
|
||||
{
|
||||
using Slic3r::GUI::requires_mode_switch;
|
||||
using Slic3r::comAdvanced;
|
||||
|
||||
Reference in New Issue
Block a user