From a70b903a1992a5948322ab4e011c3ce5ce9b064f Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Wed, 10 Jun 2026 08:54:11 +0200 Subject: [PATCH 01/20] Update German translations in OrcaSlicer_de.po (#14135) --- localization/i18n/de/OrcaSlicer_de.po | 312 ++++++++++++++++++++------ 1 file changed, 244 insertions(+), 68 deletions(-) diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 7b55bc286d..b6136c2dc2 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -1873,12 +1873,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Sie befinden sich derzeit im Stealth-Modus. Um sich in der Cloud anzumelden, " +"müssen Sie zunächst den Stealth-Modus deaktivieren." msgid "Stealth Mode" -msgstr "" +msgstr "Stealth-Modus" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Stealth-Modus verlassen" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1900,20 +1902,31 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Cloud-Synchronisationskonflikt: Dieses Profil hat eine neuere Version in " +"OrcaCloud.\n" +"Pull lädt die Cloud-Kopie herunter. Force Push überschreibt sie mit Ihrem " +"lokalen Profil." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Cloud-Synchronisationskonflikt: Ein Profil mit diesem Namen existiert bereits " +"in OrcaCloud.\n" +"Pull lädt die Cloud-Kopie herunter. Force Push überschreibt sie mit Ihrem " +"lokalen Profil." msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Force Push überschreibt die Cloud-Kopie mit Ihren lokalen Profiländerungen.\n" +"Möchten Sie fortfahren?" msgid "Resolve cloud sync conflict" msgstr "" +"Cloud-Synchronisationskonflikt lösen" msgid "Retrieving printer information, please try again later." msgstr "Empfange Druckerinformationen, bitte später erneut versuchen." @@ -2231,7 +2244,7 @@ msgid "Orca Cube" msgstr "Orca Würfel" msgid "OrcaSliced Combo" -msgstr "" +msgstr "OrcaSliced Kombination" msgid "Orca Tolerance Test" msgstr "Orca Toleranz Test" @@ -5670,7 +5683,7 @@ msgid "Outline" msgstr "Umriss" msgid "Realistic View" -msgstr "" +msgstr "Realistische Ansicht" msgid "Perspective" msgstr "Perspektive" @@ -5980,7 +5993,7 @@ msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" msgid "Troubleshoot Center" -msgstr "" +msgstr "Fehlerbehebungszentrum" msgid "Open Network Test" msgstr "Netzwerktest öffnen" @@ -6024,10 +6037,10 @@ msgid "Rear" msgstr "Hinten" msgid "Rear View" -msgstr "Ansicht von Hinten" +msgstr "Ansicht von hinten" msgid "Left View" -msgstr "Anicht von Links" +msgstr "Ansicht von links" msgid "Right View" msgstr "Ansicht von rechts" @@ -7371,10 +7384,10 @@ msgid "Model file downloaded." msgstr "Modelldatei heruntergeladen." msgid "Pull" -msgstr "" +msgstr "Herunterladen" msgid "Force push" -msgstr "" +msgstr "Hochladen erzwingen" msgid "Shared profiles may be available for this printer." msgstr "Für diesen Drucker sind möglicherweise freigegebene Profile verfügbar." @@ -8449,10 +8462,10 @@ msgstr "" "werden nur positive Teile exportiert." msgid "Flashforge host is not available." -msgstr "" +msgstr "Flashforge-Host ist nicht verfügbar." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "Anmeldung am Flashforge-Drucker nicht möglich." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -9031,22 +9044,22 @@ msgid "Graphics" msgstr "Grafik" msgid "Phong shading" -msgstr "" +msgstr "Phong-Shading" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Verwendet Phong-Shading in der realistischen Ansicht." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "SSAO-Umgebungsverdeckung" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Wendet SSAO in der realistischen Ansicht an." msgid "Shadows" -msgstr "" +msgstr "Schatten" msgid "Renders cast shadows on the plate in realistic view." -msgstr "" +msgstr "Zeigt geworfene Schatten auf der Platte in der realistischen Ansicht an." msgid "Anti-aliasing" msgstr "Kantenglättung" @@ -9126,12 +9139,16 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Dies deaktiviert alle Cloud-Funktionen, einschließlich der Profil-Synchronisierung " +"mit Orca Cloud. Benutzer, die es vorziehen, vollständig offline zu arbeiten, " +"können diese Option aktivieren.\n" +"Hinweis: Wenn der Unsichtbare Modus aktiviert ist, werden Ihre Benutzerprofile nicht in Orca Cloud gesichert." msgid "Hide login side panel" -msgstr "" +msgstr "Login-Seitenleiste ausblenden" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Blendet die Login-Seitenleiste auf der Startseite aus." msgid "Network test" msgstr "Netzwerktest" @@ -9299,12 +9316,14 @@ msgstr "" "Sehr experimentell! Langsam und kann Artefakte erzeugen." msgid "Show unsupported presets" -msgstr "" +msgstr "Nicht unterstützte Profile anzeigen" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Zeigt inkompatible/nicht unterstützte Profile in den Dropdown-Listen für " +"Drucker und Filament an. Diese Profile können nicht ausgewählt werden." msgid "Allow Abnormal Storage" msgstr "Fehlerhaften Speicher zulassen" @@ -10966,6 +10985,11 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"Die Option Rückzug vor Wischen kann nur 100% sein, wenn der Modus Filament " +"Rückzug durch Firmware verwendet wird.\n" +"\n" +"Soll ich es auf 100% setzen, um den Filament Rückzug durch Firmware zu " +"aktivieren?" msgid "Firmware Retraction" msgstr "Filament Rückzug durch Firmware" @@ -12720,17 +12744,23 @@ msgid "Layer height cannot exceed nozzle diameter." msgstr "Schichthöhe darf den Düsendurchmesser nicht überschreiten." msgid "Bridge line width must not exceed nozzle diameter" -msgstr "" +msgstr "Die Breite der Brückenlinie darf den Düsendurchmesser nicht überschreiten." msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" wurde in before_layer_change_gcode gefunden, aber G oder E sind " +"nicht großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene " +"\"G92 E0\"." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" wurde in layer_change_gcode gefunden, aber G oder E sind " +"nicht großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene " +"\"G92 E0\"." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12745,6 +12775,8 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"\"G92 E0\" wurde in before_layer_change_gcode gefunden, was mit absoluter " +"Extruderadressierung nicht kompatibel ist." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " @@ -12859,29 +12891,32 @@ msgid "Extruder printable area" msgstr "Druckbarer Bereich des Extruders" msgid "Support parallel printheads" -msgstr "" +msgstr "Unterstützung paralleler Druckköpfe" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." -msgstr "" +msgstr "Aktivieren Sie die Druckereinstellungen für Maschinen, die mehrere Druckköpfe parallel verwenden können." msgid "Parallel printheads count" -msgstr "" +msgstr "Anzahl der parallelen Druckköpfe" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." -msgstr "" +msgstr "Legen Sie die Anzahl der parallelen Druckköpfe für Maschinen wie den OrangeStorm Giga Drucker fest." msgid "Parallel printheads bed exclude areas" -msgstr "" +msgstr "Druckbett-Ausschlussbereiche für parallele Druckköpfe" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Geordnete Liste der Druckbett-Ausschlussbereiche nach Anzahl der parallelen " +"Druckköpfe. Punkt 1 gilt für einen Druckkopf, Punkt 2 für zwei Druckköpfe und so " +"weiter. Lassen Sie einen Punkt leer, wenn keine Ausschlussbereiche vorhanden sind." msgid "Bed exclude area" msgstr "ausgenommene Druckbettfläche" @@ -13029,10 +13064,10 @@ msgstr "" "erforderliche Passwort enthalten." msgid "Serial Number" -msgstr "" +msgstr "Seriennummer" msgid "Flashforge local API requires the printer serial number." -msgstr "" +msgstr "Die lokale Flashforge-API erfordert die Seriennummer des Druckers." msgid "Name of the printer." msgstr "Name des Druckers" @@ -13405,6 +13440,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Externe Brückenwinkelüberschreibung.\n" +"Wenn auf Null gelassen, wird der Brückenwinkel automatisch für jede " +"spezifische Brücke berechnet.\n" +"Ansonsten wird der angegebene Winkel wie folgt verwendet:\n" +" - Die absoluten Koordinaten\n" +" - Die absoluten Koordinaten + Modellrotation: Wenn 'Füllrichtung an Modell " +"ausrichten' aktiviert ist\n" +" - Der optimale automatische Winkel + dieser Wert: Wenn 'Relativer " +"Brückenwinkel' aktiviert ist\n" +"\n" +"Verwenden Sie 180° für einen absoluten Winkel von Null." msgid "Internal bridge infill direction" msgstr "Interne Brücken Füllrichtung" @@ -13422,14 +13468,27 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Interne Brückenwinkelüberschreibung.\n" +"Wenn auf Null gelassen, wird der Brückenwinkel automatisch für jede " +"spezifische Brücke berechnet.\n" +"Ansonsten wird der angegebene Winkel wie folgt verwendet:\n" +" - Die absoluten Koordinaten\n" +" - Die absoluten Koordinaten + Modellrotation: Wenn 'Füllrichtung an Modell " +"ausrichten' aktiviert ist\n" +" - Der optimale automatische Winkel + dieser Wert: Wenn 'Relativer " +"Brückenwinkel' aktiviert ist\n" +"\n" +"Verwenden Sie 180° für einen absoluten Winkel von Null." msgid "Relative bridge angle" -msgstr "" +msgstr "Relativer Brückenwinkel" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Wenn aktiviert, werden die Brückenwinkelwerte zur automatisch berechneten " +"Brückenrichtung hinzugefügt, anstatt sie zu überschreiben." msgid "External bridge density" msgstr "Externe Brücken Dichte" @@ -13453,6 +13512,19 @@ msgid "" "\n" "Recommended range: Minimum 10% - Maximum 125%." msgstr "" +"Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist 100%.\n" +"Theoretisch bedeutet 100% eine solide Brücke, aber aufgrund der Neigung von " +"Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht ausreichend.\n" +"\n" +"- Höher als 100% Dichte (Empfohlen Max 125%):\n" +" - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende Linien während des Druckens zusätzliche Unterstützung bieten.\n" +" - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" +"\n" +"- Niedriger als 100% Dichte (Min 10%):\n" +" - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die extrudierte Brücke vorhanden ist.\n" +" - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität führen.\n" +"\n" +"Empfohlener Bereich: Minimum 10% - Maximum 125%." msgid "Internal bridge density" msgstr "Interne Brücken Dichte" @@ -13480,6 +13552,28 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist 100%. " +"100% bedeutet eine solide interne Brücke.\n" +"\n" +"Interne Brücken wirken als Zwischenstütze zwischen lockerer Füllung und " +"oberer festen Füllung und können die Qualität der Oberseite stark beeinflussen.\n" +"\n" +"- Höher als 100% Dichte (Empfohlen Max 125%):\n" +" - Vorteile: Verbessert die Stärke der internen Brücke und die Unterstützung " +"unter den oberen Schichten, reduziert das Durchhängen und verbessert die " +"Oberflächenqualität.\n" +" - Nachteile: Erhöht den Materialverbrauch und die Druckzeit; eine zu hohe " +"Dichte kann zu Überfüllung und inneren Spannungen führen.\n" +"\n" +"- Niedriger als 100% Dichte (Min 10%):\n" +" - Vorteile: Kann das Pillowing reduzieren und die Kühlung verbessern (mehr " +"Luftzirkulation durch die Brücke), und kann den Druck beschleunigen.\n" +" - Nachteile: Kann die innere Unterstützung reduzieren und das Risiko von " +"Durchhängen und Defekten auf der Oberseite erhöhen.\n" +"\n" +"Diese Option funktioniert besonders gut in Kombination mit der zweiten internen " +"Brücke über Füllungsoption, um die Brückenbildung weiter zu verbessern, bevor " +"die obere feste Füllung extrudiert wird." msgid "Bridge flow ratio" msgstr "Brücken Flussrate" @@ -13505,6 +13599,15 @@ msgid "" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"Die Brückenlinienbreite wird entweder als absoluter Wert oder als Prozentsatz " +"des aktiven Düsendurchmessers angegeben (Prozentsätze werden vom Düsendurch- " +"messer berechnet).\n" +"Wird empfohlen, in Verbindung mit einer höheren Brückendichte oder einer " +"höheren Brückenflussrate zu verwenden.\n" +"\n" +"Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" +"Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren " +"festen Füllung." msgid "Internal bridge flow ratio" msgstr "Interne Brücken Flussrate" @@ -13521,6 +13624,15 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Dieser Wert steuert die Dicke der internen Brückenlage. Dies ist die erste " +"Schicht über der lockeren Füllung, daher kann eine Erhöhung die Festigkeit und ""die Qualität der oberen Schicht verbessern.\n" +"Werte über 1.0: Erhöhen die Materialmenge bei gleichbleibendem Linienabstand. Dies kann die " +"Linienkontakt und Festigkeit verbessern.\n" +"Werte unter 1.0: Reduzieren die Materialmenge bei Anpassung des Linienabstands, um den Kontakt aufrechtzuerhalten. Dies kann das Durchhängen verbessern.\n" +"\n" +"Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem " +"Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " +"multipliziert wird." msgid "Top surface flow ratio" msgstr "Durchflussverhältnis obere Fläche" @@ -13909,6 +14021,30 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Aktivieren Sie diese Option, um den Druck in Bereichen zu verlangsamen, in " +"denen sich die Umfänge möglicherweise nach oben gekrümmt haben.\n" +"Zum Beispiel wird bei der Druckung von Überhängen an scharfen Ecken wie dem " +"Vorderteil der Benchy-Hülle eine zusätzliche Verlangsamung angewendet, um " +"das Krümmen zu reduzieren, das sich über mehrere Schichten hinweg " +"verstärkt.\n" +"\n" +"Es wird in der Regel empfohlen, diese Option aktiviert zu lassen, es sei " +"denn, Ihre Druckerkühlung ist stark genug oder die Druckgeschwindigkeit ist " +"langsam genug, sodass sich Umfänge nicht krümmen. \n" +"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann dieser " +"Parameter bei der Verlangsamung Wandartefakte verursachen, da die " +"potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran " +"hindert, dem geforderten Fließänderungsverlauf zu folgen.\n" +"Die Ursache dieser Artefakte ist in der Regel eine leicht abweichende PA-" +"Einstellung, insbesondere in Kombination mit einer hohen PA-Glättungszeit.\n" +"\n" +"Empfehlungen bei Aktivierung dieser Option:\n" +"1. Reduzieren Sie die Glättungszeit des Druckvorschubs auf 0,015 - 0,02, damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" +"2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen den schnellen und langsamen Segmenten zu begrenzen.\n" +"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" +"\n" +"Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" +"Zum Beispiel wird bei den Umfängen, die zu 100 % überhängen, wobei keine Wand darunter liegt, die 100 % Überhanggeschwindigkeit angewendet." msgid "mm/s or %" msgstr "mm/s o. %" @@ -14199,6 +14335,10 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Wenn aktiviert, verwendet die Brückenextrusion eine Linienhöhe, die dem " +"Düsendurchmesser entspricht.\n" +"Dies erhöht die Brückenfestigkeit und Zuverlässigkeit, ermöglicht längere Spannweiten, kann aber das Aussehen verschlechtern.\n" +"Wenn deaktiviert, können Brücken besser aussehen, sind aber im Allgemeinen nur für kürzere Spannweiten zuverlässig." msgid "Thick internal bridges" msgstr "Dicke interne Brücken" @@ -14211,6 +14351,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Wenn aktiviert, verwendet die interne Brückenextrusion eine Linienhöhe, die " +"dem Düsendurchmesser entspricht.\n" +"Dies erhöht die interne Brückenfestigkeit und Zuverlässigkeit, wenn über " +"seltenes Infill gedruckt wird, kann aber das Aussehen verschlechtern.\n" +"Wenn deaktiviert, können interne Brücken besser aussehen, sind aber " +"überdünnes Infill weniger zuverlässig." msgid "Extra bridge layers (beta)" msgstr "Zusätzliche Brückenschichten (Beta)" @@ -15499,6 +15645,9 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Richtet die Richtungen von Füllung, Brücke, Glättung und Oberflächenfüllung so " +"aus, dass sie der Orientierung des Modells auf der Bauplatte folgen.\n" +"Wenn aktiviert, drehen sich die Richtungen mit dem Modell, um optimale Festigkeitseigenschaften zu erhalten." msgid "Insert solid layers" msgstr "Massive Schichten einfügen" @@ -15634,25 +15783,28 @@ msgstr "" "Wabenstruktur." msgid "Lightning overhang angle" -msgstr "" +msgstr "Überhangwinkel der Blitzfüllung" msgid "Maximum overhang angle for Lightning infill support propagation." -msgstr "" +msgstr "Maximaler Überhangwinkel für die Ausbreitung der Blitzfüllungsunterstützung." msgid "Prune angle" -msgstr "" +msgstr "Beschneidungswinkel" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Steuert, wie aggressiv kurze oder nicht unterstützte Blitzäste beschnitten " +"werden.\n" +"Dieser Winkel wird intern in eine pro-Schicht-Distanz umgewandelt." msgid "Straightening angle" -msgstr "" +msgstr "Begradigungswinkel" msgid "Maximum straightening angle used to simplify Lightning branches." -msgstr "" +msgstr "Maximaler Begradigungswinkel zur Vereinfachung von Blitzästen." msgid "Sparse infill anchor length" msgstr "Länge des Infill-Ankers" @@ -16761,6 +16913,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der internen spärlichen Füllung.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17649,20 +17803,24 @@ msgstr "" "100%% Überhang wird die Brückengeschwindigkeit verwendet." msgid "Outer walls" -msgstr "" +msgstr "Äußere Wände" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der äußeren Wände.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "Inner walls" -msgstr "" +msgstr "Innere Wände" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der inneren Wände.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18382,16 +18540,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der internen massiven Füllung.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der oberen Oberfläche.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament zum Drucken der unteren Oberfläche.\n" +"\"Standard\" verwendet das Filament des aktiven Objekts/Teils." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18795,6 +18959,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filament zum Drucken der Stützstruktur-Basis und des Rafts.\n" +"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur und das " +"aktuelle Filament wird verwendet." msgid "Avoid interface filament for base" msgstr "Schnittstellenfilament für die Basis verringern" @@ -18828,6 +18995,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filament zum Drucken der Stützstruktur-Schnittstelle.\n" +"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur-" +"Schnittstelle und das aktuelle Filament wird verwendet." msgid "Top interface layers" msgstr "Obere Schnittstellenschichten" @@ -19943,7 +20113,7 @@ msgid "Invalid value when spiral vase mode is enabled: " msgstr "Ungültiger Wert, wenn der Spiral-Vase-Modus aktiviert ist: " msgid "Bridge line width must not exceed nozzle diameter: " -msgstr "" +msgstr "Die Brückenlinienbreite darf den Düsendurchmesser nicht überschreiten: " msgid "too large line width " msgstr "Zu große Linienbreite" @@ -20210,10 +20380,10 @@ msgstr "" "3:info, 4:debug, 5:trace\n" msgid "Log file" -msgstr "" +msgstr "Protokolldatei" msgid "Redirects debug logging to file.\n" -msgstr "" +msgstr "Leitet die Fehlerprotokollierung in eine Datei um.\n" msgid "Enable timelapse for print" msgstr "Zeitraffer für Druck aktivieren" @@ -21764,13 +21934,13 @@ msgid "Top Surface Pattern" msgstr "Oberflächenmuster" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Wählen Sie einen Slot für die ausgewählte Farbe" msgid "Material in the material station" -msgstr "" +msgstr "Material in der Materialstation" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Es können nur Materialien desselben Typs ausgewählt werden." msgid "Send G-code to printer host" msgstr "Senden Sie G-Code an den Drucker-Host" @@ -21798,46 +21968,50 @@ msgid "Upload" msgstr "Hochladen" msgid "Leveling before print" -msgstr "" +msgstr "Nivellierung vor dem Druck" msgid "Time-lapse" msgstr "Zeitraffer" msgid "Enable IFS" -msgstr "" +msgstr "IFS aktivieren" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "%d IFS-Slots auf dem Drucker erkannt." msgid "This printer does not report a material station." -msgstr "" +msgstr "Dieser Drucker meldet keine Materialstation." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "Kann IFS-Slots vom Drucker nicht lesen." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Lade IFS-Slots vom Drucker..." msgid "Slice the plate first to get project material information." -msgstr "" +msgstr "Schneiden Sie die Platte zuerst, um Projektmaterialinformationen zu erhalten." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Diese Platte verwendet mehrere Materialien. Aktivieren Sie IFS und weisen Sie jedem Werkzeug einen Drucker-Slot zu." + msgid "Each project material must be assigned to an IFS slot before printing." -msgstr "" +msgstr "Jedes Projektmaterial muss vor dem Drucken einem IFS-Slot zugewiesen werden." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Jedes Projektmaterial muss vor dem Drucken einem geladenen IFS-Slot zugewiesen werden." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"Jedes Projektmaterial muss mit dem in dem ausgewählten IFS-Slot geladenen Material übereinstimmen." msgid "Print host upload queue" msgstr "Druck-Host-Upload-Warteschlange" @@ -21894,13 +22068,13 @@ msgstr "Glatte Bauplatte (Seite B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Drucker: %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Vor dem Drucken kalibrieren" msgid "Filament Mapping:" -msgstr "" +msgstr "Filamentzuordnung:" msgid "Unable to perform boolean operation on selected parts" msgstr "" @@ -22628,16 +22802,16 @@ msgstr "" "Druckerkommunikation. Verfügbare Agenten werden beim Start registriert." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Wählen Sie einen Flashforge-Drucker aus" msgid "Discovered Printers" -msgstr "" +msgstr "Gefundene Drucker" msgid "Could not get a valid Printer Host reference" msgstr "Konnte keine gültige Referenz zum Druck-Host erhalten" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" -msgstr "" +msgstr "Keine gültige Sitzung erkannt. Mit dem Login bei 3DPrinterOS fortfahren?" msgid "Success!" msgstr "Erfolgreich!" @@ -22688,28 +22862,28 @@ msgstr "" "fehlgeschlagen." msgid "3DPrinterOS Cloud upload options" -msgstr "" +msgstr "3DPrinterOS Cloud-Upload-Optionen" msgid "Single file" -msgstr "" +msgstr "Einzelne Datei" msgid "Project File" -msgstr "" +msgstr "Projektdatei" msgid "Project:" -msgstr "" +msgstr "Projekt:" msgid "Printer type:" -msgstr "" +msgstr "Druckertyp:" msgid "Printer type not found, please select manually." -msgstr "" +msgstr "Druckertyp nicht gefunden, bitte manuell auswählen." msgid "Authorizing..." -msgstr "" +msgstr "Autorisierung..." msgid "Error session check" -msgstr "" +msgstr "Fehler bei der Sitzungsüberprüfung" #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -23508,19 +23682,19 @@ msgstr "" "es einzurichten." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge hat eine ungültige JSON-Antwort zurückgegeben." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "Es wurden keine Flashforge-Drucker im lokalen Netzwerk gefunden." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Erfolgreich mit der lokalen Flashforge-API verbunden." msgid "Serial connection to Flashforge is working correctly." msgstr "Die serielle Verbindung zu Flashforge funktioniert korrekt." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "Konnte keine Verbindung zur lokalen Flashforge-API herstellen." msgid "Could not connect to Flashforge via serial" msgstr "" @@ -23529,6 +23703,8 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"Die lokale Flashforge-API erfordert sowohl die Seriennummer als auch den " +"Zugriffscode." msgid "The provided state is not correct." msgstr "Der bereitgestellte Status ist nicht korrekt." From 3be36bdea4548410efd8251bd7391c449bdf86fb Mon Sep 17 00:00:00 2001 From: wujie Date: Wed, 10 Jun 2026 21:38:39 +0800 Subject: [PATCH 02/20] Fix Elegoo CC2 layer stats G-code and missing Giga preset renamed_from (#14136) * Sync Elegoo profiles from ElegooSlicer Update vendor Elegoo.json, filament/machine/process trees, and OrcaFilamentLibrary Elegoo entries. Align machine default material names with existing filament preset names. * feat: expose filament_name for G-code export filename format Derive from filament_settings_id for the first active extruder and strip the suffix after @, matching ElegooSlicer so filename_format can use {filament_name}. * chore: reorder Elegoo entries in OrcaFilamentLibrary Group Elegoo @base profiles and bump library version to 02.03.02.62. * sync OrcaFilamentLibrary.json with Elegoo filament profiles * fix: clean up Elegoo process renamed_from for profile validation Add single renamed_from only where preset names changed from legacy Orca names; remove duplicate Rapid @System library entries that conflicted with ECC2 vendor presets. * fix(profiles): add missing Elegoo renamed_from for profile validation CI custom-preset tests still inherit legacy Orca preset names that no longer exist after the Elegoo bundle update. Add renamed_from on process, Neptune 4 machines, OrcaFilamentLibrary filaments, and Giga profiles so inherits resolve again, without changing print parameters. * fix(profiles,elegoo): resolve renamed presets and CC2 SET_PRINT_STATS_INFO G-code Resolve legacy preset names through renamed_from when validating presets and loading external projects. Add missing renamed_from aliases for Elegoo Giga process and OrcaFilamentLibrary filaments. Combine TOTAL_LAYER and CURRENT_LAYER in one SET_PRINT_STATS_INFO command on Centauri Carbon 2 (ECC2), Centauri (EC), and Centauri Carbon (ECC) 0.4 nozzle profiles. * chore(profiles): bump Elegoo and OrcaFilamentLibrary profile versions Refresh installed profile bundles after renamed_from aliases, CC2 SET_PRINT_STATS_INFO G-code, and Preset.cpp renamed preset resolution fixes. --- resources/profiles/Elegoo.json | 2 +- .../machine/EC/Elegoo Centauri 0.4 nozzle.json | 4 ++-- .../ECC/Elegoo Centauri Carbon 0.4 nozzle.json | 4 ++-- .../ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json | 4 ++-- .../0.16mm Optimal @Elegoo Giga 0.4 nozzle.json | 1 + .../EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json | 1 + .../0.20mm Standard @Elegoo Giga 0.4 nozzle.json | 1 + .../0.20mm Strength @Elegoo Giga 0.4 nozzle.json | 1 + .../0.24mm Draft @Elegoo Giga 0.4 nozzle.json | 1 + .../EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json | 1 + .../0.24mm Optimal @Elegoo Giga 0.6 nozzle.json | 1 + .../0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json | 1 + .../EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json | 1 + .../0.30mm Standard @Elegoo Giga 0.6 nozzle.json | 1 + .../0.30mm Strength @Elegoo Giga 0.6 nozzle.json | 1 + .../0.32mm Optimal @Elegoo Giga 0.8 nozzle.json | 1 + .../0.36mm Draft @Elegoo Giga 0.6 nozzle.json | 1 + .../0.40mm Optimal @Elegoo Giga 1.0 nozzle.json | 1 + .../0.40mm Standard @Elegoo Giga 0.8 nozzle.json | 1 + .../0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json | 1 + .../0.48mm Draft @Elegoo Giga 0.8 nozzle.json | 1 + .../0.50mm Standard @Elegoo Giga 1.0 nozzle.json | 1 + .../0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json | 1 + .../0.60mm Draft @Elegoo Giga 1.0 nozzle.json | 1 + resources/profiles/OrcaFilamentLibrary.json | 2 +- .../filament/Elegoo/Elegoo ABS @System.json | 1 + .../filament/Elegoo/Elegoo ASA-CF @System.json | 1 + .../filament/Elegoo/Elegoo PAHT-CF @System.json | 1 + .../filament/Elegoo/Elegoo PC @System.json | 1 + .../filament/Elegoo/Elegoo PC-FR @System.json | 1 + .../filament/Elegoo/Elegoo PET-CF @System.json | 1 + .../filament/Elegoo/Elegoo PETG @System.json | 1 + .../filament/Elegoo/Elegoo PETG HF @System.json | 1 + .../Elegoo/Elegoo PETG Translucent @System.json | 1 + .../filament/Elegoo/Elegoo PETG-CF @System.json | 1 + .../filament/Elegoo/Elegoo PETG-GF @System.json | 1 + .../filament/Elegoo/Elegoo PLA Basic @System.json | 1 + .../filament/Elegoo/Elegoo PLA Galaxy @System.json | 1 + .../filament/Elegoo/Elegoo PLA Glow @System.json | 1 + .../filament/Elegoo/Elegoo PLA Marble @System.json | 1 + .../filament/Elegoo/Elegoo PLA Sparkle @System.json | 1 + .../Elegoo/Elegoo PLA Translucent2 @System.json | 1 + .../filament/Elegoo/Elegoo PLA Wood @System.json | 1 + .../Elegoo/Elegoo Rapid TPU 95A @System.json | 1 + .../filament/Elegoo/Elegoo TPU 95A @System.json | 1 + src/libslic3r/Preset.cpp | 12 ++++++++++-- 46 files changed, 58 insertions(+), 10 deletions(-) diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index a80b129b68..dd18bac848 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,6 +1,6 @@ { "name": "Elegoo", - "version": "02.04.00.02", + "version": "02.04.00.04", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json index c98a5ecfb9..5dd0f6691c 100644 --- a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json @@ -62,7 +62,7 @@ "change_filament_gcode": "", "machine_pause_gcode": "M600", "support_multi_filament": "0", - "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", - "machine_start_gcode": ";;===== date: 20251011 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "layer_change_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", + "machine_start_gcode": ";;===== date: 20251011 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "machine_end_gcode": ";===== date: 20250603 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800\nG2 I1 J0 Z{max_layer_z+0.5} F3000 ; lower z a little\nG90\n{if max_layer_z > 100}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" } diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json index a354e51d6f..5e3de2b1e6 100644 --- a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json @@ -66,7 +66,7 @@ "change_filament_gcode": "\n;==========CC_CHANGE_FILAMENT_GCODE_CCB==========\n;===== date: 2025-12-04-001 =====================\nM106 S0\nM106 P2 S0\nG1 Z{min(max_layer_z+3, printable_height+0.5)} F1200\nM6211 T[next_extruder] L[flush_length] M{old_filament_e_feedrate} N{new_filament_e_feedrate} Q[old_filament_temp] R[nozzle_temperature_range_high] S[new_filament_temp]\nT[next_extruder]\n;==========CC_CHANGE_FILAMENT_GCODE_CCE==========", "machine_pause_gcode": "M600", "support_multi_filament": "1", - "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", - "machine_start_gcode": ";===== CC_START_GCODE ================\n;===== date: 2026-04-28-001 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nM83\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\n\n\nG90\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X0 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X0.9 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "layer_change_gcode": "SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", + "machine_start_gcode": ";===== CC_START_GCODE ================\n;===== date: 2026-04-28-001 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\n;bed_level_temp:[bed_temperature_initial_layer_single]\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nM83\nG28 ;home\nM729 ;Clean Nozzle\nM190 S[bed_temperature_initial_layer_single]\n\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\n\n\nG90\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X0 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X0.9 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "machine_end_gcode": ";===== CC_END_GCODE ================\n;===== date: 2025-12-04-001 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800\nG2 I1 J0 Z{max_layer_z+0.5} F3000 ; lower z a little\nG90\n{if max_layer_z > 100}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM749\nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" } diff --git a/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json index a190c292c3..7b7c1619ea 100644 --- a/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/ECC2/Elegoo Centauri Carbon 2 0.4 nozzle.json @@ -86,9 +86,9 @@ "9" ], "change_filament_gcode": "\n;==========CC2_CHANGE_FILAMENT_GCODE==========\n;===== date: 2026-01-16-001 =====================\nM106 S0\nM106 P2 S0\nG1 Z{min(max_layer_z+3, printable_height+0.5)} F1200\nM6211 T[next_extruder] L[flush_length] M{old_filament_e_feedrate} N{new_filament_e_feedrate} Q[old_filament_temp] R[nozzle_temperature_range_high] S[new_filament_temp]\nT[next_extruder]\n", - "layer_change_gcode": "M73 L{layer_num+1}\n;LAYER:{layer_num+1}\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", + "layer_change_gcode": "M73 L{layer_num+1}\n;LAYER:{layer_num+1}\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER={layer_num+1}", "machine_end_gcode": ";===== CC2_END_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\n\nM140 S0 ;Turn-off bed\nM83\nG92 E0 ; zero the extruder\nG1 E-1.5 F1800\nG2 I0 J1 Z{max_layer_z+0.5} F3000 ; lower z a little\nM106 S0\nM106 P2 S0\nG90\n{if max_layer_z > 75}G1 Z{min(max_layer_z+5, printable_height+0.5)} F20000{else}G1 Z80 F20000 {endif}; Move print head up \nG180 S9\nM104 S0\nM84\n", - "machine_start_gcode": ";===== CC2_START_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\nG90\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nM190 S[bed_temperature_initial_layer_single] A\nM106 S0\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 FROM_SLICER=1\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\nG28\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n{if first_layer_print_min[1] > 0.5}\nG180 S7\nG1 X{print_bed_max[0]*0.5-1} Y-1.2 F20000\nG1 Z0.5 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 E6 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nM106 S200\nG1 X{print_bed_max[0]*0.5-41} E20 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nG1 F6000\nG1 X{print_bed_max[0]*0.5-46} E0.8\n{else}\nG1 E30 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))}\n{endif}\nM106 S0\nG180 S8\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_start_gcode": ";===== CC2_START_GCODE ================\n;===== date: 2026-01-16-001 =====================\n\nG90\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nM190 S[bed_temperature_initial_layer_single] A\nM106 S0\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 FROM_SLICER=1\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\nG28\nM109 S[nozzle_temperature_initial_layer]\nM6211 A1 L200 T[initial_no_support_extruder] Q[nozzle_temperature_initial_layer] R[nozzle_temperature_initial_layer] S[nozzle_temperature_initial_layer]\nT[initial_no_support_extruder]\n\n{if first_layer_print_min[1] > 0.5}\nG180 S7\nG1 X{print_bed_max[0]*0.5-1} Y-1.2 F20000\nG1 Z0.5 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 E6 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nM106 S200\nG1 X{print_bed_max[0]*0.5-41} E20 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))} \nG1 F6000\nG1 X{print_bed_max[0]*0.5-46} E0.8\n{else}\nG1 E30 F{min(1200, max(120, filament_max_volumetric_speed[initial_no_support_extruder]*60/2/2.5043))}\n{endif}\nM106 S0\nG180 S8\nG1 F20000\nG92 E0 ;Reset Extruder\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] CURRENT_LAYER=0\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", "retract_restart_extra_toolchange": [ "0.5" ] diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json index 8667a1bbc9..295cf9b20b 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.16", "instantiation": "true", + "renamed_from": "0.16mm Optimal @EOS Giga 0.4 nozzle", "name": "0.16mm Optimal @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json index 1e52b73ec6..afa4f4a0b3 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.18mm Fine @Elegoo Giga 0.6 nozzle.json @@ -2,6 +2,7 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.18", "instantiation": "true", + "renamed_from": "0.18mm Fine @EOS Giga 0.6 nozzle", "name": "0.18mm Fine @Elegoo Giga 0.6 nozzle", "compatible_printers": [ "Elegoo OrangeStorm Giga 0.6 nozzle" diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json index e1ad8c344a..8f8dbf9ca9 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Standard @Elegoo Giga 0.4 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG04020", "instantiation": "true", + "renamed_from": "0.20mm Standard @EOS Giga 0.4 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_print_height": "0.25", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json index 7acb40bb70..398980f074 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.20mm Strength @Elegoo Giga 0.4 nozzle.json @@ -4,5 +4,6 @@ "wall_sequence": "inner-outer-inner wall", "reduce_crossing_wall": "1", "instantiation": "true", + "renamed_from": "0.20mm Strength @EOS Giga 0.4 nozzle", "wall_loops": "6" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json index 4b9c599c72..620a3ac8bd 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Draft @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Draft @EOS Giga 0.4 nozzle", "name": "0.24mm Draft @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json index 559d02aad4..b334d0d45b 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Fine @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Fine @EOS Giga 0.8 nozzle", "name": "0.24mm Fine @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json index 5386ff6e49..62764498ae 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.24mm Optimal @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.24", "instantiation": "true", + "renamed_from": "0.24mm Optimal @EOS Giga 0.6 nozzle", "name": "0.24mm Optimal @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json index c661130a05..8407214a34 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.28mm Extra Draft @Elegoo Giga 0.4 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.20mm Standard @Elegoo Giga 0.4 nozzle", "layer_height": "0.28", "instantiation": "true", + "renamed_from": "0.28mm Extra Draft @EOS Giga 0.4 nozzle", "name": "0.28mm Extra Draft @Elegoo Giga 0.4 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json index 8531d718b5..424afaed59 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Fine @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.3", "instantiation": "true", + "renamed_from": "0.30mm Fine @EOS Giga 1.0 nozzle", "name": "0.30mm Fine @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json index 3f16262ffd..5ee13152a9 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Standard @Elegoo Giga 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG06030", "instantiation": "true", + "renamed_from": "0.30mm Standard @EOS Giga 0.6 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json index f6737db309..e5ab6e67fb 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.30mm Strength @Elegoo Giga 0.6 nozzle.json @@ -4,5 +4,6 @@ "wall_sequence": "inner-outer-inner wall", "reduce_crossing_wall": "1", "instantiation": "true", + "renamed_from": "0.30mm Strength @EOS Giga 0.6 nozzle", "wall_loops": "5" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json index 8358b1841e..bdd1068550 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.32mm Optimal @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.32", "instantiation": "true", + "renamed_from": "0.32mm Optimal @EOS Giga 0.8 nozzle", "name": "0.32mm Optimal @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json index 81ccb6eb3c..dbbd626b97 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.36mm Draft @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.36", "instantiation": "true", + "renamed_from": "0.36mm Draft @EOS Giga 0.6 nozzle", "name": "0.36mm Draft @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json index 9d1d99ea00..a9b9d8f9d2 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Optimal @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.4", "instantiation": "true", + "renamed_from": "0.40mm Optimal @EOS Giga 1.0 nozzle", "name": "0.40mm Optimal @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json index f5001c8a5a..d2ba5ef203 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.40mm Standard @Elegoo Giga 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "PEOSG08040", "instantiation": "true", + "renamed_from": "0.40mm Standard @EOS Giga 0.8 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json index e69eae7853..634a0d0dcc 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.42mm Extra Draft @Elegoo Giga 0.6 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.30mm Standard @Elegoo Giga 0.6 nozzle", "layer_height": "0.42", "instantiation": "true", + "renamed_from": "0.42mm Extra Draft @EOS Giga 0.6 nozzle", "name": "0.42mm Extra Draft @Elegoo Giga 0.6 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json index 460d3a4948..1d2d1eff86 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.48mm Draft @Elegoo Giga 0.8 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.48", "instantiation": "true", + "renamed_from": "0.48mm Draft @EOS Giga 0.8 nozzle", "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json index dd40cac324..fb0fa6878e 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.50mm Standard @Elegoo Giga 1.0 nozzle.json @@ -4,6 +4,7 @@ "from": "system", "setting_id": "PEOSG10050", "instantiation": "true", + "renamed_from": "0.50mm Standard @EOS Giga 1.0 nozzle", "default_acceleration": "3000", "filename_format": "EOGiga1_{nozzle_diameter[0]}_{input_filename_base}_{filament_name}_{layer_height}_{print_time}.gcode", "initial_layer_acceleration": "1000", diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json index 9003b1cdb3..e92e167768 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.56mm Extra Draft @Elegoo Giga 0.8 nozzle.json @@ -1,5 +1,6 @@ { "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "instantiation": "true", + "renamed_from": "0.56mm Extra Draft @EOS Giga 0.8 nozzle", "name": "0.56mm Extra Draft @Elegoo Giga 0.8 nozzle" } diff --git a/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json b/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json index 1d50fcf903..fe6e0e6868 100644 --- a/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json +++ b/resources/profiles/Elegoo/process/EOSGIGA/0.60mm Draft @Elegoo Giga 1.0 nozzle.json @@ -2,5 +2,6 @@ "inherits": "0.50mm Standard @Elegoo Giga 1.0 nozzle", "layer_height": "0.6", "instantiation": "true", + "renamed_from": "0.60mm Draft @EOS Giga 1.0 nozzle", "name": "0.60mm Draft @Elegoo Giga 1.0 nozzle" } diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 4af118e06e..2793d510f0 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.04.00.01", + "version": "02.04.00.02", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json index d021e99723..cee17f94ce 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ABS @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEABSS00", "instantiation": "true", + "renamed_from": "Elegoo ABS", "fan_max_speed": [ "40" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json index 1084493ef9..67881a1152 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo ASA-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEASACFS00", "instantiation": "true", + "renamed_from": "Elegoo ASA-CF", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json index 1303bc0c4a..1f9c14d50d 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PAHT-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPAHTCFS00", "instantiation": "true", + "renamed_from": "Elegoo PAHT-CF", "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json index 7892facc41..79c73d4400 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPCS00", "instantiation": "true", + "renamed_from": "Elegoo PC", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json index d542425163..22dcd15ad7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PC-FR @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPCFRS00", "instantiation": "true", + "renamed_from": "Elegoo PC-FR", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json index dfc52bf0bf..215dd7fb67 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PET-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETCFS00", "instantiation": "true", + "renamed_from": "Elegoo PET-CF", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json index cb00ed6c74..00b3abe6ba 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGS00", "instantiation": "true", + "renamed_from": "Elegoo PETG", "pressure_advance": [ "0.05" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json index 7fbd876d93..65ca9560b0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG HF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OERPETGHFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG HF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json index d191bcf93b..90944b2256 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG Translucent @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGTRANSS00", "instantiation": "true", + "renamed_from": "Elegoo PETG Translucent", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json index 7bacc7f84d..262967a7a3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-CF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGCFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG-CF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json index 6ae0310d35..bcd79021f7 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PETG-GF @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPETGFS00", "instantiation": "true", + "renamed_from": "Elegoo PETG-GF", "pressure_advance": [ "0.052" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json index 1f7735d6ee..d305fe60b2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Basic @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLABASICS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Basic", "nozzle_temperature": [ "220" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json index 9b20653149..702ca4fbf2 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Galaxy @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAGALAXYS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Galaxy", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json index c7ab217760..b5442c93cf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Glow @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAGLOWS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Glow", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json index 1bcf34ce0c..b9dc720687 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Marble @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAMARBLES00", "instantiation": "true", + "renamed_from": "Elegoo PLA Marble", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json index ec534f3c07..98efe996aa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Sparkle @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLASPARKLES00", "instantiation": "true", + "renamed_from": "Elegoo PLA Sparkle", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json index 4d32ef561e..7fd5c82416 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Translucent2 @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLATRA2S00", "instantiation": "true", + "renamed_from": "Elegoo PLA Translucent2", "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json index bda6a141b5..10a3680fe9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo PLA Wood @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OEPLAWOODS00", "instantiation": "true", + "renamed_from": "Elegoo PLA Wood", "fan_min_speed": [ "80" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json index 823ac91827..9465a56d7a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo Rapid TPU 95A @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OERTPU95AS00", "instantiation": "true", + "renamed_from": "Elegoo Rapid TPU 95A", "pressure_advance": [ "0.1" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json index 1716e4bf06..9c19595a56 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Elegoo/Elegoo TPU 95A @System.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "OETPU95AS00", "instantiation": "true", + "renamed_from": "Elegoo TPU 95A", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 9fbfe906c3..d3abf95fb4 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2362,6 +2362,10 @@ bool PresetCollection::validate_preset(const std::string &preset_name, std::stri const std::string canonical_inherit_name = this->canonical_preset_name(inherit_name); it = this->find_preset_internal(canonical_inherit_name); found = it != m_presets.end() && it->name == canonical_inherit_name && is_trusted(*it); + if (!found) { + it = this->find_preset_renamed(canonical_inherit_name); + found = it != m_presets.end() && is_trusted(*it); + } if (found) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": preset_name %1%, inherit_name %2%, found inherit in list")%preset_name %inherit_name; else @@ -2453,7 +2457,9 @@ std::pair PresetCollection::load_external_preset( if (!inherits.empty() && (different_settings_list.size() > 0)) { auto iter = this->find_preset_internal(inherits); - if (iter != m_presets.end() && iter->name == inherits) { + if (iter == m_presets.end() || iter->name != inherits) + iter = this->find_preset_renamed(inherits); + if (iter != m_presets.end()) { //std::vector dirty_options = cfg.diff(iter->config); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": change preset %1% inherit %2% 's value to %3% 's values")%original_name %inherits %path; cfg.update_non_diff_values_to_base_config(iter->config, keys, different_settings_list, extruder_id_name, extruder_variant_name, *key_set1, *key_set2); @@ -2505,7 +2511,9 @@ std::pair PresetCollection::load_external_preset( // and override its settings with the loaded ones. assert(it == m_presets.end()); it = this->find_preset_internal(inherits); - found = it != m_presets.end() && it->name == inherits; + if (it == m_presets.end() || it->name != inherits) + it = this->find_preset_renamed(inherits); + found = it != m_presets.end(); if (found && profile_print_params_same(it->config, cfg)) { // The system preset exists and it matches the values stored inside config. if (select == LoadAndSelect::Always) From 847807adac353ca5ad9afa5bca2a773fbb1a6285 Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Wed, 10 Jun 2026 22:23:12 +0800 Subject: [PATCH 03/20] fix: tombstone resolution for 409 status code with error code -3 (#14116) * fix: tombstone resolution for 409 status code with error code -3 * fix: add resolution for undefined conflicts * fix: generate setting id if it is empty for 409 tombstone * fix: force push empty setting_id preset on 409 tombstone * clearner solution --- src/slic3r/GUI/GUI_App.cpp | 53 ++++++++++++++++++---- src/slic3r/GUI/NotificationManager.cpp | 5 +- src/slic3r/GUI/NotificationManager.hpp | 6 ++- src/slic3r/Utils/OrcaCloudServiceAgent.cpp | 50 ++++++++++++-------- src/slic3r/Utils/OrcaCloudServiceAgent.hpp | 2 + 5 files changed, 86 insertions(+), 30 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 8a5897622b..53c987fabb 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4940,6 +4940,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt) // Parse the conflict body to extract the error code and server profile id int conflict_code = 0; std::string conflict_setting_id; + std::string conflict_preset_name; try { json conflict_body = json::parse(body_str); if (conflict_body.contains("code")) @@ -4947,21 +4948,40 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (conflict_body.contains("server_profile") && conflict_body["server_profile"].contains("id") && conflict_body["server_profile"]["id"].is_string()) conflict_setting_id = conflict_body["server_profile"]["id"].get(); + // The local preset name is injected into the conflict body by the agent (sync_push), + // since the server response itself omits it for tombstone (-3) conflicts. + if (conflict_body.contains("name") && conflict_body["name"].is_string()) + conflict_preset_name = conflict_body["name"].get(); } catch (...) { BOOST_LOG_TRIVIAL(warning) << "Failed to parse 409 conflict body."; } + // Capture the user id up front so the force-push closure does not have to touch m_agent. + std::string conflict_user_id = m_agent ? m_agent->get_user_id() : std::string(); auto* plater = wxGetApp().plater(); if (plater != nullptr && wxGetApp().imgui()->display_initialized()) { std::string text; - if (conflict_code == -1) { + + switch (conflict_code) { + case -1: text = _u8L("Cloud sync conflict: this preset has a newer version in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local preset."); - } else { + break; + case -2: text = _u8L("Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local preset."); - } + break; + case -3: + text = _u8L("Cloud sync conflict: a preset with the same name was previously deleted from the cloud.\n" + "Delete will delete your local preset. Force push overwrites it with your local preset."); + break; + default: + text = _u8L("Cloud sync conflict: there was an unexpected or unidentified preset conflict.\n" + "Pull downloads the cloud copy. Force push overwrites it with your local preset."); + break; + }; + plater->get_notification_manager()->push_orca_sync_conflict_notification( - text, + text, conflict_code, [this](wxEvtHandler*) { // Runs on the GUI thread (on_http_error is a queued wx event); restart_sync_user_preset() // already joins the old sync thread off the UI thread, so no extra thread is needed here. @@ -4971,7 +4991,7 @@ void GUI_App::on_http_error(wxCommandEvent &evt) restart_sync_user_preset(); return true; }, - [this, conflict_setting_id](wxEvtHandler*) { + [this, conflict_setting_id, conflict_preset_name, conflict_user_id](wxEvtHandler*) { if (mainframe == nullptr) return false; MessageDialog @@ -4981,7 +5001,13 @@ void GUI_App::on_http_error(wxCommandEvent &evt) if (dlg.ShowModal() != wxID_YES) return false; - force_push_conflicting_preset(conflict_setting_id); + std::string setting_id = conflict_setting_id; + if (setting_id.empty()) { + setting_id = OrcaCloudServiceAgent::generate_uuid_for_setting_id(conflict_preset_name, conflict_user_id); + BOOST_LOG_TRIVIAL(info) << "conflict setting id empty, generated one: " << setting_id; + } + + force_push_conflicting_preset(setting_id); return true; }); } @@ -7055,15 +7081,26 @@ void GUI_App::force_push_conflicting_preset(const std::string& setting_id) m_pending_conflict_setting_ids.push_back(setting_id); } + const std::string user_id = m_agent ? m_agent->get_user_id() : std::string(); + // The 409 left this preset on "hold", which get_user_presets() skips. Restore it to // "update" so the next push-sync re-includes it and consumes the queued force flag. // (We must NOT pull from the cloud here as the Pull path does — that would overwrite // the local changes the user is trying to force-push.) + // For a -3 tombstone on a newly created preset the on-disk setting_id is EMPTY (it only + // gets assigned after a successful first push), so derive it on the fly from the preset + // name and stamp it onto the preset — otherwise sync_with_lock's `id == preset.setting_id` + // check never fires and the force-push silently no-ops. PresetCollection* collections[] = {&preset_bundle->prints, &preset_bundle->filaments, &preset_bundle->printers}; for (PresetCollection* coll : collections) { for (const Preset& preset : coll->get_presets()) { - if (preset.setting_id == setting_id && preset.sync_info == "hold") { - coll->set_sync_info_and_save(preset.name, preset.setting_id, "update", 0); + if (preset.sync_info != "hold") + continue; + const std::string preset_id = preset.setting_id.empty() + ? OrcaCloudServiceAgent::generate_uuid_for_setting_id(preset.name, user_id) + : preset.setting_id; + if (preset_id == setting_id) { + coll->set_sync_info_and_save(preset.name, setting_id, "update", 0); break; } } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 5079dfecf0..2e8d22ebee 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -2416,7 +2416,7 @@ void NotificationManager::OrcaSyncConflictNotification::render_text(ImGuiWrapper } const float action_y = starting_y + m_endlines.size() * shift_y; - const std::string pull_text = _u8L("Pull"); + const std::string pull_text = conflict_code == -3 ? _u8L("Delete") : _u8L("Pull"); render_hyperlink_action(imgui, x_offset, action_y, pull_text, "##orca_sync_pull", [this] { if (m_pull_callback && m_pull_callback(m_evt_handler)) close(); }); if (m_force_push_callback) { @@ -2437,13 +2437,14 @@ void NotificationManager::push_shared_profiles_notification(const std::string& e } void NotificationManager::push_orca_sync_conflict_notification(const std::string& text, + int conflict_code, std::function pull_callback, std::function force_push_callback) { close_notification_of_type(NotificationType::OrcaSyncConflict); NotificationData data{ NotificationType::OrcaSyncConflict, NotificationLevel::WarningNotificationLevel, 0, text }; push_notification_data(std::make_unique( - data, m_id_provider, m_evt_handler, std::move(pull_callback), std::move(force_push_callback)), 0); + data, m_id_provider, m_evt_handler, std::move(pull_callback), std::move(force_push_callback), conflict_code), 0); } void NotificationManager::push_download_URL_progress_notification(size_t id, const std::string& text, std::function user_action_callback) diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 006de5cff6..dd17f19e42 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -279,6 +279,7 @@ public: // Shared profiles available for selected printer void push_shared_profiles_notification(const std::string& explore_url); void push_orca_sync_conflict_notification(const std::string& text, + int conflict_code, std::function pull_callback, std::function force_push_callback); @@ -905,10 +906,12 @@ private: public: OrcaSyncConflictNotification(const NotificationData& n, NotificationIDProvider& id_provider, wxEvtHandler* evt_handler, std::function pull_callback, - std::function force_push_callback) + std::function force_push_callback, + int conflict_code) : PopNotification(n, id_provider, evt_handler) , m_pull_callback(std::move(pull_callback)) , m_force_push_callback(std::move(force_push_callback)) + , conflict_code(conflict_code) { m_multiline = true; } @@ -920,6 +923,7 @@ private: std::function m_pull_callback; std::function m_force_push_callback; + int conflict_code; }; class SlicingProgressNotification; diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 02804d1598..61eb388b92 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -101,24 +101,6 @@ std::string resolve_display_name( return username; } -std::string generate_uuid_for_setting_id(const std::string& name, const std::string& user_id = "") -{ - if (name.empty()) { - return ""; - } - - // Mix user_id into the hashed input so two different users generating a setting_id - // for an identically-named preset get distinct UUIDs. Without this, the cloud's ID - // space collides across accounts and the second user's create gets HTTP 409 with - // server_profile=null on every sync (the foreign owner's record is not exposed). - static const boost::uuids::uuid orca_namespace = - boost::uuids::string_generator()("f47ac10b-58cc-4372-a567-0e02b2c3d479"); - - boost::uuids::name_generator_sha1 gen(orca_namespace); - boost::uuids::uuid id = user_id.empty() ? gen(name) : gen(user_id + "/" + name); - return boost::uuids::to_string(id); -} - std::string base64url_encode(const std::vector& data) { std::string out; @@ -412,6 +394,24 @@ OrcaCloudServiceAgent::~OrcaCloudServiceAgent() } } +std::string OrcaCloudServiceAgent::generate_uuid_for_setting_id(const std::string& name, const std::string& user_id) +{ + if (name.empty()) { + return ""; + } + + // Mix user_id into the hashed input so two different users generating a setting_id + // for an identically-named preset get distinct UUIDs. Without this, the cloud's ID + // space collides across accounts and the second user's create gets HTTP 409 with + // server_profile=null on every sync (the foreign owner's record is not exposed). + static const boost::uuids::uuid orca_namespace = + boost::uuids::string_generator()("f47ac10b-58cc-4372-a567-0e02b2c3d479"); + + boost::uuids::name_generator_sha1 gen(orca_namespace); + boost::uuids::uuid id = user_id.empty() ? gen(name) : gen(user_id + "/" + name); + return boost::uuids::to_string(id); +} + void OrcaCloudServiceAgent::configure_urls(AppConfig* app_config) { if (!app_config) return; @@ -1250,8 +1250,10 @@ SyncPushResult OrcaCloudServiceAgent::sync_push(const std::string& profile_id, if (http_code == 409) { // Conflict - parse server version + nlohmann::json err_body; try { auto json = nlohmann::json::parse(response); + err_body = json; if (json.is_null()) { result.server_deleted = true; } else { @@ -1261,6 +1263,13 @@ SyncPushResult OrcaCloudServiceAgent::sync_push(const std::string& profile_id, result.server_version.updated_time = profile_data.value(ORCA_JSON_KEY_UPDATE_TIME, 0); } } catch (...) {} + // Surface the conflict via the http-error callback with the local preset name injected. + // The raw server body omits the name for tombstone (-3) conflicts (server_profile is null), + // but the GUI needs it to regenerate the deterministic setting_id for a force push. + if (!err_body.is_object()) + err_body = nlohmann::json::object(); + err_body["name"] = name; + invoke_http_error_callback(409, err_body.dump()); result.error_message = response; return result; } @@ -1937,7 +1946,10 @@ int OrcaCloudServiceAgent::http_post(const std::string& path, const std::string& if (response_body) *response_body = res.body; if (http_code) *http_code = res.status; - if (!suppress && (!res.success || res.status >= 400)) { + // 409 is a push-only domain conflict; sync_push re-fires the error callback with the + // local preset name injected (the raw server body omits it for tombstone conflicts), + // so skip the generic nameless auto-fire here to avoid a duplicate, nameless event. + if (!suppress && (!res.success || res.status >= 400) && res.status != 409) { invoke_http_error_callback(res.status, res.body); } diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp index 6852992198..8820425f7f 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp @@ -300,6 +300,8 @@ public: bool set_user_session(const nlohmann::json& session_json, bool notify_login = true); void clear_session(); + static std::string generate_uuid_for_setting_id(const std::string& name, const std::string& user_id = ""); + private: // Sync protocol helpers int sync_pull( From 06eefe7c1eb39fe49c9fdf2b122528058fd6ec05 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 11 Jun 2026 02:47:33 +0800 Subject: [PATCH 04/20] Make sure mouse position is updated before hit test (#14139) --- src/slic3r/GUI/BBLTopbar.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 7a5bece0af..eb6f4bcb00 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -807,6 +807,8 @@ wxAuiToolBarItem* BBLTopbar::FindToolByCurrentPosition() } #ifdef __WXMSW__ +#include + WXLRESULT CenteredTitle::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { switch (nMsg) { @@ -823,6 +825,8 @@ WXLRESULT BBLTopbar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam { switch (nMsg) { case WM_NCHITTEST: { + m_last_mouse_position = ScreenToClient({GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}); + wxAuiToolBarItem* item = this->FindToolByCurrentPosition(); if (item != NULL && item->GetWindow() != m_title_ctrl) { break; From 93a82af6b4d0d58ea8c07bebd354a2e6765498e4 Mon Sep 17 00:00:00 2001 From: raistlin7447 Date: Wed, 10 Jun 2026 16:24:46 -0500 Subject: [PATCH 05/20] Fix top row tile order in YOLO perfectionist flow calibration (#14132) Co-authored-by: SoftFever --- .../filament_flow/Orca-LinearFlow_fine.3mf | Bin 440536 -> 357844 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf b/resources/calib/filament_flow/Orca-LinearFlow_fine.3mf index 94f8e62fbf4d0a11f891562b1e8ddab8c616c1aa..496b30c992843178ce431f7bc3abfa40a9546573 100644 GIT binary patch literal 357844 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 z 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

vU%Yet>Igg{QD&w-$)LMy<;Of-+@=;>8 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

s(+(h!8Gq(sA2V2cPfYd#Uy6IdAUO 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ŷ-(8UNf!3uXfr)M<10wrL$??2euhg`Kqhkbd8ujUF7lLHlzew6s#7|x_QUGmc zR+2lx@K=4YvD0ZG-pm7L?xW^Y*)7SgA>VQB@Vx703W~efK(W0@2VxcHr$it14WnpM z1WUxM)vPtO2WY$8(Zrstswzz%vOo?0VM_Kl0wbyMbCyip-a;y9c@2X8J(OVMBXr%2 z8SL04_m`KvVk506!(fvR`XUSY{q$+}RFW+*l#SeHN`JjHv8Nt~-Ge!%1eKNua845J z4lr4@+M0UUF=Q5EKlG+dA~i(ZRN3A(h`c_NoTN_arVse{%)GwCSltnu$evM9AtAnl zMRz98hVYLQHs*)NJ={f3qat`ByXT6;_r-tC3zfx3imN2BwxId!?)!VxtT(SzLH$rL z1#=2)3$8Xxm1=B|94SLPMg+)Gb~fJSY`4?B0dYOKC}-L0#5I^IQJsTH@L;< zE!kSdRf@surM|{@vPykRFAJ1(=c|g%(zaD@fwqU5q0K5OVU})@rwb_o{RlI{Y10)G z%RGrrkTj-2CfOyU+06nS$W!1A=BXrhe1af%&msH>N5Vo^&n(PDCBej)N&bC+Qp-Dq zHmbhfp^(&3D;vzDRQRp^yUd25;4BZ%KTxf%_FmSEn#dvaT{fS=ng1$h0a}KN?vLFV zX+7^k((o-s+pq95h5Q~K>^MfO*_7R!g%Vd)@)&nlhZ z_}$Y&8T%-gF3xZ;p-FMqKLTW*5Y}?+#yvb16%f@lP_Z4n__F%=43A+>jf@{_^Yj10 z3AMk)9=KD&WS2#L=dC?t+ToeB^a?b6b>33ma$}trrzmewHvU4EZHpN@W{7CWcq?0# zX8h~=cTehX?Ss?TR#&ONK$r0kx5Ns!HhfsQ7&*Kw!p}l@21=&?(M zqUV0>k7#*EarGkO=wgB*RkT3VwZx$l`+J)d$%~vkBwmU$R#)kwlxO}-VyTH78H(8U zo<-wv=)$pUF^*q=ZH6)3G>RWE@WRdvHPjuIalyn6Latn%{^^q3iH?vHiCC0~4XXIt z{W078wb}Or2ZxVyX5AXJPY4Z++~n}vYBdD~_RvwZB9Z;@5|nqgJ+VKM*C?V$VI5fc zJk3%ZV#&7;JIPy{VbT?x7{Hp1GjsG@_;w7S-mZ9-aM^4Ct9SnvCgSf$5>tT>FHsMA z)}RmeM92YBwWa93kTlAqw|2i!Iy&Cc#x)La3fH{@THOmP2C$&>#CErpz!TM|z*O)k z$a4!J4)1^Au;F0xX?Ysn!WqmIQ^URBklaT1I7rYquc~3yqzmL0=;~D&LDpp z?U}%IAo;}Fmz9_6KSPm`l$m~N-L=PHmUYku!|BMtqrHii&nNwOw7ZfDOVln7X#qD? zG4ksdk&KVIOWE04eXg5L5BD!(@r)5@Fndx=dW(Qi(^lyrf#VPKGWF>|hy+euH}o)q z7X<39dVLKsl=@dV=DW+THDT#?WDh52UFL7mn=rq>)xP#n+$1;pM7>$=>ym!rJ}-~> zw4>q@4PyGEcwhhV{S>HwxnlaYVj?vH7B3Ci!~G!SyZqhdoQwjr+Rzo8&J zRsnf%8T53qoVDZa2+>JtlYFVmLZsppXImgfbyZXB-(Vpc6oynQ;agnxEJj;B7Z)Hu zUu$B^wz(9Q%zf^{Pr8W%%-Yn!-xe%b$?mL2xM8og?sP^vBRn07r?_V%5Zn*v-)JAN z1~UZ>nb?|n>wj|XnUNM+Q}kC_O~8?YMrTk6oSiS{%c{UB}3M zS`tM@kD{U9)(sws?9LqC6eN&8>lW{hoA>4GUXH@ZOM!uZ2mGJ;-;^2VPrl4n1_uDp zzxaPPEn!<5M`IgDU1c{rV~0NsuGUunt$;Z*!#rFH62SgR1VH%@Y22?9Wffs$HL|uf zGPYv)fAqhlVZLkFcT<1?sD6O~F#kh(P8t#*W9+DJr0=ND=xF9-ZD6BsZpC0{WBT7Z h{`&_1PtBkM)c=2<@={RH|GNqK)!)8&pCi;4{U6^gP3Qms literal 440536 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

N;d>xc#;CRaF;t#6!8r zkbGO+92V4R9<^-Qaj%y35^LE3W)a|oNrqncfn<+AIHPx)_e9o<3aK-c;|&5+7>V zKK%q(Jpiwd0dAAn{Q~x=sovu7xy$Scz@19E&R4R6GheBePY&_ zOXke`|2JiISN9gEB&Gv`jlZ?&peMn3B6JrUPP>3s?X$*zq}5Xn{ltLTja}HTZraT8 zGIMv^$Oj<()npt6kAZ!f%teB8vl5W(xfVGkm^q2;&dTczXFXaUs%8Bz>Eh&v2MU^5 zA9_-8bC7E@XO`p!rL%bxzrI1?;?YiX00wouK<0g+zxcnl+X*u_`5Hh3*KJ=V&O&Yg z{Qqw3cP`Sw@qh4t3Ep)1uab07$5_n`+E@?l0fcE=gPH+)8!C2_`f=(_oV^BeJ-}84 zAX@u5Z)iQDbL%|8|934SRXB44!gYLpm$;?@Cm55PZqWT?9VNKfe#5C(U_%@%V~K6F z120^tT85QPH{7@gz-WJ8ln>9wKYN!1p!@h-ZJ)gzl*90wXI4|YlWgBE%&=YWHL08d z5+Hw4!o(#-6dD0GYRN?aN4riis!=z_lY1|O_um`#A6PJ$(FU-4@9_OeJ{8Upi8nIm zX8)6)-S!%_JSzL2Y-Ieiq*_*r^|e0qIva7b5?q=o$MTc*fFRKnchjqoG+jlv(UQNJ zNB>(D80VibTsKzAyHRR#l;R@ui*9prGhk}~sRmp?NC9P{fXbr$kGBotuwW37Nz|2l zFuKgH@vB9q%?8M(4PNdip+YE+F}YSRq3zq$FU4zY3^fC9xN4$}YR7@TY)IOOGC=lr zaz;+gZ&q&Pz5$R#DE~jE%@dkh;bR|5^oIcYUESk`5z&3r$zqgp+z%nk29o2AV_`li z4x30XFGc9TH;7V&$u0`0#uTu>+Hub2xIdq|cZ6hf=BliWyir<3bEIW^%7HahJtf4Y z8yzw@@rmI3C*6aMYlt z>3+fY)LRMIhMCRF8q~&Nn-bhHh9D-le@qG+L>nwEo9rlU*2SL=0c&;I3z2?%dc2?j zrPIG1qKslYR3Ywx7^GhZ$2#T4APk-Z(Oy?@!m$J0oVIzPbZT$j(XQN~J&2qp8-_d= zJN&?mAsA)|M2)lp^Rv5MEOt8uy&@*78-QiauXFmIXV#~>rz${-as8A4F6YG#4XzC~ zZ2Q*#fMwlcgo973)F;As6;wZ^l3x4q8L^HTg=gRPzyF+5CUmkxLl+Y)B!kux$;AOF0M>>UaXB8?xfs|?!TkF_(5+DNk*TY zl>`9fI+n4b2=|tZ*d-mbNr2ped&+pSzkL<3*`>pS0`9!HY8kv+ryf$&QhWv85oHYI z|2#R#@94LghR8&|IY^WHNe)K52>P})U}+&9D0B=AiR8*T&U|9;8=@Nv<#U1(VjzbZm#xHiS~GG2{u;2ZGFXY zYF-h>kh(VKNnOs$G)5ygC7E7cTdtiALdzIe#Z?h5T=tDFWW!O>ErrpEj*3=NvZK$( zo=6-5C&RLQLAV3Rt`KJ>ctn9u5UtSjb>c0L`r4ei1zCW{$AN-}?&m1vuEL=utP0hv zph8@>##zqiW#_5}>&<#X1J8hn1I|9 z31ro)qLW8d@l$2ton4KtqJ&6lamn`~1xU#(HQLo-4j6VZc0~tWHDY$RN8XDRx4W%= z%5X%5%ssxaP98=2!E|E7H`uA2Pp9<{X8se0{u4Q#Ca>Ix?HpOr>PmC-Csi>g;k$nv zlqeqzg9`==ZZ@?Ua@;5F-GF`4<+*vqD(;u8paZ^O_oqL}LG7nYzK0Ek!F=z;GLefi za@lZy!Lp7hwkXUhALb$lu@ZViP!!uS0F80`8O|#AI#KTE#|o_saI7c~$?8&&I9GA7 zABzSdT%Q+5f4^!K6LR~k-hu6Eft976?w_#Hn=eZ$!jFQ?;>sS4F_A*Feoy$dZvQO? zUW|lUP>Z*GRBZqGr)r^6t}P#~f!+S4I6t1er_3CvhhE#6`0GpmyI-6XN8y0e)IStN zw|zR86iCpR+x|j_?kt~m4Dorp+OK8a*E0K55IFWRwlEbI&1p}5AQGJNSyfBVYB&Al z6=xP&q%yA)2AqT2bqskjcHK|Id5Ac6C@zBu`fK?&D0U93;2!Jw@VOQ*XllsdZcH6! zaVRO%&*tX+(XW+}tlOGsLse_hspsg~p%8FL>sOW_d}MChUvU)gFE`&Gd%rl4ELrMP z=c~e9sU(MDOto#XeXttN$+(x?ZCJH!oelMDTylauG6AChoE!(y!9gSbicO}pjI{rS zo1U&biayf>vborl7U0MKCc9sA@+dVCTm3(gVxt7IIt29B$F=V)?XezO@6w|r5J|+9 zP=;+OfPRu@?%8MaHnNROTp4)q=XbNK_Mya8SHH!IMDb(MScVXW3-Xc7?LVJYzsE3v z495xOof~79)m&&qQiNMcdalKz<7dxYh{65;ehJG9{w1%KU~ybMi~MD)Tiq>7rWgD2 zx0KnebXbvW=GCwF6lIDV43rQ%v2?pSijBD6HT~Foaq91tfd}+}7EUaiZ&!CNHIz6BN*w=QS$GZ?0b^*%H>@ARP8r}r86*+49ouqYEnHZ}V1th-n*dc{K*kR;OF;Q^vA-GzmZLT_4in*9RRjOWadqeJ};$lD^ZQ z6M*t1{={UM6;NYFSP_*BL2ceSR1t3Zn8Uw9YXg1JX!ZL0cf-%&kQy7XO|=`fwUXjv z?l&679Dy-4Y1eNunscm7lQNjgU!-(?IVBN_lp?8>+FH{gOx%xfyD)ti+?P{1zXLl$ zapx8tOUc#f1XOit7~=(E?&VVOu(Zf$?^C_#eQEK$Zhs@*n|(xXMLVGW(IK>sE`^oi zY!I2Ww(wPCMWlu+@Mi?yhjf(1vQ974JeiR8*L#$pO`0~SBCP}-A^vj?jKdEd8d`j# z?cvd#Dcg@@FLdtFuHn7qJ8#BFUuLUNk;Pqgz2NJc z%H;>yn7B+RJycZH-39H9zxb$9#G~y^gLinCSzZ6;QT1x~vg7)OIKkSw2yJkmE+$#1 zwRXRvjZDLWC&xL`4el!)f#`T+Z+DE%wR^tIaro5&i6zrBINS)Ah=~q*W=klgR7Ge- z1Q#^JSF}=S3h9kSmJ2L1%&pBiGrWIByoB%8Sn@Eq)%eq&eIebh%y$fE6#(utWAHNa z+E;}&I%B-|LvaVM|dUlY6)1 zkJ23D^VegNm_8Ob<TtD5&ks=@iVp4V(IjzpM7nsWulu}chr5-TBS^bd0!8>9{$+@tU?#nhp5-?g$GGDHl^y9WMzma1 zHU+M02gRX(a0NHrsd1o5V)M9iba+7jj8?&ptdV(+@F}?+wMBXC2h}mn0%@bB^sfSOmFq6bR64Qpx|XO=nniVC&$n~ z^f|-QAyXvnbNsP`-f3{+f^>C`*XoSnd3O|AS z@#nwc&xex>I?~ip4n_?KcuF5>m~ctLRb-bfM?_S=Pp+L%kG}5IptH{$-I6}UmB4eW zu&jNyDbz=m;sQTmMVPM``P_r*zTFEGxj`jyWA2b!TrZSk(l#PLc{bSFg@f|@lp4Q$ zzLQoI^b@==qaM3^CIUh#&Vaag# ztcrCa34~S&pHscQU6}OI`V6@rqodb#S~Z-zufHyX+`MY&_t!d1z4saO?}!@Y4v88r zA0|LG7}5PMggdtrce}KSGJBHkNnq2xpYFU|AtihK5fYwE(vqd5ePF&k+4YRzkd?HC zdGw6F(wve_mb>+XRuo=D@`}6CTovsf``033iBUoW<&VzEyrZ z;>2SZ>_$nM+9cGfAWLP|Fgd3e98f3`vkcYGNmYI&uUu#`+mFA#4RYH(esyAY$-_&^ z^JiDhKZpj`vh2#aRz!PQSwSHT9Et|?hY8zNSj#EZz{gO>( z4fCxxWTSA4@p+oMY8ghXb$)QQDIjMZ_ByQSa?^{+g}CE>N=9F{uKoCq`X$Jst+0RJ zj%xq^W9qHrs%ZZI?@IxZ?hYlSK|ngCyE_iujU2k9yF&ydl@K^|cjuwILz*Mq^;@p% z^SvMUKLfKnXD4>%J+)>8a(YM$0?7MxH;0C%4j zc##-hsLAEl2Ca}Vk^O-+7+MMIqWJlMi?3%jw@ZT5gzUA(jagWir9Lu26WkVMM~llA z%Qx$nr9YCHjPRoC-6M?uFyUk>YpYf79_h)JjVL?Rd56Pqsb^zgzI=wR^JxUdAR?)B zalF$qv1t7!=gFn|H9X?yh}0H`g@n1lPZ0$-&>tNwP2c~7y}6akWD_@ZdWcu!vA}#< z?351{{yuSI8@Adzx94ZEzP4lNqAc<c#L6L zkK+vBGl{n-Uf~IsvP~l9C+uyiPZ22}SSA)NeV2K0O>0D&$1U_EWs~dc%->ZHm@jcJ z+BsJ7A@LFo6VBr9w^f~OL?+EcYpsYTlHXsHNQC|M9bD?M7g}b(5!}(99ow^V@jVaW z%1tZn5veKdmtTAL<`rC7FB2mNIMeDN%L-?GSQq0bv!cnX<%ylmG^?0jTi#zNYjl`| zTn}#48HT!<5a;ntb@mDuyoK8n-nZXV1;cU{ zE07j#!ECI3qYdf`+yb#{$sL5XJZJ5j8n$hIirD2%Z~ED+2WCC+<{O$`3%jyha%?!( zsW>Csla7cp7F=)`d)Fnnysk<47C6h@s=L>mTGmVOqWfnacv`&gMBgwdeebc8)OvJ3!m69ZS zxnlFMQ|sml+b*oHER$k36!w*fc|VHL)yNEw$VA!zXL(8FYpUL7Ti8EN&#o8$5sHh= z-D#nB;rRabXYw9fub_hFyCrPU=3h?NT;N3M7HB*%XK={(!0TB}r#b^z3?Y}wA-WCA zyTs_*U`uh}4HXrZmu{_z%$c_r7-aszdI{yd0%i0_}kc!rn zqJlmtz|G;lSZuV=4IX@tM(ZL=SF=#AP;-Uh#=xiurj$+PQyloLy(r%Ohh>5f%Qu}$ zrEX#pY}eR72wZ~jCV|fFJy5}lH($gp4NW|VWu4v)Y%34#%k?FGaTjna9@CnEA(LLM0o&X+}y=dw1 zg;J31ek26v*0Flb$0qxBdZM3z*8fq<|6$JmX377l{P||-`9|saRQO>b`*FeWc}Dp0 zO8AN7`RTCz?pyo4zu$fLyK~{QW8vqp_UDZD@aS{@rzQV8nB&uC`@>fIL;Lexz5fI3 z`Kd5l*aYFW|M_z5wEX$vqyO`g@KbO0^Y!zV@bm8T;d2kgkmFc8zu(iw@$*@`!09u& zf5XbtnWO*H#>4Q~J;tu1u(1DiSo=K;<8uKO_j^8<@Fx6hSixT;t2v;CKKX*7k_N#}!*AR^3f32wfLlSs& zFjDONZ_u^Rn)k?J>;vL5t=eVtSlf^2iI=ilt)i8EI$eZnj%|5_phRZ%$IV47 zKSEU|<}H=>duJW1O8i{*k$4|vwmn78Nw^fgDbo0UbNlCx1!i>((w#YIuJKxSw~i?| zJbRkZwOW%1B9J}VMsH#v9OAvZw!BSRE9PDkY<{Pw{2bef;vWKG58b=-CY^nJpgMn$2eYURi4WtPnVS0e z%LfdP5stnOIZ?~$>Kzpqw9S(grkz!nC6n1lL-fvZ8z0pWyVLEs{9O4ePD{EQLGF*b zvb}Lnu~||1PoN_|=3jZ1@(FtEUMYVcRs%d$T>Dg!+Z)T#%6oQHkp-_cPA*Nq4^Frk z9vg4EEPTyki~37M;x)=SbX z$B@&C1~wED_1(aIhSg$Df(+7(jp`l`lCV0|BMA8#-20@dWz(ab>Tlh{*`14>K#h;; z&-)kyFAd48l>x=wfE)XAK$UDOU7L4U0D{lJSwOX zGkU{vVNtf!TZxxi_EF-7a9;y-DYAyi*pJ9MmyxKw-J_z`vwlFMKEMk6r?`!!)tr;be1 zd+zO)Z&~t3CNxm7IaSkLt$N$vCOQ(rS!xfM#!1OEZzfLX z-*F9>4TCvzxM%NF$@+3nv=RnrG)ep2%;h&vn2FPu5Dv;;?Y3Shp}Sd|?h1~3O{L$) zHJWNK%k;Un|002|3%MU`O0y{MnI89_EEj)an$Xlh~4%YT__QmBbih3`xT(vOFl z?|^=2V==djs1$kR>ig93>g`q1-OMgZnEy?AjG@Hb+-YP@%W26NcXr0YVdPdjPbCrP zxO|Bxq!Am(?=luX3wsI+)Gg}mEwPyF!!7IPT31WE`a9}F2hfeGBkcJ-BuVqq{z z@0L@>nX7f}d9|IWU6x$m6AhZ{wR?FBW?|J3qvoU9C6}%qL{j%HRw)1f8S~T(nS0e$ljx&Zn5}+-R@31JzuHXNhv5R* z2b*%~ecrx>=h}%M^-CbcQy!9zQu6cFP_E9-9>Iy*GP*B~ygcDa`IFO`Gr5m{j1RR= z8CLBT6KOpNrI57Nyq-L^*q<)KchNet1toe!J|r@V78G~yI=68@vc^go=bBcNl+@nC zq5~V|*1Wn)W5b;Dvg{rh=G)iOTpH&%`&^5J(dEWmrZD=;$z2eFARarWN{{)B*jQVt z>g>@74}wQlamGx>HARBC;nGG6#F-=(m;FD4SpD&e*IPh9-PwyoeFp{K%q($r@5ZIk zZKC(yXxu~#BEp5nZCyp2DiZXtnChb0ol(qC;1V435X2%Jjh2{?(&1S-d zR;C)6uTNZd@R@xx&b$z$wDke^QreK(f#w~>z4Ms-V`gaQScw*-$L^bNvzeI zK}w~M+q0rr#!^cl=R+mNsl7;q)4%I2mHn|p(?Q0Vi{zxGqvXyw;-E@_c@ol0vbN)6 zr$y|k^SWJm$BnMzdMC4dMtrY~waD|C{>S)tp=kycYoO3~<^1@Vmn8|?b+j7<`Zr__ zPHw>G2rGuYac8UdH=1@v*A{%?`@a1){tT3)H&^w3=+nNL*nXect_3JHS^J}CkAgP% zHBXvBoy;CAY-H~8u6mMT;w%qJ{DTz+rFmCOyN_Fb-Nd%&=rp$q_Fkq$XOk4bw%MP< zHLefQ+vqfmKdAE#NiZCbi{YDu)+227D>XLE^Uw%lA+!*!k023ir7%-pH@||QPFJLc zDQG8eWuNXcvFtC$CeBiwta+HCMDWx+dFJ^gU+on}3J`j?S38!s zIQECKSj*$LrehN(A8RhV~57zPoF@9ya`I zH#uF|?tSF$+ukTh1j4#rFuMtgS!g6&IdonFVdgNN%}}`t`r`#KG-aR-i_FajYii+U z&!bu|=P}MQnL4o^3r@yz`Qr)m3v3?tqY*@K5uBWs5yr7W=2Mf78%wrs(#y4>|Z(7U`;_3BG1ctCtO^e8zmwcGsW*uMC+uyDK z^Q!qlkgYfL9$_rUuvb)i|4K{Fx^yDKnkw6Ivf=%`30sz90>=HTa!c z(ZTr^!gUodr)hOF(_10s;cG^gTl;xNw^CzXPa4mshkz7#uvzsX(ruqPb2MYqm&aOe zo^VVjwp@r(=ETu6L$aH=*hvX(U3msd;QS9N6;?qLu*4rr@1>Kbb}Uqa?vufJB*(~o zG>RDK-tw+FyR1?pB?9l2-0lfHAs?4Pi9(PLoG_M+hY+_fPUe+ozmBpWqv8V9BY18) zj+^E8&%5kBMRSk#!@3d70Q-&ZfN2(>sCh zmx)t5f{dkk9-vv<;v={ugA_E;he)tRP^ZzUK6WUrce`^<+pq9SWdG@gyu+>Dm7~ya z9qO;zS@E!(%|kV=nkb108P_kcZbG9|_28~!(SPd8I9`~oY(h}5~lL?HK(u*+Dk~GfFJ>;2G#Twju@RhhV7yCvd`aruZ_YlRfi5F6N(($_B z=rX2ksIGNWhLB8sUCWuKduW3MHB9!sqApH9ZNUx5+qZQ~Nb1&jWI7`Ncm5D~EmE)!*tw7poY$#BU0@KfyeHXq0sl$%jCH#{7kFa5Zs^{zRRus+&JQ6(sduGgUj zNe+Tj8FGO9-PpeMgK>{ng-*oW!WX~Z1vVzPYDTaoo0{}ZhqS%q+s%P>fjmmNCk8Iw zntY%hi1gkUe?os?;Ck15&e*hyg-e2@lQvTsx2*0D6os*uf2kD~XdYXQ6ruGt&|5LF zsJW_{OneSUFZzqEb{ZwO&9xR4)vwv7eppDzl%|%C?Ga)LV-}v5T^u9%X(RpXI4ClH zL`EADLxAtXyt5H)#F1;?b)EWaxCk>88=NLdA4eA_r+*Lxr+LZhf)ds$ce|V;gB!-? zK^s~d_B?R*Y|#hO^HCATq<@bfA1cN~PH1fAL^4deV{q=E_Hd-~nO#38C>p*JB4{@1 zF`WAL1rY58{fP&v#p1g@L44sG4Rx8t9}vvLP7a({rZ&zz3ZA0*42a2QM`B4Eo-Oo# zCzJ%m1Ab~JK_IxMSweJKIM8-WtFs$rDO1p1bdF%CCfc!g7U9VpNTu0VgzdDMY)s;v z0R_NVW)i4%Ijfx1HIIwUjg@V76K;pA045cKfe;es9K%CNa|sxLEOZsMuhq8j_1qvH z?H=UMuk5WjMqIt0BWJvSOywT>@(-ZoM}079a`It(&F+KXFf5ljOko3lBom<;2v;gY zXX^xW!SGOCACbAHzcUdP+RXa)RZ6@qSTTVWGJj>KsP!G5)YUswcHP5rYMKos@y}0c zQWl3#LeY?UWeI5GgNC|Y|7(|FsxKlP{nS!(+Oo&4F*b)9wZsc8tca=y?7jJK0;F^%JDfxt8`*mgUeTYJ#=JfD zC*}Dxe}*kJz3;i9t-3|bfBjNmBwr+U6JDjx445vdAb~^9Sh3l_gaSvmG+@EXlPt?b z$IQFG^ps5|%uS?&RKJ|mGRE;F`xf1c!?lxHWu0Lev3h?VrgdKn!EFR8u&uD}E<5Ok z<}gmyUe_SC-*u(4T1=bqa7lZk?{o;p;tZCV`k~PxvRw6DhJV)oRkVr8$wGGI)|)&! zbTY`gskxgq5wO9n%D21b#ZlsYh~*+1k9M-SvX`wpLa6g}sH+`= z3F$bMc5N+t4CF*Uomx1J8tZ(~f@hP{)HA{tJ=tTb^Rv8kbq1pHh`{QjhPsF#(6~Q` zW`;qTVw5AaXh=T;Bhwz_9^_)DYnZ6v2m(Y*I_q zKhJiVy63>iQQ!F(nKxu(pz08g0PzaH_D18+5F7dr5Y;eP4GUw0mk0VW6f0#3)oM%2 zG5j7?nDkW@_v<&_4lzbY_7`Q&Q$9eN3f_uG;}SnGC@ylvIcz+h(%^uV+9UJ7jPU6( zVD;OkScMt(VmeB$oBH)O&N&tA-4SXPbJ56H!B8e@R3oH&7p9F%Klqurb50A7LMjTE zs!2sl`NQ zlilsOg1VN&IBU79{EUgiRqcK74usX2wRXqfcS&Rs3cgT9@@Q0G%Vi8?J=ZeDt7>c( z)w)@^Evq0^q#{W@7r#UPf*e-d&zWrRy_Iae`JtHu%} z(|2i_z*}MtjwrdgJ#ww*%I0A_P2eqr!1At$LG((cHyG1mEF+TD>|ILznJ=cJMU~B!v0yk`%w>B% zHqL@2v*F~m&H=W_8{67sNF06R{E$)Vo%AZJ)RzA~MfzH2z}P>Ju`Kqky|L8;V`a!Q z-mh6NaqkU{HDWLJZc<`4IPd_U4nyp^7FY5ocD2eusF)8}XSjm{01($9^BsTJO;-7C zdMkIDx?`C)_VB~-cU_v$xr-nD91!o%E4d%3Z5UD~O88d$_sWP*X6C7FaebIv|E&J; zi9YDPC(0rNhAfUD$hdq;cCzPcLzsQ z5&9S3r}o_KcQj{D5KVEn+}mvNxYmO145A#@rr`8&O7F>nh4ZqW2&c;Sp_;D_{lmOY zXovkTeTxwNtNv=Og?X{Mz0o6I)x10Kx71O5RDG=3$6;&}VtP#w_52;;tNo|S_8orX zflU|XH_&~>!13W-ZDRY;V)>u)ru38t^Etl{{xf)ZI1G7b!|1TzB@4MAH<-JX76=OX z4&BAK-D4Oxc~(a654518_rQJ6dk9zFml-_gOqRSa3$?(3Yd07bLt9Bq@+}0b-zBd`?JprJ%JBS78yOS zab?6EM7~~9Y&y%%b$D{_v_ij9HnGU0HIPP*SV|B>{A-WBIC(-hh9SU~cvE_3n&JjegmSkHwV~<_t?Tq)!peTdY8L|iAi~Q8{?*qw9dFO;u}O)OfCgMS;4J5Mfy!NiZH0N z1TlJG@epE^+$^1a{WnO!QP+G2dK{t7sx-@5#thc4h@RU6WcG~uog zokhAI55yh*n;tn^;7r3ORwhL5sGP@))psD3c}1Ok?Y&%5Xx&`~L<^e>)zA&r3tp&w zmkE^C2T0Rq9W}D>c7tF1J-$1#dp{mQAqT`c=>6YldpF;$$(yPz4`aU-SY%*%y(b1K zJK(eym4fp{G!osF2VG1 z0?*yVnao`-!)~smlMU6-mD8l@z~;^F?-G>=AlX>HT1+-7I+RsvE>7|9nmu`OZT)dq zrd@@8!?Q!KRpE2t>G*k=5vK+$I5!4FLb+o!j9D`er=bc~bOIOcM|d;1T!)mscUvIGEo+t~C2J zv|JdsewQ?+Y&0)sNVJu->Hu*sGXc4Czz4ZX5WY^FoPKbv-UEW@{ApfXat5BbNs@h2O@Or2dYK=7SM8Du0qkqN+3I-yTDVs&#P?xyU&5&ZFnx!wr}h=`yqNdFIlwy zI%;0j8v?>IZ7sKEMXYp3&UE&8?5sEkWm6DNQ7!=sSWP@E-5zKYFo#ZPI>HMGyEF93z}+YZQki5(D~Mjeo>|2aNddt+xT(2tx; zKzXFw1C|R~2gG8LacpCI`jWI8;JU64aGkjgxZbx3#BO?8Wou}93M8R&uNkOSww4BN zu>U!Ckd~^+nbDR58-_{)SI!h|;N{Ae0zdyS3uNR!M|16Rj{U;W)fc$e)YithGuH+= z2A(@N=PuD&(`IlE{9nG{UVE7i1n`2k0YGHmnVIPgpt-DfsmkA%pkD(a!j{}6dgt2O z?#%zsX*wpxJ6gIs0A3WytN%F(H-Q31WT(EZSWZCMQ>|CoK1+6(YdI~qV68VxKCWNI zd>w`qea=U|8kjR!dwT+^wBK861S;F={~X}8xd0VV0CBVVi4U|9dd(ySSd^CZFaMvj z*=&+{WY~QQqIwGW^7}gik<{6tEe{a?|C~0)Jc>s+8K4#-CIW?tmjP9l9U0t>3qs7wg9%O?^w^41a>zFAnuyx~~5@ZH$yyk0kCd8T`*_W5llo zF0|Q}&Mp$*d~Ck@NCUhOL-`9(rS74jd<&3;G!G!TX?xA0U61z}KuWH;fndju2JXF$ zUMuV!e>m3~Pe3qR$V;jr!2LOWpy=oHfk5Sr25!C1JJQEuBCT)XG<=(YwA!x&CTpn! z2v;8fg!|Xw&ISTI3IV2Z&8H2B@z!SsuQ6{$Z}lbN|L3rkP!(ooDDR!j>8-XgqUYRk z1C3u)QV!}&jRBQH14@T`(O2tUvibN9n8i*WeOxvP98VkYo57p=b&JTK7mx%oJqQl7!C)gD>6pM!8&f;r_jSCm*nK-)E4AA|lK#RFZH;GcZP z-`|etDHTVY_LbewPs!}DSfly#n);n*@ZvP+)bT(nSv9|rmLO6)p+yz+bu4sTAg#RerapeGCgW&`ho+gM z(@BX(5&A^!gC_Vf!rMo0ix{-EP#+z-o+@y)3Ji+7xk}T2D(pp0L7T8)?RcQmt|0-a z)J?LOt38-5De3^*V@7f=oX?xf(WFlsm@bqgpNk$p-8g6?ePg7*WW)+oz)BMy1 zoCDf*Y9CJAjfOxQJIbSX=tdaTa=O;%dAw~;wivr`q}6x)4tSuxa!H8-P)Y}ge%dNN zSY^$2R{sRm^e{^IjGeCto<)0lySN16u^p09-)*3VbxngVO*p1OA<7i$T;gv4YrNAC zf1Ry{RT-8x(++e^Vyv-?X(Aseb6N`(_K24{6ItyDdY$U}@Icw)5eq3FU5?x&0(P7h z#kv{{(W-J?$Yo7<7E8$BZUAxbb;i4@J2UmT8v!uhdhS!v^V7y^oxcRhk* zFvuET^e)qB-_~sX(_P64*2zXQXiKl3m<^0#N$y>M&U!$`(2C*S08D8t5B7++bQyqc zwhXoN0EpotJi1>Pmq=JYOg@dzaAtu->*3(r_E&Efj5>i$Scti?4th^biGud)9POah z^;Z~~ z%6>i+o)sSPzdiSFeuNq>SCHM-2hH?8!(yL|!+XEy zjh7UKBMd}Nlsupi2Y&Y{7LKr+h?*_yN4QCm$d~sqb!bL(p!i^nBk4SPX>{s~##iVH z8179ns^jy2xy9RKHqZL|9s9GIDCk(ke%_pTJhzBQs`+?eQq_D@!9CTNG(dBV4@pbVxS~Zh(k^9w(=$q zi$l%?ZuFbl^^1uNNsh8{?~lI%(Rn4}%Z%TrOLI!vBn7;Raa9njB_u@ta$H82KJd9{ zj|L8oSgFa74HJ%3{XW1qIGz>0vWx1%s|Ipois3jhlQ2r>0&&tP>l{IH<)hG}- zx7%pcz%buBq;Im(^z(SGPUR{rM+`Ag7qzo`t~5vVO{m3>H^lMr9bfyfn}Gm1=xDg&BT)K=ID;E8m)Gt3U}A# z*IJq4q=0Pn;(6RXIB zX#LSlQ~h|6n59*i@K;4l+!{~nS*ws8QrscYa>7G{$xJ(G46inn8H|A+60bn}iM~bi3L%T**n4^Y8g{-7M_;>(+JFwYh47`{So4^Xm6x zxbNbT2<_xNkx7 z7rbBL3f{U~S*lfaJ}zk=#mdDiJRsI;I~q z6{lHWy1^VF7x0`a34!QiC;Ppm3P1UBu(I|E-#)&AdlwUS{u^9?lE#~kX8g02#yrsK z4^4c}H_E^`(Ji*b)O`dplz2k)dj41?6bR>dU(fk&d&l02&!z$w<4|_ib_8C(#hPan zR~1tQ(hTkm{(IzZCd@#IA>K0u>}6X^)o2y^i!p-~d@!nSbYuiVB{MG;-)JwtitS`? zZoL&h`0IdsF43?F5eO1T}=TXwY42T>yEo@3pF&2#8_Kkj*( z>2RD`0OXNX|EtiBI>T{6T6ydT(NA!YZL<>vWviLT!tV!p%vJ<fuof%SI8)AirEg8E!CG%#i`IA7k&wqeSQE-Anw(Qo*=f-Er6&5{551d;yu zMt`U$MlshkE&T5#e0eYGVr23J6LH%VKw}EAFj(gF8bJ<2N~1{fc2Z@Tjot?E_y)%I zyc1fXa|QAvM54}tnew@vdSV$$Uw-{U1NZbnIwG?-7Ifjr^_85;ztU+YZ)OPWG{x_I`yd?8%K!#LJMfSACf$8>9+Gg9uZcV0JRl4E|*hF~IaN{Z}{iV$!TYm53b z{t2ICE#T~ZAIbM+RL z^d56(h7UA5TZy{YL)dj(;4RAiN|O|C4}7KS zqgqOIivaSPjC%-#OzeN~u#BYUofrrkcH||39QS!r)G!nzy@3K^9L#wNUb|g`pSNZW z&$dk%?`IipEc0C?*{?Q2INRwgb!fxpKH3NFEy*2hRoYAt-Lvd;XYK z$DC#t>3uVD{w&S6ROLC2{9N4?*WDIo{h6=>EzpQ`lRVlKhBB?Mv^$Z!=EM#BHkQ5ctm6hIogsyI`%6TinE!O5+)24*+h} z|8Uiqz7?b4pq%7tV^E!F8~2ea2U=p)n2L=wI$LUQ8>bSRbc%&oPzAk zCIDe1YU9*hj2~V~5qagK9sxkSlH{yT2x$v2tN=j@ZZxg;hrS{V(x22?Asu z*f_b@m$*GMem=1hKs930DrGYhQHh>DDT@oa@{myu(VL@j1bCMMxHa9^|az6jRP|Tla#g za6l$)qW>D1oVRia=)7n~t4g=Z*T8j<{064iZ~&pAo5_R;su^s*W|f4~oYQ?1REP8x z=+}o?t^xFWFbBS(Suc%rWzMfPni_A`17gjQx9A_{$Eb12KEM9mnO2!RmubbFdS-`X zZznZZje$U~O;K|iWVf{^F3x?~A_qZ+ z;QOiX(t6*H^v|Xf`+jKz=!LM6a4^Mq{yt4%srJqLrD1XDK_`+zUA#sEau*rSPSZH< z6abw8Ure(bjGqZvJo>T*qyuMTTauAR6@a*t0aiU%!Wu5*BpdfvNsgHX@Jgfna zbgec3%42kD2dB;F78a3OHV{^$&5?A5;AB*E;~rbw%;V?14NT4ecK@A>wuMJxGq+>g zI~475tweY@;@JPv2J&SN7gA|YL04ap`O8u>VUa#uJ~_7VzS4sabbsBYv> zO1>BM9WYxc9k3QZbq(PZGLjaxy$)O0s${07s2G%DEXBSfS80PJz%Kyn67Ne235{VxbV{8TpfXsIK;q7&(6yG0!Ln)VCM;b;F+lezDp`cBarDORM1i$f$ zi{En8^{b7LZyFu;QlN1F=(TD95;E-tt1(3#!ai^uzX;$(RD~h+0rd=nL#?_=MdeO! z+fh(HL>QnaRJH0m%m=2TrDMKD`Aq{0aFek?(Y3G&WQ(%`h{sU*22Glf)DP+Jv4_~A z0H}9v`!CQQyW}pJsn=V<39?tK#K0j16-bu2nx{xY7~@~C&Jg-vXA~jt zV=_juedofE%nv;ICnKs9htY*Cp&n7p3Sj%gJfa6fs$vtkHbm=A&qIsnPYE@PdUB*n z)pUvaa}fHwe~+NKPf}=Vn#4MgM_0Vrc;&XGqOBmlLmhf-93SlsTOWMpB-MQc4A+D;MWf0@OCwP-qxYb9rgTWe8Ve zAI7YUwsmt=@C(ML_%?|4Jk;+{|JmV748cW3O&C3_gUbdl2~kw(NXy1;dpESj-j`n| zNY<2x6*CxwLtn(08^8++g zJ@Hv=)j^`HN`_uG7F{xD+dCQ{YSC z5UvY^C)#o8m;Q;U|&x9Plu}z%O^4n%FJDf1a2&?3l zFMq~_U7?xQW}$S;)zqCY-nrn-?dP}=HBRTZ#6U}s2lCO`-DfLtV55SA4pv73!@=wP zZMC{%Aw0Kkv&w$TRF1oHGRlWZQg-k86v5ShRIFSI_i~#lQ5H`GCyYk{ts6I-C9Cr$ ztnP2X_`VSj$IPk`_yV*CRYKn7-XFEadF21=riFJV#!wb$({f#NLUn}d=0gg!`X?BTkMCA1R2mrfWYI5EuPqQ=b-q1Bw3VO zMkwM~2Kx6j{onmB#D?kYS3YMTfW?QyEa)8I-**B`z+XtNUYjP*sL&uTa^i3D(OGme zka49X(T=+DqzJBSKm3dM_XesCm%#vk+A8U~IwuVNG_)mGP}4(+hOFByi$*6RIWdXC zQGj)6N>lY8nNX0BLMR>}%j6U;etjQWsQOl#eWJDAaC~DxrrFS0fT}Y(^CWTfgO>-? zG8gKJyz29qQYTZS127qQH~r3R;t(X4{>ckKS~; zTw|tc^@$IMEO1wgSa5>vT}wUhWpEuqC4Lu0-7{g2u<*GiaD{h4e+jr$m6>Tk}be)2H^ z?=<*Ty2i0uVJP+Y%+CmriAkJlF@FY$t>WpyLJ0sqYCkHI#gNNsok4c@g2R2>R^#uZ z#UK$=dI7D? z&%a3mP;1&H)si>%TE^aa`{`n)FMerY&x^=Mr2BD#<%iS`h2=nStiT`GPH4pJveD>N zmaAyNURg;`TMlR8_wyRsIOf6Y&($q9B|&GE@(jqH8B?PS)9E1^0FpR4pQ@R|8ERPr zK-%MLw*WNxw}QSYHD_q)=};xdza%o8IUh+qKz!h@c^?3`if*vFPodz6{k20@pQjnj zX$X#+9ey!Fbr2@)OKAlAVIL$jKp3!o@+ww%;%wY}GQ#b2Tk}N()Bj&|q?&zYKBxT#! z77Hzx)stx?(b-@$L-WK++VsxY_#9qGBNAS$yT6o_Od^;*pEyJpmHVz3w-G~jroPPW zRSmCV>`=M>`3dmggh9Nwhz7S$4&ER9Q((Bd3#a4!!M8)5Yf+0 zdpM?5Tcb}h?)CXymGm#nZm?f%j(zv=8;ckJME7KtbIarx>^G7?-^k)M97Ozrc>Y;T z-Z%WkDYp`s@&giF+t#Bk007MmZ-*v5K1A`?@$Y^MDM07;Ny5G@$V+l755ln4NJlWAET;fq$7ES&b(yHP(o~f8{W7`TOatzY z=K^qJ0IjYt}-cgLr!!Y zRG}+-R=$bG5@!Ix=nCNN-8D9|EcwdCd)^$~%VW|P}m>#8aOPaR!7^htWj*PKxMMkMqp z{BP@ysCTJS9eXSLh16neeR)d->dq@DQ;lX|mFG6qr!%)0@{;dm`i-bN2x~Nh{io(x-iWHJEInGT5I43KzBOYH7M=w@YlfPrjhRN=AWwko`5pubQ0rMn4>9lFT5_Mca_L%`_MTIxbhg~c5(NDIv?5Ak$Tbqv9tz%pa6Qr8k) zgSK<1&%`6P=KgYhq;In;-ioKkcJVBo#YTnKQa>+|OJ72cUzB88`xb}5zF41^rA%h2 zr;A4SsYgA>TN2Pksfo(OYjT??Xqgz{VgfuGG*m$*z&sb9Ya-I&d+Xsyv6*so&HaL_ zkn9)-a*k3``CwhVQJbO?SeUPnyq$$3yV&sppibHHDD*Kd0ldha{3~V{Ch09Y-utyy zc|}3sdvt(pHxi8?Xt&E@ZX-?4)99i+DANw1`~@t?XJ<0-Yt|h15#s~U22Khp7%-hqFHN&j(Lrv(i!HAg~#`4Srl95#rWA~edIV~ulK=t9NmQe zw7<~1bVr6U2xJ3N5Ygjq!-M1VOqZyN+TU)80jMa)!lqovt}#Era!;-wr*V87mzl~X zI^nST*EA1C3#AsFdZtTn%RLu9gM0M`uRwtmq?sOr}b zbO>;+0FkL(R~xN*^@*@S*BStdZ>`v?1Os7|wPUzgI=+wxpMsNB1I?`k@60#{#R+;<>BgTKIKN*2y|0Vu<^CN{GE$NfU$7qu z#}b_gEKkWr>FbM}&{5+H7*TwC^kp*bo5r&g2#_oD5)1#nkEiaR>{$S?>62!hWT@r6 z+6?$^faLEPAkVNvK2q$>Dsj*1T=zn5yf#vl*aonjCYr`L%#2)>{c00EUY|nBi@qfXS^N6dU3Vm*InG;n~RZD-28%d%(ybsWx5nU{}pkjRI_O`@(RM>AqvK`VF0wT0EUu~C~TBe!f`}4nVElBalF)1IXfc(z$zhVMRs&y5+%ZdHR zR{-YeR1z35>$9&(Dv$XdK>IHP>@#4{(A)V74v=Em&_n=Q2AC0@g$$TJW7IRGy$J1; zubTz_1Kc&%L;x_AN1CJpXSBfZ?qfj~FtUgkgIzSwUg_(qwR>L_XGGi*+T^UD7hF;2 zLERNe6s05l;!&Id6G+$2kgbT2ew{7&lD`E#x0b zl?U+p8h;i1=D*ngI%oYd41J}GC+W|%XMb#nY>L5bY{ry#!U_kR>%2meO_ zZM#KwN}X6^wrSqdglP6jT|!vq;oRi6u2Z6IHRkc&Bq?EBf0N{3fSFjfV7@P|I+>^ z+V5})@{-C{CHjZme8Zb?;;7O#IxO*t+iBtZ@qEAerGb`Kq|kpan^S&yyoNoPY`g~y z2}BBvWWVv=6Cr3_-G~8nL2aW&URgxlj%=Xh!lhuqHt$FsjIurk>~fm~JE4CizY`+z_{*XQkbcbChFf2 zGiX;sR@>ZGKi7BxhM`*0H!o#(0}5ZC!h#1N>YjTm064Z^)m=FXY>D`ee`mh_V}2>~ ze~YeqVy@7CdmMf*S4|9n>z=>vY0gW0RS4^01PU;ag# z==no&EvNfgE^Fk}hZA!-ny?aQimPO54o^z^33O#vt~A>4L&#o~xFlz5!y2Uy{19DZhE>Q)#hEkQ7T7njC-6W{HhC8e}PlO`|( z8*K<_(gUL&_Ll73y#|ktsm^RxHa?QkM6($OT<^F{YaFk)CsERRdr|d@H6bh}U#8Y(Zh57&Xws>jqu0xmd?pK*$&u)T|DCIO=Nt)e)Dc3(EWOzwf9B}E zETfb;tLEs_{*F0h@b99^%D7q!mU<&AlVg7rpKQ{Zruu!>tc-`xa!aZ3gM;hLb(l}1 zSq}RPvQd`PH8oLF6~AmviOJyd_(w})M$4CshZ;0ss`D_2h9+47ENsl8Ss$@qZyImy zHVsTqZ)bYq%tvt|UTe1{6k< z4At5s4h`@zSTWhnvq}Iom|;8n(4?wRxHqc}5Mo*9jHGmOpn(50&lC@#YXLV`#wIj? zl)PVZmwtM0P{(FURJvcfwr=zpo#Z>|%7*pKHIY`XaZbHv87~Cz1o$RZAC_(% zXU3$<6_}%)D^c|+Os~nP%xHa{TgHe3zePUqDz9M&e92~zb zp1GFuLc9eD2|d)ZWMw*SFC4jGYTCH?#_ilkwy_<7PZu+w8Upw4V=Of#^Kv!Cr&`W% zxi#!tE?l0)*!ZwGViJz{LL)<9n_@*Qy1b#$KGjnJpKr2#v{Ec}JyhOclmPu*^<<#r<9y|gChr=B! zpyjCo{>5eMUo&iSY?()$vZv{Ksj{5PP6NIX2)a4Ot_MYpgsBlm5819G{&6@hzd<9? z8vn4_uIRo+gsnhdKVBS^NqQHdbs^iX8scN@!QehCl$b8XxO?Q0$_3x0)o*K49XU0EaE$&xuq}!yjn!48$&628r5w1zB4q5Ezm|fMU zge&GVNMIba`KR$e=mQr9HODgGzR5gsKLk5wPp_IJHrc-sY200S2D%!eT&fx%!7vO& z`#R7kt@bH6)AC_*d&^8!B=HElx{i)+V0bESj3FsL_v(*4fR8U3Ke?9SQ(5QkKxpP( zr@^mEDt1^*1X`u2pN~IX#5+kFtUytC^GSHm;jt!%c5r;P7lXOx@t0;wrq=LMaw4vW zk;@CvArcIx79%!pAwTW(X0{Alm;i$hlRPH}KZ%v|0A^o1AX*jwaT`5xOK=>7t-@DJ zM-eJCvwds+Jr%HnNCwbdN2oedfOwT`B!4Lc?9>A@@9K;*fYXuVX8m8M6^5H$j7ukX zP|qK(XQo*-IIcFe(Oa`HCh8j82FysXt$9^76%xg5jL`s9PP_}nxb198i4JLvZa~(U z7#}aUzLu`#gCB<_HvaWN+h&ZtqKUbR1`>JH*)xXb0)^6yqoM6Md#@?^OgjkW6#{@h zBG|Rq=Q+ROX*h%P6Od-w>*F;TFrxZuj2Y>abXG$u#`NfFU|ZvTaF9ZCsi}yA5yo$P zzqqMAmFeqxiDo{Q3=*3Aodeeo|E9M63aU!++k3XgN&ki>be;tVIktSS+ay1TXIK3j zP$&o~WE972$1Dyh{}ZT(Pj8}G`_R`DP+v6|1aKY$3Z|b{lUv@m4NMn&a$3kcQ}uWo z%M`N2+W5OY;JX`=&9u1jGP$@*b+_qETbY7e=Yk+>p5C|59QX%o7)s?ep1M3JfpCk z4A82M{Lfv}?Cn^7#>uL)Z0gttK?BuY+RvN zYjd{%mbo5(a{OYXNIkVojV9G@vFn)&KYoTwRN1?2?o9dSh$Qb3+Tgo**%I5M7NcMYwJ$-4RVIf z$0kJeK2Fq;WM|nssr0v6N$>JwU}LU>u7R6AbmJH{-#@x82VlTVJ}ex$a$o9*3v_WM zl|@jzi`?!FiJMXi4>2hU;&$v7zZeNFpQX#SH@ql8j9gmKr@c3~ad&5`5lH)U=*^&# z#MBMR+G(pq`((+wYd+e4ou9ckl3O6oNcRj7PKjgjqOHXBEV*As00q5*(ua-ZBRV_B z91Y=s3hOAcYb9x&%G-v1?3M{tQ}MweX%QKryca~QWi?G}DwVy8A$h$c*0Us#05_z1 z-7PVB`>8kSMlr}Rt&+6;*Z`YShDlD^zbZ`fT$@$TU=xn>7}YD8Fd(D@-oBj6G7wR` zA%%Q=S;LMroO7KUUyr0s7r zvHx`QeDg658Jl&1C9iB7q9i5Zr*1}qe9VMA_h{?YY(JB2TG(htU`@na01X0I1 zT8p1h)5^S(8A^w{pg(q^8bTOelYND?QCBBmsB|{SgkSi~n(8>Tg)Ug{MV#Qu-6Y?P>hYuupd~7 znD<|^87I89hcJ7ZAzrOPh%;uesHR)gmT7vY`a(1tF0|h*i>sr$_PoC~9B@;4x6JrB zCx2o4vZMHNe&c(i__9s*e7pMm)cyqWJ;U=otM|Q#_I5I$)IY6%A@Ut;XA(qGlL-s?oLS|MHt=9e24#ks>8fP5d#@ByXS5>^WQ}qt zhx7ex=%mSOeR1&-64sUNaav__$1qnSyu`jx-33MOj?(RviQaWM#v105$S%EoM2;5x zcov2I{p8EDmk;T>IpQ|PIoPOrI;STWbN$Bu{F*2#0ROwSQm~ujSDPZdm#mMS$G*h^ zbYI)wPsV)pR*wJq=1cs~T;2Ge#j5c?J#^xKN~y%Q_%eQ~p`~9ImGsZn@wmA4E#cM= zoK_?m{YJL%$5 zRvCgc%HyNDq3`)RCYUOEX-2eI;V`!Mh)r<&qC>ArJa#+Ru5Uh+Qg2cC*Pr}Li& zFo)&ijyfGlIue!BRL+vr&aFH;RI;(C`z) zkw@Ewu$>gv%{xSpFG*iZ(9TP;z_mSlzJGI@%d-0D`Rz$dz|U?ZY&Iveh`rrWVq^** z>pEc#U|TWNKN-np=_Yw3RSl7>;OaW5Vt!wK)qlcnHaD62+*Sb1T76I4;|n9)`=Qx` z;?cC94PQmptDzTbG#)|Y1YbB_dsZ@jR3*|vn{bE^)uOER;p%10`5f@G_=hz({Og)% z6Mc7W2bO(|?Bh&Du`xmsUzs#YWav85L=o2B3F&@5mOl2Nv$jl1JHs+WzibLAUX{Km zJB9FKmqcZ9YV*tFRJY#bl$P2gm{H1;y66N{)cq^An1|5xcY@W3_*YKL*KqSu6{^E0 z%GvthlB^PSvAmgSIdbXWA42t4=3~BwlZq>sxxAC99b%)NzVD6sikcP&)f>mhx{DY~ zUrHm$E1zYZj-Cong5>DcPT{0U`hFs}M3HB(x~o$tqKBsp>X+A_W{kfF71M-ef1IJj zeOs!tIKR$ZGaZ?z!z3ocS6?lP(q1hlKMP$LL08t4I8?9AAc6jF|4>v{9q=_m3;LgD z|4_td5>q@$2o?6+dM#L*Z4vvo_tAP7Z}YyoLau6Rs)^F4HWeWqiaY#?YiE={KfkCi zJHIHTH9ywj-Mq`E5_2eSfK*(Qk0bZjm#9l}pIyc+rO44^OPaI6WDn;`Xi#W93+}zH zHc`yL+iYi1KJ~&`KHoHyAcbV;aTywzODn)h|E=ETsI|nRNso6hpO!Y!BSWnfX`mNO zomt=`81!8nWIkZ&jII0LNIJJnYw#MZetF<(ZEd4}s2npO$mMetewpOF4_o`;G#uJK zH^8<30rOUHl4yb9Nfe{oR<2&ldKvG-O~h6mxbYpqCPY60(K1%nH@IV>?1TBZ zp{E;td1oTu{W$$5$-g!S-;9x&w_#u4^zryi$`GgLGYZE8ij)tlx}}CyUdz~bW{;4Kte)D@4W9WO4W;l5$5WS#CC`6paHTA57UWEXn6U^E)FxO63u`L6&OOe`;~7J~lhF z7fuFGQNiBSr%4O^nk?g`gMYR-+(gs1jrX}a#dcY}==S9<|9G53a#h7_3$_9CfwEmaENkgmy3E?wgNK?Shvr2$C3Q_vptyA9*@UOW#lkN^-(Y}=>j}m zC;yceG@7VV2IW|o60cGc@|kgkm&XTpl5-OHU^D_)Gqj*7p3Z{yExtnF24!vgtB*TP zi5<4LhL@l3X?1)?LHOlwdwX$5A+O5yVbuPA8ZSyjJ-jN<@u5f>#=4kA-mUtu#cHMM z_scjknEkmH^2E2(AU@gwR|I-e`G@^G+87_7FGGoN!UjC{A^PHLh;RahE24)0%o>^N zO7}8l5UOuqDh)U*W<3hI?yh8%Zbse_`@RQ`w0nUD_GU7=|A@5xzGd|ePD0MWEl3fk z?w#_tlIr|M(ff$_3C|@@HgFaDHsjVOWhQ2Kx?yTbInVF~qOMzES0Q><@QLk`>+0nC ztZhTvZjt8G-J*R@ti7e3UOUMgm)w&mgvPz_du|zv)zNB2L$LkzDR#yTE`G^i`gCmN zm4vS3sDoa6tD)nBq1hz=BanZoWEIQgUlhK_PL4G}KT!z$h8_L5+Li}JE5{5+qz#1T zL6LMV;4<`z@Z(eiU`f z6-Ci^jOLtNsmRIVY!~}f_2Zlv*2{*$ht`g!?6q~89zCi}9od=d;G^JwqOqrH<9FVY{{`b1->H`2Ec_v_Fw`&wMgI2B6kj;T`oM zHrraf61q3s5V@Wn;Ln!AJb8^^0ijTfJ#~9+H%C`z z&&O*~-S1zm(fw>g-`A*Hy2-_lnkx*tuL{dsi$Pxm*jM1Yr8|o7`~y2QCRXb5F30QA z5!0`q=xiPc;l%4#TA4tP46-Ts&qPqNK&38IP5?=d2qMQ(kM1aN9ox!7>2uZbV5{`& zLpvnd+_xG|S)ip-jBvbLz8*o@O7W+(n-M5{&eE0uOE4m1>k`Yhr{$Df($+o99`;+? zUP7YRm$mgeeg91Xq1n;YI!McB>47g|v2ip1bkC5OyrYv-eI4UyqcS6Pp{Eq@Z?-mr zUnNCJT5p9=m2kpPUqmx3|`68Lxztb3b8_N!LwaH zoypYEI-N%uUJ-z}hdSU@sJ9$=^;t2Ea&mtyPbD75?`)@>cPAaOLXQ}Vam0{Ta+6HBZJavx67x6{GF|KEdn7?}ei7Mrw!=^P)9{91Ieximr`5sfwpLrj( z!ha->^LJ;qwtQ|tdtc5MZR(hnD#gR+1NZJI<7?KaTOo{cQ^JGjtJ6{J$)(H&j4V>G6x96;wXAORPBLY{6JJCVVV! z#&gP59xCKqU@~NFpA3iD?eI(9wg=>~j5E2BQ49hLH&p*>yhhwVbBr!BnzPjKaBPC3 zSCiLz*bF>(ccBu_EmKCGI~+|*Y5>(B2Ly2C7_lZhR?b?~Um+%W2kYZo!{87Orhm_V zL1q%jZ*B8^5U3Ia5Zz)Z@eAK?g;*aSvUW*8WT{$69tJYe`^tIY#;q7fNZ;pLX37L_ z_oNJc2_u&*;7Xz(myEFVK#ti+c#FV8xQQ}>k$FkT|A&X^u2V_U({AncuEi(tnT7F5 z50e<7hTstXJ8*R9>Sex3%!ZW_X%r$oW&ZFLEBNeo_MQ0;9M?$ljRjQ+oV1EMqw??U zV!0t_C82S_7=ibj>Q!|;fs6Ok`04ik9N@F(I@w<==nP_MYr+MneHBJGvc_ge?3I|AghtiPL)@~wZdww{Rm+XI1-Qs)zLCZ@Vm)F4LJ#IHZ~B*1T!5nC-Z!O zdgAKh%Oxl4G0gkoCdbzkcDUQFKdIgM*C>=8Ux-Qh8I z8O0UdsXf{w$BjVStJ8;TtKdXTPXEqwUPKiv|8*5lwX*0ROM7OCFl0VMt+kAAYX*ijVi)2FR zN537?rfhj~7!|j@=i#2=++FoCru}KOR!mWvCd|G#aRi+N-S;V#V_oQyFP#@ zI)@^CSZ4p0zNJg*zUTFKTZ`a(X)|6y$_ae4cafw~NCI6d`%jzXB_w`*gdaK;oUzdz znq$d66F0yKk<#M}MqIrcAxd2iF>wZWib54XOcl>99T)HX~{7SBkD*d2Ci z6KAJWZXP7zD<3ZOUok5vr$@9_@Tt4J4$K>=7|sxH+J&S^V6v<9?(<_w;+5?@GYe;%n7p?K=x;McWH86-Ir7ms$1Vgub@MvmS@wojx_p{ z5YBkrj?oLOL*pDl_ zQo4{EX^cL#lGYY43Qe%7dN$UamGd&;b*tSk3&x!oMUDpqIp!lmoSP8YwW*wxJWM&} zC2!#t;gNkIo>OlL#W;?;ZF*Tie3`Y7EgVg!}KzD>_(gTw9Xr~^1kh; z78m-lF!YD~oTb~gJ;G9@dhp?0=?uB#cWsa+4s@)$a!mC8kvxC);u&8?f(F_h8|~&4 zeJg?@r*ujR1>;)()z9{@n?LU+haD8~POf{sW~l1LZ4H!|Pb5R2A3<{Z;`a*C1z3@$ zM$fmWI2*W?xUKP|CHS+fl%EjrX3&;zlGWy?T%;Xi4YKVHc}VHJ8Zi^YS6pbU@I1#A z=!k2{9OY5UAaAkzgi0$73NAX1r;PgjWDy~+xOUp22){gAu~Aw%E1%3zITsxi!h~2P zC8*K||CXiYyla!Xu<=Kq108#RqHGVcJWI?uvg8nhPy{0!ynKD|B*U%Zu+vv$QZ0}d zwyel0hpY**aw%3bT<)W}oS=`<@gxVp(UTKOYqg0|eF6gpfZ|iTCQcYo#hMyq=xr<$ zOkA7le#(Lo9BYxKsY>3uSqjYyB@bd?+vCB-RC>w055Q^mD9u+1p~}i%R10KQTA)=H z(CVS9tWbq(hZHOH3I}(D)^MqO^2b4)6~er< zt^vS(a<@FR* zP?E?m{Y^-^7SE+!S)@L!=S-B?qY|8&`lMyYB2ig2QoSRBwxbk@l1n zf&So>Z78eZBsm^wir<$#HEmH8^Qzm~3M16vpsU&ra&L(r^zojLAeDhP*166x|p&)p8ILGaIqo zZJvugXKXloHeq?m9xS}RSH~G!L<(P|LX@Pku0Ftzt3eSgKD}1{DRGmSBnk;!Pe2IP z#5g?7mnAn=mOc-4$o^g9z6}N-b6#T518{^|2+%t1I>c(#UnB@etKE5`9vhHY(MU|Z z@cI9&G;}$z^05)y<%>efJVvQ<%0ijU7T-go?HNVoo)n=C!}i-18^4kJ$0(l+=o+Jn z>;;e=_hO7{gBOM73fSy_g~WcCOxLHXWga*SN$O~z^q8MCd^|u!;P=FDA9((Y;zhZG zMa2v6LyqywwFi$;f%^FjvNNDoM&|59R^!JGW<&A zIW0-HUx3RE4d}B}p|PtM8FeuF6U1~7`wt^&-cs6Z zn#-OA0k^7wOSnlL05Y}XNhISAajEZmD3>n92`QIDhW%6ZK1$N)VJ#ge@g(?i?d7tF zEJp0c{Ze>=P_(J8L*tes%qvc+r3jddboMY|-*b50MhX3m+bBn9W8?z+O51>OpoUMG z?GUgK=<_VYYrk>%&kjWGki0LTRt%z`o5DpRD7Z<;;~Jtb`TKp&9|udNy|JO9xAf&{ z6S1$ou;cdAOylfvI46e5S(gZH@Qg&kC25q5#>f#t^tR;(u{P?phOkij!j#p(I!dRC zC&rC44J0nAQ*u~#@XT`+ZC_JUtv_-?s6#L>&m1L%J>as7s4TH$YGg&6)4MHZFm*uN z6PHr-A>d79RQPC9Vn8}I(>DMKDcEhQfXn_@ncbTEtG91E>5VV?UwK2ei9iw`vL|btcWGbFn=6qdp~@V477#p-IR{{ajzE_|CN{JQI~EDjC#jf-jJ4)0{?Cl z6{Fl69gI0-Ri4JW`ztMRyfglKR^Ig}wN_J<>Cq~Qq}Tt|F4|D<5O8cXDnl_g??V(9076ANfHtuo_0Ew|n=fiW>-(2X}lR9zf9M9 zTZHSFTNCJga1Zla%3nt-Nz{}s&hYq5Hz9X=GL@uZ_X#p%_sf4wr~iHJS;d7E;YG9( z%A>;*7jiju2&;PyO^!$jz=HCibQRgM1R+3`<{HlpHp+)Hx!2KMmTXJBUcii^FWjJP zdvk$uisY57*^gtwdMu5nB@Ng?-h2xKx#x+taP%n4j!j*y7_66>0i9RJJiA7+eUGZ& zUU3yLF0J`Zc8+C<623m(;U)P^E=own3y!S~s5(gI3w|R%7=sWuTIp$x5)t>QLGRAc z4LM!$dZP5KL}{v`j*=HtuCwS~PdNxuk7lk~I%CRL$| zRa_onJKn5@CO;Tf0=K`z=QRglhghN@^umxaOD&=p|9({0f#XMq_jB_z>2@Hu({W<2 zrKh#PX}e)UTn_XSD#N7G`$1nV5BZn`m@}ZEp|VU~DZO#Tv2vwrA!lAb6y33wED^f^ zY}^fe5fXx!2V_zqYrte66&o=E{cv!;8&g}H{rkxg3Oa(b;QcgG%=%+Pig_Sk)SNTA zDau4Y`*Be5hAIlq*zn$W`2HB9>GblL(+H-@Mv`~ROQGY}&vurfu(jtPcoYl!T=}I(=8vxr zyI37{$BKrCLQXw7@&snE8YtbTcf|RdQcyKIe=SHhn;dz>z-EpNTOKfF+#S{W$`Sc* zc4%=*xb$49a>b!#n*5=4ls5kTiQsIE;pTBs!g@|ipCIjULFG{l=>&l;sp_)imS0_L z189hElv|W2ObJu`8puoJQOG{72F`zw8_t)GSmupOHwD3P>v{0IR<+;`gHNm8b4D$AFq9xQ@ww-30a@<=oHcBwl#9oH6vK)J7gKO)xah6<6#CA7kWrXLP=+A8paD73m%+xs_YI)bClD5)e#cwl#J_QgrN5YpvpkZ zEAX_#Y54suQyt%M3ej2&6FjI#wTLxXO&x?z1*?;TG}|Z1b~xBw&rsB2 z9H%p8|l-2pf-8r@nf6sH(G67g?S<3WNO=LY01A6`cb;`mbPrcpC-&L zZTed!zI2x&$P4&o^HeroYfT_Qv({mEgZ#PP%LmwBvAUC49A9^=@v)z_6ojegm_4Zo z1rMQ~N)^8DPnG$8pl9L>kMI*y3`@cWJ6+0`LC+AbNP$<6ugwVgAZ_LPJf%K;g4P;i z20|R3g$=H>J3BAtIiF)@JPYL}JTROkEv~;LLFdTIH7_m8o*uyM`A@+0g?37=$!8jK z!DIc{zl#<6iH=FoD~G?3DW=_Wa8+knqGRS1^CXK*l{i!4zB<$-<*&>!`*Qrk@hmPq zxA*k*VO-6Mk8T_#@PpYOmc zV^q!!&BRe+f&MY`fvv4cRGJ_3(?NRH_Ge-$L-_)C8Ypdg2TgiEBPv6Udcq9EpJE|S zzf7z>dioC~Xe|`eV!r)|*TrS*+}mKw&b+4zN7kg%lBL3m6k9am%b;l`B&IsWE!xj# zROaAOhXR<*;7Cf3iH2pYX^tYS281F&yg%BY2?51p_hs;ouMGe&^l z9vfUsQxrnH(QP_ZA)1B4ACd(J!#MV@qzF;hQ|sGKd77zP4-EhR_7LNs9wRpdw$+GAhSEdq`SL=vRQ{ z?+@zRAO)w#1kVVQr6q8~x{R*2wiZxacMX}E zn$emllpXrM0p{{l&TEzH}78dp!F^*9_;Va76ol*1B08mB7oAjh9k*-@#J#@zdV z0d7%a;aXfxTj3gHO2^Y)(xSYzfs$)h4|p6)76E!AxGQH`b?6RXJfrenWif?)`kiye zA0W|44=}MHa6B9Y&f|6=IM!w5TaDB~o=PGQNsR90;Nb)Tpeg)ckce|LlY*KFTz#tu zDD$V2L$QYJ2H}oLl}-C}#?!z)n==1xqU6GJ1uPTZEKtQ*Ys+Z=9fCqQXOE8 z0V2qSbdhp`19Bpt=+lcDm#%;u{sJ|C*|iq>?4T}32x6E`y7o|B($v*o@RUTMQ_=+v z7R<+2&};S`Ic4IqQpc-`!DJSh!@=YVaO|3rZts!IanMHQl-@@lKoF;$x{T%j4S+I3 z^no%%Je9484&=@%z{7dB>d^kNa%R{+Ss2iX*dl672sc;XABF`nDqr*fRmd`l6`m|7TDGKYw z&HOL$P`=H-rx=%;=y%s%4wU0^?v!ca^m{1|$388&63+qhp%@495jg_#`F{hzG`Ba9 zpY;TarYKj^b^1bB{|f)yN(n2~6MVFksrt!{!KXc;(J_m`rynbJSAv*P0nSDDT(*ut zRh{7~NyM>U9_3->c@SR)^2q+nIN|mNTmZgRm2f=o?E`ZBQcnk~GxX$t)!roB@mJ>f z%@H8?`Wm?Ns+kTZ+0TN*KFsi@1{ZWM?Z6y=T>)lm{*B_Kpx&TTW?I1`DR%x^k8UId zT|E}mha2FyCbhBsB<#ki{Pu@BTz4nyix(0x?9d(Wj>fzt1z4|cmavcYtxo&(e5Z%z z!6WOP(C>3qGOoP*6HQr%FQv9k9h$6X|Jw1Ib>!7z5F8&ZUvS2G;d11(0M zDCBp1OWpX(fgfes8=78m1D%gi1#eO}QIvHOeKG@ZZfe%T7MSQ-0p=pPCjm*wy)YBD z_9ledpas30oTa=^1k*CHS?7si2FqNBw?^g#6?sU2d0NpEx;;f7SZC~rH&exZIgF=^@9KK^2H$tvr#Tjs|T8A&+!x59|y zmUpLNBaco;b(NFP47;Vr_?e-+K-yX=5!usE2^NxMY;&Q$nWwoI0VR5HQQ?AxLa1W^k6ZiIT8(+>WM#F-lbLeyDD21x(1;Q|%I- zTE3;#2H52b=7!_3*v-qMcy+CEPLn|qR}SR-l#J?_u}=fA)eXEV-+t9Ts~ltCzl1h0 zV8?F|&zdo2DcLr1CExoY4g_~Z$dWb0mr6ny-sntYgF3}%Zc7??vkSV(B{O#}L#at( z&k|+V+}#CV#Qe^@jMXtW{W=J?De3i0e~8;YS_r)O%hiR9zcq(1_gDxl)`qtl89ks~ z+MUA2AHk_Ff!7cuRutuaD-|fB$XFe6HYBcS@LBz%O+!J4eubZhWQ3;R#5T2^fXb@= z`_sG@>ZdUN*QwU6ovn|hoxH1FHU(Ve$>B5wEpBdERKcdJhx5Uoq$dQ}B z1QR$9RZP(em`zm^|3op^^_26AHTs=-c^U9V`LnZQc8Go?k-&LStempIE01s5XX&VV ztyaz|Q_1Uov6ont!aY2IzsKG>O_%B+s&GqY{3)Dp%$nc%=f{ysVkXlWDkXKO+XC|F zau`nCpoWQD+Qt`KcM0mL1+Gw&>kwg8oWqk5;7tWI@J)`v!Vr>pRa}eAJGJb5?S_AXLJn*X)q#C@$xnLlsjjPEp6o+J6%AT&v6~;|F=LMxNQir8E?>P` zgmAf^s8_KEftG!6wVU!~dthpAPk_tT&O-i8pQySOX_9Q^Ks#6YT&cm~t%g*Hsf6*0 zC9v3A2gzH`e?G<1RbJu`@HRVOUGmj)+L$I=6g68hrGi;E3bJ4>2IFDv%v4AzcvY9V z1sx7jQNEwDX5`-Wc(Bnxf0VyaA8$Qr^v%1cLe2r%_mmmyhi5r@QjXoQGN-{9zByxO zjUNLWn=KbODliQ>gY&Mgig~pqoScWQ+_Jd_PWcS=^9!_JXC*vr8qw+xb^bU>%%!f~ zm8N^awj%e~Y=*U0L3t*QBb_uUJeL_K@0DoArZOpWLQaI6q_Ci0#2@ubLN>A17p+&$ zkSE?e9GhHXLEVD6r5r9<>sCMenYkgy7!}pfMuqn6>c%7m1Oz|`iv2tKS+}V0fF=C3 zp2MG&2^6e#S}k}D(vX@scXL7?+^&jnXO_3Ui@zW^0QC>gGU6o z(iA(iS~yS37p70wQRuyajg-1)20YxySa8;Z0Vr~AI`qp^MD=tG6-0Uk&884`Hl9Nl zionF!>6H)o_2z;&w>`DI8j@VypxiPP1b>{tmK`w+C=Z+3Dd`QyXqpbuCQ5yZ8A+IJpIHybCSF!rE9SDi7lI?Q6 z27@+h)~`FQn`9uHu{%>kD%7p#5Yo0y$nMSn&e?ij7zp{Y1e~FLlX722DHO5TK??Zc zK||}4wXENo6E~FCQQj};lu^_~h?Eh(>%}c8yif+8y*)0<3hM|lYa-ryg%XtayouM)S?>0Fm@zJ(6?E_Ey6mBvhlPKin+rY%wQ`A zeiT2jlkky}aEr^?ch9J}3Efj6mOaoB+!3_$@w_IyV7!h~2@ypxU5M%wz)VejAl|cU zxgB$2t+MILm{P&q+#(pC$&{AZLL}Yc9dX9lVs9%uUT}q4(Z=-DU4@{Wt<#C|{L- z2yx!65ED#ACav;?Vc9cZQi4OK8uc&&IEytV9b$xnVG`A8c2mC!oocQ~Y=64SRC!^b zl1PPE6L=Yg<7DDBMx2LMu6(3Esk;guPhm?QGdxO3V^n!$U>8X2&`4nqoU*edkEDu9 zr^eXA;pR{V4>;!T(YhhS@882w#j2+zXlQIw*DrU2_rE|Gz{WJo)#>=@+B+#mcC5w6 zVVjT3n=(6kg{>B%YKhYg2k>ZOdCFKC7Pn#-12`W$qq$& ziL{seAmVC)9*xw;Do>Jzgs%%USaGP;4PMw_j6hBgz>SAArMZHaYtsNpJr|Tjkvxsb z_Y-xu^9#r`d(__X z!mkS%>lhzLKRjtm;XxaSb$#%mXY87Td;U12QVW4e1!Lx|fb&ijtbtNX0uI?4ppXn~Tn$`Q+*j@+_j`*Yas*t+(G0UPBL zSX+A;D!ry{ElEoS7ly@yQw7qMMB>+zT>@7*Ssw3;Kw?CCySg3z4#T~z!KM4g6o?PO z-$rhgw2onqm#~K2XV8((F5^J^12nH8&e$7e88F2dqhN@;mlisf)dL)roXqxWrFuI2 z744r}RX3dB3Ua~9_vZ4%t7@SInt~nJ;is5Sn^8>2!P|8KYb0{{99@#ZqE{a?$QOa6Z!{(ZS!f zbpMuna{8ZtFHimX8=PCbV$+15G2Raj9aPNj)_h`9S9-~vdQQ&EK_(W2ff>SEkVQe3 z7qX`G@VgH>SrhpA!+%$;ebGrmp$8U{iR%as0j2lLg1fkf-`yW-5^Gv`zWgH6#+Y+I z72?qI`mVJ^C|gh6pF(QKFWJwETp-kHRJ;Xw6hEJvg7l^bMs_A6<*W@C)OiH2WKsF` z#p*GlYnhyY&DN8PmNBvhOGx%<=&7Gn^^+e02+rA^ zoa=co6z095E)0qE=U7#b_$GJEM`qx56(!M=IZ{`iD}S&x=jsc;iq;8^ahTlhbx-W3 zx6`c?J^dugH;!||FoS7w)1oU_=H2l{dDQj$i;?>m`bCepO37627rpH%B@t-~|EQy* zFJJ0#-+#P~+@#OzRCmV+ulg`*gu1-s4ulpt7vh8`K*6f@01p~ic&DIH6N6nO{x4oN z*AoIawVP^NOi^qI{w-9092fIxk4q8yA4{RjT4l(<)suZt5x*F2d?VKP-&Zb(X7-Gt5R4<3m1#vgI@C>cZsZF-lA2@xaeL2Eak>3NsrgF~-exR^I@q4;*i89C5rb&Mzux=Z0nmbjKhlUYP~0Xh zsEve)eCg|6OHC}oXKp#q>lp9zg=wjfb8u7qc9=6!2qPNrVE~;WHP}~P*`y^$GFN8! zTb~5$5QC6{zsXVN!$_u+bF6~COY+0n@+I0lZ|JXRs^^;7r0JjX$1E`8THEoVPYQ7! zx>SQs{-8HvKn1evP?A-|%E3;mh@G(r!N*F+hNK*U>;#&Bl@qczeb^RBfA8}O6jw%| zphl!6L@P9ESdupd{x0w9hg#2gDIT21{st*MfmK* zMId)c!iV$9V2avJ$eUZlOPKnFRcU5t#1+fxOwOuAuv+%gjQTO_<4m6z3A3!f3R&-0 zID+N;`2vcVBflf(ZN-Pn*&;vcKm4TFC-66Jw++R!=6T6ZW5e8lhm=x`IHAZ1PPcf8 zGV#Hb7xe9G<3V2gy=OMxlpu~UU-EzK){ms#{L#!vV&@X3&nw{HLQOj7a?Z2i|ID{* zU3|k|<2mQ$Ak788ax5r`{Ys&OBm&YxD_ zN;zy%xmWWG(w5M?hr~o%<8!u7?0a5{pkE|L5L1g2dPYGHf!n)%6_TidvhY|AU>(I!ck*Y6pqbpx_}7Tl97d3sHAIp)&G` ziK*bD&@0J;CeJ3fMh0WU_T&{Eg_rKttA|`7;o|K<{eyF4#G@+0Shc^+`qNgQKQ1I@shdL>T_N{|`D(8m*p1-6peFCmSl*!yA zkFHM#XFp;&Z*FP2%{MIP+&rp}S}*ceb?5lH2V1BVKxuip95J<{!$K;@DsQx})DrlxK?qqEU*U(Z`TSXkafPD@giL{q0efB}gt%SDwZQM6=Y-nY zJ<@JjK^!v9H<>|&U3}xJ zn50!G{n{GZkZcT{e!Q3Jc#ul5N{JI1FCV3kH+bctrb_lmJ;qJ{U61a&l^ml9xRQ~r zR{B&4v(I}>b!!JRW?Ud2G?>eZuRXiX2FuJps*2e-ULj=*^|t_@dD|e$jXO-v?G?L+;Xo;NN`SL8T<|dfrFgT*Y$* zWzK6#MYLbvO)ejfeT+B&zX6Yv4k6r^R3}x66UBYVshaKX6cmE*515A1WHZi~eVpBP zC!)N)tZxox#iuy)#a_e+k2liN>=scr=}#i<1!D)4g$Y@^7-9yZU&LY&vBlENhCRM; ziS8(x`GKDz7^1tn3D%{@4*L`VAmPYF4JukCC#gl%V zi;8%d+*-^kwb)&C2b;kkalEc4$F{Ge?e)V{G{Wb-`U2!e<61d*t$)SVx$n%;to_Dt0v@1`BKro@=kG2(mi13M6EZJh0leu z1-Q)+Eu4PxJEq>kXL!|_(i+N!92-4g43)1)>44w3ytp)6yc(3QEmKo1`TSLQg1bk^ zv60(z(&Le56-QHoa#gli!rfP0(#S&`H7iv70~EA)q=(k6KW4;|66K=I5z_-zdMBnI z8&mefSf4({#+G=!58vf(T+@c@ksW~`tDv72_|^HL4EXs5>*yzoep$iWtn8^p3|g7@ za-ga8qQvUPO)bv?-eSY7e`M&ijx_vM(roa5-nvTt1#YYorcNg8vFa##7;m|Xm_!2BA+#U{UVa3-9H_mVUcBy+CB1Zg$V_J>1I1ee$_5lm&5SHjm&Ow?ABZG# zDKp}77Son8^BvO^QT07xcwcmQkD@OF&@-5BIr8B`Jd|x3?>|V5B%wvz^BEZioQnX@O-R3?S9?JSoDR6tKj~@EYucAbn;N#r+Pl5pJ_6xQkVk1Oeq~;M2V|) zCV8Bys=&j=8jI@hn9y-F$BCjfu|CotlrJ+Q(0@EmcK<%BCYj3q*HKZsr8R3n2Q0oH zd%o%qtd|Syz^sqe?7s(9{gE$SGuUz8~8S!PjNQiGIt6tJ#8xk$p@lyFaI`eRC4e6>6n9gdk zvn|^`X{c>fm$mAzvGL~e6=%y>VEoLK98}Ay^OUR_%7a9mu;G60;=O)=UY;H86o1lc zV9T0qWnETv`7W55s=+rU#SaeK@T%rcTD0`eohYQ(3^!-^(&nT>myJ)@_NhC+Sf!-? zRW^fu+tEK*P&Ny)dN|`lF?<-Z_9Z8kHLAx6yI8-N6%%V;AHJ&4%a-|+N0^OFJB(1h zD<%`0Vg3EB85B~)UivPV@h-8jx36}VoCa?!kku>Dr1w)CmW=zHnj9ol^)4T|SdCM( zI>j-TN6+pbmkO4|9(~5YZXhH;XJor_daYb#1YO;wFz&^V)7@(#`?%9VolLDh zPZvVxM<|s&BuT0o%o(ngP-*s?feF8C-lx^@St7%DreL z?zEa`8IIquDZ_%zc7CxQ`%pw$EITX$LxHT$XH8rU4uwQcjTnVzn2J<0rm;qOTW3K1 zm>`kgt&LWyB&#@73*$sNFV3Gcb8NfB)CB$!d6TSB)Sg#D@_un@@$1*{{eqO%3AJ72 z!(fYY4!ZpZp{#*n)k}jgMR-(?v@6>_VHIO+cV5U@$H)8;m}}A{T;t!3KnqJS9eS$Q zOmh@r(B~N899ndad{UD86>P7l{rN)RDu+;}>fL8ca+y9DQmvNWdJ9FAs-!*J;o-ct z2^5hoErl$_JRS9_IOzQU;O4RL8%y3i;M+^=woLE&JEsL*?OeOG4p=Cn zegKunTYsc|prFcy+n$K1mGy_;zY(}v(S(#XN`fEolwSt;mRsqBxjcdK9;-`mkQIIOwP; z#a+F9FgREd*ofPHMJJn9RKyVOzIAkz_(?tXw=L7yp@`H3QJz1MwR(N-&t7bwMWhC+ zXzFpP{)rl4*MF+BV#;2P3!Ca4gP%0=j3QJNydCrGa#46K*uW4^`cd}$%LxPJ~6+kzltHQ$g z{G?w&82Ut&-bjY?q^n!vTuWq)h{R>VMpf3}J*9uAg_$|Ld{H||y&I-TW*FM9vPYlrVDz1@P80(dNv~QuRib`~O!(k+~>5fPb zqiF5Aub}M@=M|AE9fdvpnRM1wg-7Y%qs_=php$~WB&!oVF}8`@UIQfK@dJzJj9ziI z;}Lgd>N{#dGKuR`TOl$sM`PWS7cPB|{<$1ghR&MvU1WDnl!|*BIBkbFw*ciCY!h2cuYl*cj7#^*2J9APT0Z z{FnbZX+64|4f;=Gt@4XG_2Zs65*kq~Zo6gairCn~sD3AtSoMZg$4>{|>F1?KFPAzxvU0wA6o}sY>K6&Q?+26#F}r%rp>;of(K=(t&I3z+?jB@DwtE{W1TwUrj9SYyFR2eH=> zjJIp|J?+}ZZ01bpHfvD&B*+d_&F=}W)K#7rgY5R5BDMPeO4Gt_E^!; zHa)xyNqBOi$G@6*0i?RGWYn8W_1D<)wZ+9b`FW9hsiy9vQ$Rf5Cr#ow7}=?UQ`fYJ?~(Zov(m$Gslb>1>G@D$Jm7h zG{$mRJ}v8$mzP2VgIJCBI_vToR!{~7OMCd2yDF|QW@qeTFO5y9ciM?K)@!w`zb@_q z6(!+gKIfBX5(yF=oJ#BBLb(=oP0uRz@qN`61afl~E$SXV%p+0gSLgTG?1D*8u|gm1 zm`s1uuw!gbJjBd8UJcJ7TD2W$xrmG9n8K{2@}Bwk(?;}&jz;@SR4xCG$Zgtm$RRo< z*<&*0aPi0qFTy13_owm?l{;O@MrET4&u8=t4#g*v6sMJgVN;P#3|RBXy<9E#=wO!j zjrMaR>cN~yar>aC)TeE~EJ=XjEPxH&2_1Xlv?A7<#-D5Yl*jh-9_0k#BNhTV!`LBp zSx=L1v`H1hK#i9nv*>GDJVrkpf~e~bPvy!~?0OYQCsP(ROS7u*lXkFXJ7%MF2c|iv zWld#-?Lc&D1~w2?QL_$}lx?B0MY`G;)>Zh;;+`&hPQstuCVo0rHvYhmBQ2{}>zB8F zh1Wc9chWFI>sK0j_{iUF$FiTU>m@Kpajjz==VHFvCu7d0=J;S*NIla+4VrSHf@#q5 zwS&rMY>P79tw;{LqLufmkzxn%Akg-ML)itl`uNRU=x(Y;5v5!diz7!I>~WVrgtd;q z_Db966mg=oRm1P`VE_y^a4FnNvD9=@RtzQ;bVP%F>Jt~tMH*C~Y1ET~ zJeWCqe*{=XhRd+{u9Q4#@FL9FU4WSJzQYggB#Txce|#AEf^4w*m%81XuJ_ewVQ#Um zvzCat%x1z%ip6ipb>G|KBB^hjl)|{?m=!29=(H^+2QYD7n}`=b=U1)xBP8EX2GSr$ z;6BtH@!qhAHtJVwQoEzS(zqei_JZU4v^S$ED)=t(G3IJK&+4TY455=|k*w=Y>5Eew z3dhe&b~>JyY(jF6KZs*DDD}SGhgN5TedFj(v=Pvjg~P`y{*F%(y6|e!N`I}L4drL6 zIQTuFA5mBcL{qKP=)Nv%Q_k$FCP(zTGH%PSiZ=Z8eSMEK$cpUlMI2ZkXT^C{N9$-* zllvsZNRlxb+y21VEL@?hLCH#u1#$Wg-%Owg4nwG)4T3{eM4ZF9xJG2~*xG~a|Nbk6 z_-U|dqL`0i`$n6%Bktz}AIopqITI3>GeVD4T6LL5Ky>k@p__qDDEz!?qG04<>54Yw zQB{p4;%0VJ%&IZjbjzdn6E1adk)vFB1?L?uNkkm4ndG(la`+#J^&Ve~JgNwLzK4Zf*S`T$0!#|^ zq@h!*2otFD&>UrzAvbbeC_k-Qcg8oXVOXI8NAqw={S{+dy{umbOI7%Kju^mu5)H$~ z!7lWs>dQ@xy37$!0h|owui7;)sZRpFjir0X>{Ci|o+)3t;YPH2Jnno9bI3^29K#RF z%A-^KN9rDlSZ&cq1Ex8%=6v-h-Q)}3sGsN0MTvQ5Kuy1$xF=#w;^ORwi}}}rr*%uN zUM%nOuso-H)S^+Z%HzvbWwGkA<6bZk%3ifptn@Bz#hE|Jrf!6WNyGt*pAGK=TUCdN z(l;QK`M>McME=dbI|?ejk*1mTcY}*4cqmTRR{GQw9zYMoj^jrwv}CJQRO$VzJIR7F zi)@0?%ShECo&V{XgI3ao%Yl~XuBiCQ&i)uZClLJ3+4MJUDA@S=N5p;r_~syVxKGHy zkbsobg!hztl-oVdyegFI*GR@8Js z-axK|-%I5MW$h4%F<6(h-2Y_T9EwSw0H0Z8gSFH<77bT&g&0na{DJ9SdjCO%@;aog zn>Z>~0B`YjJooD5pItzM5cBkWY;4$jptU>FFEsL*6Ip(u1PysFCOyxa$JDUL92FIQ zXuR1UA?9w+YUX_*a=~F=m|>)#8r!qpoIFzf;MQcbxlxXV?B(D5LM0%zx*0v$9~IPz z``%rVMtz~63>m7>QutRlv5q%SZm^jgER7x;Yie`io*DzmEvJ1bB@m}=f07rCij5w5 zqEcV-2lCXNYhN{imG9ZQ?us4=1Slj)&PsVGc-~u3EAKI4=D651&ToYTc zFDPCtAvv)z5ZHm^yhORQ4lDe8Bb`tgqBbctnwQ?$4IG;N^y7Nr;W1CEF89vS(L$an zHJ}y$csCYi4tJ~CFndSh8&LU5EJZVeC;eBCJ>j0{{3X32yh^h{pB9;!~CEF@0M64j}}rE*pTXx z?d4(YHCAT!ROp;5<_yrS2mF{e9CVr2TbIXi?;5(hy0yfHPwqGl(P`y~A4FYr%>MdM z2X%w6REwnN-Zs7ZY9bX_-z#yv%GZ1?a#{!HzKqoVl=#f)Z2wX@LUfb&5-o1a!rvl7 zx|_7+BfVcbOT`ar@Ho_syHP9Enm5jr4nXWEql!IGr;J2%!7rNc~V-Xr-+I z+Tj4Ek@34+xAOI@)l_^88CnSTzw5L=SD-d%R{;XSSuzIU>B*th3x;2ND`HqTx z;r!pw(xFymD68^9RkBDbf2K#i<~O@PK<2SpFRr!Tkv=#PVMy@|sFx>wf}fcv#;)=n z0bPEFw5WAey?$wh*3JFb*;osY%ehC2c-}HbGj0xD*cO%_vh7PA0di7HZt>BaD02K9 z?vqXcwD&KB8oR*Aat!R3Hh`bitLNILZMsQGXG#Ue<$6y`OlpxCsmdnjWGZr^UuUPtS-p5#x*9nDg!S81D=Mx0i&oTx0=c_!~CL8+K*a!J`N^976? z9tP9-58MdV+zqA!n{~+H?1<5;jJ{3<9{rJl6WWf)@wU6W!edTh8&it{&1%~9X=?Q` z1GW(}_lFaG+D`jTnw5mLUa67Ad_K@47=Fs5i8U^D@eI(DwoulX$9*k(NnY4p7H0XT z1pLE3)VVDCU$rNvbqdkRV)6h~vpzC(`xg(AFCuNjfnZ(7Rd{%#->lH|qkF-IhWpnB zyIeu;7yXdIPbq$4nSijg?VQ}v3bozV5J&Q@^w#f>7)U)j5@X3L{TU@D>z!jV76kWk zIo^Kx7=2ljbS>51Dd%Q8JM8sWch7Y^80N8pYgS$U1-zjBNei{vI`1Ybl!h#YHNz

?t#dT_l^Z;sM#DC+_gGr6l~lo+nAW_(H}Z;gX4As1Qy`rRN|j=~33bhP z`IewhpZ%h*#jGw7(iRl9hYcH3GnJF*^Z+(>jjXEjWzXm*;1MKupFDuA63<$GkApvn zR9_I}R2rU;Dzg3!5YPHUG>XvVk7hE}*}{CO_vQyu)azryw=U{Q$?xr_HRr}HD(8XI z9JIhL)%<`aJq7|=9F=X$zIwla)Kp~%L}8bw+bZ0-Ri5+uW*JNs=uIU~S{#XLvzsYY zh>3iy9pyG9PuuJo1QR+=l;$%B#FVRFiOCf>L0gFCusxfBM}FET%j-YGb6bjp;gK=2 z%%vk89Hr#(fpP4mu=;))*%aaI);zvm7!ciNw?BV5Bw!fvJMimVcR1KZW-sf~s;7n` z#y&~jlNDAUMG@o;+|@c6n`3V%Xh;*fMg793PqDxB%zcFPG!i^w56H-tI9h%$sZJvz z8C0;i9{mJ;YC$=!U@d-v+FftJ4rC5y8?T?S!f&rr$IdE-i4IndsS%s(S2KapS&3ekp&F(30=;b(zJnPw8!b&*6ma%WViY&xSQ|4 zyEl`fykB{O!%+uVT|8SUz%Rrr9?yzPd2^+RLUFog2UOntc0!#g3|}0%{J}g2@oFTo zZhIYgTZz_E)jX#mQS)}n7MfHcbEa7FCDJi-0ecYUY+E=;=mVQKOlxJbqi6(oClZ;& zvFU~@w(C)x3UHL~|EF~gN9(x6Y6&lEYzi5UYTm|`DB-$lbj{x2H? zgQMW|q;WLULZ=x~=njY(nAk@BZ6kp0%CulCdY_oFJc3Ci;5+(`6iSqc|MOJ45g4Vx z^9nMT6D2PJ;u4+buBA1?l&8<1uFZ~j9L#XV7PYKSff?P`ycz))km~)T#{nsTcOYvbMA}0mNl=f1NMzwGbx*D zeT{mK_+x_)jNT4bZD8{h=?IJ`W_O~x%ZxVbM8y^QpK8|%Bx(a@Hb6_MCmmke{oxLH z4)U->ON9?LUo;^%hd5g2SUGJonpkFg7{4u%n&_A4E)mAQLb z-A5C7V)qd4^@!fGUxCfQu0AW`WcA}TzAiY_wjY9P;LGl;iZD?bkN>t!P-a86X8Dbt-OPS#~P>TeMqjRp783L z{weN^>9Zp8%h-girOJ73FLv#EQUO-YY=K9GrYd`8!sAy`O`w(t#aCG4 zzT#5Oz3A)UWt*SgK2)!so?GxL*dRCuZvCOV_es*mAF`lm>7xoDdT<-iN}#<^D?){@yNhXFzacw_I%?OO zhHpm3d_lWhPhon~3aLfymP#qRydXWU)v7mrWMLuZ-1|cV6vm+tff5nXM^EdL3pY>n zv^HcSo}W5)Mw;nw##RQ+z9w2w?e9nRTlO<6&mDi`fEJx@8aip8x9{6n<2^F zk0p5QTzyg#OCeEWe)O=l*P!^)%-~~!;{H`%9uO;6$s6a1Cj>0E3>w%x&)HIk(I!Ir z*a&??k3SDx43Nt2;X^l$7GX-<-=%lrYZ3i=V(sYp)$;efu-i_=+@AoQ9*+2F!y%lVlVTgHD(=~ka?)=yc{NFA5Z~>Yl;J681=v|+N2OFr` z5DuJOq+fFbM+rRzSOrsb_8iiflFXligG>7-k?Vj2++Z49HkoX56ilruc2fT{p#~d- zg)~k`y-gkUG;BYFzt*A)@3GRqDi*`Wv38$U4~?t>RONn2u?Lz7BRbaF@K zd+$0)#15j3O~3AC-6vB9+#uGfTV^K61Yfdf zt6z016pun|4_NoRe$Am*TfRZZ^&&O=TKb^7EZl6WGT`htFfZXKh)8RhUY%N}UpnH0 z6laS_MTX*qY^0E{ENEj?4m4^1Sm&Ge5tc9Zs!LaI0^1fm! zy?UMU0$6NF%Bgb{dH#SGFx53~AdrBO)_-=vxya$iWY^mSN@*v4se?^y7%%&-pQ36G z-KXf+4;KXHb?soF*XqP+lc>V57E5lgsoc`2wo$i*wIn8D0cYRCIl?mZ<575%D8u|3)lY3Kk@v({ExH) zfmd=VfKKv=A&(ONH21s57NhY_fWg;E^mK)I4HXD_U}``qt1=;>Ru+C{$t{oGv=LdW z#r;4q1D9+4<5m$pXGkHA96L@lIv96cX~4sl`1u7kG0&vhiOFDWbr@^)Lk=frvOzO$ zU;g@`R)a?`3%lrRs%aU9Wy`Omx8s#xnVncn?!*aI;Cr6>6dFSG`q~OgKOa>Q+*9OH zDWJUqz^j7=RIbqv+Ipvxafn#HQYq^gAJ>bhTqDtFBE>y}LbJk#c(1>2x3nWV-8}!$ z2n6XBn&!MJRKcb4EAqf=9_w|5ZcG=h3ZzDP>sd;Q#{!Z|2q`C9Mp0dXlT81G5VAVL zS+P__%t_OBEZ(Y?+Kn*3dFAs=2w27-V|D zWBl3|Jge$e^R_@4S|F9s`Lc@h3J&yNT$*JtK$CmX-Tg>P9^~s zou9Gor@m><2gR%nq6dLN=iCxj11?$|z?1Ji>i+fzmb0GVuG=`OD)g!ZK$zTrdvs;t zkB&?|el4!EK`3KQ|LX(iT6~q5A3hqJOaO3JiY8# z!GrtbTn}xst?+Ro>3Y)kGshMm?bkPA93I8W>jsaa~!rkzd!9J8aKeook zA{AQ15$*Ji!qWDyaZV zbn3sx(Si84?-GP9u{$i(8OZ|ipU>D3ENpBB5`q5A<(?)JSufy-N8QD(BaNq-bU z$Gt{GMNwtrV4Dwa`9r5%15U%58)$~86zjTH8O_80YD zi$$~b&z>M00ppFvk5am}-P-TT!hgu6LoqYmlqkBH^N#juiH?{s_797T&Kfr`SLMpvBk5`h-vIkf4|xrR8Z#BR?!AU2qDQ ztOTe;>Monj%D3tMuD}*@T-xcY(fJP%G6_@tM_3e33;!O{y$R#{D6| zbQMr-cOP%~RM6w_jyzmZToi1*p7K!5{E}vxXkot;V6;-ymOB>|#swQPkZf4N*R-b# zvT{tjh-(GweARh`7K7*HTl6U)Q;GgH3ru^2TKxkBiyYWzeC4>cHiMwRDr@2t?98J$ zmvd&hm(Nl9E)dZ~f8IN(}sC@x->gJ8f&Ym=}@>aB$5GNv&z5 zOrSdo74U!7+$$Gx@cTg$H46vkR$S^c z4cOLeoGjb@MsL_uBL4@YL`t15>9ad8tZ_LIr-Myo7g%_jUL1>(ylDu3rJ7e?}J^LPd^U1fbqw}!#BT?r4ZF}@yW&f~m zPDyX}4cfaP9*CZgmih)TxoH6{Xt%b|PKqB*$^F@83T&vc4v(Ebr%+(i+$=imMjiHi?@7{ z4-tqiNSgWIIUHh9E5ha48h~h`30MSk;=8qHx{cO?t0x&~m*(rQpO-9Nkot9@)KnE@ zI8|qCWm*^w9SU?S6J|X;z|k^rG|tYETSv?bkv~t+zGlTDvRuNDNal4B%YKpWOhUz? zPTUpq$+A!hrPMANo^C9Wx}S5b#vCVy@B8=iWWD^*VwIs69 z1El0K=db^!9Rj|Xejxa1q5^p3P4S+>gP($_b`0n?_3-E{AZSpOlw<;wE#$y+jFbM| z-ejqS1oQK*ai_flhs<-1>vHPh!`EN(&bvOAySV9XzA;&+fea}ahskQhlSt~2mkj9` zTa<*OP$DA^Fwx7Rfcr!x`Eh2SIe6-YW8cBG_aggQ=9WEHy5%O0C(b3Nw686rFMZDI zb*^=H$$NV{f>((7H4RAUqzQ@X9k(BR#>h*xUtV4PeD3d$&B)Y#5SeHfscrp3ZX#1a zmgp4n#`h|wJS3-Xr@{M!1wS#3$(BRw4O`%JMTUCHPrp}u9Kl~A5)zniBE+@+o))$C zbuVgGZxSV#6&hw_`Yjdx5I$$f3A}n(%|KlY45c4($8C_m7LvNNg@`c z6Z(I^p7CGL@34$`jCGKS4t_dKzxQ-+?9=xGP>G!YR|sdDDon|#Sh90*@YW)-bRv_M za;X^a7c4@;2ck5!?9fn?#uG#&?!S`*N+of3D$((kvW6tw3{fAJSE zBV6SO4xiH-Rz^rY2&Y%G?%1cR*DV47B3X47bGIwM22f4eBhVC~VI* z6rAiD$~bSqB_}Z3xq1xyCn*1L$(o4Zv~y8Y&m;0tNZNFn?Mt3exUZfppT%QmUNXe1O-V#;GZ5z zsyVb}EnT2nw7}|!HmI(WB+PcPg7tW4N`f}vO3?4k>MGU07ToCl1KWn7%9mGK)rx|a z<_#yARlYOwTbk>g0lDE;#O zy00s`4ZGx)6gxP0rkqZfRWC;Z5N^mK zTp#fKeTJQ4=wn8v9j8GISv`4=D#@pd%MNSnm2|#-8o6bP*)5XKz&{$+o3dJ!7dPe{ zmMr*jetNij$M$7v`QumcoQq3nc`)=Q9>HG zKtBihn9VlmyRiWoGe+U(*3fyIXXMfzM$ExAJ&P%wL8T!?nq|wOzc;f1DQ~lOKSddS zy|14@1;*v9>ZeXHPZ}9Nf>GX#fHXfT=A74zCY!>qu4DnzRIooLNL5?<@>>M4S^H8P zerxH!$ru&{(>*38oGUjJdGCa^wq!<1@lQ|Sy}f=%7q@86k;!`Ti4K6=*(AhzgoRDnLZQq zZCG+>U=ROuT2xuqa+JNt?u%YOT;_D6bWlYXC3VU>Hjs~mfZZQ%9F8w9f>TOA2S5H8V>*2=1dT-CL!wmZ7@avKi%SOepQ z^7c+y?K{RCcMW6UjeRMZkW&7J^)S(JkpcTox9@iyTT6nM_fMh9QN~Jf-^A@7-Fxbg zN+Ffk1xbaqst$BCMf&ZWx5#vufc6Sdpap#%)jkXPg>C?jj{`C+zXj{hJKW3AIc9%Y zIL1s;IqK4|xFZ_yh*zw2Ok{0+F1&p<=?ZJOdD0G>b2-99WuvLt8vf8XTd%E8^^(+hu;1=Qaxd2!Id9NkZMxUyowqQ33j66u z8pbu9^m~bq#}mxJ5*$03aQs$DrXLB5*IiC2ip4e`jn`kiYwyzjVdA@i(a-a-8Hpg= za{7V!SZWP_|M3#GxxSMT53z62=R%R?%7GyrvV{mAk7Ld0r}+DJw}iR++w1FDwK1+H z_rlIy*B8Oa;4|GU=}$G;qL};D4w}iDvPw!<_+OmliXw#Ix`!qs^Mn4j{y5@XLPW(E zVTOLf^=Xi<>v$ZG&uQD(Dwu;lJb$v>i(E~baRLx#=5E#9D)v%O^=l!`?$CMvo5m%{ z-(M;IK9a57ZyqT<8G6GHj2jnslS5mu?jG4(m@Siuq6g)IOC4;0)X#! zZyfTjcf2v>BXGYueGAv?ogOI0v~-;j7#WDcZ|L;W-RZ7x+$@VrwVhe&^sBvs`kgJ* z9oTvL+pf$VFF7^O4L^oTLmN(>Lazb2H!2Y2;Hprah+L!;^{f{Jall=BY zk?V(4g%>H$ipnkdW8NA~FdML2cuBD`wLhp@{p=lVNjCLvh&?vOUO6c)#zKM_bLMb! z!zfqszVyQREECo!#STf$!^0S2(^tYr}ZX@!Nse0Y$lT(RJ(#^OyHdb+dZoWRrXF@(zlx1hT$* zbe2p>mR~k*L->ei@T1;%F28Nbw|_d)t0#jr$m%Fm*nE9O)bh>CM6I)ML=4E6o_=SI~%JTo>QsG|SW^MPX6|P<`STR^$wv2cfW>8c!)aNxK;<|!+ zD(1qxtoB>}DrXoeINcN*xswxPdO%&r+%{&-a1?jt+qa-;grCdz(W_9h8pRx7A0~yo z<}}60Sv7e-WDVKpTcv50s8{>lA!qp72G!Ye<%= zjbPq^zsPp3pgwHz?wllqdi&|WN?R4|I}SOEHUa@xSReAyi{>rx?}dvT~d~ z@Y=t_lvBIvhoLnnySxQ))(;zn_cln;8<(Ep=UO{?NF|5fB>s7Tw`0U}{g%*HAgi?X zB@S|N+U)iPQbrNab3J5L+bh5)u<>_y!Vx2*TTaQuS28HbvDC>!jK1t&Wc_Eu%$>#> zlNOds2Kt%p<21kH_2IDjis@hXPW%;IQUV??w|}9KnLj@97-E(e`q{}m!1Czhr*7ug zs&_EuNt}zUYPSJDEDaS_69d?d|q#%*__m3R&P1;Mko1g5(U#gU4SqB-Cx5#ej+SKl@g+lb7 zOWL})xr_Er>9&YUm=5Z3Ja7meCxO~VN$9ToTD}xcA7`%@D_8kgsoz*YA>(MCX-pEx z6&_FS#;aihaSv^nU9#LCehZ!Xh*AC($bt=usc;ra zsq%bh)jE>tDN7P6*X$Wl&O)im@N z8QQ#xTU%`mdpj4=it&|vd4EovSB9YZ%XH`KiiU>SY+}0@_7J?#0(_uWGNFg|zuF8TaS>t_PQ0L0(!f z06Zl2f5nu0R{7)=uHtSl`z*wQ`}`Y5PkLsXGAj6ILvhU8TkSjc|HHSGIpp7GJ>tTRvWVl0cg8)Zh4$xoXd8~Z;vEkmjAY;X)FnB5Wc^0MS&*V@wDdK^2)K`#bS z90npu#rd!AS%{Fc-?I@>73jxsn>KbLhFHWd+|Gp zA_K!RXc1B75~@5T>~R|oRATjtg$eKyGMUzxbCn%;@pTa!Z_bkt4!e!Cygj#t6LYzL zJFsnP#EVM`8V=%Ymn{lz$m`-j3_1xOX&1^7kag>#uGxro?XK9hFe{jp<+UoOUfaK?VhDui z$ZO|`uLZ*sQpU62hA?O)W)l0a(tJjBS!LcEiy4xckb0GRS~C=(beJ3S*b&)slBG`m zA>)KSA_B`ZaOX>U^+69CUZ07TvAba8EL2t_bAV4|FGp2(GESL;w^9;c^kyq&XnHqHWgTEAhxc6@;(wG<>l#n!{90IAtlI0v&~KtKiOjM7aJwD8g+Fvmo8wl1qbtbO}p$cX#Rk^8DWS1MJj2=giEhJ9p-cM~n>b zgBgh8G1U#ves541T#+=b{f163Z)f}{-6`d{jN#6Slk8$d(%F*~EYhHXsWt9D|ISf+ zFct{PSfK1E+}E*UgQb{3;iY-057VCW4A)bep?3c}suw=AoKQ7n(J{Nuy)WG56Zi$g zO(bi9OIbQ(MNGL$QGuOS#I-DK3Bf!$fM~fXYD(Uimd;qJ!w^>OjIdk7Z?R2>#~R%j z3vXQ~5H^%;#CyyadBxec@%B%AIT?2UM+AWjitK-H)`K%|IXq~XVQ6yTzKN-X?5&W* zs*=tMDpiMD@EDE$G{o4WSCX6QjcCFzcx#U}8GT)VAL1aYg5Y|^(Zj+mRbp83pl6S|?PD-Hn%bOh zyvXNz`0H$~r^?Bg8x|y7*F*{u%}w~S`R%9;22_2I`WcnS@2)8Xw6?CYGcRD*HfPg1 zJe7)6-_kO`cbB)$PSi>oXxR0q5B)G)Q7i|V5c7o}GbliNNfP)f>wxACamUI=rq`}m zGg^`ybDI!#pQ{cRyq$8cI+4t(;fZUW`#brIx&O(6YxH`_cWGC`XLRR7Epn6NRQlpu zOE#pN6?iIw!_&+a)$45v%csc$tfFD9yBQx1@o0ZtWfHIeyf@KS`5K9PP8JO#XNnWN z`?|cN#%jTC9Zg8cVrH;<m&e2hm`T7gnk)8pJu`GA9! zWAhu*CDT$2#@fJ+ifsCUK8MbmjKyqdOHs!_5wz%JIeu*`_CPA@$nQyDc!*3gLZ5F{ zv*ELbxC&dZzn15S2fwcHwQ zMf>eA5PK}fPEv8%2PJYMQQ;&(WP|3pZ6zfw#CdBxh#>;{$J|QeVKcmF|8ip*A9%{N zA7e~ZHkaWu>mAH8EZhXGCgpgOr?-<1_+4@OcB_9EVrVB|8HZMEW`{*q^m%`bPuIQ% zB3rpY3jd6CdtywPjMJV9D5#=pPOeG^jvn&-$jI%;NOydUL67@!)^BH0+Sb1k^F$J6 zUT_M=u|T11M%G$vu+Br7;_$UuiBP63uY)hpHm6ch)lK^)0rA;gOkuOq9ByN(;Fwg5 zDOR*x0I@i?d`)s-E$l}iDO?dsBjvtSnJoV2qd+#>7tc)zOZE%w5oMx$6)+zS?>+#OQf)?QT|8np1E zRo-%Hr+r~)Y6GRB$0#l_?w*>oHm?#55i`gXc=XB46}DYTCo7<7>Y*d#I|R>zM2d>h z?NlB!(Q-7_@WT^>;N9(JlZR9>IHI6QIIO|>-vpHf^U7!$7qx?0-vxdtU*Pj(Ra^pt zo55cEGiTSvTZP8OG>jGlDx8sFV2hz2yt{K6JvGWYLdE%0ik%l~1;g{uAeW#?vT?hdlH(&_iF zXNhd>-)(?tpkJ2wU#|xojK8w1RtoUr;=dwza(5< zHB`I|>owG7{_RbJ6Iku*Zd$WK@!C2MqZ6E0@D$STQANKEK8t?Vyj<}^3U>fSMhxL*1DU3Rcq3+8jzHwWiqLwAV zmBFYZpY)F-heILOYjq`7iDNKT0 zU-_1=_r{bpO{!IwOc5S61lhr_EMeb*&!TAdpiaoGc+zEXI2_4DL zc=IBFbTr^pGIslA!LLE;Ij6BD%UI_~YDj$Q+3Luq+w*h8hnkAh`V>^_KmI(}QXnGf zwiSG8s~`t=%F0kJUWIp=Cm;X#U*m!tsU@L4k%%mG26pl0(^8uuq;!bA(yif=3bJ>3 z;hf$WxOL_}-XS`A#45@v{6YumSS5qkuzj0Je7^^Zf7ATH5fhVIV6jZ=|Gu~-Y*~Im zJ`mnOVT`yWKiYt;<#S(6fP=>x`el{2y0@PnzLI6Dt~ieWrK zLPUQp$JuFT;P1%S`~E)&Qrzj!j);P&iJweVWdb#vLp=9%>*S}Vn z%UN8{(!)%9n$k^o{lK+}{ap(Y@2wY3ai?BHd*?r<-j2`D{+5iUbMOs0CTEi9ocRDp zSLu61Px5o^e{)K0u|q=lEQ)o2m>r);deQ`HQ(Xo1t;vqjuJk*Gn9 z!6T|r@KY4;@lZLruyyr!;O|b@dLDTcwfVzcsIYbF_iyN{5U$YLnbdA>r$P7d{inWi zL20nr!XY^q+1J&*O*A7qzLI|eT=@tc6CXd;`kR_cgF0P8gPxIW5e5S_aD&jx?3U$( zjTK?I3X7>j?oeNUMvT6RS%ooP`ZLwlyFPhsx_Fr)(Vt(qh?{?A4#$UJwP#$Kb4ekY zX8Q=aJtf2R*l>-N!iisOeP>sl82W|KjRv`mi+2dABRESC_a!WywthKfSZcRoS)I=5g}?6(wZ~ zBPay_>%h%8d=bEBq8y4{Q?$t51PfpHG=+yl;(KG#7QY^fd756#-y-`Ldfk46UyH~O z8eMt^;|wWD%qFey8d1EtN0rct?%+(RhfDA`)2i6o3XnxOMv>8@11C3$((pv2m_Fs< zU*pj8Oe7AH6UD;yavS)In14|c4alCeZD!xcp)^6D$iXr-KY9c6)Qc7n=G@1Otk2No zPDL?mQ@2TgJVAl=kAuAyj#F?{xDqDkq}3aVCcK0vZvP@y-=&}bO;O!TG6mMQHill@ zkqdKH*)2u*SPMDUeC#DZmt=!KEuCpgCcfU9+)W=+iox&Mw5te|PomlSe~r!YyZMI% zu~HYl!@wvQBG{c>^jYOMQmi#@h3>q2vvzagCstkb76#tpf`mWH>Wkj5ca)OLYDlU` zhwS5;zk5yTsm0f;*QGqfse;?y2=|0eJH|yMnbl6B54F%fe3#copt=|FGA#F}z4T4W z(}Y=FC%ID7MY2SAAGwSX;$~tfUj>(NDrMDjauMA49MIllw6c+x=V$f%gz6F%Z}O=< z1g?^So^GY(ihz0LW$PQ73q9q56c+BCKx^)r_)i&WOy;#n*~_mT0hEivWUvO6-{0m= z3>^7b1+xthe4W4Y-m5x$nWu5O3)Y@V*c-qLrzw&}^QRajwDk76jilm3ZT(^5Kvf1r zG1^1A)W@WV)ocDO<&Ghan|FIvgp_foaD4KI>FSUKf}O{F_D?51P8hL%V(-DFTa-oc zmT(?NNlIUh${7-(c#tesYqY||8?&_4cl~1*jMJcvHSS3lT3gH<5wgL|2;sNRo}r`o zy1b=*kWn>(*Qqi@XHrc$0K0PfgMjP0$11%Dr!`>R=#qE@W&73x)P8FfB`}X~stjqI z#E%G6eZ)qSv_K{K60k>}=SAo8W1Bz$DsTJOUEZ}DfVGC}~+V@P@P5e--qQ0#$E!<^Q<uRE**N@wmN)38%q8DA@Ue+>C>*T zCtZJd#@4W>l!}>3<$=P!(oFjDXV0WLI?_v#oQd>+O>}byGC2la z^qR?MGS@P^n4}QGQ^F|P>rg_G7wUF{YI(u;{xoB6VXM~(YVO69#5naNk9jO25HGts zD+?Fq344Q8yReK2ewrn~_x0C${2|>y-grl9e4ozy;4{|0q*RlL7Izk!bGI%V!pFRR ztM@$yCbF;*N2u`b+vr(hN0>ew&UXb0k^ZBX(yH5efp#MTk1c`>SW(yZ6nHOZ0|al* z2I@Fcljy|jUsf{K_DXN^gFZTw8K2Wy+TX=pVSZ$a!G7#(_{=`jEQ@_W&x;yB|6{%^efvX`|_yYLk5rQ2!xaNb-#ClMM*QM^lE86Z$7HF4hw!}CXJ@$b2{ z_$V!$EJn%LUcx3l5yw1RV5Ae&^2UJc$xn=$Far1OQ|KrePKCUXz<9FKuXpz-M8=|L zEByq%rbJ1Lo?;1K$n^01JI!~L_3*g9NJHyuK2Biu9qMe_iZ`KO{puy>f>-`vqMy4^ z8jPKQTv)eO>-VD&tAa}Hr)AuAXjnI8RFnELW{ZC|V`v^%(@+2T@$di|dWs5ZNA|%R zJY4a9f-^xedtn$VZ=OE`1hxh9?K+Mk&ms@@NqK~~;|3Jp*HCET9qrO%xXs}&Mk>}} zx8@v0#fi-t`xX79pLWD44R)A_rqEF!3R>hdvw=kJ%o11zGZp#x{kz(L8IYAf~kOWSP`iHw!8_S z3);fr`-LcIy&tg7QgWT8;PktE;2rSgK8dttP7Yb2d^p}KiD9xpCK;#4n&u~we>QT| zjAdE0jKp7tL_DJ@b!!e$BE4v_i-h0vr1ARJE0`}b&&~TqG{e$QoF~{n@cS{CX+tA! zX;92xD*FpR!4($;B;MqQe>MM6N0v@UWdnrmVqTt_-lC{JLiL-~YJ#Vu5TzlYrsE-1 z52fxX6_DaEsx%1_i}Z6r$z!gm0DJ5rFTWCaAs4TiKnPqI^6FP8M?pf-N z*(JGj2`qnOD4lI!4ZjQb)c&})S+b1lvH zrG^=Tg)Gt_XcOk6y+eSOW~z9K8@Dgz=-}Og`1jsKoOp-DP&Lz1YF&_FAFq=^P0Xor z23ElUk3i2sA(VF{fbu1EUf3L8=7-Tt+<=-qh2s(4VLFNXESRkc` zfoN;n#+xYf2g|ijN3Fp`h+H}#7tko`II-nfP&3Ny-pmKO;E}obP^5fW?EZ3_-hXM4 zn)7+R&$DzCB|m)ZGh9b>beo|?y4b{I0tXS?Sx9PYKvYTZO>@YTzk*;Ns_7Mo?fe(E zQBMjlYa8`Qo`(kl-6e?De*5CI==>gjFX!p7iC-4xJM@V|3K%RtwuVd=UzrgbcmjAqlw}x=IYbr*c9yFWj{h zGuKgiM1YH|LH*rFue$w((D3))BYYgcOr%ZtiiXF$Tx2VJ|FZrIw%f(!V&^Qr1%Xr` z+`Ok8cP-0I5C?xpK31X%wt2OnB$lCDbEwHo(bu1ioY#kz0Bi;2|O9*<+89y&0(>f zK4h*_?S3~2&EKXHS42{Imixqbnw&(SY#nGR)`Rs+m9iLhrW2>LSHY!V3u9V04YPCx zgHg11Zou?T?>oFCa6qOm7t4>9PZ~Li8rKZlHB;97uP+6qr{+8)`I$oH0j|U_WJXvE zNqNBXye=Vf?&Q6XjHxN>Wnnk(xc4Th_lHJ0nC6u*S=&>!4fmNkCk{8;kut}E@AXb( z^#pSG%5;1ii?Muk>A$E0F(TKW|I|=@W=LSy(PFud{J?+v$SJ1KKG{)G6$X#1E=-ld z6@RWo*$CxprbMo}Aj&_OC0FEc)MzNzq^{?T529|X=aQ1(%K!6$qPmG=DtYGg%^aq_ zBmrKqc7l;Pro#E0G~)cIIpyuUBBRe8X(hxa7C4Tjsc&F#m}ACZwcRdgY;e4~dDOZP zs7n%Cq-jW59=~{*qr?;HrsBZ3NDwizkY!I;{(UFE zIF{^riT8k3A_XCbshAs5&TI*OOs-b23!CAWGO^O3^jyBKQp7~mT`FL3Mcvg!+&l7? z`Jw`$0+z#@2j+v!ldA=*6Lkv<`}t|+;hj4;;-)Y~C&!%Ow?s5c6~^1d-b4)g;2@)M z1hXA#mgR)~`bt0@_UWPDXf>iT6Srkiga!=`DXi$1H>6^XBkt$6kQ7;>w(#!n{E!S+ zlW(Nhb>Bmpa4S^)rSl;z=A{%i6+D_IIm}kWVwbHvGBT-zgW-Mv*8~om)Ar+owcjw@ z^f!rC--yc%1u4bZ4<%@F=Dsnh$ZQCPHJE4aey0{3*@q%>L}y7~2BTY0YR9D&;iDNV zij89UvuFh#23hq$x!Xo(?K>9i{GQ+1ma${&UApet6g`?{(v#oQ@STrJhS(ovy^YUN zCcBp%Q&57I2&{POu&3JJUsqWc(XAV_CE1kT0PoF`Y_hIF(HHNjOPIXaWq0NGJ7!lP z3c(eljR)Yb*FS<}X`@0`ono5S4nVPvPf&CZ+e=b9SpUBvi7?yZ?@%QAQyXyJE5Aud z3jLeqypzaB3$LDQ414>a2YY55zxFe@gZl}CdH(6%oZPz1hta{>004> zRlqJmGqNdrl8)i8^B4=kPDcc|&zkH8D~G7J)qi00^nZHNUSd?Bs4ZMg2^iE}OiVn9 zwa;h%=wE=zqpa25JGm|5iG{m-^e`f^g&S4gatQLa%f#SdkEw^%g(ivp zEXJjTHvcC$KT=(iJr`1QxNVW!bB;t#Y<)5dS)|bTF2(VWRiq8DyY3+X7^iqRON%jk z6YtzImz}T0{mF2b)gYs-Vc1$4+Snmh4{mbjk265K%0?x+A4bXrbAf(K1N~;fT?YPp47T%(Bibo#Im8P{jJ*C71Nlh! z?<|^5Av}?;1Vb1K>F*%YyFfBh`Lp-t7NQ+4CBFjrzF9K8ZvbP8uI@D6o8|~Jjq!g8 zM7zX1&p{DlpAep*Nzy{aZ>!W-*84y^Y3F!`$iNUD#b=;&bB#(B_aE@k#cSyr%?W-Y zut-k5KsAPs8`bw$xJ#-|GM$-@AaX1And=WC3h^)-o@4wjSAy)~hzvnwvw1+3LkQ2@ zu*cxD(E_4fbuv)-nqVV3jekJs1z>S3Q(vKdBQ0#ebs|YTFAswE4>>=4-Djg#f%HoSDSP|v09zoaY8MO+16AQL+ZJYg=n<_;?tknw{G>T2?#&mWeJhF)%3VycM!5com zjOgsbN2BN*tqcusU*O?1jn-VyLkB$VN#CscZM1=ckAmUFAwMmTtKE6EF-oj7o5qIa^$TN zb!u8=Ja3eQ@;od>(uYq_DfEK{dtV5}v);i6=N=v7=)zr-DZviDvnfQ_EXUS@SH3}9 zwU@kT;yfMFD;F@x&A?778#26+;1;0xRNM=j_u*Y%qGC5d{5W;(wRvq+9c?PMbym__ zBVKX2X9~hq&E*yzaOvSqBre&D8gEdkr;ZViE(tFEpp^LM-j3U2l%P`5Zr>$Udd)4g zlmOJnukWSysVR25#o%g`f4m)e^YVpAk6)slE(tvrDgEGF;;sJ>d^cRopf?pk`NnWQ z3~}AD668Wt4s|CtpX&XbaI+*YY`0Z-^S}ySxbE-sey`tk`N#C-H1f%KKa6EWOTX73 zP<`K*i(wV8i#SPIhDEzB02!>nT>ZL`;3g+EXM>>_OtJA1D5R$NiCRDdNhOP z-MvdKUaeE{h8yWmWD)+EQ7)g!pW$Ef@>PEsT-ld-2Bu8GWN_CZRtEonWZ*8cZIiBh z7_jiuu3Lv^E&hlpPDnylsFl$PXHc=YEzZcNzlPI;&X6R5ZBai{M&wtx$X?3CwtwjA zTuOheGQ7e>r~}c2XE7`BiyKQ4Tt{f{Ez&9y>=*ae9R_)P7MWBDN3tx)L^#@NljytI@F0bWYBnYQy96t<_bJd^$ilj9j&`N|;)Q+6mSUkT~L?_>JyGx|9 zX^(yh0kS~rQ7Coo-Jt!MP;OPn(bwYJYNYhVHi}Q6GoReDj-#L^wFabgp+A60W%Pj? zJ(BUwEyFwcTKrm?zDp57^T$y23WKA@?(}PM@dIFJdF~{%r;=$ES30nqLVs>Hxik4Hu!e@5+Wm{2!a~i z&Q%IWU(bMZ1{M^WV4(_@V_zBkYD48ZB!U7OHo|1^#a-< z&^9mbsnW<^2zj0IG!M=MgT#GksIWAHBUBY0z(yy9 zejl9V7spU)lC2Aq-d!##dMDM>o^W+rbwxLzQ5$cWUs&79FYY9>w^|p{QP*T$bD+aB z5yQgyH8I*HiVExlQ&TP#(t zYXcLXM3bH1fe5%Ia9VGh78!r2yL_y=Wm=EI)Xt zU#POKY((CE8~O3iVQ7-L9qMCWD^7&VPUQ?@R3kqR0?}IN*Y)JHok(c3Jt5)hFdkeB z0Y_O@4t}A^=qM4g*58!PU{kKCaTsOC2p&R0ca=YwL&M_s@g6P~tDpNN2vg)!V5RV; z{(uzp*w{iEqR`BWRE&1iN#@wtzI`=lG4pTQ&!wySc7|K1a=DstyO56sPH^4lL~w|y zzu^LAn31UPi)Wplpt3_F__C#+oXOa>;-T-qiG2|JG7AC_<#i<|xSkH#Gw!rC32QZ} znYy`bsDm28TsoPdnBN@_gqK#bUm&83=Nc)f{>xV`QIFT|9Cyp~Ys-jses5IBYW zMQf!(Ieo^NPR_}uWkWH;UW#&&sQS9?(cHb&am1UIBl6b(e9Nk8B^rgmuqCcyy(WAZP#A)S+( zAB}pYOYjq{)0_f^IZGmFnc49Yqv6j zS1SX-JFmEmj?soP?{(wT$&a0RkM(r#hAd;8WvvrG^+Ug1tdpYq_X;lo%=rw}c52 zk+)tvy_J!vaOAHglYG~T#@8!%JImz|i6?dQA{>gulk#0;Wk+!$lYBqBz4 zw#nnu!v8x2>;rqIe+EnXYp^D^K%Je~oNjfM&bl$c3Y8QxfOdgZxup`)aV2))f6N76V8>eQrUNP=iwx$&;b-Fc19 zES^G3J3s)heYmaZXPy3UA0O$5ovbcRN;Z{uT^h9W_yjvBuAN)hN~$20=%^T^ca|!0 zOExOojWwBMyEEh4qzV(u<{VGnUGu zrr>UpYfqs92T(#njWoYI_dO1~)W@oel`_rZ>1f3qZ=4HeEU;BMpfN)2RF=K&8aH}~ z+Dbo2WWJQ25I6L%TWb|X8^n5Qn3+WQYK7l$T6_}uiJOUD_TB|oYbQ7X3}(}P7myP8 z5nhO$wrc)9-D{Ti{?v3ntm7lCKv^4lK0{s}LqdO>wpnIoC?zwEV)Brla8hw`Q(GTJ z{~Qz;QMDK$oNs5H<58t9!FEamq1x}%q&l+*m?6s051m+G>mq=(JPd{uZ!P(NV+#@O zm*OTy_s&GJ4SQ2SJ@Lk!^CC40ic<6$o!Y5Jo0YE(-q7_&GiXoy?3srvo6l>6FrWNx z#sUlIkwJRw1$C!C1S&i9p<22|Gm_@DGmH?a`+G{ph-~4K=5atwEEq`hU>W8N43QFr z>8C6^-O7$AR_Ncc+eC?e>djC8@bmp5KgDA=zE=b_-_y9&w;5r=_njFLB>{MZ3FncQ zDPx?F*UQ>9sK_IG!F4*|@Y< zEWLM7nM}^~t;kgBcJ{4nf$wU#2;ri1i<_|{q!ARlF z?AM`jiw1UL3MY_8`gpZu?hjL(WJ?9Dlj4(TgMa`5r>nu`bM&nRYn}Py?t4P9Q^9y| z!}v2lulISToK-BS??Y-zsoyZIZ7|C9@BT(`4nLJqAgFOkZL*5v1;W<0j;CR%a@%F2 zxz9CJB;dWw_S2QBn)qvM>G2_EyINwdUXw0mLw5zt^G;2llS_OTj`z3K9kD>PwXGtL za*nYi=jguRa(lXx4Ga8UMaUXjW5SuhU=Ebw0wb;;fpO*0M0ImXN;TC6>E{=Cz^nn# zH_{ew>+d^g|Oy+(`ODqiuwS~T^ax2*)ZgJ{JX}99f)${ zMJX3`lOYfZ&!ro$*y);g%6vCN=Y0T~^+-9RVa&sD+7qjsm~Y9@iLjan=gOUwe_=af&M6VtlnR9s~W z>@)W*>94h@&niz8oFp8J#v>J-n&m9_3i)cGVM2w&CpfeSreQZ9D?pi{nV%u4{yW>k z4wXv`YKQT7;2xKlYh96aTsJ$1nLr zJ~{H)0lKL}*&I($J*{b}G~!tHeR&&XQ+Rfhgi#WR)`7-It-DLJ&#Pr~y_`rln>7HS zko2?>Dw8fxbp;P87H*li&r1q&?lHa>U$bGfp3Gv9OA9>`5Uhvte9FvHbZq}AaMv851)fN=5PJeOe9^s?1&3Go?)?WtZl+r}5)D zQ(mI3vFU2o2#0SK&Em7o92#6@a-I69WT=6%rhKUlVF*_wm~~EK`lw)+%-{ActaSo2 zJ6?@fzN@h*WYKHTE4NgU|2qd{;TLU__Y$~u;@RSs=&{OWYESD`#{i13rONF7lshn0 zwEsNbm?+H1Zj*ZJk?cEf6X&l$+-j@q;7bmBv&nu|j`oU_riwKl51g-K-q;9XOm9ak zRfg@2?63+<|MUkU)y6Ze2GK)?x+P@qM`T$Ubxgr<2MV8 zx;&!370cA$+Ltl*pb_Rlm$?@%1I^TY0KHfa{) zJ}tKfr`DGWd~dxlGTS2R$@$C~*%q9tiV_F{6E^g(s&8UH`psKD1s@(~S=Aq-TOxdV zm!VN}eAK$Tf>>q9ymgF@)%k_Zb!_^AWY20c{qqFfDXJx(#v*drMlSC~jp8zXU*?eA zibk)b{pBE|i#~S!e4p4+aXjr_Z=VRG%bHedvZ4}QtZK9uN8 z4D>dt#-EJ*UtA1C z_mwA{Dd5G=TxC|t8y5z%9%NZ7Nx&vPz`z#VGld8}SuO3JYjzFk9fa18EAp>+p>Y2j zwpjRr+1;diZq&uACPk{^vnfR$5TPj0{(EfNn2hzUU}Osq5)K$F5Ye0#g8Wikqtj{T zt-=5(8}R$z7iD%Lf$?D+ieERb5BPpYFc*U~woZ;R6ErMwl4Evr`4nxRBYXMn#)g%S z=z6E+dRKfY7E(-nhiV0T{_H1)=eiT}Bh|VR&wqAmc+h@oX7eOW&$e!2bh%53aSAgp z6%8QIem6*Zx*GL~=WR;@S!5Ac6{uNi8Go6K>i5GRSr1)|y>B+ScgcTtZTg8kjYPXs zV>rY0re?>ognw*iRyDLjb9hA}q_wm7WP7t_XAmcAlbeZ@-Gu(Q_{_YA{}fIAj56Tz z+wQ%oQ-s`ikVCYN3YC4T8NK77l(W|S{WNLSdn#)Ttj%gFh9yV3wlY7A@E)RG#pM(V zaF2*<;z!(>&(%O=66T1Zyr}p#r8|Y9u~=(d&piGE585Z=3Wz|zgpCy$YCZ;TglhE% z=&nXWVSg=7o<@8`b816-LNZ}P`AyPi5rDUe_*vT-=GS&=- zc!e{f2Crs8a){z`;}F?(zhKSc^fob)EABLQ{FcepX0!LjK_1f(k@{w}>Mo4fca8Og z47LHAC9cS}-P(28et3j%Eu0~3{(9f<&zoB}3YV%q!nGXten_zLsv~Oa0IZ&&fu- zWQ}AkYw^Qx(^9Jh-m*xLqN9A>@R-IC#1rIciCaR|y247l?E{V(DvZ708*=t)Z!sM9 zSj*u06pKoDNaXCvhrg!^s=LTqDqDJOf%4U>tMjS~PG6}qZ`PUQOww^`!6^Y@@-)#+ zWmNG}Y9;1kjO<|_aCb{Q@I46+f7b41qN*bfq<#VEGkN7vcwl3GpwX?8;JDH9h9x=6 zd?XmK2QOwitnHe3RFqXXqA;QX=FW{QFzV{w!&uGDPA^e$g>`9cT%<(93fE&&X(ku5 zg9qg+M8U?O8bfNQjx!CKm%?DYMLuX7pT-K;4>Q~$^QtarEH9Grb3^Ay0$pnD*|LF+3 zT4d{YWy>PZgl^;zojns!K++xD?4H4j#3^c+9)#q4);6ZWV|}&NQ@31=DT)TwE?w7^HS#o zyf4JiWg*+lz9t`ywjOwhBKc9#g7vax3g<9U^CcRZ`+m^^@rosc`#W!Q9S+*fR3*IZwa4dy0MI%oC~@>f>$0e2nj{TGEqO$f61{k0uQ5vuh8_l|M~j% zCh_U7PPsr>(isjJ2WPu6`~_kob5xy1xM_O#7Hcr@b}r$pqS6>M{8?MAwq#!ou)=MdCGS#yc&5MvkAuU~aKz%iUm+Je)CK_< zc{_Zp8b`mrNaA1T=ZkuBP#d=1Ig?Uqj4Vq1#t)0=9rbn=%^kVD8AQ>A{gBoT_Q3ajlEQrakOFFWMoZc z1ktX6g|^#plkFvIxfpxVxD^o~zaoPz9olfw?DI;=8KixI~W5NM`S{lv(On&)3IR;7E0t+2@tv-&-kJT@>$_ z;Q;f(P-Ct|S|Nyw5p1M8#67}S)*H@|_7;+$l*h_`-`SjXT39S}#2h0^{6L9I)adx? zSW@=9&)kK#U(V2`}FiVC5^#-9?y;cy!gEmnKK{L z1E04JAl!JSdZToDgv2u*B_1hS&aZ-DBCn_H2yd0l1%))Xi&PI}@4m?h@U>s+2>PjU zN3=R5QfaO7s_3*Scbi6}R(Mao=p*P7DsBNX#uoJ|ymJlHu2Z717vDmi%u37_$_DUH zrd_2FyYF&4(|!3tWtvzWqbCp}5VY1c!?%Qgf=e3<4Vj#zsyiBsLg)S zj_v;SWus&k;knW=O}r7n#PdTH@OFi7W(=OfT90<@T%~Vb38`?E9Oe%<1lIh;Vm?kg zJ3~(;BaarWLO)U!i#sHw#&zpPxKAxB`qz5YpaX1R`jpBZNI2R*{ff)tJ^B{djSPBQ>pN<`}X@QmQ#%bK*;WL2c$%=ai^0$b7lYg#O}M#>~_d~ zYRd|35fw}xEUiKB*zTm=u+BS8_edwjc&v&6bnZkT3!u7owR+3m%3hHB4Ef6sd+rzU zF_Qf9%c6`6Gih9z*T`|vcF@W=UgJhp#{}IO3`&t3IdH|P(UaM!2sLJ74fR`V0lI)} zT{~q03QUrElnN-UNidiJ!=Ou1E!Ze7rqJ(dYcLX11So4tfVq$@|yA7`pC|Tkh=e z$iI+d96HWSAQUMZW121NWxiO^*BA9oY!ofC0@QtNNuu#9zhIUA*SohzP+8zIE+0EJ zU4p~Bl$MultWp`310Gw`N7YvDQdOH3V#qHef5GA0NKt@?P18voY)vfebyuK#4qt>) z-s;4f%jBwo_o~)bOLd)C95XDdnxxrP%kNlB2sn$T0pmF90cbzk2`*dI&sv`7jRE$K zz=%B0bF+mvrdyLZ*PE&xR@;?C_8kF+4ruw44Jys<_8^8|J$D>xnr;#W@WMx@t{R+z z&i8g|TUpvU36#QRW5io!1;DHv6%AEpK!tK?7nY$sk7_ktVa;n(YPXzS8&L*EK?jGpUE`Ic@?%ylI(<|N(SR4jTRlm-hZ>* z%7`)lL~R-MB(gshJ8Gx$1WS(D4VP|hKb9-*q^5GOxM|q04?(gX3>1Tnl9ja85ZxwTs-Mej#5V#Bg3HLg-!U2pZ*$-h-=(FR_mm8+lamfm7%4cPrvOkpa*R7C^n)~;&5 zvhXZ-otC_XL-MfNQtV7}Y}WOZw^BmyV!5+hdlp2j%nqA3rA78t_ef7?n(>Mh4R(vD zR%ZgL=jpKhW-tRM;hxVB+16SB9i*S>|7udxOl_@g8q!Zm&Xz%J(7fMH`hZh|jaYl3JV8Q%O_6R2JYw^vfZ>u#BADri2K&zE=l_O`76RF`^bKSdOI^ z19ulS4*81EihDHpyZ`y|>NC{QO$^5Ag42}=9bX+AwnV&#+LIenfRmdt!9or5GOqo2 zfxz%cz6&^$Q}>$QPoVa6u1|Yn3(=VmMRt^jGqJD z7)Xy!7JeDX`VKfE%AT9!Ym53Gpu5s(!B=Ssn7M@4sSNt|80}DL|5my+Lj?0> z_Wsnd&9;`{aNaC^G}_JDMy9B!Vx%q&5b2l+0%C1Y-B{7I@^>UhT@h)I^yhLpy2CuX z{s4KtSze{16;(AgTCJrI(`0~>@WVP>UR+DYY-;l7tmiJ3?Zau$VBva^Q$uX@?QzaK z_3`F!F@CISTq#?T4trg|YfE_lx*`ZYz36|nE-Twkjf51u3?DpSp#k4^hO}GdcmK%R zAlGkYcL4{jO;=U36M>p9hf%eFF_{}_s~!9wJh*%`cQe?tewvD+S&unoc|f(5sj7{O zy1Mprm-z_r8b%Sm@`8n5TxRAi0rTEeCE${Bd7Uya%6AWVOLFFhWehkpgX?{ z(MuZ{Xg}RvAx;?p1DxlPvh*V7=xThLu;dzfoEx zUQL%P3L?;MQf3bnLdJ`1&9K3!9BYpKg> zUpv!Mtf3AB8x2HH4}usjRevZy_1z=;StSN;$h>wlkbIVxTCcx|;adU5o%X^p&_Qdq ziYxmGxiu%vM;4~DL2Y_D>R&%AT{5|8aqQ5Pdo-d%=T9~nuPWLSyyXwHfParQFIFY! zucwUL0zicXM5y{tiSzEORl{V!Tx2)4dd6R!O`a36ShN!DI$TKFRqv8k*8XJ7BC|pg zech$MckAEmq^5q_6em?T?-+JU{#pH4W@oyz&0L^=gR}8)B%u6-u1V)$_+c{Fo%b0Z zly2dy&OZnucq@0x`FqDY|B&a`4%$Sx1?6X|^tm-i%4kK(bcCfVGY<&J;Nd>Da_ z#YQ*$3|aQwD=e=2vLem4qo{RA5-qTy5RJ2$?3#Bm`I5*rnNQy|)|5KCMs=Ji)bs_M zrS&MC$XI{|EEzA;w-^GtfR($#DmtuM)kPMwhy8^qg$EFwmgrv80@_oW2dEaoO!(#Uq7ADEEBqH zyCSLm&aM5PQ8_9)db}-!I568;oHjR8^83bmQ8cm8X*x4M2bQKeRdcfh0+UzlX?o@I zB(3}Irz7O5-IdHl=2`GN7tKrVl|e1Xe7*7|L`J(fvg{bq5hw(;!Y~>lK2TV_TiYC2 zLyTi;O07_@Z;sb=VM_GQz5&NuXPd@;fQf{cG_l)eWsNhsW8FPK!*sg~yPLbqbd7_a zoSM8-#6MQ?+I>yKjsyjZ{~~dD zpj!svg@5uuAKhm6QU!$bN_Gdg?DqM>t|PFej=fANq|k}PL_OpFPJBX+mY%i!vvqo7 zI&ubZA=z+NtULb~L+g&T(#bAW5~3&{b|Ct6m^8yZ35XW@T=eaTsciD`2R7jJr>tE7(t~|=kl(Z%5N8yOX7BB?DionvqLg5Pu4&leM2ve?n;`5)+a^- zWI&mL)IPvCMR|)2U)jXrK#R>H>l~;f+B{M(7SIlqqezlYk*kLW#+3)=2|!$eSbIRn z&vzKS5VBlZjn%1N>XMb?q*OGp$%L1oqPc(tbvWdCkCVvTpz1NDVTo+LLX$r^Jla&R ze>+>3!s!$aeANkGuah25qCO|d*$H)sttEW@NY{FXdX&5?t{nA3W+@Z&_;F4h|EM;d zPR~5=O!ISz(V^!r@Z1StvNeegtXZ(6c7S1FzNL)WAxpi|_7~Q@oW|=|0eby%+ZfqQ z!{%#@X1iM&lnt;-{;wI=4!Ph9`$O^soRUE?(k?JVY(bHlm7;S6|D-E@(`b`+sf044 ztA1b8ll0VCCt)0*2m35L5W%gg`>1}YHUdG z_FLleDtCv<5usRvN9Qoi`3af z8S_klZ}aQXQSCjCGoU5!D+%3_K~2xwu*;jHGZld$8fkwneh5kBUFjz$=qx25ZD%5^ z?f6lZ+Q<&MZ-zYduk5D1#nz$#eK{;1gr| z>crAdu)518|J6QOfuD^j_N)-OJU`?MBdBlHD>PAUSnikpu;ccC>ag{6A&(dQUCTSJ zGX1mpe_B}@(OtX^R;!+e%XXLQFk*T~pwBA!bE2L5xTgvT6SAC1u(1PoPuA+};Swrb z=9U)Kuv3pFC8<|5rlfZimne4XUhu5M$yb{8E_ zMd0oBQ)TGM12mpG43~Fe|8xBEEWWn4YwTVC_!FNBk*NU1r_!z9%=wbN-T$BH$a^P; zf5b|UL0|`25ysHh4KNS@0iF$A(^9lB6_>YqM%I})>5ko`99dn3&j7=G|7xgqsc8qW zEg|(8QmNe0UjOR$|A`3dZo+y$`;g94MvZ>KPEY=*WcThSt9?lkVJG`rxEXj{`7XTU zMna4@1_Gfz=5?-DJ@6@$82}^P7<2w40HJ1D467%~0!~o>z&rBzJyxow)6$2G<@r}5 zMRXUFtJGNugy@iP!mxB2`mk2(3*gw}kI3P8Vz_BO3NeTT!AXUbXFd~w6pL1%(YPR! z5Ckw|5Sm6~!ICt7jo?)MHF2dRYI-^mO<=@9;Ktb94TYN&uL-DK%Jj2^`!gp;WQpD* zP#yi9%-!kR7#C}Iw^*?%w2b@7ouJs3pj^5^=u!#GEak?2@JaYdu0)2IQ^N2PnbSLC zbznmT>PeV)z;nP79K|`f_&um<$F<=+ZTFuX5FGshXG+B^7Npzm*jZSr-|-FfuZ~SS zBskFil~o@194_0!!io>$kDmo*S&-TBE1p9CDGn!ACg53h8y_oO<(KfpSqT_k`6P(V zKW_&ECrJ;GC6&HjVa3aHm$d@>e92XPBYEJ7mw%z_3VLK$YXw}s1gD>79pqSCUlOCw zvAI)lFYHc?GV{ohan%u&&gMcKa4Vhr=(LXdGnIw5GbJSxaQ-{5 ze}GXj7zCVj%uk+e#?`>@^DK5!c18tRF5!;QZHR&SShD{~868_#^oSsJ@54q30K`<~-%J?TOAuRE*5llB1+K7_|xXHC_^@CC>4mqJ1H(GVRrdO#vwttagd3wP-W z8!el4P%0N^%PRTkn*)eb2EBlfP&oG8+G${Z&Wr@-pA@L6b-*yX_w#G0fdHV^0rygo zlOY5Fs?*o8Up0lEaRO&^pT;54em(`ltE|+V1yVG6=E~{B@q9$-2w1WY=oLiJKVSHFo{K`SGk6)2PE zKUANKX&8}{B0*?UE}v;`$M_l3FxwoTIK3@aO>fJPmEAfeR_73xjQ@Oykl znJ}+L+sS;ws)NlcFUfQzdOxd7GW6h!g6pg}E>N>^orEl&;E-t9rh4~9o*#o~W6PZ)ib<;eHj0<9QQL#27Yce9^=V*_LpZi#fS2D(D zte|AlFT+!DJi~*Q&&P2~b4$aLT2eFKxgLKw*XIHvp<~@^uel1+jfZ}6Gh|a}b!JJG z=~6-k?gF#1yaV9GgV)Tigq=K#(;{~%P-%)vK`IN4Ajc533e z^HqL}zbR|#S?G#*c2bZ0z?uf6YdinoRL@%qhzX@(P?{ljcCF&6HFNp&={6GER(jR(#Zg`$=b1Q7v(oI97PJfbA%7Q}A@|YaQTXF;n>Ym% zYToOR2kAPseR4Z!$L+VFY!sk3j%V`XDmV>;{8*!Qke1Xfvh7mwES5K&_dL+89H*Qp z!sqofr&T$`nguKciI+T8LNUJzgLAHKk5cBYu26j)LQ}r!(zpzdCQ6>QV$?ZT>0W+B z;_7lNb3MNJ=atq^I;HKO)P%qO;Dt{TsKHDJ9$<8&(ngHq^3?g6%EkeBvAc>a5FGeH z;FB!(G!;{7PUH0jT0ZV0p=HiXGIA$$tGnv>&-_3$h3_u;DTexzo1D(@bGMTs{?RiN z`9*ziuCOBdF)-d+Swt5POq2>6?F0{?uu;u;>K(BL0TwJtj7)wSj~>-f)da0c7kk6$ z^Q79pk*!3Zr|>k9{L>&g7f3P7Y%dhJFnFN+pBP^GBEGf|8unA+WxlKaGdZ0CFwNv5 zF>DkT==j>PVy9=VqL&wWfIcH#VBz_o7b$=gFM+0!)SzaR#b46?0c)-r-9o3>g$SGE zrh<$P`t`rwGrLzYirak2efDOD1`HvHq2BKKrz zQm7(JOvie^nX3q$+x-{1<3}v+*?*danJe2r9g)OG^6y<9ZRVw&^Vp3ZN$<46@aRSp zm{8@A1JE!=)p^#poJvP|=pK$9QvnSsIgw0KV zz?YG#GT&=_e2g`T=biC1Ae@TQF$}5I0%Ko%srGHW^ zsZc0J9(>O2K$W1b=*N`2l;YwZ3HwobFyH@}R0rvWw}7ZD9HsS#aMp?U_f|*RVsyFO zMA23JzZ{F`+Bfz3$D7IVAo`_w_=n>jWAg|Gb|n7nLy{6|2a-8V{2ZABS;b54gV~B8 z-aum&U@Rsxbve{DX4d=s+Ux=+D`>V3+7{}L_=xPV=IgK&S(cr z53IwaM&~Gql?UdpX7r+`(202qp*%dP0(oD=zH$D9r9ZgjL<}MC5vjp&QxbT;mDm55r zFZTWcf8<;GI;6XrtmAAluTbee8?sn<(I-DseOAw0NH>~4hnX8OXik^(MwXat4+ike zHMvXO?jnk{d0!ivsneX*+r_yO+t^fY6O8%NJmwy0==X{B+V#RY{z;RQ{myo^f@y77 zsbF(vl?J;V&}zRIfSU_>@4_#yVU>=pyo`Ivl(aO)!4VdT0_Xu>c4e3C?+QMAxzhbo z4QSrO@~5n^N=KgGCk#v@#bbA7G7d5Xl$H1K__@~WI<;AU?^{^PC(UccKsjho+<33J z*VG!n+5P%!*1+XTAN9T5qHy*a_5`=-4wP;~?q=&~24ypK&P0%mI6xY*65Vw(CY zl*YltX57pSl9Ceb1u#ce$XHD5+Epn4NY2V3m3y9|0<7%g^>f-a(T_+X`_8#7>EOV} zE9|>uH0JL&9`X11qJ0A1L#5WIS2e@zg7{Qm`wA2aV|Qjr&4Osce}Q00=9L}?e&N0o zZQ0tHe=%lt4Zmr}V*)yKT*TX!>f+3sC<`-4-}VwJt!RWWxA}Ma$;xv06{oC}KLy*m zy#{McxRJ$mp1s8`AMhAle&XZd%I>Mf4w)aZQX_ep!!7oe}YAC+c1Xk*SeEk zU*BI%Ow}-R9gq~(|LC}y<0j9DI~w*F4BN2Bs&K3N{j%~gdG@c8X4|}Jm`!U$+Rz^| za&>Q8cV;R&UBtr&wPr3vNkR`w*z8zVOyiXhM0^%1#dgg4N6qD*GTQDGjKop{jZ1h{V43fV{epV5 zZzV^rixn);fe|&lrX<*VtLSxo@i+#05L5YI@ z|Nm1~3JPZSl*ORIRCg+%G>ts!X5w6pu*dUbt(P>*k#N7=S3QYO({+e1b9ad6sN20& z8ikIeZiGg)4hz}Fb4;KSQK^az+47pn_K{hm_JpoL&7bwlct?1Ny!C{IradD`HZ!=M zng>n;#)?~)7Mj!T1JY1h;aN!nc~zWIzVeVepzqzef` zL;;<|MV@r72>KU0ciF|S$CK2##U$?Gvud4*con)7xQ`6R`R*y5#k@@5z0JcxO_wOUnn`Qtl#{pk@Aw%IUX)^tctZurb`YsUSZlc>?;k-2;t!= z;#!-}r~FxtcD&s-NB7t&8F-J?YMUD$QM<6+)MsBsaHOKdG5$jr71%A+G@kE8&@e^C zpuKoiSUAq8klwr56om$a=zDu5L&e5^Z&ea3se`F0a0K=<$Q~zQpv+O3lLd`j-FTVb zs=_}!`*x*{FT}@w{-P^C!o*48&HVQwK&D6}EnG`{ot4+3>RK2>L%P&CQk+aE%VA^% z2U3F9I#?-WNSNS!3CECq=MuQ}843dyDC#i zlk&>@cEhVz7+D|v@U1#eW1w$fJAZSWhgUZ3?hUZuoib}>0j=%x&h14YZdJo&VYb#I zoR7C`(-&7v*o@mWZN zr}GBl?G8c5Z=)tJKS;pywT*@|M5st}JHfeCSh63Wh!i)jUH-PBT!q@b(GV z7`}Ajz;=zCLZC@DJX@C+)lBqJa(EBbIR}XeYFoFDPF~`np~+4Y7NIwP1&x)mr%2d- za1#Z}wan7|eRLAeQIQ8ph;O=q0d5!lmCqwTS&bT?n>YcY&cXD3G zBTS58--qxiNhRTn9h}34er`Lo4z6!K25NB)-QGU*EbB>bFHJA5Y={`#Tj}c^$3@XtOQE*2bQPIB97C9&9MdgkhKWznXjv1x5qf*j& zx0k2t!$Ytme(>-5Zo};t4>Vq3f@Ml zz=qP>lDh}#H}tXyO(hg{Ws!T_Pak`9#SQBc`dWn=2Tf>fLg4mkvw^^bF zIRN_Q=3LwB={-)EYs@%Cd}+9-e2bOPzcKdwtc$gpC_a^aDCWu9KeOtd{6C za~IwI&>&?Ln&c4RW@K{0v28I+QB5D<0duK59Z@0;f85hyONsZT{}EJ!%`Y^s6(Tr` zlL)o{P^Uqvx0>cZG>Hf9L)rB_J-|tRhxA+rEkQMAVX9hcH2Q7s=o8{M!}#SfctZDa zSGr_(ZhGCofl+q05QE%n=Wq24J$@(GJm(_i$q!J)C(U>F8^7p!QUf5mIpH_xEd8KZ zL4Izz+=)IDk@=Vs9#SK%Ru`I&~gBp2j`p*|P_vuR!(aL8+wTNHZ1AW13=0EsdIftLsjF zLFrkBh?ztc@@IXsz~l~-2WIbmWLu!;E}E9h(4uhN+pVg!7hl*1A#Mz%G0e$(vzJz6 z?D0b~jQH?eV|wj~yDdSdt$VJPL9G-IQc;u6s0Xt~BKoMo^8tI9Y(LL* z90b&#(9i+p?Lg4!pm3cXe1AYkp99z;}K4ze{(5eTzMoMBDR5y0m`WwYfGP3f(I9S&DD^Es{1_q~aA^xtR&uy<` zC_5$Ln-MU-vDPF%O8?|EXOmRxu)Jau30e#w71{n&%7abz_HIGG2Y9iwf5hTmJZ5;k z7(qWzrmr@=4JDn&mY#flH(iTbB*N}OgR1Y9DL5vZk_gDClc!QuwAt^ai>$Z+%9(-X zIC30D>itXv9E~v7t*odp7A8v!COWZ(Nli4%b+J3b8+(y0KN%WW>fn-Y&`ekqb0)u( z#-rbS0S~>jkAtQu4GLMw(@=O zK6Tpgh6h(4vQmsS37aD4{@(PS7k)i?GGjd|QLgxKQG-!=v$#eO@3`J}eVFYQY4!ba zfKu*Nnd(AVexjcOdS6l{D+w*@E!%=j4*_O`AH8n*kap|0UJSX9~2t-9e@l6 z?$eiyYM-Is$H8}>q`$>#%D8NVE{40sVu4NWAWc<^^k0L{=rO(4b6KTmNQXGYOG)&v z3G1k`2s(XWSxj?Od@bsxn4EdGw;AH&y0<;H`D<(Gj;@@`CXvy}30{Jy@n1Zpzf$c?^=!62K{oZ)5!su(^PvAd)sWy>1uSb>DOHO~Brt>_9B&8V^)B&67{WRz)+UnKg9v}yC0q2b3pGWyqv?(Jq} zScz@ET}z&eUE7P~Tks9q&>D7*RVQ)(* zFIHt{eU;8i;sUvBVNr9OnHXonB=LgZ^`|=?=r(}E(jS? z>jnirOZN4#a>99Z@H9vL>a6PEE3A;3{w8VEa6S$29lzpf`A}>X-0HuJ*UknxM~)-> zUc4p*7CD(-gYJ8pFb4k+?F3W9}2#*7uOvjGZyI?T;d}LhD5ixuna*^6fcGjz2^E4lJBbpn#0{Co7snxf39vLI<4^C;FvOfsu@S#CLJR~ zg3)=;q1lyKBBqE<+Td&y55Pv_Ql>^?wmeJ{K=I;|856FV2ov0is@6r})-6gk`k@JtfOr>h(P9e9NBUXK6T7)rTTl5%v zoJ>(pzgyi#eUmO^34hzwajZIncyF@-8JjWR^_CA5Je5@~l?&wDmSM$+oW~D7zVbvg+B=V{`#`mm)M73Bu{QaS&xZF(-N7ATX-H4^ryTNyv4E9 zMF5BWbg~S7x6jdMAw5o5LKBWZ_e^OaDlXAJK<$G=MAMXtYlWo{;qva0PupA`aE_bN zDWTd*YP9th+)gNaEm5f)m28vnHtkHSjDhfx=K~PZ_hrkINd)0oVgM(xlPjCHx(dBx zG&olWYBa5xxxFxS+kN~Acp0W*aPigIg8D~{Gd4mQ^C*%t6r{@{A6CxT7lE2mXEa z5U27pUQwJWhUF}rtrT&8FiVQ| zv+~nL;2<*M8{dWDK1PrsG@|mp-}j*6(-lI4#kS=5976rO~hai#cQhFR)X z#&y({<2V_Zz+Ejw?^m~ziA`egd?ND+WOpLKM3dH@Yn5h7T?P$?;g$2-MjeJjwgIVl z>tz+E@LR@41zb(2C4&M40G0WOjDnWFgE)(E>$#Fg9C3XJLZwCX#kzvhP_-WLgJ$1N0&v><3&ikH z@+lYM_l-$I_|B0dM!)IZ*X9JUcz+`c?TnoFvts|l2?zQ0rH|Kz2vJrWJSm%r9!NmtO#yf!yP_0ei+1mTm0m zOI?jOvY~Em$xY!3ZnjR_g?H&6Bu4VhJ0S_lO?7BQu-G0upkw4XzK`bz<|jCM#pxCj zkA%2{8>50`&qtl4fddlQ`;|TF1g1NSdDQThF;%`-+q%X5yY}2z4^sC9?)wp*ur>HG z=K~B0XK&8B6PqF&x$2MUcfcb8A4XXU$XhIy?O@~h3@T6G)cW=5qr6CF5)&|v@sN=X zN>V9CC$9hSEx%kU?JOQSFCuO-rOhRz+*PI`tpq;(M1q^A%FXLu@hpaX$ z?Rq59zDOj9Oc$MlhGu+jv@BfQ2t(ywt{Ao>BVn`30TbVD**NkpzKm;Kr0*8GL>(Ez zyvqBnsJXv`iIv+*;K~lDN|jHek*M&p(tSiV#n>l%r^^o1G`ue&Fr?xlyK|UG)P@bv zMVOx3n=IvPoy#yxpLWWed>fvwD~PtS9JbNZX5hrHw`AF0?mEK3lF4Ml_~g1{KK*}j zM#(-^pvVs3MCc;WaF*jkM3!6c{e{GslW6-g>4yG(_kmzye{fSh$JYfhpr(t;I9OTHO70PNk4R8}B5hpr z1g8W(l19ir{Ci3l4hKV_d*~g4O<;b-KhKND>9dw&oBntk4fbBx5Te-Vg@d^!ySR3j zMK*5CcI3g5Xy2J@Ylzb3jGJUP=UC#uEp z{V&-j7H>N=-VovtCa z#$OYv93zpV#?1*$BaNzWDSS|dzF@k$R5CdpInkEQ(<>8i`w__?R%vL_3~=CufH>g> zdy&5!;<(v3NzU7mKkfnxLT`KQ^Rir;gt2tM^Fz&Z{8^lm-3|CUeGC@eYjZDfnXW)Z z&i3D)wpoPxj}z>Cm=v<{C>cALfz4O72l??E=TT?e`5m;)ewvE4(hRw#i$+4UzC$@t z?_|t~JF>(l6_0UVlygMlVM9TP2F5rbyybVc4M#sR{Qz`9o3t^q@(Wk{PZCQ`2@=Ya z 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 I%z}aaAL55o$p8QV From d07cb462a865e323969a61986d77b2ef7e6ba8a3 Mon Sep 17 00:00:00 2001 From: hamham999 Date: Thu, 11 Jun 2026 08:06:25 +0200 Subject: [PATCH 06/20] Creality K series printer updated start gcode (#14118) * edit startgcode for K series printers * Update Creality K1 (0.4 nozzle).json --- .../Creality/machine/Creality K1 Max (0.4 nozzle).json | 2 +- .../Creality/machine/Creality K1 Max (0.6 nozzle).json | 2 +- .../Creality/machine/Creality K1 Max (0.8 nozzle).json | 2 +- .../Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json | 2 +- .../Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json | 2 +- .../Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json | 2 +- .../Creality/machine/Creality K1_CFS-C 0.4 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 0.2 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 0.4 nozzle.json | 4 ++-- .../profiles/Creality/machine/Creality K2 0.6 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 0.8 nozzle.json | 3 ++- .../Creality/machine/Creality K2 Plus 0.2 nozzle.json | 3 ++- .../Creality/machine/Creality K2 Plus 0.4 nozzle.json | 3 ++- .../Creality/machine/Creality K2 Plus 0.6 nozzle.json | 3 ++- .../Creality/machine/Creality K2 Plus 0.8 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json | 4 ++-- .../profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json | 3 ++- .../profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json | 3 ++- 21 files changed, 34 insertions(+), 23 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index 89564df4db..96e4a96352 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 9962a3afc3..25519f9220 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index cee9b68326..cfe7baed49 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Creality HF Generic PLA" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json index b67cfef0a8..6da2fc8125 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index ab89862643..af015ece59 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Creality Generic PLA @K1-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json index f218bfeb51..f5f56418bb 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json @@ -53,7 +53,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json index 3c050f0172..7060043e3f 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json index 24329d6cec..0ba20f265d 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json index 6652e9eab0..a6d31198ab 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.2 nozzle.json @@ -88,7 +88,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": ";SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y130 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y130 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X130 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json index 33083cfd29..13f1ae6b89 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.4 nozzle.json @@ -86,8 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", - "machine_unload_filament_time": "0", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "manual_filament_change": "0", "nozzle_type": "hardened_steel", "nozzle_volume": "183", diff --git a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json index da3501a1fd..ec1254ff37 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.6 nozzle.json @@ -86,7 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json index cb89d24692..d6f955ae17 100644 --- a/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 0.8 nozzle.json @@ -86,7 +86,8 @@ "5" ], "machine_pause_gcode": "PAUSE", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_type": "hardened_steel", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index 8f7d6b1bc6..7f70f8a16b 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 848aefa4db..db0233fe59 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 6592a240eb..e527bb5065 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 96ed049880..4c854a7052 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -138,7 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; creality_uuid: \n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json index 2ee489b7fa..6b3455edb8 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.2 nozzle.json @@ -138,8 +138,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": ";SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\n\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", - "machine_end_gcode": "END_PRINT", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 X0 Y245 F30000\nG1 Z{z_after_toolchange} F600", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json index f3b5a9bedf..199ee93b37 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.4 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json index 1fce24ea83..8b587e79a3 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.6 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json index 660a32e6aa..2aeb72dca5 100644 --- a/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Pro 0.8 nozzle.json @@ -136,7 +136,8 @@ "default_filament_profile": [ "Creality Generic PLA @K2-all" ], - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "{if print_sequence == \"by object\"}\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{max_layer_z+2} F600\n{endif}\nEND_PRINT", "machine_pause_gcode": "PAUSE", "change_filament_gcode": "G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{if print_sequence == \"by object\"}\nG0 Z{max_layer_z + 0.8} F900\n{endif}\nG1 X0 Y160 F30000\nG1 Z{z_after_toolchange} F600", diff --git a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json index 7b93cdc3ba..6aab3b5e3a 100644 --- a/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 SE 0.4 nozzle.json @@ -53,7 +53,8 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 E0.8 F300\nG1 X0 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X150 Y0 E9 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG92 E0\nG1 Z1 F600", + "_comment": "the generated by Creality_Print start gcode removes a warning/error message when printing with Orca because it thinks its sliced with CrealityPrint ", + "machine_start_gcode": "; HEADER_BLOCK_START\n; generated by Creality_Print V7.0.1.4212 on [year]-[month]-[day] at [hour]:[minute]:[second]\n; total layer number: [total_layer_count]\n; HEADER_BLOCK_END\n; SET PRINT AREA MIN AND MAX COORDINATES TO ENABLE ADAPTIVE PROBING\n; MINX = {first_layer_print_min[0]}\n; MINY = {first_layer_print_min[1]}\n; MAXX = {first_layer_print_max[0]}\n; MAXY = {first_layer_print_max[1]}\nM140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F6000\nG1 X150 Y0 E15 F6000\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", From 15f330641c6b8aa6d9225319de424d9039dcfd2a Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 11 Jun 2026 23:56:16 +0800 Subject: [PATCH 07/20] Add Microsoft Store MSIX package build (#14142) * docs: add MSIX Store build design spec * docs: update MSIX spec (PFN deep link, .drc, Associate tab) and add implementation plan * ci: add MSIX logo asset generator and generated assets * ci: fix MSIX asset rendering edge bleed (PixelOffsetMode) and make output order deterministic * ci: add MSIX AppxManifest template * ci: add MSIX packaging script * ci: make build_msix.ps1 stage-only exit dot-source safe * ci: build MSIX Store package in Windows job * ci: run MSIX pack after existing Windows uploads and keep it out of release downloads * feat: add MSIX packaged-context detection helpers * fix: resolve MSIX package APIs dynamically to keep Win7 loadable * feat: suppress self-update in MSIX Store build * feat: suppress runtime file associations in MSIX Store build * feat: keep version check in MSIX build, point update dialog at the Store The update check is notification-only (OrcaSlicer never auto-downloads), so the Store build keeps checking for new versions instead of skipping the check. What changes when packaged is the new-version dialog: the Download button is hidden, the info text asks the user to update from the Microsoft Store, and the hyperlink / wxID_YES action opens the Store product page instead of the GitHub release page. * docs: align spec verification plan with Store-redirect updater behavior * feat: default MSIX identity to the reserved Partner Center values * feat: render MSIX logos full-bleed from the gradient-circle SVG * feat: point update dialog Download button at the Store in MSIX builds * feat: link Associate tab to Windows Default Apps settings in MSIX builds * docs: align spec with review-driven logo, dialog and Associate-tab changes * clearn up --- .github/workflows/build_all.yml | 2 + .github/workflows/build_orca.yml | 19 +++++ .github/workflows/publish_release.yml | 3 +- scripts/msix/AppxManifest.xml | 75 ++++++++++++++++++ scripts/msix/assets/Square150x150Logo.png | Bin 0 -> 20935 bytes scripts/msix/assets/Square44x44Logo.png | Bin 0 -> 3538 bytes ...x44Logo.targetsize-44_altform-unplated.png | Bin 0 -> 3538 bytes scripts/msix/assets/StoreLogo.png | Bin 0 -> 4339 bytes scripts/msix/build_msix.ps1 | 67 ++++++++++++++++ scripts/msix/generate_assets.ps1 | 56 +++++++++++++ src/slic3r/GUI/GUI_App.cpp | 16 +++- src/slic3r/GUI/GUI_Utils.cpp | 37 +++++++++ src/slic3r/GUI/GUI_Utils.hpp | 4 + src/slic3r/GUI/Preferences.cpp | 21 +++++ src/slic3r/GUI/ReleaseNote.cpp | 12 ++- 15 files changed, 307 insertions(+), 5 deletions(-) create mode 100644 scripts/msix/AppxManifest.xml create mode 100644 scripts/msix/assets/Square150x150Logo.png create mode 100644 scripts/msix/assets/Square44x44Logo.png create mode 100644 scripts/msix/assets/Square44x44Logo.targetsize-44_altform-unplated.png create mode 100644 scripts/msix/assets/StoreLogo.png create mode 100644 scripts/msix/build_msix.ps1 create mode 100644 scripts/msix/generate_assets.ps1 diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 79ffafa0f1..0788832d5c 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -14,6 +14,7 @@ on: - 'resources/**' - ".github/workflows/build_*.yml" - 'scripts/flatpak/**' + - 'scripts/msix/**' pull_request: branches: @@ -30,6 +31,7 @@ on: - 'build_release_vs2022.bat' - 'build_release_macos.sh' - 'scripts/flatpak/**' + - 'scripts/msix/**' schedule: diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 7ccb52b0e6..1e8588a373 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -371,6 +371,25 @@ jobs: asset_content_type: application/x-msdownload max_releases: 1 + - name: Build MSIX Store package Win + if: runner.os == 'Windows' && !vars.SELF_HOSTED + working-directory: ${{ github.workspace }} + shell: pwsh + run: | + ./scripts/msix/build_msix.ps1 ` + -InstallDir "${{ github.workspace }}/build/OrcaSlicer" ` + -OutputPath "${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix" ` + -IdentityName "${{ vars.ORCA_MSIX_IDENTITY_NAME || 'OrcaSlicer.OrcaSlicer' }}" ` + -Publisher "${{ vars.ORCA_MSIX_PUBLISHER || 'CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82' }}" ` + -PublisherDisplayName "${{ vars.ORCA_MSIX_PUBLISHER_DISPLAY_NAME || 'OrcaSlicer' }}" + + - name: Upload artifacts Win MSIX + if: runner.os == 'Windows' && !vars.SELF_HOSTED + uses: actions/upload-artifact@v7 + with: + name: OrcaSlicer_Windows_MSIX_${{ env.ver }} + path: ${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix + # Ubuntu - name: Apt-Install Dependencies if: runner.os == 'Linux' && !vars.SELF_HOSTED diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml index 7c2999e872..98514d99db 100644 --- a/.github/workflows/publish_release.yml +++ b/.github/workflows/publish_release.yml @@ -73,8 +73,9 @@ jobs: - name: Download release artifacts from build run run: | + # Windows_V* (not Windows_*) keeps the MSIX Store artifact out: it goes to Partner Center, not GitHub releases. gh run download "$RUN_ID" --repo "$GITHUB_REPOSITORY" --dir artifacts \ - -p 'OrcaSlicer_Windows_*' \ + -p 'OrcaSlicer_Windows_V*' \ -p 'OrcaSlicer_Mac_universal_*' \ -p 'OrcaSlicer_Linux_ubuntu_*' \ -p 'OrcaSlicer-Linux-flatpak_*' \ diff --git a/scripts/msix/AppxManifest.xml b/scripts/msix/AppxManifest.xml new file mode 100644 index 0000000000..56477bf80a --- /dev/null +++ b/scripts/msix/AppxManifest.xml @@ -0,0 +1,75 @@ + + + + + + + OrcaSlicer + @MSIX_PUBLISHER_DISPLAY_NAME@ + Assets\StoreLogo.png + + disabled + + + $(KnownFolder:RoamingAppData)\OrcaSlicer + + + + + + + + + + + + + + + + + + + + .3mf + .stl + .step + .stp + .gcode + .drc + + + Orca.Slicer.1 + + + + + + + + + + + + + + + diff --git a/scripts/msix/assets/Square150x150Logo.png b/scripts/msix/assets/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..546b5c57f9badb7497e2ce3d70190ebaeb7678be GIT binary patch literal 20935 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�rrMI3-znsrz{NiQsI0_V<+Lc&5624TgN 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 literal 0 HcmV?d00001 diff --git a/scripts/msix/build_msix.ps1 b/scripts/msix/build_msix.ps1 new file mode 100644 index 0000000000..55e9fc156f --- /dev/null +++ b/scripts/msix/build_msix.ps1 @@ -0,0 +1,67 @@ +<# +Builds the unsigned MSIX Store package from an existing install tree. +The package is intentionally NOT signed: the Microsoft Store strips and +re-signs uploads with Microsoft's certificate. For local installs use +Developer Mode loose-layout registration instead: + ./scripts/msix/build_msix.ps1 -StageOnly + Add-AppxPackage -Register \AppxManifest.xml +Requires the Windows SDK (makeappx.exe) unless -StageOnly is used. +#> +param( + [string]$InstallDir = "build/OrcaSlicer", + [string]$OutputPath = "build/OrcaSlicer_Windows_MSIX.msix", + [string]$StagingDir = "", + [switch]$StageOnly, + [string]$IdentityName = "OrcaSlicer.OrcaSlicer", + [string]$Publisher = "CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82", + [string]$PublisherDisplayName = "OrcaSlicer" +) +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent + +# MSIX version = MAJOR.MINOR.PATCH.0 from the SoftFever_VERSION semver triplet +# (Store requires the revision field to be 0). +$versionContent = Get-Content (Join-Path $repoRoot 'version.inc') -Raw +if ($versionContent -notmatch 'set\(SoftFever_VERSION "(\d+)\.(\d+)\.(\d+)') { + throw "Could not parse SoftFever_VERSION from version.inc" +} +$msixVersion = "$($Matches[1]).$($Matches[2]).$($Matches[3]).0" +Write-Output "MSIX version: $msixVersion" + +if (-not (Test-Path (Join-Path $InstallDir 'orca-slicer.exe'))) { + throw "orca-slicer.exe not found in '$InstallDir' - build the install tree first" +} + +if ([string]::IsNullOrEmpty($StagingDir)) { + $StagingDir = Join-Path ([System.IO.Path]::GetTempPath()) 'orca-msix-staging' +} +if (Test-Path $StagingDir) { Remove-Item $StagingDir -Recurse -Force } +New-Item -ItemType Directory -Force $StagingDir | Out-Null + +Copy-Item -Path (Join-Path $InstallDir '*') -Destination $StagingDir -Recurse +Copy-Item -Path (Join-Path $PSScriptRoot 'assets') -Destination (Join-Path $StagingDir 'Assets') -Recurse + +$manifest = Get-Content (Join-Path $PSScriptRoot 'AppxManifest.xml') -Raw +$manifest = $manifest.Replace('@MSIX_VERSION@', $msixVersion) +$manifest = $manifest.Replace('@MSIX_IDENTITY_NAME@', $IdentityName) +$manifest = $manifest.Replace('@MSIX_PUBLISHER@', $Publisher) +$manifest = $manifest.Replace('@MSIX_PUBLISHER_DISPLAY_NAME@', $PublisherDisplayName) +Set-Content -Path (Join-Path $StagingDir 'AppxManifest.xml') -Value $manifest -Encoding utf8 + +if ($StageOnly) { + Write-Output "Staged loose layout at: $StagingDir" + return +} + +$makeappx = Get-ChildItem "${env:ProgramFiles(x86)}\Windows Kits\10\bin\10.*\x64\makeappx.exe" -ErrorAction SilentlyContinue | + Sort-Object { [version]$_.Directory.Parent.Name } -Descending | + Select-Object -First 1 -ExpandProperty FullName +if (-not $makeappx) { + throw "makeappx.exe not found under '${env:ProgramFiles(x86)}\Windows Kits\10\bin' - install the Windows SDK" +} +Write-Output "Using makeappx: $makeappx" + +& $makeappx pack /d $StagingDir /p $OutputPath /o +if ($LASTEXITCODE -ne 0) { throw "makeappx pack failed with exit code $LASTEXITCODE" } +Write-Output "Packed: $OutputPath" diff --git a/scripts/msix/generate_assets.ps1 b/scripts/msix/generate_assets.ps1 new file mode 100644 index 0000000000..52071cb7be --- /dev/null +++ b/scripts/msix/generate_assets.ps1 @@ -0,0 +1,56 @@ +# Generates the MSIX package logo assets from the master vector logo +# (resources\images\OrcaSlicer_gradient_circle.svg). Each PNG is rendered from +# the SVG at its exact target size (true per-size vector rasterization, not +# downscaled from one bitmap), preserving alpha transparency in the corners +# outside the circle (the manifest uses BackgroundColor="transparent"). +# +# Run once locally on Windows (re-run only if the logo changes), then commit +# the PNGs in assets/. CI never runs this script. +# +# Prerequisite: Python 3 with the resvg-py package (pip install resvg-py). +# It bundles the resvg SVG renderer, needed because the master SVG uses +# gradients with alpha-fade stops that System.Drawing cannot rasterize. +param( + [string]$Python = 'python' +) +$ErrorActionPreference = 'Stop' + +$repoRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent +$source = Join-Path $repoRoot 'resources\images\OrcaSlicer_gradient_circle.svg' +$outDir = Join-Path $PSScriptRoot 'assets' +New-Item -ItemType Directory -Force $outDir | Out-Null + +$sizes = [ordered]@{ + 'Square150x150Logo.png' = 150 + 'Square44x44Logo.png' = 44 + 'Square44x44Logo.targetsize-44_altform-unplated.png' = 44 + 'StoreLogo.png' = 50 +} + +$py = @' +import sys +from pathlib import Path + +import resvg_py + +svg, out_dir = sys.argv[1], Path(sys.argv[2]) +for spec in sys.argv[3:]: + name, px = spec.rsplit('=', 1) + px = int(px) + data = resvg_py.svg_to_bytes(svg_path=svg, width=px, height=px) + (out_dir / name).write_bytes(bytes(data)) + print(f'Wrote {name} ({px}x{px})') +'@ + +$renderScript = Join-Path $env:TEMP 'orca_msix_render.py' +Set-Content -Path $renderScript -Value $py -Encoding utf8 +try { + $specs = foreach ($name in $sizes.Keys) { "$name=$($sizes[$name])" } + & $Python $renderScript $source $outDir @specs + if ($LASTEXITCODE -ne 0) { + throw 'resvg render failed. Is resvg-py installed? (pip install resvg-py)' + } +} +finally { + Remove-Item $renderScript -ErrorAction SilentlyContinue +} diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 53c987fabb..4b35274867 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2859,7 +2859,11 @@ bool GUI_App::on_init_inner() switch (dialog.ShowModal()) { case wxID_YES: - wxLaunchDefaultBrowser(version_info.url); + // Store builds get updates from the Microsoft Store, not the GitHub release page. + if (is_running_in_msix()) + open_ms_store_product_page(); + else + wxLaunchDefaultBrowser(version_info.url); break; case wxID_NO: break; @@ -9112,6 +9116,10 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t void GUI_App::associate_files(std::wstring extend) { #ifdef WIN32 + // MSIX: shell integration is declared in the package manifest; registry + // writes from a packaged process are virtualized and invisible to the shell. + if (is_running_in_msix()) + return; wchar_t app_path[MAX_PATH]; ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); @@ -9137,6 +9145,8 @@ void GUI_App::associate_files(std::wstring extend) void GUI_App::disassociate_files(std::wstring extend) { #ifdef WIN32 + if (is_running_in_msix()) + return; wchar_t app_path[MAX_PATH]; ::GetModuleFileNameW(nullptr, app_path, sizeof(app_path)); @@ -9188,6 +9198,8 @@ bool GUI_App::check_url_association(std::wstring url_prefix, std::wstring& reg_b void GUI_App::associate_url(std::wstring url_prefix) { #ifdef WIN32 + if (is_running_in_msix()) + return; boost::filesystem::path binary_path(boost::filesystem::canonical(boost::dll::program_location())); wxString wbinary = from_path(binary_path); BOOST_LOG_TRIVIAL(info) << "Downloader registration: Path of binary: " << wbinary.ToUTF8().data(); @@ -9213,6 +9225,8 @@ void GUI_App::associate_url(std::wstring url_prefix) void GUI_App::disassociate_url(std::wstring url_prefix) { #ifdef WIN32 + if (is_running_in_msix()) + return; wxRegKey key_full(wxRegKey::HKCU, "Software\\Classes\\" + url_prefix + "\\shell\\open\\command"); if (!key_full.Exists()) { return; diff --git a/src/slic3r/GUI/GUI_Utils.cpp b/src/slic3r/GUI/GUI_Utils.cpp index a16d9916a6..697eefea0b 100644 --- a/src/slic3r/GUI/GUI_Utils.cpp +++ b/src/slic3r/GUI/GUI_Utils.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "libslic3r/Config.hpp" @@ -171,6 +172,42 @@ template typename F::FN winapi_get_function(const wchar_t *dll, const c } #endif +bool is_running_in_msix() +{ +#ifdef _WIN32 + // The package identity APIs are Win8+ - resolved dynamically so the exe still loads on Win7 + // (same treatment as the DPI APIs below). Null-buffer probe: returns ERROR_INSUFFICIENT_BUFFER + // when packaged, APPMODEL_ERROR_NO_PACKAGE when running unpackaged. + struct GetCurrentPackageFullName_t { typedef LONG (WINAPI *FN)(UINT32 *length, PWSTR full_name); }; + static const bool packaged = []() { + auto fn = winapi_get_function(L"Kernel32.dll", "GetCurrentPackageFullName"); + UINT32 length = 0; + return fn != nullptr && fn(&length, nullptr) != APPMODEL_ERROR_NO_PACKAGE; + }(); + return packaged; +#else + return false; +#endif +} + +void open_ms_store_product_page() +{ +#ifdef _WIN32 + struct GetCurrentPackageFamilyName_t { typedef LONG (WINAPI *FN)(UINT32 *length, PWSTR family_name); }; + static auto fn = winapi_get_function(L"Kernel32.dll", "GetCurrentPackageFamilyName"); + if (fn == nullptr) + return; + UINT32 length = 0; + if (fn(&length, nullptr) != ERROR_INSUFFICIENT_BUFFER) + return; + std::wstring family_name(length, L'\0'); + if (fn(&length, family_name.data()) != ERROR_SUCCESS) + return; + family_name.resize(length > 0 ? length - 1 : 0); // drop the terminating null + wxLaunchDefaultBrowser(wxString(L"ms-windows-store://pdp/?PFN=") + family_name.c_str()); +#endif +} + // If called with nullptr, a DPI for the primary monitor is returned. int get_dpi_for_window(const wxWindow *window) { diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp index e50c9254a9..d6767d3310 100644 --- a/src/slic3r/GUI/GUI_Utils.hpp +++ b/src/slic3r/GUI/GUI_Utils.hpp @@ -67,6 +67,10 @@ wxDECLARE_EVENT(EVT_VOLUME_DETACHED, VolumeDetachedEvent); wxTopLevelWindow* find_toplevel_parent(wxWindow *window); wxString format_nozzle_diameter(float diameter); +// True when running inside an MSIX package (Microsoft Store build); always false on non-Windows. +bool is_running_in_msix(); +// Opens the Microsoft Store product page for the current package. No-op when not packaged. +void open_ms_store_product_page(); void on_window_geometry(wxTopLevelWindow *tlw, std::function callback); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 1e6b1f6558..ef3d8fcee5 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -1846,6 +1846,26 @@ void PreferencesDialog::create_items() //// ASSOCIATE TAB ///////////////////////////////////// #ifdef _WIN32 + // MSIX: associations are declared in the package manifest and defaults are + // managed by Windows Settings; the runtime registry toggles below cannot work. + // Show a minimal page that sends the user to Windows' Default Apps settings instead. + if (is_running_in_msix()) { + m_pref_tabs->AppendItem(_L("Associate")); + f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); + g_sizer = f_sizers.back(); + g_sizer->AddGrowableCol(0, 1); + + g_sizer->Add(create_item_title(_L("Associate files to OrcaSlicer")), 1, wxEXPAND); + + auto item_open_default_apps = create_item_button( + _L("File associations for the Microsoft Store version are managed by Windows Settings."), + _L("Open Windows Default Apps Settings"), "", "", + []() { wxLaunchDefaultBrowser("ms-settings:defaultapps"); }); + g_sizer->Add(item_open_default_apps); + + g_sizer->AddSpacer(FromDIP(10)); + sizer_page->Add(g_sizer, 0, wxEXPAND); + } else { m_pref_tabs->AppendItem(_L("Associate")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); @@ -1880,6 +1900,7 @@ void PreferencesDialog::create_items() g_sizer->AddSpacer(FromDIP(10)); sizer_page->Add(g_sizer, 0, wxEXPAND); + } #endif // _WIN32 ////////////////////////// diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 3dd87e8626..84546a941d 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -5,6 +5,7 @@ #include "libslic3r/Thread.hpp" #include "GUI.hpp" #include "GUI_App.hpp" +#include "GUI_Utils.hpp" #include "GUI_Preview.hpp" #include "MainFrame.hpp" #include "format.hpp" @@ -252,7 +253,9 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_text_up_info = new Label(this, Label::Head_14, wxEmptyString, LB_AUTO_WRAP); m_text_up_info->SetForegroundColour(wxColour(0x26, 0x2E, 0x30)); - auto github_link = new HyperLink(this, _L("Check on Github"), "", LB_AUTO_WRAP); + // Store builds get updates from the Microsoft Store: wxID_YES opens the Store + // product page there (see the EVT_SLIC3R_VERSION_ONLINE handler) instead of GitHub. + auto github_link = new HyperLink(this, is_running_in_msix() ? _L("Check on Microsoft Store") : _L("Check on Github"), "", LB_AUTO_WRAP); github_link->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { EndModal(wxID_YES); }); @@ -302,7 +305,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) auto sizer_button = new wxBoxSizer(wxHORIZONTAL); - m_button_download = new Button(this, _L("Download")); + m_button_download = new Button(this, is_running_in_msix() ? _L("Open Microsoft Store") : _L("Download")); m_button_download->SetStyle(ButtonStyle::Confirm, ButtonType::Choice); m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { @@ -479,7 +482,10 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve // else { //m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); m_simplebook_release_note->SetSelection(1); - m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version)); + if (is_running_in_msix()) + m_text_up_info->SetLabel(wxString::Format(_L("New version available: %s. Please update OrcaSlicer from the Microsoft Store."), version)); + else + m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version)); auto data_buf_in = release_note.utf8_str(); auto bg_color = StateColor::darkModeColorFor(wxColour("#FFFFFF")).GetAsString(); auto fg_color = StateColor::darkModeColorFor(wxColour("#262E30")).GetAsString(); From d641ca598a9780808752f7c0f26c3d6e8afc58b5 Mon Sep 17 00:00:00 2001 From: foXaCe Date: Thu, 11 Jun 2026 22:10:31 +0200 Subject: [PATCH 08/20] i18n(fr): fix untranslated UI strings, extract hardcoded ones, complete French catalog (#14164) --- localization/i18n/OrcaSlicer.pot | 243 +++++ localization/i18n/fr/OrcaSlicer_fr.po | 882 ++++++++++++++---- localization/i18n/list.txt | 21 + src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp | 5 +- src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp | 7 +- .../GUI/Gizmos/GLGizmoMmuSegmentation.hpp | 7 +- src/slic3r/GUI/PartSkipDialog.cpp | 2 +- src/slic3r/GUI/Plater.cpp | 4 +- src/slic3r/GUI/PrintHostDialogs.cpp | 2 +- src/slic3r/GUI/PrinterCloudAuthDialog.cpp | 2 +- src/slic3r/GUI/SelectMachine.cpp | 2 +- src/slic3r/GUI/SendToPrinter.cpp | 8 +- src/slic3r/GUI/StatusPanel.cpp | 4 +- src/slic3r/GUI/UpgradePanel.cpp | 4 +- src/slic3r/Utils/3DPrinterOS.cpp | 16 +- src/slic3r/Utils/AstroBox.cpp | 2 +- src/slic3r/Utils/Duet.cpp | 8 +- src/slic3r/Utils/ElegooLink.cpp | 38 +- src/slic3r/Utils/FixModelByCgal.cpp | 16 +- src/slic3r/Utils/FlashAir.cpp | 6 +- src/slic3r/Utils/MKS.cpp | 2 +- src/slic3r/Utils/OctoPrint.cpp | 10 +- src/slic3r/Utils/Repetier.cpp | 2 +- 23 files changed, 1028 insertions(+), 265 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index bd6e3efff5..0fb728067c 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -20064,3 +20064,246 @@ msgstr "" #: resources/data/hints.ini: [hint:Avoid warping] msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping?" msgstr "" + +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + +msgid "Type to filter..." +msgstr "" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "An unexpected error occurred" +msgstr "" + +msgid "The download has failed" +msgstr "" + +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "Beta" +msgstr "" + +msgid "Sending failed, please try again!" +msgstr "" + +msgid "Failed to create the temporary folder." +msgstr "" + +msgid "PresetBundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "Error code: %1%" +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Error saving session to file" +msgstr "" + +msgid "Error during file upload" +msgstr "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 2a75ed6efe..80e0be6884 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -108,7 +108,7 @@ msgid "Model:" msgstr "Modèle :" msgid "Serial:" -msgstr "N° de série:" +msgstr "Numéro de série :" msgid "Version:" msgstr "Version :" @@ -135,7 +135,7 @@ msgid "Tool type" msgstr "Type d'outil" msgid "Gap fill" -msgstr "Remplir les espaces" +msgstr "Remplissage des espaces" msgid "Reset direction" msgstr "Réinitialiser la direction" @@ -653,7 +653,7 @@ msgid "Perform cut" msgstr "Effectuer la coupe" msgid "Warning" -msgstr "Alerte" +msgstr "Avertissement" msgid "Invalid connectors detected" msgstr "Connecteurs invalides détectés" @@ -661,14 +661,14 @@ msgstr "Connecteurs invalides détectés" #, c-format, boost-format msgid "%1$d connector is out of cut contour" msgid_plural "%1$d connectors are out of cut contour" -msgstr[0] "Le connecteur %1$d est hors du contour de la coupe" -msgstr[1] "Les connecteurs %1$d sont hors du contour de la coupe" +msgstr[0] "%1$d connecteur est hors du contour de coupe" +msgstr[1] "%1$d connecteurs sont hors du contour de coupe" #, c-format, boost-format msgid "%1$d connector is out of object" msgid_plural "%1$d connectors are out of object" -msgstr[0] "Le connecteur %1$d est en-dehors de l’objet" -msgstr[1] "Les connecteurs %1$d sont en-dehors de l’objet" +msgstr[0] "%1$d connecteur est en dehors de l’objet" +msgstr[1] "%1$d connecteurs sont en dehors de l’objet" msgid "Some connectors are overlapped" msgstr "Certains connecteurs se chevauchent" @@ -805,7 +805,9 @@ msgstr "Angle" msgid "" "Embedded\n" "depth" -msgstr "Profondeur intégrée" +msgstr "" +"Profondeur\n" +"intégrée" msgid "Input text" msgstr "Texte entré" @@ -1668,7 +1670,7 @@ msgstr "Machine" msgid "Configuration package was loaded, but some values were not recognized." msgstr "" -"Le package de configuration a été chargé, mais certaines valeurs n'ont pas " +"Le paquet de configuration a été chargé, mais certaines valeurs n’ont pas " "été reconnues." #, boost-format @@ -1801,7 +1803,7 @@ msgstr "" "Voulez-vous continuer ?" msgid "Remember my choice" -msgstr "Se souvenir de mon choix" +msgstr "Mémoriser mon choix" #, c-format, boost-format msgid "Click to download new version in default browser: %s" @@ -1887,12 +1889,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Vous êtes actuellement en mode furtif. Pour vous connecter au cloud, vous " +"devez d’abord désactiver le mode furtif." msgid "Stealth Mode" -msgstr "" +msgstr "Mode furtif" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Quitter le mode furtif" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1914,20 +1918,31 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflit de synchronisation cloud : ce préréglage a une version plus récente " +"dans OrcaCloud.\n" +"Récupérer télécharge la copie du cloud. Forcer l’envoi l’écrase avec votre " +"préréglage local." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflit de synchronisation cloud : un préréglage de ce nom existe déjà dans " +"OrcaCloud.\n" +"Récupérer télécharge la copie du cloud. Forcer l’envoi l’écrase avec votre " +"préréglage local." msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Forcer l’envoi écrasera la copie du cloud avec vos modifications locales du " +"préréglage.\n" +"Voulez-vous continuer ?" msgid "Resolve cloud sync conflict" -msgstr "" +msgstr "Résoudre le conflit de synchronisation cloud" msgid "Retrieving printer information, please try again later." msgstr "" @@ -2022,8 +2037,8 @@ msgid "" "newly created user presets can only be used locally." msgstr "" "Le nombre de préréglages utilisateur mis en cache dans le nuage a dépassé la " -"limite supérieure. Les préréglages utilisateur \n" -"nouvellement créés ne peuvent être utilisés que localement." +"limite supérieure. Les préréglages utilisateur nouvellement créés ne peuvent " +"être utilisés que localement." msgid "Sync user presets" msgstr "Synchroniser les réglages prédéfinis de l’utilisateur" @@ -2247,7 +2262,7 @@ msgid "Orca Cube" msgstr "Cube Orca" msgid "OrcaSliced Combo" -msgstr "" +msgstr "OrcaSliced Combo" msgid "Orca Tolerance Test" msgstr "Test de tolérance Orca" @@ -2642,8 +2657,8 @@ msgstr[1] "%1$d erreur réparée" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." msgid_plural "Error: %1$d non-manifold edges." -msgstr[0] "Erreur : %1$d arête non multiple." -msgstr[1] "Erreur : %1$d arête non multiple." +msgstr[0] "Erreur : %1$d arête non-manifold." +msgstr[1] "Erreur : %1$d arêtes non-manifold." msgid "Remaining errors" msgstr "Erreurs restantes" @@ -2651,8 +2666,8 @@ msgstr "Erreurs restantes" #, c-format, boost-format msgid "%1$d non-manifold edge" msgid_plural "%1$d non-manifold edges" -msgstr[0] "%1$d arête non multiple" -msgstr[1] "%1$d arête non multiple" +msgstr[0] "%1$d arête non-manifold" +msgstr[1] "%1$d arêtes non-manifold" msgid "Click the icon to repair model object" msgstr "Cliquer sur l'icône pour réparer l'objet modèle" @@ -3146,15 +3161,15 @@ msgid "" "Cooling mode is suitable for printing PLA/PETG/TPU materials and filters the " "chamber air." msgstr "" -"Le mode refroidissement est adapté à l'impression de matériaux PLA/PETG/TPU " -"et filtre l'air de la chambre." +"Le mode refroidissement est adapté à l’impression de matériaux PLA/PETG/TPU " +"et filtre l’air du caisson." msgid "" "Heating mode is suitable for printing ABS/ASA/PC/PA materials and circulates " "filters the chamber air." msgstr "" -"Le mode chauffage est adapté à l'impression de matériaux ABS/ASA/PC/PA et " -"filtre l'air en circulation dans la chambre." +"Le mode chauffage est adapté à l’impression de matériaux ABS/ASA/PC/PA et " +"filtre l’air en circulation dans le caisson." msgid "" "Strong cooling mode is suitable for printing PLA/TPU materials. In this " @@ -3237,8 +3252,8 @@ msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." msgstr "" -"Tous les objets sélectionnés sont sur la plaque verrouillée,\n" -"nous ne pouvons pas faire d'auto-arrangement sur ces objets." +"Tous les objets sélectionnés sont sur une plaque verrouillée.\n" +"Impossible d’agencer automatiquement ces objets." msgid "No arrangeable objects are selected." msgstr "Aucun objet réorganisable n'est sélectionné." @@ -3247,11 +3262,11 @@ msgid "" "This plate is locked.\n" "Cannot auto-arrange on this plate." msgstr "" -"Cette plaque est verrouillée,\n" -"nous ne pouvons pas faire d'auto-arrangement sur cette plaque." +"Cette plaque est verrouillée.\n" +"Impossible d’agencer automatiquement sur cette plaque." msgid "Arranging..." -msgstr "Organiser…" +msgstr "Agencement…" msgid "Arranging" msgstr "Agencement" @@ -3295,8 +3310,8 @@ msgid "" "This plate is locked.\n" "Cannot auto-orient on this plate." msgstr "" -"Cette plaque est verrouillée, on ne peut pas faire d'auto-orientation sur " -"cette plaque." +"Cette plaque est verrouillée.\n" +"Impossible d’orienter automatiquement sur cette plaque." msgid "Orienting..." msgstr "Orienter…" @@ -3335,8 +3350,7 @@ msgid "Please check the printer network connection." msgstr "Vérifiez la connexion réseau de l'imprimante." msgid "Abnormal print file data. Please slice again." -msgstr "" -"Données de fichier d'impression anormales, veuillez redécouvre le fichier." +msgstr "Données du fichier d’impression anormales. Veuillez le redécouper." msgid "Task canceled." msgstr "Tâche annulée." @@ -3671,7 +3685,9 @@ msgstr "Fermer" msgid "" "Nozzle\n" "Temperature" -msgstr "Température de la buse" +msgstr "" +"Température\n" +"de la buse" msgid "max" msgstr "max" @@ -3779,7 +3795,7 @@ msgid "mm³" msgstr "mm³" msgid "Start calibration" -msgstr "Démarrer" +msgstr "Démarrer la calibration" msgid "Next" msgstr "Suivant" @@ -3969,8 +3985,8 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Lorsque le filament actuel est épuisé, l'imprimante\n" -"continue d'imprimer dans l'ordre suivant." +"Lorsque le filament actuel est épuisé, l’imprimante continue d’imprimer dans " +"l’ordre suivant." msgid "Identical filament: same brand, type and color." msgstr "Filament identique : même marque, type et couleur." @@ -4276,8 +4292,9 @@ msgid "" "Error message: %1%.\n" "Source file %2%." msgstr "" -"Échec de l'enregistrement du fichier gcode. Message d'erreur : %1%. Fichier " -"source %2%." +"Échec de l’enregistrement du fichier G-code.\n" +"Message d’erreur : %1%.\n" +"Fichier source %2%." msgid "Copying of the temporary G-code to the output G-code failed" msgstr "La copie du G-code temporaire vers le G-code de sortie a échoué" @@ -4384,7 +4401,8 @@ msgid "" msgstr "" "La buse peut être bloquée lorsque la température est hors de la plage " "recommandée.\n" -"Veuillez vous assurer d'utiliser la température pour imprimer.\n" +"Veuillez confirmer l’utilisation de cette température pour imprimer.\n" +"\n" #, c-format, boost-format msgid "" @@ -4414,12 +4432,16 @@ msgstr "" msgid "" "Too small layer height.\n" "Reset to 0.2." -msgstr "Hauteur de couche trop petite. Réinitialiser à 0,2" +msgstr "" +"Hauteur de couche trop petite.\n" +"Réinitialisée à 0,2." msgid "" "Too small ironing spacing.\n" "Reset to 0.1." -msgstr "Espacement de lissage trop petit. Réinitialiser à 0.1" +msgstr "" +"Espacement de lissage trop petit.\n" +"Réinitialisé à 0,1." msgid "" "Zero initial layer height is invalid.\n" @@ -4438,10 +4460,13 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"Ce paramètre n'est utilisé que pour le réglage de la taille du modèle avec " -"une petite valeur dans certains cas. Par exemple, lorsque la taille du " -"modèle présente une petite erreur et est difficile à assembler. Pour un " -"réglage de grande taille, veuillez utiliser la fonction d'échelle de modèle. " +"Ce paramètre n’est utilisé que pour le réglage de la taille du modèle avec " +"une petite valeur dans certains cas.\n" +"Par exemple, lorsque la taille du modèle présente une petite erreur et est " +"difficile à assembler.\n" +"Pour un réglage de grande taille, veuillez utiliser la fonction de mise à " +"l’échelle du modèle.\n" +"\n" "La valeur sera remise à 0." msgid "" @@ -4451,10 +4476,12 @@ msgid "" "\n" "The value will be reset to 0." msgstr "" -"Une trop grande compensation de la patte d'éléphant est déraisonnable. Si " -"vous avez vraiment un effet de patte d'éléphant important, veuillez vérifier " -"d'autres paramètres. Par exemple, si la température du plateau est trop " -"élevée. La valeur sera remise à 0." +"Une compensation de patte d’éléphant trop importante est déraisonnable.\n" +"Si l’effet de patte d’éléphant est vraiment marqué, veuillez vérifier " +"d’autres paramètres.\n" +"Par exemple, si la température du plateau est trop élevée.\n" +"\n" +"La valeur sera remise à 0." msgid "" "Alternate extra wall does't work well when ensure vertical shell thickness " @@ -4575,7 +4602,7 @@ msgid "Printing" msgstr "Impression" msgid "Auto bed leveling" -msgstr "Niveau de plateau automatique" +msgstr "Nivellement automatique du plateau" msgid "Heatbed preheating" msgstr "Préchauffage du plateau chauffant" @@ -4656,7 +4683,7 @@ msgid "Pause (low speed of the heatbreak fan)" msgstr "Pause (vitesse basse du ventilateur du heatbreak)" msgid "Pause (chamber temperature control problem)" -msgstr "Pause (problème de contrôle de la température de la chambre)" +msgstr "Pause (problème de contrôle de la température du caisson)" msgid "Cooling chamber" msgstr "Refroidissement du caisson" @@ -4689,7 +4716,7 @@ msgid "Measure motion accuracy" msgstr "Mesurer la précision de mouvement" msgid "Nozzle offset calibration" -msgstr "Calibration du décalage de buse" +msgstr "Calibration du décalage de la buse" msgid "High temperature auto bed leveling" msgstr "Nivellement automatique du plateau à haute température" @@ -4719,7 +4746,7 @@ msgid "Auto bed leveling -phase 2" msgstr "Nivellement automatique du plateau - phase 2" msgid "Heating chamber" -msgstr "Chauffage de la chambre" +msgstr "Chauffage du caisson" msgid "Cooling heatbed" msgstr "Refroidissement du plateau chauffant" @@ -4761,7 +4788,7 @@ msgid "Verification failed." msgstr "Échec de la vérification." msgid "Update failed." -msgstr "Mise à jour a échoué." +msgstr "La mise à jour a échoué." msgid "Timelapse is not supported on this printer." msgstr "Le timelapse n'est pas pris en charge sur cette imprimante." @@ -4792,10 +4819,9 @@ msgid "" "Please wait until the chamber temperature drops below %d℃. You may open the " "front door or enable fans to cool down." msgstr "" -"La température de la chambre est trop élevée, ce qui peut ramollir le " -"filament. Veuillez attendre que la température de la chambre descende en " -"dessous de %d℃. Vous pouvez ouvrir la porte avant ou activer les " -"ventilateurs pour refroidir." +"La température du caisson est trop élevée, ce qui peut ramollir le filament. " +"Veuillez attendre que la température du caisson descende en dessous de %d℃. " +"Vous pouvez ouvrir la porte avant ou activer les ventilateurs pour refroidir." #, c-format, boost-format msgid "" @@ -4810,9 +4836,9 @@ msgid "" "45℃. In order to avoid extruder clogging, low temperature filament(PLA/PETG/" "TPU) is not allowed to be loaded." msgstr "" -"La température actuelle ou cible de la chambre dépasse 45℃. Afin d'éviter le " -"bouchage de l'extrudeur, le chargement de filament basse température (PLA/" -"PETG/TPU) n'est pas autorisé." +"La température actuelle ou cible du caisson dépasse 45℃. Afin d’éviter le " +"bouchage de l’extrudeur, le chargement de filament basse température " +"(PLA/PETG/TPU) n’est pas autorisé." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder. In order " @@ -4820,7 +4846,7 @@ msgid "" msgstr "" "Un filament basse température (PLA/PETG/TPU) est chargé dans l'extrudeur. " "Afin d'éviter le bouchage de l'extrudeur, il n'est pas permis de régler la " -"température de la chambre." +"température du caisson." msgid "" "When you set the chamber temperature below 40℃, the chamber temperature " @@ -5021,7 +5047,10 @@ msgid "" "Is it %s%% or %s %s?\n" "YES for %s%%, \n" "NO for %s %s." -msgstr "Est-ce %s%% ou %s %s ? OUI pour %s%%, NON pour %s %s." +msgstr "" +"Est-ce %s%% ou %s %s ?\n" +"OUI pour %s%%, \n" +"NON pour %s %s." #, boost-format msgid "" @@ -5052,7 +5081,7 @@ msgid "Invalid format. Expected vector format: \"%1%\"" msgstr "Format invalide. Format vectoriel attendu : \"%1%\"" msgid "N/A" -msgstr "N / A" +msgstr "N/A" msgid "Pick" msgstr "Sélectionner" @@ -5061,7 +5090,7 @@ msgid "Summary" msgstr "Résumé" msgid "Layer Height" -msgstr "Hauteur de la couche" +msgstr "Hauteur de couche" msgid "Line Width" msgstr "Largeur de ligne" @@ -5386,7 +5415,7 @@ msgid "Filament Changes" msgstr "Changements de filaments" msgid "Options" -msgstr "Choix" +msgstr "Options" msgid "Extruder" msgstr "Extrudeur" @@ -5669,7 +5698,7 @@ msgid "Outline" msgstr "Contour" msgid "Realistic View" -msgstr "" +msgstr "Vue réaliste" msgid "Perspective" msgstr "Perspective" @@ -5708,7 +5737,7 @@ msgid "Assembly Info" msgstr "Informations sur l'assemblage" msgid "Volume:" -msgstr "Le volume:" +msgstr "Volume :" msgid "Size:" msgstr "Taille:" @@ -5978,7 +6007,7 @@ msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" msgid "Troubleshoot Center" -msgstr "" +msgstr "Centre de dépannage" msgid "Open Network Test" msgstr "Ouvrir le Test de Réseau" @@ -6674,7 +6703,7 @@ msgid "Play" msgstr "Lecture" msgid "Open Folder" -msgstr "Ouvrir le Dossier" +msgstr "Ouvrir le dossier" msgid "Download finished" msgstr "Téléchargement terminé" @@ -6993,14 +7022,14 @@ msgstr "" msgid "Chamber temperature cannot be changed in cooling mode while printing." msgstr "" -"La température de la chambre ne peut pas être modifiée en mode " -"refroidissement pendant l'impression." +"La température du caisson ne peut pas être modifiée en mode refroidissement " +"pendant l’impression." msgid "" "If the chamber temperature exceeds 40℃, the system will automatically switch " "to heating mode. Please confirm whether to switch." msgstr "" -"Si la température de la chambre dépasse 40℃, le système passera " +"Si la température du caisson dépasse 40℃, le système passera " "automatiquement en mode chauffage. Veuillez confirmer si vous souhaitez " "commuter." @@ -7309,7 +7338,7 @@ msgid "Goto download page." msgstr "Allez sur la page de téléchargement." msgid "Open Folder." -msgstr "Ouvrir un répertoire." +msgstr "Ouvrir le dossier." msgid "Safely remove hardware." msgstr "Retirez le matériel en toute sécurité." @@ -7323,8 +7352,8 @@ msgstr[1] " %1$d objets ont des supports personnalisés." #, c-format, boost-format msgid "%1$d Object has color painting." msgid_plural "%1$d Objects have color painting." -msgstr[0] "%1$d L'objet est mis en couleur." -msgstr[1] "%1$d L'objets sont mis en couleur." +msgstr[0] "%1$d objet est mis en couleur." +msgstr[1] "%1$d objets sont mis en couleur." #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." @@ -7358,7 +7387,7 @@ msgid "Error:" msgstr "Erreur:" msgid "Warning:" -msgstr "Avertissement:" +msgstr "Avertissement :" msgid "Exported successfully" msgstr "Exportation réussie." @@ -7367,10 +7396,10 @@ msgid "Model file downloaded." msgstr "Modèle téléchargé." msgid "Pull" -msgstr "" +msgstr "Récupérer" msgid "Force push" -msgstr "" +msgstr "Forcer l’envoi" msgid "Shared profiles may be available for this printer." msgstr "Des profils partagés peuvent être disponibles pour cette imprimante." @@ -7426,7 +7455,9 @@ msgstr "Version d'OpenGL non prise en charge" msgid "" "Unable to load shaders:\n" "%s" -msgstr "Impossible de charger les shaders : %s" +msgstr "" +"Impossible de charger les shaders :\n" +"%s" msgid "Error loading shaders" msgstr "Erreur lors du chargement des shaders" @@ -8028,8 +8059,9 @@ msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"L'objet du fichier %s est trop petit, et peut-être en mètres ou en pouces. " -"Voulez-vous mettre à l'échelle en millimètres ?" +"L’objet du fichier %s est trop petit, et est peut-être en mètres ou en " +"pouces.\n" +" Voulez-vous le mettre à l’échelle en millimètres ?" msgid "Object too small" msgstr "Objet trop petit" @@ -8269,7 +8301,7 @@ msgstr "" "dans d'autres programmes." msgid "Save project" -msgstr "Sauvegarder le projet" +msgstr "Enregistrer le projet" msgid "Importing Model" msgstr "Importation du modèle" @@ -8444,10 +8476,10 @@ msgstr "" "Seules les parties positives seront exportées." msgid "Flashforge host is not available." -msgstr "" +msgstr "L’hôte Flashforge n’est pas disponible." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "Impossible de se connecter à l’imprimante Flashforge." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -8458,17 +8490,15 @@ msgid "Upload and Print" msgstr "Envoyer & Imprimer" msgid "Abnormal print file data. Please slice again" -msgstr "" -"Données de fichier d'impression anormales. Veuillez découper le fichier à " -"nouveau" +msgstr "Données du fichier d’impression anormales. Veuillez le redécouper" msgid "" "Print By Object: \n" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Imprimer par objet :\n" -"Nous vous suggérons d'utiliser la disposition automatique pour éviter les " -"collisions lors de l'impression." +"Nous vous suggérons d’utiliser l’agencement automatique pour éviter les " +"collisions lors de l’impression." msgid "Send G-code" msgstr "Envoyer le G-code" @@ -8577,10 +8607,9 @@ msgid "" "still want to do this print job, please set this filament's bed temperature " "to non-zero." msgstr "" -"La plaque% d : %s n'est pas suggéré pour l'utilisation du filament " -"d'impression %s(%s). Si vous souhaitez toujours effectuer ce travail " -"d'impression, veuillez régler la température du plateau de ce filament sur " -"un nombre différent de zéro." +"Plaque %d : il n’est pas recommandé d’utiliser %s pour imprimer le filament " +"%s (%s). Si vous souhaitez tout de même lancer cette impression, veuillez " +"définir une température de plateau différente de zéro pour ce filament." msgid "" "Currently, the object configuration form cannot be used with a multiple-" @@ -8621,8 +8650,8 @@ msgstr "Sélection de la langue" msgid "Switching application language while some presets are modified." msgstr "" -"Changement de langue d’application alors que certaines présélections sont " -"modifiées." +"Changement de langue de l’application alors que certains préréglages sont " +"modifiés." msgid "Asia-Pacific" msgstr "Asie-Pacifique" @@ -9042,22 +9071,22 @@ msgid "Graphics" msgstr "Graphismes" msgid "Phong shading" -msgstr "" +msgstr "Ombrage de Phong" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Utilise l’ombrage de Phong dans la vue réaliste." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "Occlusion ambiante SSAO" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Applique le SSAO dans la vue réaliste." msgid "Shadows" -msgstr "" +msgstr "Ombres" msgid "Renders cast shadows on the plate in realistic view." -msgstr "" +msgstr "Affiche les ombres portées sur la plaque dans la vue réaliste." msgid "Anti-aliasing" msgstr "Anticrénelage" @@ -9139,12 +9168,17 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Ceci désactive toutes les fonctionnalités cloud, y compris la " +"synchronisation des profils Orca Cloud. Les utilisateurs qui préfèrent " +"travailler entièrement hors ligne peuvent activer cette option.\n" +"Remarque : lorsque le mode furtif est activé, vos profils utilisateur ne " +"sont pas sauvegardés dans Orca Cloud." msgid "Hide login side panel" -msgstr "" +msgstr "Masquer le panneau latéral de connexion" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Masque le panneau latéral de connexion sur la page d’accueil." msgid "Network test" msgstr "Test du réseau" @@ -9313,12 +9347,15 @@ msgstr "" "Hautement expérimental ! Lent et susceptible de créer des artefacts." msgid "Show unsupported presets" -msgstr "" +msgstr "Afficher les préréglages non pris en charge" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Affiche les préréglages incompatibles ou non pris en charge dans les listes " +"déroulantes d’imprimantes et de filaments. Ces préréglages ne peuvent pas " +"être sélectionnés." msgid "Allow Abnormal Storage" msgstr "Autoriser le stockage anormal" @@ -9387,10 +9424,10 @@ msgid "Rotate view" msgstr "Rotation de la vue" msgid "Pan view" -msgstr "Déplacement de vue" +msgstr "Déplacement de la vue" msgid "Zoom view" -msgstr "Vue agrandie" +msgstr "Zoom de la vue" msgid "Other" msgstr "Autre" @@ -10445,9 +10482,8 @@ msgid "" "Layer height is too small.\n" "It will set to min_layer_height\n" msgstr "" -"La hauteur du calque est trop faible.\n" +"La hauteur de couche est trop faible.\n" "Elle sera définie à min_layer_height\n" -"\n" msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " @@ -10526,7 +10562,7 @@ msgstr "" "Voulez-vous continuer ?" msgid "Detach preset" -msgstr "Détacher la présélection" +msgstr "Détacher le préréglage" msgid "This is a default preset." msgstr "Il s’agit d’un préréglage par défaut." @@ -10556,7 +10592,7 @@ msgid "Additional information:" msgstr "Informations complémentaires :" msgid "vendor" -msgstr "vendeur" +msgstr "fabricant" msgid "printer model" msgstr "modèle d’imprimante" @@ -10680,13 +10716,13 @@ msgid_plural "" "Please remove them, or will beat G-code visualization and printing time " "estimation." msgstr[0] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." +"La ligne suivante %s contient des mots-clés réservés.\n" +"Veuillez la supprimer, sans quoi la visualisation du G-code et l’estimation " +"du temps d’impression seront faussées." msgstr[1] "" -"La ligne suivante %s contient des mots clés réservés. Veuillez le supprimer, " -"ou il battra la visualisation du G-code et l'estimation du temps " -"d'impression." +"Les lignes suivantes %s contiennent des mots-clés réservés.\n" +"Veuillez les supprimer, sans quoi la visualisation du G-code et l’estimation " +"du temps d’impression seront faussées." msgid "Reserved keywords found" msgstr "Mots clés réservés trouvés" @@ -11003,6 +11039,10 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"L’option Rétracter avant essuyage ne peut être qu’à 100 % en mode rétraction " +"firmware.\n" +"\n" +"Faut-il la régler à 100 % pour activer la rétraction firmware ?" msgid "Firmware Retraction" msgstr "Rétraction Firmware" @@ -11222,7 +11262,9 @@ msgstr "" msgid "" "Save the selected options to preset \n" "\"%1%\"." -msgstr "Enregistrez les options sélectionnées dans le préréglage \"%1%\"." +msgstr "" +"Enregistrez les options sélectionnées dans le préréglage \n" +"\"%1%\"." #, boost-format msgid "" @@ -11230,7 +11272,8 @@ msgid "" "\"%1%\"." msgstr "" "Transférez les options sélectionnées vers le préréglage nouvellement " -"sélectionné \"%1%\"." +"sélectionné \n" +"\"%1%\"." #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" @@ -11377,19 +11420,20 @@ msgstr "Mise à jour de la configuration" msgid "A new configuration package is available. Do you want to install it?" msgstr "" -"Un nouveau package de configuration disponible, Voulez-vous l'installer ?" +"Un nouveau paquet de configuration est disponible. Voulez-vous l’installer ?" msgid "the configuration package is incompatible with the current application." msgstr "" -"le package de configuration est incompatible avec l'application actuelle." +"le paquet de configuration est incompatible avec l’application actuelle." #, c-format, boost-format msgid "" "The configuration package is incompatible with the current application.\n" "%s will update the configuration package to allow the application to start." msgstr "" -"Le package de configuration est incompatible avec l'application actuelle. %s " -"mettra à jour le package de configuration, sinon il ne pourra pas démarrer" +"Le paquet de configuration est incompatible avec l’application actuelle.\n" +"%s mettra à jour le paquet de configuration pour permettre à l’application " +"de démarrer." #, c-format, boost-format msgid "Exit %s" @@ -11813,7 +11857,7 @@ msgstr "[Action requise]" msgid "The configuration package is changed in previous Config Guide" msgstr "" -"Le package de configuration est modifié dans le guide de configuration " +"Le paquet de configuration a été modifié dans le guide de configuration " "précédent" msgid "Configuration package changed" @@ -11847,16 +11891,16 @@ msgid "Global shortcuts" msgstr "Raccourcis globaux" msgid "Pan View" -msgstr "Déplacer la vue" +msgstr "Déplacement de la vue" msgid "Rotate View" -msgstr "Pivoter la vue" +msgstr "Rotation de la vue" msgid "Middle mouse button" msgstr "Bouton central de la souris" msgid "Zoom View" -msgstr "Zoomer la vue" +msgstr "Zoom de la vue" msgid "" "Auto orients selected objects or all objects. If there are selected objects, " @@ -12026,7 +12070,7 @@ msgstr "" "Sélectionnez l'objet/la pièce et cliquez avec la souris pour changer le nom" msgid "Objects List" -msgstr "Liste d'objets" +msgstr "Liste des objets" msgid "Vertical slider - Move active thumb Up" msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Haut" @@ -12325,6 +12369,7 @@ msgid "" "\n" msgstr "" "Échec de la génération du G-code pour un G-code personnalisé non valide.\n" +"\n" msgid "Please check the custom G-code or use the default custom G-code." msgstr "" @@ -12778,16 +12823,23 @@ msgstr "La hauteur de la couche ne peut pas dépasser le diamètre de la buse" msgid "Bridge line width must not exceed nozzle diameter" msgstr "" +"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la buse" msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" a été trouvé dans before_layer_change_gcode, mais le G ou le E ne " +"sont pas en majuscules. Veuillez les remplacer par \"G92 E0\" exactement en " +"majuscules." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"\"G92 E0\" a été trouvé dans layer_change_gcode, mais le G ou le E ne sont " +"pas en majuscules. Veuillez les remplacer par \"G92 E0\" exactement en " +"majuscules." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12802,11 +12854,15 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"\"G92 E0\" a été trouvé dans before_layer_change_gcode, ce qui est " +"incompatible avec l’adressage absolu de l’extrudeur." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" +"\"G92 E0\" a été trouvé dans layer_change_gcode, ce qui est incompatible " +"avec l’adressage absolu de l’extrudeur." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -12914,29 +12970,36 @@ msgid "Extruder printable area" msgstr "Zone d'impression de l'extrudeur" msgid "Support parallel printheads" -msgstr "" +msgstr "Prise en charge des têtes d’impression parallèles" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." msgstr "" +"Active les paramètres d’imprimante pour les machines pouvant utiliser " +"plusieurs têtes d’impression en parallèle." msgid "Parallel printheads count" -msgstr "" +msgstr "Nombre de têtes d’impression parallèles" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." msgstr "" +"Définit le nombre de têtes d’impression parallèles pour les machines comme " +"l’imprimante OrangeStorm Giga." msgid "Parallel printheads bed exclude areas" -msgstr "" +msgstr "Zones d’exclusion du plateau pour têtes parallèles" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Liste ordonnée des zones d’exclusion du plateau selon le nombre de têtes " +"parallèles. L’élément 1 s’applique à une tête, l’élément 2 à deux têtes, et " +"ainsi de suite. Laissez un élément vide pour n’exclure aucune zone." msgid "Bed exclude area" msgstr "Zone d'exclusion de plateau" @@ -13084,10 +13147,10 @@ msgstr "" "l'authentification." msgid "Serial Number" -msgstr "" +msgstr "Numéro de série" msgid "Flashforge local API requires the printer serial number." -msgstr "" +msgstr "L’API locale Flashforge nécessite le numéro de série de l’imprimante." msgid "Name of the printer." msgstr "Nom de l'imprimante" @@ -13466,6 +13529,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Remplacement de l’angle des ponts externes.\n" +"Si laissé à zéro, l’angle des ponts est calculé automatiquement pour chaque " +"pont.\n" +"Sinon, l’angle fourni est utilisé selon :\n" +" - les coordonnées absolues\n" +" - les coordonnées absolues + la rotation du modèle : si « Aligner la " +"direction du remplissage sur le modèle » est activé\n" +" - l’angle automatique optimal + cette valeur : si « Angle de pont relatif » " +"est activé\n" +"\n" +"Utilisez 180° pour un angle absolu nul." msgid "Internal bridge infill direction" msgstr "Direction du remplissage du pont interne" @@ -13483,14 +13557,27 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Remplacement de l’angle des ponts internes.\n" +"Si laissé à zéro, l’angle des ponts est calculé automatiquement pour chaque " +"pont.\n" +"Sinon, l’angle fourni est utilisé selon :\n" +" - les coordonnées absolues\n" +" - les coordonnées absolues + la rotation du modèle : si « Aligner la " +"direction du remplissage sur le modèle » est activé\n" +" - l’angle automatique optimal + cette valeur : si « Angle de pont relatif » " +"est activé\n" +"\n" +"Utilisez 180° pour un angle absolu nul." msgid "Relative bridge angle" -msgstr "" +msgstr "Angle de pont relatif" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Lorsque cette option est activée, les valeurs d’angle de pont s’ajoutent à " +"la direction de pont calculée automatiquement au lieu de la remplacer." msgid "External bridge density" msgstr "Densité du pont externe" @@ -13514,6 +13601,26 @@ msgid "" "\n" "Recommended range: Minimum 10% - Maximum 125%." msgstr "" +"Contrôle la densité (espacement) des lignes de ponts externes. La valeur par " +"défaut est 100 %.\n" +"En théorie, 100 % correspond à un pont plein, mais comme les extrusions de " +"pont ont tendance à s’affaisser, 100 % peut ne pas suffire.\n" +"\n" +"- Densité supérieure à 100 % (maximum recommandé 125 %) :\n" +" - Avantages : produit des surfaces de pont plus lisses, car le " +"chevauchement des lignes apporte un soutien supplémentaire pendant " +"l’impression.\n" +" - Inconvénients : peut provoquer une surextrusion, ce qui peut dégrader la " +"qualité des surfaces inférieures et supérieures et augmenter le risque de " +"déformation.\n" +"\n" +"- Densité inférieure à 100 % (minimum 10 %) :\n" +" - Avantages : peut créer une première couche filaire. Plus rapide et mieux " +"refroidie, car l’air circule davantage autour du pont extrudé.\n" +" - Inconvénients : peut entraîner un affaissement et un moins bon état de " +"surface.\n" +"\n" +"Plage recommandée : minimum 10 % – maximum 125 %." msgid "Internal bridge density" msgstr "Densité du pont interne" @@ -13541,6 +13648,31 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Contrôle la densité (espacement) des lignes de ponts internes. La valeur par " +"défaut est 100 %. 100 % correspond à un pont interne plein.\n" +"\n" +"Les ponts internes servent de soutien intermédiaire entre le remplissage et " +"le remplissage plein supérieur, et peuvent fortement influencer la qualité " +"de la surface supérieure.\n" +"\n" +"- Densité supérieure à 100 % (maximum recommandé 125 %) :\n" +" - Avantages : améliore la résistance des ponts internes et le soutien sous " +"les couches supérieures, réduisant l’affaissement et améliorant l’état de la " +"surface supérieure.\n" +" - Inconvénients : augmente la consommation de matériau et le temps " +"d’impression ; une densité excessive peut provoquer une surextrusion et des " +"contraintes internes.\n" +"\n" +"- Densité inférieure à 100 % (minimum 10 %) :\n" +" - Avantages : peut réduire l’effet d’oreiller et améliorer le " +"refroidissement (plus de flux d’air à travers le pont), et peut accélérer " +"l’impression.\n" +" - Inconvénients : peut réduire le soutien interne, augmentant le risque " +"d’affaissement et de défauts de la surface supérieure.\n" +"\n" +"Cette option fonctionne particulièrement bien combinée à l’option de second " +"pont interne au-dessus du remplissage, pour améliorer encore les ponts avant " +"l’extrusion du remplissage plein." msgid "Bridge flow ratio" msgstr "Débit des ponts" @@ -13555,6 +13687,17 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Cette valeur régit l’épaisseur de la couche de pont externe (visible).\n" +"Valeurs supérieures à 1,0 : augmentent la quantité de matériau en conservant " +"l’espacement des lignes. Cela peut améliorer le contact entre lignes et la " +"résistance.\n" +"Valeurs inférieures à 1,0 : réduisent la quantité de matériau en ajustant " +"l’espacement des lignes pour maintenir le contact. Cela peut réduire " +"l’affaissement.\n" +"\n" +"Le débit de pont réellement utilisé est calculé en multipliant cette valeur " +"par le rapport de débit du filament et, s’il est défini, par celui de " +"l’objet." #, c-format, boost-format msgid "" @@ -13566,6 +13709,15 @@ msgid "" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"La largeur de ligne des ponts s’exprime soit en valeur absolue, soit en " +"pourcentage du diamètre de la buse active (les pourcentages sont calculés à " +"partir du diamètre de la buse).\n" +"Recommandé avec une densité de pont ou un rapport de débit de pont plus " +"élevés.\n" +"\n" +"La valeur maximale est 100 % ou le diamètre de la buse.\n" +"Si réglée à 0, la largeur de ligne correspond à celle du remplissage plein " +"interne." msgid "Internal bridge flow ratio" msgstr "Ratio de débit du pont interne" @@ -13582,6 +13734,19 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Cette valeur régit l’épaisseur de la couche de pont interne. Il s’agit de la " +"première couche au-dessus du remplissage : l’augmenter peut accroître la " +"résistance et la qualité des couches supérieures.\n" +"Valeurs supérieures à 1,0 : augmentent la quantité de matériau en conservant " +"l’espacement des lignes. Cela peut améliorer le contact entre lignes et la " +"résistance.\n" +"Valeurs inférieures à 1,0 : réduisent la quantité de matériau en ajustant " +"l’espacement des lignes pour maintenir le contact. Cela peut réduire " +"l’affaissement.\n" +"\n" +"Le débit de pont réellement utilisé est calculé en multipliant cette valeur " +"par le rapport de débit du filament et, s’il est défini, par celui de " +"l’objet." msgid "Top surface flow ratio" msgstr "Ratio du débit des surfaces supérieures" @@ -13967,6 +14132,37 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Activez cette option pour ralentir l’impression dans les zones où les " +"périmètres risquent de s’être recourbés vers le haut.\n" +"Par exemple, un ralentissement supplémentaire est appliqué lors de " +"l’impression de surplombs sur des angles vifs, comme l’avant de la coque du " +"Benchy, réduisant le tuilage qui s’amplifie au fil des couches.\n" +"\n" +"Il est généralement recommandé de laisser cette option activée, sauf si le " +"refroidissement de votre imprimante est assez puissant ou la vitesse " +"d’impression assez lente pour que les périmètres ne se recourbent pas. \n" +"En cas d’impression avec une vitesse de périmètre externe élevée, ce " +"paramètre peut introduire des artéfacts sur les parois lors du " +"ralentissement, en raison de la variation potentiellement importante des " +"vitesses d’impression empêchant l’extrudeur de suivre le changement de débit " +"demandé.\n" +"La cause profonde de ces artéfacts est très probablement un réglage du PA " +"légèrement décalé, surtout combiné à un temps de lissage du PA élevé.\n" +"\n" +"Recommandations lorsque cette option est activée :\n" +"1. Réduisez le temps de lissage du Pressure Advance à 0,015 – 0,02 pour que " +"l’extrudeur réagisse rapidement aux changements de vitesse.\n" +"2. Augmentez les vitesses d’impression minimales pour limiter l’ampleur du " +"ralentissement et réduire l’écart entre segments rapides et lents.\n" +"3. Si des artéfacts persistent, activez le lissage du débit d’extrusion " +"(ERS) pour adoucir davantage les transitions de débit.\n" +"\n" +"Remarque : lorsque cette option est activée, les périmètres en surplomb sont " +"traités comme des surplombs : la vitesse de surplomb s’applique même si le " +"périmètre en surplomb fait partie d’un pont.\n" +"Par exemple, lorsque les périmètres sont à 100 % en surplomb, sans paroi " +"pour les soutenir par en dessous, la vitesse de surplomb à 100 % est " +"appliquée." msgid "mm/s or %" msgstr "mm/s ou %" @@ -14077,7 +14273,7 @@ msgstr "" "des autres. Cela peut améliorer l’adhérence de la bordure." msgid "Brim ears" -msgstr "Bordures à oreilles" +msgstr "Bordure à oreilles" msgid "Only draw brim over the sharp edges of the model." msgstr "Ne tracer la bordure que sur les arêtes vives du modèle." @@ -14258,6 +14454,12 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Si activé, l’extrusion des ponts utilise une hauteur de ligne égale au " +"diamètre de la buse.\n" +"Cela augmente la résistance et la fiabilité des ponts et permet de plus " +"longues portées, mais peut dégrader l’apparence.\n" +"Si désactivé, les ponts peuvent être plus esthétiques mais ne sont " +"généralement fiables que sur de courtes portées." msgid "Thick internal bridges" msgstr "Ponts internes épais" @@ -14270,6 +14472,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Si activé, l’extrusion des ponts internes utilise une hauteur de ligne égale " +"au diamètre de la buse.\n" +"Cela augmente la résistance et la fiabilité des ponts internes imprimés " +"au-dessus du remplissage, mais peut dégrader l’apparence.\n" +"Si désactivé, les ponts internes peuvent être plus esthétiques mais moins " +"fiables au-dessus du remplissage." msgid "Extra bridge layers (beta)" msgstr "Couches de pont supplémentaires (beta)" @@ -14474,7 +14682,7 @@ msgid "Moderate" msgstr "Modéré" msgid "Top surface pattern" -msgstr "Motif de surface supérieure" +msgstr "Motif de la surface supérieure" msgid "Line pattern of top surface infill." msgstr "Motif de ligne du remplissage de la surface supérieure" @@ -15530,7 +15738,7 @@ msgid "money/kg" msgstr "argent/kg" msgid "Vendor" -msgstr "Fabriquant" +msgstr "Fabricant" msgid "Vendor of filament. For show only." msgstr "Vendeur du filament. Pour affichage uniquement" @@ -15578,6 +15786,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Aligne les directions du remplissage, des ponts, du lissage et des surfaces " +"sur l’orientation du modèle sur le plateau.\n" +"Lorsque cette option est activée, les directions pivotent avec le modèle " +"afin de conserver des caractéristiques de résistance optimales." msgid "Insert solid layers" msgstr "Insérer des couches solides" @@ -15606,7 +15818,7 @@ msgstr "" msgid "Z-buckling bias optimization (experimental)" msgstr "Optimisation du biais de flambage en Z (expérimental)" -#, fuzzy, c-format, boost-format +#, no-c-format, no-boost-format msgid "" "Tightens the gyroid wave along the Z (vertical) axis at low infill density " "to shorten the effective vertical column length and improve Z-axis " @@ -15616,9 +15828,9 @@ msgid "" msgstr "" "Resserre l’onde gyroïde le long de l’axe Z (vertical) à faible densité de " "remplissage afin de raccourcir la longueur effective des colonnes verticales " -"et d’améliorer la résistance au flambage en compression sur l’axe Z. La " -"consommation de filament est préservée. Sans effet à partir d’environ 30 " -"% de densité de remplissage. Ne s’applique que lorsque le motif de " +"et d’améliorer la résistance au flambage en compression selon l’axe Z. La " +"consommation de filament est préservée. Aucun effet à partir d’environ 30 % " +"de densité de remplissage. S’applique uniquement lorsque le motif de " "remplissage est réglé sur Gyroïde." msgid "Sparse infill pattern" @@ -15714,25 +15926,31 @@ msgstr "" "pur." msgid "Lightning overhang angle" -msgstr "" +msgstr "Angle de surplomb Lightning" msgid "Maximum overhang angle for Lightning infill support propagation." msgstr "" +"Angle de surplomb maximal pour la propagation du support du remplissage " +"Lightning." msgid "Prune angle" -msgstr "" +msgstr "Angle d’élagage" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Contrôle l’agressivité de l’élagage des branches Lightning courtes ou non " +"soutenues.\n" +"Cet angle est converti en interne en une distance par couche." msgid "Straightening angle" -msgstr "" +msgstr "Angle de redressement" msgid "Maximum straightening angle used to simplify Lightning branches." msgstr "" +"Angle de redressement maximal utilisé pour simplifier les branches Lightning." msgid "Sparse infill anchor length" msgstr "Longueur de l’ancrage de remplissage interne" @@ -16844,6 +17062,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer le remplissage interne.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17754,20 +17974,24 @@ msgstr "" "vitesse du pont est utilisée." msgid "Outer walls" -msgstr "" +msgstr "Parois externes" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer les parois externes.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "Inner walls" -msgstr "" +msgstr "Parois internes" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer les parois internes.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18490,16 +18714,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer le remplissage plein interne.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer la surface supérieure.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filament pour imprimer la surface inférieure.\n" +"\"Défaut\" utilise le filament actif de l’objet ou de la pièce." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18901,6 +19131,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filament pour imprimer la base des supports et le radeau.\n" +"\"Défaut\" signifie qu’aucun filament spécifique n’est dédié aux supports : " +"le filament actuel est utilisé." msgid "Avoid interface filament for base" msgstr "Réduire le filament d’interface pour la base" @@ -18935,6 +19168,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filament pour imprimer l’interface des supports.\n" +"\"Défaut\" signifie qu’aucun filament spécifique n’est dédié à l’interface " +"des supports : le filament actuel est utilisé." msgid "Top interface layers" msgstr "Couches d'interface supérieures" @@ -19280,15 +19516,16 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Activer cette option pour le contrôle automatisé de la température du " -"caisson. Cette option active le lancement d’une commande M191 avant le code " -"« machine_start_gcode », qui fixe la température de la chambre et attend " -"qu’elle soit atteinte. En outre, elle déclenche une commande M141 à la fin " -"de l’impression pour éteindre le chauffage de la chambre, le cas échéant.\n" +"Activez cette option pour le contrôle automatisé de la température du " +"caisson. Cette option active l’émission d’une commande M191 avant le « " +"machine_start_gcode »,\n" +" qui fixe la température du caisson et attend qu’elle soit atteinte. En " +"outre, elle émet une commande M141 à la fin de l’impression pour éteindre le " +"chauffage du caisson, le cas échéant.\n" "\n" "Cette option repose sur la prise en charge des commandes M191 et M141 par le " -"micrologiciel, soit via des macros, soit de manière native, et est " -"généralement utilisée lorsqu’un chauffage de chambre actif est installé." +"micrologiciel, via des macros ou nativement, et est généralement utilisée " +"lorsqu’un chauffage de caisson actif est installé." msgid "Chamber temperature" msgstr "Température du caisson" @@ -19315,24 +19552,24 @@ msgstr "" "Pour les matériaux à haute température tels que l’ABS, l’ASA, le PC et le " "PA, une température de caisson plus élevée peut contribuer à supprimer ou à " "réduire la déformation et, éventuellement, à augmenter la force de liaison " -"entre les couches. Cependant, dans le même temps, une température de chambre " +"entre les couches. Cependant, dans le même temps, une température de caisson " "plus élevée réduira l’efficacité de la filtration de l’air pour l’ABS et " "l’ASA.\n" "\n" "Pour le PLA, le PETG, le TPU, le PVA et d’autres matériaux à basse " "température, cette option doit être désactivée (réglée sur 0) car la " -"température de la chambre doit être basse pour éviter l’engorgement de " +"température du caisson doit être basse pour éviter l’engorgement de " "l’extrudeuse causé par le ramollissement du matériau au niveau du " "heatbreak.\n" "\n" "S’il est activé, ce paramètre définit également une variable gcode nommée " "chamber_temperature, qui peut être utilisée pour transmettre la température " -"de la chambre souhaitée à votre macro de démarrage de l’impression, ou à une " +"de caisson souhaitée à votre macro de démarrage de l’impression, ou à une " "macro de trempe thermique comme celle-ci : PRINT_START (autres variables) " "CHAMBER_TEMP=[chamber_temperature]. Cela peut être utile si votre imprimante " "ne prend pas en charge les commandes M141/M191, ou si vous souhaitez gérer " "le préchauffage dans la macro de démarrage de l’impression si aucun " -"chauffage de chambre actif n’est installé." +"chauffage de caisson actif n’est installé." msgid "Nozzle temperature for layers after the initial one." msgstr "Température de la buse pour les couches après la première" @@ -19392,7 +19629,7 @@ msgstr "" "coque supérieure seront augmentées" msgid "Top solid layers" -msgstr "Couches solides supérieures" +msgstr "Couches pleines supérieures" msgid "Top shell thickness" msgstr "Épaisseur de la coque supérieure" @@ -20057,9 +20294,11 @@ msgstr "Valeur non valide lorsque le mode vase en spirale est activé: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" +"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la " +"buse : " msgid "too large line width " -msgstr "largeur de ligne trop importante " +msgstr "largeur de ligne trop grande " msgid " not in range " msgstr " hors plage " @@ -20167,7 +20406,7 @@ msgid "Send progress to pipe." msgstr "Envoyer la progression à la queue." msgid "Arrange Options" -msgstr "Options d'organisation" +msgstr "Options d’agencement" msgid "Arrange options: 0-disable, 1-enable, others-auto" msgstr "Options d'organisation : 0-désactiver, 1-activer, autres-auto" @@ -20329,10 +20568,11 @@ msgstr "" "avertissement, 3 :info, 4 :débogage, 5 :trace\n" msgid "Log file" -msgstr "" +msgstr "Fichier journal" msgid "Redirects debug logging to file.\n" msgstr "" +"Redirige les journaux de débogage vers un fichier.\n" msgid "Enable timelapse for print" msgstr "Activer le timelapse pour l’impression" @@ -20745,7 +20985,7 @@ msgid "Second" msgstr "Seconde" msgid "Print preset name" -msgstr "Imprimer le nom de la présélection" +msgstr "Nom du préréglage d’impression" msgid "Name of the print preset used for slicing." msgstr "Nom du préréglage d’impression utilisé pour le découpage." @@ -21325,7 +21565,7 @@ msgid "We found the best flow ratio for you" msgstr "Nous avons trouvé le meilleur ratio de débit pour vous" msgid "Flow Ratio" -msgstr "Ratio du débit" +msgstr "Rapport de débit" msgid "Please input a valid value (0.0 < flow ratio < 2.0)" msgstr "Veuillez saisir une valeur valide (0,0 < ratio du débit < 2,0)" @@ -21903,13 +22143,13 @@ msgid "Top Surface Pattern" msgstr "Motif de la surface supérieure" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Choisissez un emplacement pour la couleur sélectionnée" msgid "Material in the material station" -msgstr "" +msgstr "Matériau dans la station de matériaux" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Seuls des matériaux du même type peuvent être sélectionnés." msgid "Send G-code to printer host" msgstr "Envoyer le G-code à l’imprimante" @@ -21938,46 +22178,56 @@ msgid "Upload" msgstr "Envoyer" msgid "Leveling before print" -msgstr "" +msgstr "Nivellement avant impression" msgid "Time-lapse" msgstr "Timelapse" msgid "Enable IFS" -msgstr "" +msgstr "Activer l’IFS" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "%d emplacements IFS détectés sur l’imprimante." msgid "This printer does not report a material station." -msgstr "" +msgstr "Cette imprimante ne signale aucune station de matériaux." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "Impossible de lire les emplacements IFS de l’imprimante." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Chargement des emplacements IFS depuis l’imprimante…" msgid "Slice the plate first to get project material information." msgstr "" +"Découpez d’abord la plaque pour obtenir les informations sur les matériaux " +"du projet." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Cette plaque utilise plusieurs matériaux. Activez l’IFS et attribuez chaque " +"outil à un emplacement de l’imprimante." msgid "Each project material must be assigned to an IFS slot before printing." msgstr "" +"Chaque matériau du projet doit être attribué à un emplacement IFS avant " +"l’impression." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Chaque matériau du projet doit être attribué à un emplacement IFS chargé " +"avant l’impression." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"Chaque matériau du projet doit correspondre au matériau chargé dans " +"l’emplacement IFS sélectionné." msgid "Print host upload queue" msgstr "File d’attente d’envoi de l’hôte d’impression" @@ -22034,13 +22284,13 @@ msgstr "Plateau texturé (côté B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Imprimante : %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Calibrer avant l’impression" msgid "Filament Mapping:" -msgstr "" +msgstr "Correspondance des filaments :" msgid "Unable to perform boolean operation on selected parts" msgstr "" @@ -22119,7 +22369,7 @@ msgid "Log Info" msgstr "Journal de bord" msgid "Select filament preset" -msgstr "Sélection du préréglage du filament" +msgstr "Sélectionner le préréglage du filament" msgid "Create Filament" msgstr "Création d’un filament" @@ -22633,13 +22883,13 @@ msgstr[0] "Les préréglages suivants héritent de ce préréglage." msgstr[1] "Le préréglage suivant hérite de ce préréglage." msgid "Delete Preset" -msgstr "Supprimer la présélection" +msgstr "Supprimer le préréglage" msgid "Are you sure to delete the selected preset?" msgstr "Êtes-vous sûr de vouloir supprimer le préréglage sélectionné ?" msgid "Delete preset" -msgstr "Effacer la présélection" +msgstr "Supprimer le préréglage" msgid "+ Add Preset" msgstr "+ Ajouter un préréglage" @@ -22668,8 +22918,8 @@ msgstr "Copier le préréglage du filament" msgid "The filament choice not find filament preset, please reselect it" msgstr "" -"Le choix du filament ne correspond pas à la présélection du filament, " -"veuillez le resélectionner" +"Le choix de filament ne correspond pas au préréglage de filament, veuillez " +"le resélectionner" msgid "[Delete Required]" msgstr "[Suppression requise]" @@ -22781,16 +23031,17 @@ msgstr "" "l'imprimante. Les agents disponibles sont enregistrés au démarrage." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Sélectionner une imprimante Flashforge" msgid "Discovered Printers" -msgstr "" +msgstr "Imprimantes découvertes" msgid "Could not get a valid Printer Host reference" msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" msgstr "" +"Aucune session valide détectée. Procéder à la connexion à 3DPrinterOS ?" msgid "Success!" msgstr "Succès !" @@ -22863,7 +23114,7 @@ msgid "Authorizing..." msgstr "Autorisation en cours…" msgid "Error session check" -msgstr "" +msgstr "Erreur lors de la vérification de la session" #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -23468,7 +23719,7 @@ msgid "Use External Spool" msgstr "Utiliser la bobine externe" msgid "Select Printers" -msgstr "Sélectionner des imprimantes" +msgstr "Sélectionner les imprimantes" msgid "Device Name" msgstr "Nom de l’appareil" @@ -23682,25 +23933,27 @@ msgstr "" "pour le configurer." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge a renvoyé une réponse JSON invalide." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "Aucune imprimante Flashforge n’a été découverte sur le réseau local." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Connexion à l’API locale Flashforge réussie." msgid "Serial connection to Flashforge is working correctly." msgstr "La connexion série à Flashforge fonctionne correctement." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "Impossible de se connecter à l’API locale Flashforge" msgid "Could not connect to Flashforge via serial" msgstr "Impossible de se connecter à Flashforge via la connexion série" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"L’API locale Flashforge nécessite à la fois le numéro de série et le code " +"d’accès." msgid "The provided state is not correct." msgstr "L’état communiqué n’est pas correct." @@ -23761,10 +24014,10 @@ msgid "Please select single object." msgstr "Veuillez sélectionner un seul objet." msgid "Zoom Out" -msgstr "Dézoomer" +msgstr "Zoom arrière" msgid "Zoom In" -msgstr "Zoomer" +msgstr "Zoom avant" msgid "Load skipping objects information failed. Please try again." msgstr "" @@ -24087,8 +24340,8 @@ msgid "" "Auto-Arrange\n" "Did you know that you can auto-arrange all the objects in your project?" msgstr "" -"Agencement Automatique\n" -"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " +"Agencement automatique\n" +"Saviez-vous que vous pouvez agencer automatiquement tous les objets de " "votre projet ?" #: resources/data/hints.ini: [hint:Auto-Orient] @@ -24371,6 +24624,249 @@ msgstr "" #~ "Veuillez vérifier votre connexion réseau\n" #~ "(HTTP %u)" +msgid "Entering Paint-on supports" +msgstr "Entrée dans Supports peints" + +msgid "Leaving Paint-on supports" +msgstr "Quitter Supports peints" + +msgid "Paint-on supports editing" +msgstr "Modification des supports peints" + +msgid "Entering Brim Ears" +msgstr "Entrée dans Bordure à oreilles" + +msgid "Leaving Brim Ears" +msgstr "Quitter Bordure à oreilles" + +msgid "Entering color painting" +msgstr "Entrée dans la mise en couleur" + +msgid "Leaving color painting" +msgstr "Quitter la mise en couleur" + +msgid "Color painting editing" +msgstr "Modification de la mise en couleur" + +msgid "Entering Paint-on fuzzy skin" +msgstr "Entrée dans Surface irrégulière peinte" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "Quitter Surface irrégulière peinte" + +msgid "Paint-on fuzzy skin editing" +msgstr "Modification de la surface irrégulière peinte" + +msgid "Entering Cut gizmo" +msgstr "Entrée dans l’outil Couper" + +msgid "Leaving Cut gizmo" +msgstr "Quitter l’outil Couper" + +msgid "Cut gizmo editing" +msgstr "Modification de la découpe" + +msgid "Entering Measure gizmo" +msgstr "Entrée dans l’outil Mesurer" + +msgid "Leaving Measure gizmo" +msgstr "Quitter l’outil Mesurer" + +msgid "Entering Assembly gizmo" +msgstr "Entrée dans l’outil Assemblage" + +msgid "Leaving Assembly gizmo" +msgstr "Quitter l’outil Assemblage" + +msgid "Simple settings" +msgstr "Paramètres simples" + +msgid "Expert settings" +msgstr "Paramètres expert" + +msgid "Type to filter..." +msgstr "Saisissez du texte pour filtrer…" + +msgid "No selected items..." +msgstr "Aucun élément sélectionné…" + +msgid "All items selected..." +msgstr "Tous les éléments sont sélectionnés…" + +msgid "No matching items..." +msgstr "Aucun élément correspondant…" + +msgid "Select visible" +msgstr "Sélectionner les éléments visibles" + +msgid "Deselect visible" +msgstr "Désélectionner les éléments visibles" + +msgid "Filter selected" +msgstr "Filtrer les éléments sélectionnés" + +msgid "Filter nonSelected" +msgstr "Filtrer les éléments non sélectionnés" + +msgid "An unexpected error occurred" +msgstr "Une erreur inattendue s’est produite" + +msgid "The download has failed" +msgstr "Le téléchargement a échoué" + +msgid "Can't create file at %1%" +msgstr "Impossible de créer le fichier à l’emplacement %1%" + +msgid "Archive preview" +msgstr "Aperçu de l’archive" + +msgid "Open File" +msgstr "Ouvrir un fichier" + +msgid "Desktop Integration" +msgstr "Intégration au bureau" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "Échec de l’intégration au bureau : exécutable introuvable." + +msgid "Beta" +msgstr "Bêta" + +msgid "Sending failed, please try again!" +msgstr "L’envoi a échoué, veuillez réessayer !" + +msgid "Failed to create the temporary folder." +msgstr "Échec de la création du dossier temporaire." + +msgid "PresetBundle" +msgstr "Paquet de préréglages" + +msgid "ExportPresetBundle" +msgstr "Exporter le paquet de préréglages" + +msgid "Save preset bundle" +msgstr "Enregistrer le paquet de préréglages" + +msgid "Bundle folder does not exist." +msgstr "Le dossier du paquet n’existe pas." + +msgid "Failed to open folder." +msgstr "Impossible d’ouvrir le dossier." + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "Supprimer le paquet sélectionné du dossier ainsi que tous les préréglages chargés depuis celui-ci ?" + +msgid "Delete Bundle" +msgstr "Supprimer le paquet" + +msgid "Failed to remove bundle." +msgstr "Impossible de retirer le paquet." + +msgid "Remove Bundle" +msgstr "Retirer le paquet" + +msgid "Unsubscribe bundle?" +msgstr "Se désabonner du paquet ?" + +msgid "UnsubscribeBundle" +msgstr "Se désabonner du paquet" + +msgid "Failed to unsubscribe bundle." +msgstr "Impossible de se désabonner du paquet." + +msgid "Unsubscribe Bundle" +msgstr "Se désabonner du paquet" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "Le nom d’hôte/IP/URL n’a pas pu être analysé, veuillez le vérifier et réessayer." + +msgid "Could not parse server response." +msgstr "Impossible d’analyser la réponse du serveur." + +msgid "Connected to CrealityPrint successfully!" +msgstr "Connexion à CrealityPrint réussie !" + +msgid "Could not connect to CrealityPrint" +msgstr "Impossible de se connecter à CrealityPrint" + +msgid "Connection to ElegooLink is working correctly." +msgstr "La connexion à ElegooLink fonctionne correctement." + +msgid "Could not connect to ElegooLink" +msgstr "Impossible de se connecter à ElegooLink" + +msgid "ElegooLink not detected" +msgstr "ElegooLink non détecté" + +msgid "Invalid access code" +msgstr "Code d’accès invalide" + +msgid "CC2 device not detected" +msgstr "Appareil CC2 non détecté" + +msgid "CC2 upload failed" +msgstr "Échec de l’envoi vers la CC2" + +msgid "Upload failed" +msgstr "Échec de l’envoi" + +msgid "Printer returned an error" +msgstr "L’imprimante a renvoyé une erreur" + +msgid "Missing system_info in response" +msgstr "Champ system_info absent de la réponse" + +msgid "Missing printer serial number in response" +msgstr "Numéro de série de l’imprimante absent de la réponse" + +msgid "Error parsing response" +msgstr "Erreur lors de l’analyse de la réponse" + +msgid "Error code: %1%" +msgstr "Code d’erreur : %1%" + +msgid "Error code not found" +msgstr "Code d’erreur introuvable" + +msgid "Failed to open file for upload." +msgstr "Impossible d’ouvrir le fichier à envoyer." + +msgid "Failed to read file chunk for upload." +msgstr "Impossible de lire le fragment de fichier à envoyer." + +msgid "The file is empty or could not be read." +msgstr "Le fichier est vide ou n’a pas pu être lu." + +msgid "Failed to calculate file checksum." +msgstr "Impossible de calculer la somme de contrôle du fichier." + +msgid "The file is lost, please check and try again." +msgstr "Le fichier est introuvable, veuillez vérifier et réessayer." + +msgid "The file is corrupted, please check and try again." +msgstr "Le fichier est corrompu, veuillez vérifier et réessayer." + +msgid "Transmission abnormality, please check and try again." +msgstr "Anomalie de transmission, veuillez vérifier et réessayer." + +msgid "The file does not match the printer, please check and try again." +msgstr "Le fichier ne correspond pas à l’imprimante, veuillez vérifier et réessayer." + +msgid "Start print timeout" +msgstr "Délai de démarrage de l’impression dépassé" + +msgid "Start print failed" +msgstr "Échec du démarrage de l’impression" + +msgid "Error. Can't get api token for authorization" +msgstr "Erreur : impossible d’obtenir le jeton d’API pour l’autorisation" + +msgid "Error saving session to file" +msgstr "Erreur lors de l’enregistrement de la session dans un fichier" + +msgid "Error during file upload" +msgstr "Erreur pendant l’envoi du fichier" + #~ msgid "Cloud Error" #~ msgstr "Erreur cloud" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index 99a47c198e..7d4516cc26 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -48,9 +48,12 @@ src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.hpp src/slic3r/GUI/Gizmos/GLGizmoMove.cpp src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -58,6 +61,7 @@ src/slic3r/GUI/Gizmos/GLGizmosManager.cpp src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +src/slic3r/GUI/Gizmos/GLGizmoCut.hpp src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp src/slic3r/GUI/Gizmos/GLGizmoFaceDetector.cpp src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -67,7 +71,9 @@ src/slic3r/GUI/Gizmos/GLGizmoText.hpp src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp +src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp src/slic3r/GUI/GUI.cpp src/slic3r/GUI/GUI_App.cpp src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -89,6 +95,8 @@ src/slic3r/GUI/Widgets/AMSControl.cpp src/slic3r/GUI/Widgets/FanControl.cpp src/slic3r/GUI/Widgets/FilamentLoad.cpp src/slic3r/GUI/Widgets/TempInput.cpp +src/slic3r/GUI/Widgets/CheckList.cpp +src/slic3r/GUI/Widgets/SwitchButton.cpp src/slic3r/GUI/ImGuiWrapper.cpp src/slic3r/GUI/Jobs/ArrangeJob.cpp src/slic3r/GUI/Jobs/OrientJob.cpp @@ -98,6 +106,7 @@ src/slic3r/GUI/Jobs/BindJob.cpp src/slic3r/GUI/Jobs/PrintJob.cpp src/slic3r/GUI/Jobs/SendJob.cpp src/slic3r/GUI/Jobs/EmbossJob.cpp +src/slic3r/GUI/Jobs/PlaterWorker.hpp src/slic3r/GUI/ThermalPreconditioningDialog.cpp src/slic3r/GUI/ThermalPreconditioningDialog.hpp src/slic3r/GUI/Jobs/SLAImportJob.cpp @@ -237,8 +246,12 @@ src/slic3r/GUI/FilamentMapPanel.cpp src/slic3r/Utils/Obico.cpp src/slic3r/Utils/SimplyPrint.cpp src/slic3r/Utils/Flashforge.cpp +src/slic3r/Utils/ElegooLink.cpp +src/slic3r/Utils/CrealityPrint.cpp +src/slic3r/Utils/PrintHost.cpp src/slic3r/GUI/Jobs/OAuthJob.cpp src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp src/slic3r/GUI/PartSkipDialog.cpp src/slic3r/GUI/PartSkipDialog.hpp src/slic3r/GUI/SkipPartCanvas.cpp @@ -250,4 +263,12 @@ src/slic3r/GUI/NetworkPluginDialog.cpp src/slic3r/GUI/RammingChart.cpp src/slic3r/GUI/StepMeshDialog.cpp src/slic3r/GUI/FilamentPickerDialog.hpp +src/slic3r/GUI/PresetBundleDialog.cpp +src/slic3r/GUI/ExportPresetBundleDialog.cpp +src/slic3r/GUI/DesktopIntegrationDialog.cpp +src/slic3r/GUI/Downloader.cpp +src/slic3r/GUI/DownloaderFileGet.cpp +src/slic3r/GUI/FileArchiveDialog.cpp +src/slic3r/GUI/PrinterCloudAuthDialog.cpp +src/slic3r/GUI/PrinterWebViewHandler.cpp src/libslic3r/PresetBundle.cpp diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp index deb6525bfa..8b1ff2ca62 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp @@ -3,6 +3,7 @@ #include "GLGizmoBase.hpp" #include "slic3r/GUI/GLSelectionRectangle.hpp" +#include "slic3r/GUI/I18N.hpp" #include "libslic3r/BrimEarsPoint.hpp" #include "libslic3r/ObjectID.hpp" @@ -87,8 +88,8 @@ public: bool is_selection_rectangle_dragging() const { return m_selection_rectangle.is_dragging(); } bool wants_enter_leave_snapshots() const override { return true; } - std::string get_gizmo_entering_text() const override { return "Entering Brim Ears"; } - std::string get_gizmo_leaving_text() const override { return "Leaving Brim Ears"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering Brim Ears"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Brim Ears"); } private: bool on_init() override; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp index 133e71e2f1..f42d327a0e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp @@ -6,6 +6,7 @@ #include "libslic3r/Print.hpp" #include "libslic3r/ObjectID.hpp" #include "slic3r/GUI/3DScene.hpp" +#include "slic3r/GUI/I18N.hpp" #include @@ -36,9 +37,9 @@ protected: void render_tooltip_button(float x, float y); wxString handle_snapshot_action_name(bool shift_down, Button button_down) const override; - std::string get_gizmo_entering_text() const override { return "Entering Paint-on supports"; } - std::string get_gizmo_leaving_text() const override { return "Leaving Paint-on supports"; } - std::string get_action_snapshot_name() const override { return "Paint-on supports editing"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering Paint-on supports"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Paint-on supports"); } + std::string get_action_snapshot_name() const override { return _u8L("Paint-on supports editing"); } // BBS wchar_t m_current_tool = 0; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp index eb8473aea6..55308bffa9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp @@ -2,6 +2,7 @@ #define slic3r_GLGizmoMmuSegmentation_hpp_ #include "GLGizmoPainterBase.hpp" +#include "slic3r/GUI/I18N.hpp" namespace Slic3r::GUI { @@ -100,9 +101,9 @@ protected: wxString handle_snapshot_action_name(bool shift_down, Button button_down) const override; - std::string get_gizmo_entering_text() const override { return "Entering color painting"; } - std::string get_gizmo_leaving_text() const override { return "Leaving color painting"; } - std::string get_action_snapshot_name() const override { return "Color painting editing"; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering color painting"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving color painting"); } + std::string get_action_snapshot_name() const override { return _u8L("Color painting editing"); } // BBS size_t m_selected_extruder_idx = 0; diff --git a/src/slic3r/GUI/PartSkipDialog.cpp b/src/slic3r/GUI/PartSkipDialog.cpp index 87d8b714b6..5820a40c66 100644 --- a/src/slic3r/GUI/PartSkipDialog.cpp +++ b/src/slic3r/GUI/PartSkipDialog.cpp @@ -367,7 +367,7 @@ std::string PartSkipDialog::create_tmp_path() } std::string tmp_path = (parent_path / buf.str()).string(); - if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox("create file failed."); } + if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox(_L("Failed to create the temporary folder.")); } return tmp_path; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c6a5ac3aba..ad1dbab30b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6225,12 +6225,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" << __LINE__ << " " << boost::format("%1%: %2%")%it->first %it->second; // NotificationManager *notify_manager = q->get_notification_manager(); - std::string error_message = L("Invalid values found in the 3MF:"); + std::string error_message = _u8L("Invalid values found in the 3MF:"); error_message += "\n"; for (std::map::iterator it=validity.begin(); it!=validity.end(); ++it) error_message += "-" + it->first + ": " + it->second + "\n"; error_message += "\n"; - error_message += L("Please correct them in the param tabs"); + error_message += _u8L("Please correct them in the param tabs"); notify_manager->bbl_show_3mf_warn_notification(error_message); } } diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 42a0108383..e4c735f142 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -562,7 +562,7 @@ void PrintHostSendDialog::init() // }); // } - add_button(wxID_CANCEL,false, L("Cancel")); + add_button(wxID_CANCEL,false, _L("Cancel")); finalize(); #ifdef __linux__ diff --git a/src/slic3r/GUI/PrinterCloudAuthDialog.cpp b/src/slic3r/GUI/PrinterCloudAuthDialog.cpp index 4d29d9b1c1..41e5cebced 100644 --- a/src/slic3r/GUI/PrinterCloudAuthDialog.cpp +++ b/src/slic3r/GUI/PrinterCloudAuthDialog.cpp @@ -23,7 +23,7 @@ namespace Slic3r { namespace GUI { PrinterCloudAuthDialog::PrinterCloudAuthDialog(wxWindow* parent, PrintHost* host) - : wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, "Login") + : wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, _L("Login")) { SetBackgroundColour(*wxWHITE); // Url diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f399337c0f..9463bdb741 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -607,7 +607,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) auto completedimg = new wxStaticBitmap(m_panel_finish, wxID_ANY, create_scaled_bitmap("completed", m_panel_finish, 25), wxDefaultPosition, wxSize(imgsize, imgsize), 0); m_sizer_finish_h->Add(completedimg, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); - m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); + m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, _L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); m_statictext_finish->Wrap(-1); m_statictext_finish->SetForegroundColour(wxColour(0, 150, 136)); m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 789d080666..ed64f922c0 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -61,10 +61,10 @@ static const std::map error_messages = { {SendToPrinterDialog::SEND_ERR, L("File upload failed, please try again.")} }; -static std::string ParseErrorCode(int errorcde) +static wxString ParseErrorCode(int errorcde) { auto it = error_messages.find(errorcde); - if (it != error_messages.end()) { return it->second; } + if (it != error_messages.end()) { return _L(it->second); } return ""; } @@ -367,7 +367,7 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater) auto completedimg = new wxStaticBitmap(m_panel_finish, wxID_ANY, create_scaled_bitmap("completed", m_panel_finish, 25), wxDefaultPosition, wxSize(imgsize, imgsize), 0); m_sizer_finish_h->Add(completedimg, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); - m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); + m_statictext_finish = new wxStaticText(m_panel_finish, wxID_ANY, _L("Send complete"), wxDefaultPosition, wxDefaultSize, 0); m_statictext_finish->Wrap(-1); m_statictext_finish->SetForegroundColour(wxColour(0, 150, 136)); m_sizer_finish_h->Add(m_statictext_finish, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); @@ -1982,7 +1982,7 @@ void SendToPrinterDialog::UploadFileRessultCallback(int res, int resp_ec, std::s if (ParseErrorCode(resp_ec) != "") update_print_status_msg(ParseErrorCode(resp_ec), false, true); else - update_print_status_msg("Sending failed, please try again!", false, true); + update_print_status_msg(_L("Sending failed, please try again!"), false, true); m_filetransfer_uploadfile_job.reset(); m_filetransfer_uploadfile_job = nullptr; } diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1e9bc53f47..60cf80a472 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -685,7 +685,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) #endif - m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, L("N/A"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_left = new wxStaticText(penel_text, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_progress_left->Wrap(-1); m_staticText_progress_left->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); m_staticText_progress_left->SetForegroundColour(wxColour(146, 146, 146)); @@ -787,7 +787,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) m_printing_stage_panel->SetSizer(printingstage_vertical_sizer); // Orca: display the end time of the print - m_staticText_progress_end = new wxStaticText(penel_finish_time, wxID_ANY, L("N/A"), wxDefaultPosition, wxDefaultSize, 0); + m_staticText_progress_end = new wxStaticText(penel_finish_time, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_progress_end->Wrap(-1); m_staticText_progress_end->SetFont( wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC"))); diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 3a42f7343d..406e9794bf 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -109,7 +109,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin m_staticText_ver_val->Wrap(-1); - m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, _L("Beta"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); m_staticText_beta_version->Wrap(-1); m_staticText_beta_version->Hide(); @@ -1571,7 +1571,7 @@ bool UpgradePanel::Show(bool show) m_staticText_ams_ver_val->SetForegroundColour("#262E30"); m_staticText_ams_ver_val->Wrap(-1); - m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, _L("Beta"), wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); m_staticText_beta_version->Wrap(-1); m_staticText_beta_version->Hide(); diff --git a/src/slic3r/Utils/3DPrinterOS.cpp b/src/slic3r/Utils/3DPrinterOS.cpp index 27a8b74916..79c8a62700 100755 --- a/src/slic3r/Utils/3DPrinterOS.cpp +++ b/src/slic3r/Utils/3DPrinterOS.cpp @@ -323,7 +323,7 @@ bool C3DPrinterOS::login(wxString& msg) const msg.clear(); std::string token = get_api_auth_token(msg); if (token.empty()) { - msg = "Error. Can't get api token for authorization"; + msg = _L("Error. Can't get api token for authorization"); return false; } @@ -341,12 +341,12 @@ bool C3DPrinterOS::login(wxString& msg) const return false; } } catch (const std::exception&) { - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); return false; } bool res = save_api_session(session, email); if (!res) { - msg = "Error saving session to file"; + msg = _L("Error saving session to file"); } return res; } @@ -395,7 +395,7 @@ bool C3DPrinterOS::upload( } } } catch (const std::exception &) { - error_fn("Could not parse server response"); + error_fn(_L("Could not parse server response.")); return false; } @@ -404,7 +404,7 @@ bool C3DPrinterOS::upload( UploadOptionsDialog dlg(GUI::wxGetApp().GetTopWindow(), cloud_projects_list, cloud_printer_types_list, m_preset_name); if (dlg.ShowModal() != wxID_OK) { - error_fn("Canceled"); + error_fn(_L("Canceled")); return false; } @@ -483,7 +483,7 @@ bool C3DPrinterOS::upload( } } catch (const std::exception &) { res = false; - error_fn("Error during file upload"); + error_fn(_L("Error during file upload")); } // set printer type for uploaded gcode if (res) { @@ -542,7 +542,7 @@ std::string C3DPrinterOS::get_api_auth_token(wxString &err) const err = wxString(resp.get("message").c_str()); } } catch (const std::exception &) { - err = "Could not parse server response"; + err = _L("Could not parse server response."); } return result; } @@ -566,7 +566,7 @@ bool C3DPrinterOS::check_session(wxString &msg) const { } } catch (const std::exception &) { - msg = wxString("Could not parse server response"); + msg = _L("Could not parse server response."); return false; } return false; diff --git a/src/slic3r/Utils/AstroBox.cpp b/src/slic3r/Utils/AstroBox.cpp index fd2bd1c78c..61f9f96c33 100644 --- a/src/slic3r/Utils/AstroBox.cpp +++ b/src/slic3r/Utils/AstroBox.cpp @@ -71,7 +71,7 @@ bool AstroBox::test(wxString &msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) .perform_sync(); diff --git a/src/slic3r/Utils/Duet.cpp b/src/slic3r/Utils/Duet.cpp index df2e4001c5..37db6b6c33 100644 --- a/src/slic3r/Utils/Duet.cpp +++ b/src/slic3r/Utils/Duet.cpp @@ -85,7 +85,7 @@ bool Duet::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn e int err_code = dsf ? (status == 201 ? 0 : 1) : get_err_code_from_body(body); if (err_code != 0) { BOOST_LOG_TRIVIAL(error) << boost::format("Duet: Request completed but error code was received: %1%") % err_code; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); res = false; } else if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { wxString errormsg; @@ -148,13 +148,13 @@ Duet::ConnectionType Duet::connect(wxString &msg) const res = ConnectionType::rrf; break; case 1: - msg = format_error(body, L("Wrong password"), 0); + msg = format_error(body, _u8L("Wrong password"), 0); break; case 2: - msg = format_error(body, L("Could not get resources to create a new connection"), 0); + msg = format_error(body, _u8L("Could not get resources to create a new connection"), 0); break; default: - msg = format_error(body, L("Unknown error occurred"), 0); + msg = format_error(body, _u8L("Unknown error occurred"), 0); break; } diff --git a/src/slic3r/Utils/ElegooLink.cpp b/src/slic3r/Utils/ElegooLink.cpp index 72276bf7b2..0dc291d29c 100644 --- a/src/slic3r/Utils/ElegooLink.cpp +++ b/src/slic3r/Utils/ElegooLink.cpp @@ -141,9 +141,9 @@ namespace Slic3r { const int error_code = root.get("error_code", -1); if (error_code != 0) { - error_message = root.get("message", "Printer returned an error"); + error_message = root.get("message", _u8L("Printer returned an error")); if (error_message.empty()) - error_message = "Printer returned an error"; + error_message = _u8L("Printer returned an error"); error_message += " (" + std::to_string(error_code) + ")"; return false; } @@ -151,13 +151,13 @@ namespace Slic3r { if (serial_number != nullptr) { const auto system_info = root.get_child_optional("system_info"); if (!system_info) { - error_message = "Missing system_info in response"; + error_message = _u8L("Missing system_info in response"); return false; } const auto sn = system_info->get_optional("sn"); if (!sn || sn->empty()) { - error_message = "Missing printer serial number in response"; + error_message = _u8L("Missing printer serial number in response"); return false; } *serial_number = *sn; @@ -165,7 +165,7 @@ namespace Slic3r { return true; } catch (const std::exception&) { - error_message = "Error parsing response"; + error_message = _u8L("Error parsing response"); return false; } } @@ -431,7 +431,7 @@ namespace Slic3r { if (std::regex_search(body, match, re)) { res = true; } else { - msg = format_error(body, "ElegooLink not detected", 0); + msg = format_error(body, _u8L("ElegooLink not detected"), 0); res = false; } }) @@ -472,9 +472,9 @@ namespace Slic3r { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting CC2 device info: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; res = false; if (status == 401 || status == 403) - msg = format_error(body, "Invalid access code", status); + msg = format_error(body, _u8L("Invalid access code"), status); else - msg = format_error(body, error.empty() ? "CC2 device not detected" : error, status); + msg = format_error(body, error.empty() ? _u8L("CC2 device not detected") : error, status); }) .on_complete([&](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got CC2 device info: %2%") % name % body; @@ -482,7 +482,7 @@ namespace Slic3r { std::string serial_number; if (!parse_cc2_response(body, error_message, &serial_number)) { res = false; - msg = format_error(body, error_message.empty() ? "CC2 device not detected" : error_message, status); + msg = format_error(body, error_message.empty() ? _u8L("CC2 device not detected") : error_message, status); return; } persist_sn(Http::get_host_header_value(m_host), token, serial_number); @@ -531,7 +531,7 @@ namespace Slic3r { if (std::regex_search(body, match, re)) { res = true; } else { - msg = format_error(body, "ElegooLink not detected", 0); + msg = format_error(body, _u8L("ElegooLink not detected"), 0); res = false; } }) @@ -570,16 +570,16 @@ namespace Slic3r { error % status % body; res = false; if (status == 401 || status == 403) - msg = format_error(body, "Invalid access code", status); + msg = format_error(body, _u8L("Invalid access code"), status); else - msg = format_error(body, error.empty() ? "CC2 device not detected" : error, status); + msg = format_error(body, error.empty() ? _u8L("CC2 device not detected") : error, status); }) .on_complete([&](std::string body, unsigned status) { std::string error_message; std::string serial_number; if (!parse_cc2_response(body, error_message, &serial_number)) { res = false; - msg = format_error(body, error_message.empty() ? "CC2 device not detected" : error_message, status); + msg = format_error(body, error_message.empty() ? _u8L("CC2 device not detected") : error_message, status); return; } res = true; @@ -735,7 +735,7 @@ namespace Slic3r { } else { // get error messages pt::ptree messages = root.get_child("messages"); - std::string error_message = "ErrorCode : " + code + "\n"; + std::string error_message = (boost::format(_u8L("Error code: %1%")) % code).str() + "\n"; for (pt::ptree::value_type& message : messages) { std::string field = message.second.get("field"); std::string msg = message.second.get("message"); @@ -745,10 +745,10 @@ namespace Slic3r { } } catch (...) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error parsing response: %2%") % name % body; - error_fn(wxString::FromUTF8("Error parsing response")); + error_fn(_L("Error parsing response")); } } else { - error_fn(format_error(body, "upload failed", status)); + error_fn(format_error(body, _u8L("Upload failed"), status)); } }) .on_error([&](std::string body, std::string error, unsigned status) { @@ -921,7 +921,7 @@ namespace Slic3r { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: CC2 chunk uploaded: HTTP %2%: %3%") % name % status % body; std::string error_message; if (!parse_cc2_response(body, error_message)) { - error_fn(format_error(body, error_message.empty() ? "CC2 upload failed" : error_message, status)); + error_fn(format_error(body, error_message.empty() ? _u8L("CC2 upload failed") : error_message, status)); return; } result = true; @@ -929,9 +929,9 @@ namespace Slic3r { .on_error([&](std::string body, std::string error, unsigned status) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error uploading CC2 chunk: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; if (status == 401 || status == 403) - error_fn(format_error(body, "Invalid access code", status)); + error_fn(format_error(body, _u8L("Invalid access code"), status)); else - error_fn(format_error(body, error.empty() ? "CC2 upload failed" : error, status)); + error_fn(format_error(body, error.empty() ? _u8L("CC2 upload failed") : error, status)); }) .on_progress([&](Http::Progress progress, bool& cancel) { if (progress.ultotal == progress.ulnow) diff --git a/src/slic3r/Utils/FixModelByCgal.cpp b/src/slic3r/Utils/FixModelByCgal.cpp index 9e2e014d93..8d196f7201 100644 --- a/src/slic3r/Utils/FixModelByCgal.cpp +++ b/src/slic3r/Utils/FixModelByCgal.cpp @@ -85,7 +85,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro size_t ivolume = 0; // Orca: Lambda for updating progress from worker thread. - auto on_progress = [&mtx, &condition, &ivolume, &model_object, &progress](const char *msg, unsigned prcnt) { + auto on_progress = [&mtx, &condition, &ivolume, &model_object, &progress](const std::string &msg, unsigned prcnt) { std::unique_lock lock(mtx); progress.message = msg; const size_t total = std::max(1, model_object.volumes.size()); @@ -108,7 +108,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro if (canceled) throw RepairCanceledException(); - on_progress(L("Repairing model object"), 10); + on_progress(_u8L("Repairing model object"), 10); ModelVolume *volume = model_object.volumes[ivolume]; @@ -118,7 +118,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro parts_count = volume->split(1, keep_painting); if (parts_count > 1) { const std::string msg = Slic3r::format(L("Split into %1% parts"), parts_count); - on_progress(msg.c_str(), 10); + on_progress(msg, 10); } } @@ -145,7 +145,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro if (removed_parts >= parts_count) { ivolume = part_end; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); continue; } @@ -161,7 +161,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro std::string error; if (!MeshBoolean::cgal::repair(mesh, nullptr, &error)) - throw Slic3r::RuntimeError(error.empty() ? L("Repair failed") : error.c_str()); + throw Slic3r::RuntimeError(error.empty() ? _u8L("Repair failed") : error); part_volume->set_mesh(std::move(mesh)); part_volume->calculate_convex_hull(); @@ -175,20 +175,20 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro ivolume = part_end; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); } model_object.invalidate_bounding_box(); if (ivolume > 0) --ivolume; - on_progress(L("Repair finished"), 100); + on_progress(_u8L("Repair finished"), 100); success = true; finished = true; } catch (RepairCanceledException &) { canceled = true; finished = true; - on_progress(L("Repair canceled"), 100); + on_progress(_u8L("Repair canceled"), 100); } catch (std::exception &ex) { success = false; finished = true; diff --git a/src/slic3r/Utils/FlashAir.cpp b/src/slic3r/Utils/FlashAir.cpp index 6976d8fb24..f2d66fd012 100644 --- a/src/slic3r/Utils/FlashAir.cpp +++ b/src/slic3r/Utils/FlashAir.cpp @@ -119,7 +119,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .perform_sync(); @@ -140,7 +140,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .perform_sync(); @@ -156,7 +156,7 @@ bool FlashAir::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error res = boost::icontains(body, "SUCCESS"); if (! res) { BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Request completed but no SUCCESS message was received.") % name; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); } }) .on_error([&](std::string body, std::string error, unsigned status) { diff --git a/src/slic3r/Utils/MKS.cpp b/src/slic3r/Utils/MKS.cpp index 092a933c9e..c4aa4c7262 100644 --- a/src/slic3r/Utils/MKS.cpp +++ b/src/slic3r/Utils/MKS.cpp @@ -84,7 +84,7 @@ bool MKS::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn er int err_code = get_err_code_from_body(body); if (err_code != 0) { BOOST_LOG_TRIVIAL(error) << boost::format("MKS: Request completed but error code was received: %1%") % err_code; - error_fn(format_error(body, L("Unknown error occurred"), 0)); + error_fn(format_error(body, _u8L("Unknown error occurred"), 0)); res = false; } else if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index ece2680a73..cfae9babdc 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -183,7 +183,7 @@ bool OctoPrint::test_with_resolved_ip(wxString &msg) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response."; + msg = _L("Could not parse server response."); } }) .ssl_revoke_best_effort(m_ssl_revoke_best_effort) @@ -232,7 +232,7 @@ bool OctoPrint::test(wxString& msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -635,7 +635,7 @@ bool PrusaLink::test(wxString& msg) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -811,7 +811,7 @@ bool PrusaLink::test_with_method_check(wxString& msg, bool& use_put) const } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) #ifdef WIN32 @@ -891,7 +891,7 @@ bool PrusaLink::test_with_resolved_ip_and_method_check(wxString& msg, bool& use_ } catch (const std::exception&) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index 0b52309da4..0d269e1cd5 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -90,7 +90,7 @@ bool Repetier::test(wxString &msg) const } catch (const std::exception &) { res = false; - msg = "Could not parse server response"; + msg = _L("Could not parse server response."); } }) .perform_sync(); From 6bb7903b97fa83b58c7809922875df12d623e175 Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Thu, 11 Jun 2026 22:07:05 -0300 Subject: [PATCH 09/20] Spanish update + Desc update (#14165) --- localization/i18n/OrcaSlicer.pot | 619 +++++++------ localization/i18n/ca/OrcaSlicer_ca.po | 376 +++++++- localization/i18n/cs/OrcaSlicer_cs.po | 376 +++++++- localization/i18n/de/OrcaSlicer_de.po | 655 ++++++++++++-- localization/i18n/en/OrcaSlicer_en.po | 376 +++++++- localization/i18n/es/OrcaSlicer_es.po | 942 +++++++++++++++++--- localization/i18n/fr/OrcaSlicer_fr.po | 653 ++++++++------ localization/i18n/hu/OrcaSlicer_hu.po | 376 +++++++- localization/i18n/it/OrcaSlicer_it.po | 376 +++++++- localization/i18n/ja/OrcaSlicer_ja.po | 376 +++++++- localization/i18n/ko/OrcaSlicer_ko.po | 376 +++++++- localization/i18n/lt/OrcaSlicer_lt.po | 376 +++++++- localization/i18n/nl/OrcaSlicer_nl.po | 376 +++++++- localization/i18n/pl/OrcaSlicer_pl.po | 446 +++++++-- localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 379 +++++++- localization/i18n/ru/OrcaSlicer_ru.po | 380 +++++++- localization/i18n/sv/OrcaSlicer_sv.po | 376 +++++++- localization/i18n/th/OrcaSlicer_th.po | 376 +++++++- localization/i18n/tr/OrcaSlicer_tr.po | 376 +++++++- localization/i18n/uk/OrcaSlicer_uk.po | 376 +++++++- localization/i18n/vi/OrcaSlicer_vi.po | 376 +++++++- localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 480 +++++++++- localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 376 +++++++- src/libslic3r/PrintConfig.cpp | 9 +- 24 files changed, 8906 insertions(+), 1297 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 0fb728067c..e16c07da54 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -187,6 +187,15 @@ msgstr "" msgid "Support Generated" msgstr "" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "" @@ -272,6 +281,15 @@ msgstr "" msgid "To:" msgstr "" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "" @@ -291,6 +309,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "" @@ -673,6 +700,15 @@ msgstr "" msgid "Delete connector" msgstr "" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "" @@ -1514,6 +1550,12 @@ msgstr "" msgid "Flip by Face 2" msgstr "" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "" @@ -1547,6 +1589,12 @@ msgstr "" msgid "Face and face assembly" msgstr "" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -1805,6 +1853,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3024,6 +3086,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3264,6 +3365,9 @@ msgstr "" msgid "There is no valid surface for text projection." msgstr "" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -7976,9 +8080,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "" - msgid "By type" msgstr "" @@ -8319,6 +8420,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "" @@ -9079,6 +9188,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "" @@ -9447,6 +9559,9 @@ msgstr "" msgid "Travel speed" msgstr "" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "" @@ -10237,9 +10352,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -10698,12 +10810,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "" @@ -10807,6 +10930,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "" @@ -11800,7 +11926,7 @@ msgid "External bridge density" msgstr "" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -11814,18 +11940,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -11860,11 +11982,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, possible-c-format, possible-boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -13568,9 +13688,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -18632,9 +18749,6 @@ msgstr "" msgid "Filament Preset Template" msgstr "" -msgid "Deselect All" -msgstr "" - msgid "Process Preset Template" msgstr "" @@ -19053,9 +19167,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, possible-c-format, possible-boost-format msgid "Mismatched type of print host: %s" msgstr "" @@ -19693,6 +19819,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, possible-boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "" @@ -19743,6 +19968,12 @@ msgstr "" msgid "Please select single object." msgstr "" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "" @@ -19752,6 +19983,9 @@ msgstr "" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, possible-c-format, possible-boost-format msgid "/%d Selected" msgstr "" @@ -19897,6 +20131,100 @@ msgstr "" msgid "Calculating, please wait..." msgstr "" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, possible-boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -20064,246 +20392,3 @@ msgstr "" #: resources/data/hints.ini: [hint:Avoid warping] msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping?" msgstr "" - -msgid "Entering Paint-on supports" -msgstr "" - -msgid "Leaving Paint-on supports" -msgstr "" - -msgid "Paint-on supports editing" -msgstr "" - -msgid "Entering Brim Ears" -msgstr "" - -msgid "Leaving Brim Ears" -msgstr "" - -msgid "Entering color painting" -msgstr "" - -msgid "Leaving color painting" -msgstr "" - -msgid "Color painting editing" -msgstr "" - -msgid "Entering Paint-on fuzzy skin" -msgstr "" - -msgid "Leaving Paint-on fuzzy skin" -msgstr "" - -msgid "Paint-on fuzzy skin editing" -msgstr "" - -msgid "Entering Cut gizmo" -msgstr "" - -msgid "Leaving Cut gizmo" -msgstr "" - -msgid "Cut gizmo editing" -msgstr "" - -msgid "Entering Measure gizmo" -msgstr "" - -msgid "Leaving Measure gizmo" -msgstr "" - -msgid "Entering Assembly gizmo" -msgstr "" - -msgid "Leaving Assembly gizmo" -msgstr "" - -msgid "Simple settings" -msgstr "" - -msgid "Expert settings" -msgstr "" - -msgid "Type to filter..." -msgstr "" - -msgid "No selected items..." -msgstr "" - -msgid "All items selected..." -msgstr "" - -msgid "No matching items..." -msgstr "" - -msgid "Select visible" -msgstr "" - -msgid "Deselect visible" -msgstr "" - -msgid "Filter selected" -msgstr "" - -msgid "Filter nonSelected" -msgstr "" - -msgid "An unexpected error occurred" -msgstr "" - -msgid "The download has failed" -msgstr "" - -msgid "Can't create file at %1%" -msgstr "" - -msgid "Archive preview" -msgstr "" - -msgid "Open File" -msgstr "" - -msgid "Desktop Integration" -msgstr "" - -msgid "Performing desktop integration failed - Could not find executable." -msgstr "" - -msgid "Beta" -msgstr "" - -msgid "Sending failed, please try again!" -msgstr "" - -msgid "Failed to create the temporary folder." -msgstr "" - -msgid "PresetBundle" -msgstr "" - -msgid "ExportPresetBundle" -msgstr "" - -msgid "Save preset bundle" -msgstr "" - -msgid "Bundle folder does not exist." -msgstr "" - -msgid "Failed to open folder." -msgstr "" - -msgid "Delete selected bundle from folder and all presets loaded from it?" -msgstr "" - -msgid "Delete Bundle" -msgstr "" - -msgid "Failed to remove bundle." -msgstr "" - -msgid "Remove Bundle" -msgstr "" - -msgid "Unsubscribe bundle?" -msgstr "" - -msgid "UnsubscribeBundle" -msgstr "" - -msgid "Failed to unsubscribe bundle." -msgstr "" - -msgid "Unsubscribe Bundle" -msgstr "" - -msgid "The Hostname/IP/URL could not be parsed, please check it and try again." -msgstr "" - -msgid "Could not parse server response." -msgstr "" - -msgid "Connected to CrealityPrint successfully!" -msgstr "" - -msgid "Could not connect to CrealityPrint" -msgstr "" - -msgid "Connection to ElegooLink is working correctly." -msgstr "" - -msgid "Could not connect to ElegooLink" -msgstr "" - -msgid "ElegooLink not detected" -msgstr "" - -msgid "Invalid access code" -msgstr "" - -msgid "CC2 device not detected" -msgstr "" - -msgid "CC2 upload failed" -msgstr "" - -msgid "Upload failed" -msgstr "" - -msgid "Printer returned an error" -msgstr "" - -msgid "Missing system_info in response" -msgstr "" - -msgid "Missing printer serial number in response" -msgstr "" - -msgid "Error parsing response" -msgstr "" - -msgid "Error code: %1%" -msgstr "" - -msgid "Error code not found" -msgstr "" - -msgid "Failed to open file for upload." -msgstr "" - -msgid "Failed to read file chunk for upload." -msgstr "" - -msgid "The file is empty or could not be read." -msgstr "" - -msgid "Failed to calculate file checksum." -msgstr "" - -msgid "The file is lost, please check and try again." -msgstr "" - -msgid "The file is corrupted, please check and try again." -msgstr "" - -msgid "Transmission abnormality, please check and try again." -msgstr "" - -msgid "The file does not match the printer, please check and try again." -msgstr "" - -msgid "Start print timeout" -msgstr "" - -msgid "Start print failed" -msgstr "" - -msgid "Error. Can't get api token for authorization" -msgstr "" - -msgid "Error saving session to file" -msgstr "" - -msgid "Error during file upload" -msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index ee2eb8d3a3..89773872f8 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -202,6 +202,15 @@ msgstr "Fet" msgid "Support Generated" msgstr "Suport generat" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Recolzar sobre la Cara" @@ -289,6 +298,15 @@ msgstr "Pintat amb: Filament %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Pell difusa pintada" @@ -310,6 +328,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Activa la pell difusa pintada per a aquest objecte" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Moure" @@ -700,6 +727,15 @@ msgstr "Tall per línia" msgid "Delete connector" msgstr "Suprimeix el connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nom de la malla" @@ -1577,6 +1613,12 @@ msgstr "Distància paral·lela:" msgid "Flip by Face 2" msgstr "Gira per la cara 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Ensamblar" @@ -1614,6 +1656,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Muntatge cara a cara" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1902,6 +1950,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3194,6 +3256,45 @@ msgstr "La temperatura màxima no pot superar " msgid "The minmum temperature should not be less than " msgstr "La temperatura mínima no hauria de ser inferior a " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tots" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Deseleccionar-ho tot" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Configuració avançada" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3477,6 +3578,9 @@ msgstr "La tipografia no té cap forma per al text indicat." msgid "There is no valid surface for text projection." msgstr "No hi ha cap superfície vàlida per a la projecció del text." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Precondicionament tèrmic per a l'optimització de la primera capa" @@ -8716,9 +8820,6 @@ msgstr "Agrupa els perfils de filament de l'usuari" msgid "Group user filament presets based on selection" msgstr "Agrupa els perfils de filament de l'usuari segons la selecció" -msgid "All" -msgstr "Tots" - msgid "By type" msgstr "Per tipus" @@ -9101,6 +9202,14 @@ msgstr "Descarrega el connector de xarxa" msgid "Associate files to OrcaSlicer" msgstr "Associar fitxers a OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Associar .3mf fitxers a OrcaSlicer" @@ -9979,6 +10088,9 @@ msgstr "" "firmware admet aquesta operació o verifiqueu si la impressora funciona " "correctament." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Laminat ok." @@ -10439,6 +10551,9 @@ msgstr "Establir la velocitat dels ponts externs i interns" msgid "Travel speed" msgstr "Velocitat de desplaçament" +msgid "Junction Deviation" +msgstr "Desviació de cruïlla" + msgid "Jerk(XY)" msgstr "Sacsejada( XY )-Jerk( XY )" @@ -11321,9 +11436,6 @@ msgstr "" "els filaments de la impressora. Els filaments de la impressora no utilitzats " "s'afegiran automàticament al final de la llista." -msgid "Advanced settings" -msgstr "Configuració avançada" - msgid "Add unused AMS filaments to filaments list." msgstr "Afegeix filaments d'AMS no utilitzats a la llista de filaments." @@ -11834,12 +11946,23 @@ msgstr "Un nou plugin de Xarxa( %s ) disponible, Vols instal·lar-lo?" msgid "New version of Orca Slicer" msgstr "Nova versió d'Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Omet aquesta versió" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmar i Actualitzar el broquet" @@ -11956,6 +12079,9 @@ msgstr "Mòdul de tall" msgid "Auto Fire Extinguishing System" msgstr "Sistema d'extinció automàtica d'incendis" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Actualitzar el firmware" @@ -13204,7 +13330,7 @@ msgid "External bridge density" msgstr "Densitat del pont exterior" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13218,18 +13344,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densitat del pont intern" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13264,11 +13386,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15532,9 +15652,6 @@ msgstr "El max_accel_to_decel de Klipper s'ajustarà a aquest %% d'acceleració" msgid "Default jerk." msgstr "Jerk predeterminat." -msgid "Junction Deviation" -msgstr "Desviació de cruïlla" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21775,9 +21892,6 @@ msgstr "Perfil d'Impressora" msgid "Filament Preset Template" msgstr "Plantilla de Perfil de Filament" -msgid "Deselect All" -msgstr "Deseleccionar-ho tot" - msgid "Process Preset Template" msgstr "Plantilla de Perfil de Processament" @@ -22301,9 +22415,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipus d'amfitrió( host ) d'impressió no coincident: %s" @@ -23126,6 +23252,105 @@ msgstr "No s'ha pogut connectar a Flashforge per sèrie" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "L'estat proporcionat no és correcte." @@ -23180,6 +23405,12 @@ msgstr "Orelles de la Vora d'Adherència" msgid "Please select single object." msgstr "Seleccioneu un sol objecte." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Allunya" @@ -23190,6 +23421,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "La càrrega d'informació dels objectes a ometre ha fallat. Torneu-ho a provar." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seleccionats" @@ -23340,6 +23574,100 @@ msgstr "Nombre de cares triangulars" msgid "Calculating, please wait..." msgstr "Calculant, espereu..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 1089103bf3..5546a839a6 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -195,6 +195,15 @@ msgstr "Hotovo" msgid "Support Generated" msgstr "Vygenerovaná podpora" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Umístit na plochu" @@ -283,6 +292,15 @@ msgstr "Namáznuto pomocí: Filament %1%" msgid "To:" msgstr "Do:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Malování na povrch fuzzy skin" @@ -302,6 +320,15 @@ msgstr "Varování: Fuzzy skin je vypnuta, malovaná fuzzy skin se neprojeví!" msgid "Enable painted fuzzy skin for this object" msgstr "Povolit malovanou (ručně aplikovanou) fuzzy skin pro tento objekt." +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Přesunout" @@ -692,6 +719,15 @@ msgstr "Řezat podle čáry" msgid "Delete connector" msgstr "Smazat konektor" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Název sítě" @@ -1549,6 +1585,12 @@ msgstr "Paralelní vzdálenost:" msgid "Flip by Face 2" msgstr "Převrátit podle plochy 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Sestavit" @@ -1585,6 +1627,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Sestavení plocha–plocha" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1866,6 +1914,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3151,6 +3213,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Vše" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Odznačit vše" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3427,6 +3528,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8567,9 +8671,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Vše" - msgid "By type" msgstr "By type" @@ -8940,6 +9041,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Přiřadit soubory k OrcaSliceru" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associate 3MF files to OrcaSlicer" @@ -9771,6 +9880,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Řezání proběhlo v pořádku." @@ -10216,6 +10328,9 @@ msgstr "Nastavit rychlost pro vnější a vnitřní mosty" msgid "Travel speed" msgstr "Rychlost přejezdu" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11085,9 +11200,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11586,12 +11698,23 @@ msgstr "Je dostupný nový síťový doplněk (%s). Chcete to nainstalovat?" msgid "New version of Orca Slicer" msgstr "Nová verze Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Přeskočit tuto verzi" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Potvrdit a aktualizovat trysku" @@ -11705,6 +11828,9 @@ msgstr "Řezací modul" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aktualizovat firmware" @@ -12913,7 +13039,7 @@ msgid "External bridge density" msgstr "Hustota externího mostu" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12927,18 +13053,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Hustota vnitřního mostu" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12973,11 +13095,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15140,9 +15260,6 @@ msgstr "" msgid "Default jerk." msgstr "Výchozí trhání." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21180,9 +21297,6 @@ msgstr "Předvolba tiskárny" msgid "Filament Preset Template" msgstr "Šablona filamentového přednastaveného profilu" -msgid "Deselect All" -msgstr "Odznačit vše" - msgid "Process Preset Template" msgstr "Šablona předvolby procesu" @@ -21683,9 +21797,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Nesouhlasný typ tiskového hostitele: %s" @@ -22473,6 +22599,105 @@ msgstr "Nepodařilo se připojit k Flashforge přes sériový port" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Zadaný stav není správný." @@ -22525,6 +22750,12 @@ msgstr "Ouška límce" msgid "Please select single object." msgstr "Vyberte jeden objekt." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22534,6 +22765,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22685,6 +22919,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index b6136c2dc2..b8b1526bf2 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.9\n" msgid "right" msgstr "rechts" @@ -198,6 +198,15 @@ msgstr "Erledigt" msgid "Support Generated" msgstr "Support generiert" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-auf Fläche platzieren" @@ -286,6 +295,15 @@ msgstr "Gemalt mit: Filament %1%" msgid "To:" msgstr "An:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Fuzzy Skin einfärben" @@ -307,6 +325,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Erlaube gemalten Fuzzy Skin für dieses Objekt" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Bewegen" @@ -701,6 +728,15 @@ msgstr "Schnitt durch Linie" msgid "Delete connector" msgstr "Verbinder löschen" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Netzname" @@ -1582,6 +1618,12 @@ msgstr "Parallele Entfernung:" msgid "Flip by Face 2" msgstr "Umdrehen durch Fläche 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Zusammenbauen" @@ -1620,6 +1662,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face und Face Zusammenbau" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Strg +" @@ -1912,11 +1960,25 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" -"Cloud-Synchronisationskonflikt: Ein Profil mit diesem Namen existiert bereits " -"in OrcaCloud.\n" +"Cloud-Synchronisationskonflikt: Ein Profil mit diesem Namen existiert " +"bereits in OrcaCloud.\n" "Pull lädt die Cloud-Kopie herunter. Force Push überschreibt sie mit Ihrem " "lokalen Profil." +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -1925,8 +1987,7 @@ msgstr "" "Möchten Sie fortfahren?" msgid "Resolve cloud sync conflict" -msgstr "" -"Cloud-Synchronisationskonflikt lösen" +msgstr "Cloud-Synchronisationskonflikt lösen" msgid "Retrieving printer information, please try again later." msgstr "Empfange Druckerinformationen, bitte später erneut versuchen." @@ -3236,6 +3297,45 @@ msgstr "Die maximale Temperatur darf nicht überschritten werden " msgid "The minmum temperature should not be less than " msgstr "Die minimale Temperatur sollte nicht weniger als " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Alle" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Alle abwählen" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Erweiterte Einstellungen" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3519,6 +3619,9 @@ msgstr "Schrift hat keine Form für den angegebenen Text." msgid "There is no valid surface for text projection." msgstr "Da ist keine gültige Oberfläche für die Textprojektion." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermische Vorkonditionierung zur Optimierung der ersten Schicht" @@ -8846,9 +8949,6 @@ msgstr "Gruppiere benutzerdefinierte Filamentprofile" msgid "Group user filament presets based on selection" msgstr "Gruppiere benutzerdefinierte Filamentprofile basierend auf der Auswahl" -msgid "All" -msgstr "Alle" - msgid "By type" msgstr "Nach Typ" @@ -9059,7 +9159,8 @@ msgid "Shadows" msgstr "Schatten" msgid "Renders cast shadows on the plate in realistic view." -msgstr "Zeigt geworfene Schatten auf der Platte in der realistischen Ansicht an." +msgstr "" +"Zeigt geworfene Schatten auf der Platte in der realistischen Ansicht an." msgid "Anti-aliasing" msgstr "Kantenglättung" @@ -9139,10 +9240,11 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" -"Dies deaktiviert alle Cloud-Funktionen, einschließlich der Profil-Synchronisierung " -"mit Orca Cloud. Benutzer, die es vorziehen, vollständig offline zu arbeiten, " -"können diese Option aktivieren.\n" -"Hinweis: Wenn der Unsichtbare Modus aktiviert ist, werden Ihre Benutzerprofile nicht in Orca Cloud gesichert." +"Dies deaktiviert alle Cloud-Funktionen, einschließlich der Profil-" +"Synchronisierung mit Orca Cloud. Benutzer, die es vorziehen, vollständig " +"offline zu arbeiten, können diese Option aktivieren.\n" +"Hinweis: Wenn der Unsichtbare Modus aktiviert ist, werden Ihre " +"Benutzerprofile nicht in Orca Cloud gesichert." msgid "Hide login side panel" msgstr "Login-Seitenleiste ausblenden" @@ -9254,6 +9356,14 @@ msgstr "Netzwerk-Plugin herunterladen" msgid "Associate files to OrcaSlicer" msgstr "Dateien mit OrcaSlicer verknüpfen" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Dateiendung .3mf mit OrcaSlicer verknüpfen" @@ -10150,6 +10260,9 @@ msgstr "" "Datei-Upload zeitüberschritten. Bitte überprüfen Sie, ob die Firmware-" "Version diesen Vorgang unterstützt oder ob der Drucker ordnungsgemäß " +msgid "Sending failed, please try again!" +msgstr "Senden fehlgeschlagen, bitte erneut versuchen!" + msgid "Slice ok." msgstr "Slicing erfolgreich." @@ -10616,6 +10729,9 @@ msgstr "Setze Geschwindigkeit für externe und interne Brücken" msgid "Travel speed" msgstr "Fahrgeschwindigkeit" +msgid "Junction Deviation" +msgstr "Junction-Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11534,9 +11650,6 @@ msgstr "" "Filamenten des Druckers. Unbenutzte Druckerfilamente werden automatisch am " "Ende der Liste hinzugefügt." -msgid "Advanced settings" -msgstr "Erweiterte Einstellungen" - msgid "Add unused AMS filaments to filaments list." msgstr "Unbenutzte AMS-Filamente zur Filamentliste hinzufügen." @@ -12054,12 +12167,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Neue Version von Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Auf Github überprüfen" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Überspringe diese Version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bestätigen und Düse aktualisieren" @@ -12176,6 +12300,9 @@ msgstr "Schneidemodul" msgid "Auto Fire Extinguishing System" msgstr "Automatisches Feuerlöschsystem" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware aktualisieren" @@ -12744,7 +12871,8 @@ msgid "Layer height cannot exceed nozzle diameter." msgstr "Schichthöhe darf den Düsendurchmesser nicht überschreiten." msgid "Bridge line width must not exceed nozzle diameter" -msgstr "Die Breite der Brückenlinie darf den Düsendurchmesser nicht überschreiten." +msgstr "" +"Die Breite der Brückenlinie darf den Düsendurchmesser nicht überschreiten." msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " @@ -12758,9 +12886,9 @@ msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" -"\"G92 E0\" wurde in layer_change_gcode gefunden, aber G oder E sind " -"nicht großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene " -"\"G92 E0\"." +"\"G92 E0\" wurde in layer_change_gcode gefunden, aber G oder E sind nicht " +"großgeschrieben. Bitte ändern Sie sie in das exakte Großgeschriebene \"G92 " +"E0\"." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12896,7 +13024,9 @@ msgstr "Unterstützung paralleler Druckköpfe" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." -msgstr "Aktivieren Sie die Druckereinstellungen für Maschinen, die mehrere Druckköpfe parallel verwenden können." +msgstr "" +"Aktivieren Sie die Druckereinstellungen für Maschinen, die mehrere " +"Druckköpfe parallel verwenden können." msgid "Parallel printheads count" msgstr "Anzahl der parallelen Druckköpfe" @@ -12904,7 +13034,9 @@ msgstr "Anzahl der parallelen Druckköpfe" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." -msgstr "Legen Sie die Anzahl der parallelen Druckköpfe für Maschinen wie den OrangeStorm Giga Drucker fest." +msgstr "" +"Legen Sie die Anzahl der parallelen Druckköpfe für Maschinen wie den " +"OrangeStorm Giga Drucker fest." msgid "Parallel printheads bed exclude areas" msgstr "Druckbett-Ausschlussbereiche für parallele Druckköpfe" @@ -12915,8 +13047,9 @@ msgid "" "empty for no excluded area." msgstr "" "Geordnete Liste der Druckbett-Ausschlussbereiche nach Anzahl der parallelen " -"Druckköpfe. Punkt 1 gilt für einen Druckkopf, Punkt 2 für zwei Druckköpfe und so " -"weiter. Lassen Sie einen Punkt leer, wenn keine Ausschlussbereiche vorhanden sind." +"Druckköpfe. Punkt 1 gilt für einen Druckkopf, Punkt 2 für zwei Druckköpfe " +"und so weiter. Lassen Sie einen Punkt leer, wenn keine Ausschlussbereiche " +"vorhanden sind." msgid "Bed exclude area" msgstr "ausgenommene Druckbettfläche" @@ -13493,8 +13626,9 @@ msgstr "" msgid "External bridge density" msgstr "Externe Brücken Dichte" +#, fuzzy msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13508,31 +13642,33 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" -"Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist 100%.\n" +"Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist " +"100%.\n" "Theoretisch bedeutet 100% eine solide Brücke, aber aufgrund der Neigung von " -"Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht ausreichend.\n" +"Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht " +"ausreichend.\n" "\n" "- Höher als 100% Dichte (Empfohlen Max 125%):\n" -" - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende Linien während des Druckens zusätzliche Unterstützung bieten.\n" -" - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" +" - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende " +"Linien während des Druckens zusätzliche Unterstützung bieten.\n" +" - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren " +"und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" "\n" "- Niedriger als 100% Dichte (Min 10%):\n" -" - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die extrudierte Brücke vorhanden ist.\n" -" - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität führen.\n" -"\n" -"Empfohlener Bereich: Minimum 10% - Maximum 125%." +" - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und " +"mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die " +"extrudierte Brücke vorhanden ist.\n" +" - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität " +"führen." msgid "Internal bridge density" msgstr "Interne Brücken Dichte" +#, fuzzy msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13552,16 +13688,17 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" -"Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist 100%. " -"100% bedeutet eine solide interne Brücke.\n" +"Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist " +"100%. 100% bedeutet eine solide interne Brücke.\n" "\n" "Interne Brücken wirken als Zwischenstütze zwischen lockerer Füllung und " -"oberer festen Füllung und können die Qualität der Oberseite stark beeinflussen.\n" +"oberer festen Füllung und können die Qualität der Oberseite stark " +"beeinflussen.\n" "\n" "- Höher als 100% Dichte (Empfohlen Max 125%):\n" -" - Vorteile: Verbessert die Stärke der internen Brücke und die Unterstützung " -"unter den oberen Schichten, reduziert das Durchhängen und verbessert die " -"Oberflächenqualität.\n" +" - Vorteile: Verbessert die Stärke der internen Brücke und die " +"Unterstützung unter den oberen Schichten, reduziert das Durchhängen und " +"verbessert die Oberflächenqualität.\n" " - Nachteile: Erhöht den Materialverbrauch und die Druckzeit; eine zu hohe " "Dichte kann zu Überfüllung und inneren Spannungen führen.\n" "\n" @@ -13571,9 +13708,9 @@ msgstr "" " - Nachteile: Kann die innere Unterstützung reduzieren und das Risiko von " "Durchhängen und Defekten auf der Oberseite erhöhen.\n" "\n" -"Diese Option funktioniert besonders gut in Kombination mit der zweiten internen " -"Brücke über Füllungsoption, um die Brückenbildung weiter zu verbessern, bevor " -"die obere feste Füllung extrudiert wird." +"Diese Option funktioniert besonders gut in Kombination mit der zweiten " +"internen Brücke über Füllungsoption, um die Brückenbildung weiter zu " +"verbessern, bevor die obere feste Füllung extrudiert wird." msgid "Bridge flow ratio" msgstr "Brücken Flussrate" @@ -13589,21 +13726,18 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" -"Die Brückenlinienbreite wird entweder als absoluter Wert oder als Prozentsatz " -"des aktiven Düsendurchmessers angegeben (Prozentsätze werden vom Düsendurch- " -"messer berechnet).\n" -"Wird empfohlen, in Verbindung mit einer höheren Brückendichte oder einer " -"höheren Brückenflussrate zu verwenden.\n" +"Linienbreite der Brücke. Wenn als % angegeben, wird sie über den " +"Düsendurchmesser berechnet.\n" +"Empfohlen in Verbindung mit einer höheren Brückendichte oder einer höheren " +"Brückenflussrate.\n" "\n" "Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" "Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren " @@ -13625,10 +13759,13 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" "Dieser Wert steuert die Dicke der internen Brückenlage. Dies ist die erste " -"Schicht über der lockeren Füllung, daher kann eine Erhöhung die Festigkeit und ""die Qualität der oberen Schicht verbessern.\n" -"Werte über 1.0: Erhöhen die Materialmenge bei gleichbleibendem Linienabstand. Dies kann die " -"Linienkontakt und Festigkeit verbessern.\n" -"Werte unter 1.0: Reduzieren die Materialmenge bei Anpassung des Linienabstands, um den Kontakt aufrechtzuerhalten. Dies kann das Durchhängen verbessern.\n" +"Schicht über der lockeren Füllung, daher kann eine Erhöhung die Festigkeit " +"und die Qualität der oberen Schicht verbessern.\n" +"Werte über 1.0: Erhöhen die Materialmenge bei gleichbleibendem " +"Linienabstand. Dies kann die Linienkontakt und Festigkeit verbessern.\n" +"Werte unter 1.0: Reduzieren die Materialmenge bei Anpassung des " +"Linienabstands, um den Kontakt aufrechtzuerhalten. Dies kann das Durchhängen " +"verbessern.\n" "\n" "Der tatsächliche Brückenfluss wird berechnet, indem dieser Wert mit dem " "Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " @@ -14031,20 +14168,26 @@ msgstr "" "Es wird in der Regel empfohlen, diese Option aktiviert zu lassen, es sei " "denn, Ihre Druckerkühlung ist stark genug oder die Druckgeschwindigkeit ist " "langsam genug, sodass sich Umfänge nicht krümmen. \n" -"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann dieser " -"Parameter bei der Verlangsamung Wandartefakte verursachen, da die " +"Wenn Sie mit einer hohen externen Umfangsgeschwindigkeit drucken, kann " +"dieser Parameter bei der Verlangsamung Wandartefakte verursachen, da die " "potentiell große Varianz der Druckgeschwindigkeiten den Extruder daran " "hindert, dem geforderten Fließänderungsverlauf zu folgen.\n" "Die Ursache dieser Artefakte ist in der Regel eine leicht abweichende PA-" "Einstellung, insbesondere in Kombination mit einer hohen PA-Glättungszeit.\n" "\n" "Empfehlungen bei Aktivierung dieser Option:\n" -"1. Reduzieren Sie die Glättungszeit des Druckvorschubs auf 0,015 - 0,02, damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" -"2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen den schnellen und langsamen Segmenten zu begrenzen.\n" -"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" +"1. Reduzieren Sie die Glättungszeit des Druckvorschubs auf 0,015 - 0,02, " +"damit der Extruder schnell auf Geschwindigkeitsänderungen reagieren kann.\n" +"2. Erhöhen Sie die Mindestdruckgeschwindigkeiten, um die Schwankung zwischen " +"den schnellen und langsamen Segmenten zu begrenzen.\n" +"3. Wenn Artefakte weiterhin auftreten, aktivieren Sie die Glättung der " +"Extrusionsrate (ERS), um die Übergänge der Fließrate weiter zu glätten.\n" "\n" -"Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" -"Zum Beispiel wird bei den Umfängen, die zu 100 % überhängen, wobei keine Wand darunter liegt, die 100 % Überhanggeschwindigkeit angewendet." +"Hinweis: Wenn diese Option aktiviert ist, werden die Überhangumfänge wie " +"Überhänge behandelt, was bedeutet, dass die Überhanggeschwindigkeit auch " +"dann angewendet wird, wenn der überhängende Umfang Teil einer Brücke ist.\n" +"Zum Beispiel wird bei den Umfängen, die zu 100 % überhängen, wobei keine " +"Wand darunter liegt, die 100 % Überhanggeschwindigkeit angewendet." msgid "mm/s or %" msgstr "mm/s o. %" @@ -14337,8 +14480,10 @@ msgid "" msgstr "" "Wenn aktiviert, verwendet die Brückenextrusion eine Linienhöhe, die dem " "Düsendurchmesser entspricht.\n" -"Dies erhöht die Brückenfestigkeit und Zuverlässigkeit, ermöglicht längere Spannweiten, kann aber das Aussehen verschlechtern.\n" -"Wenn deaktiviert, können Brücken besser aussehen, sind aber im Allgemeinen nur für kürzere Spannweiten zuverlässig." +"Dies erhöht die Brückenfestigkeit und Zuverlässigkeit, ermöglicht längere " +"Spannweiten, kann aber das Aussehen verschlechtern.\n" +"Wenn deaktiviert, können Brücken besser aussehen, sind aber im Allgemeinen " +"nur für kürzere Spannweiten zuverlässig." msgid "Thick internal bridges" msgstr "Dicke interne Brücken" @@ -15645,9 +15790,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" -"Richtet die Richtungen von Füllung, Brücke, Glättung und Oberflächenfüllung so " -"aus, dass sie der Orientierung des Modells auf der Bauplatte folgen.\n" -"Wenn aktiviert, drehen sich die Richtungen mit dem Modell, um optimale Festigkeitseigenschaften zu erhalten." +"Richtet die Richtungen von Füllung, Brücke, Glättung und Oberflächenfüllung " +"so aus, dass sie der Orientierung des Modells auf der Bauplatte folgen.\n" +"Wenn aktiviert, drehen sich die Richtungen mit dem Modell, um optimale " +"Festigkeitseigenschaften zu erhalten." msgid "Insert solid layers" msgstr "Massive Schichten einfügen" @@ -15786,7 +15932,8 @@ msgid "Lightning overhang angle" msgstr "Überhangwinkel der Blitzfüllung" msgid "Maximum overhang angle for Lightning infill support propagation." -msgstr "Maximaler Überhangwinkel für die Ausbreitung der Blitzfüllungsunterstützung." +msgstr "" +"Maximaler Überhangwinkel für die Ausbreitung der Blitzfüllungsunterstützung." msgid "Prune angle" msgstr "Beschneidungswinkel" @@ -15952,9 +16099,6 @@ msgstr "" msgid "Default jerk." msgstr "Default Ruckwert" -msgid "Junction Deviation" -msgstr "Junction-Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -18960,8 +19104,8 @@ msgid "" "used." msgstr "" "Filament zum Drucken der Stützstruktur-Basis und des Rafts.\n" -"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur und das " -"aktuelle Filament wird verwendet." +"\"Standard\" bedeutet kein spezifisches Filament für die Stützstruktur und " +"das aktuelle Filament wird verwendet." msgid "Avoid interface filament for base" msgstr "Schnittstellenfilament für die Basis verringern" @@ -20113,7 +20257,8 @@ msgid "Invalid value when spiral vase mode is enabled: " msgstr "Ungültiger Wert, wenn der Spiral-Vase-Modus aktiviert ist: " msgid "Bridge line width must not exceed nozzle diameter: " -msgstr "Die Brückenlinienbreite darf den Düsendurchmesser nicht überschreiten: " +msgstr "" +"Die Brückenlinienbreite darf den Düsendurchmesser nicht überschreiten: " msgid "too large line width " msgstr "Zu große Linienbreite" @@ -21990,28 +22135,32 @@ msgid "Loading IFS slots from printer..." msgstr "Lade IFS-Slots vom Drucker..." msgid "Slice the plate first to get project material information." -msgstr "Schneiden Sie die Platte zuerst, um Projektmaterialinformationen zu erhalten." +msgstr "" +"Schneiden Sie die Platte zuerst, um Projektmaterialinformationen zu erhalten." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" -"Diese Platte verwendet mehrere Materialien. Aktivieren Sie IFS und weisen Sie jedem Werkzeug einen Drucker-Slot zu." - +"Diese Platte verwendet mehrere Materialien. Aktivieren Sie IFS und weisen " +"Sie jedem Werkzeug einen Drucker-Slot zu." msgid "Each project material must be assigned to an IFS slot before printing." -msgstr "Jedes Projektmaterial muss vor dem Drucken einem IFS-Slot zugewiesen werden." +msgstr "" +"Jedes Projektmaterial muss vor dem Drucken einem IFS-Slot zugewiesen werden." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" -"Jedes Projektmaterial muss vor dem Drucken einem geladenen IFS-Slot zugewiesen werden." +"Jedes Projektmaterial muss vor dem Drucken einem geladenen IFS-Slot " +"zugewiesen werden." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" -"Jedes Projektmaterial muss mit dem in dem ausgewählten IFS-Slot geladenen Material übereinstimmen." +"Jedes Projektmaterial muss mit dem in dem ausgewählten IFS-Slot geladenen " +"Material übereinstimmen." msgid "Print host upload queue" msgstr "Druck-Host-Upload-Warteschlange" @@ -22354,9 +22503,6 @@ msgstr "Druckerprofil" msgid "Filament Preset Template" msgstr "Filament-Vorlagenprofil" -msgid "Deselect All" -msgstr "Alle abwählen" - msgid "Process Preset Template" msgstr "Prozess-Vorlagenprofil" @@ -22811,7 +22957,8 @@ msgid "Could not get a valid Printer Host reference" msgstr "Konnte keine gültige Referenz zum Druck-Host erhalten" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" -msgstr "Keine gültige Sitzung erkannt. Mit dem Login bei 3DPrinterOS fortfahren?" +msgstr "" +"Keine gültige Sitzung erkannt. Mit dem Login bei 3DPrinterOS fortfahren?" msgid "Success!" msgstr "Erfolgreich!" @@ -22882,9 +23029,21 @@ msgstr "Druckertyp nicht gefunden, bitte manuell auswählen." msgid "Authorizing..." msgstr "Autorisierung..." +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "Fehler bei der Sitzungsüberprüfung" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Typ des Druck-Hosts: %s ist falsch" @@ -23706,6 +23865,105 @@ msgstr "" "Die lokale Flashforge-API erfordert sowohl die Seriennummer als auch den " "Zugriffscode." +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Der bereitgestellte Status ist nicht korrekt." @@ -23762,6 +24020,12 @@ msgstr "Mausohren" msgid "Please select single object." msgstr "Bitte wählen Sie ein einzelnes Objekt aus." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Vergrößern" @@ -23773,6 +24037,9 @@ msgstr "" "Laden der Überspringobjektinformationen fehlgeschlagen. Bitte versuchen Sie " "es erneut." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d ausgewählt" @@ -23928,6 +24195,100 @@ msgstr "Anzahl der dreieckigen Facetten" msgid "Calculating, please wait..." msgstr "Berechnung läuft, bitte warten..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24351,6 +24712,115 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "" +#~ "Controls the density (spacing) of external bridge lines. Default is " +#~ "100%.\n" +#~ "Theoretically, 100% means a solid bridge, but due to the tendency of " +#~ "bridge extrusions to sag, 100% may not be sufficient.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Produces smoother bridge surfaces, as overlapping lines provide " +#~ "additional support during printing.\n" +#~ " - Cons: Can cause overextrusion, which may reduce lower and upper " +#~ "surface quality and increase the risk of warping.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can create a string-like first layer. Faster and with better " +#~ "cooling because there is more space for air to circulate around the " +#~ "extruded bridge.\n" +#~ " - Cons: May lead to sagging and poorer surface finish.\n" +#~ "\n" +#~ "Recommended range: Minimum 10% - Maximum 125%." +#~ msgstr "" +#~ "Steuert die Dichte (Abstand) der Linien der externen Brücke. Standard ist " +#~ "100%.\n" +#~ "Theoretisch bedeutet 100% eine solide Brücke, aber aufgrund der Neigung " +#~ "von Brückenextrusionen zum Durchhängen, ist 100% möglicherweise nicht " +#~ "ausreichend.\n" +#~ "\n" +#~ "- Höher als 100% Dichte (Empfohlen Max 125%):\n" +#~ " - Vorteile: Erzeugt glattere Brückenoberflächen, da sich überlappende " +#~ "Linien während des Druckens zusätzliche Unterstützung bieten.\n" +#~ " - Nachteile: Kann zu Überextrusion führen, was die Qualität der unteren " +#~ "und oberen Oberfläche verringern und das Risiko von Verzug erhöhen kann.\n" +#~ "\n" +#~ "- Niedriger als 100% Dichte (Min 10%):\n" +#~ " - Vorteile: Kann eine fadenartige erste Schicht erzeugen. Schneller und " +#~ "mit besserer Kühlung, da mehr Platz für die Luftzirkulation um die " +#~ "extrudierte Brücke vorhanden ist.\n" +#~ " - Nachteile: Kann zu Durchhängen und schlechterer Oberflächenqualität " +#~ "führen.\n" +#~ "\n" +#~ "Empfohlener Bereich: Minimum 10% - Maximum 125%." + +#~ msgid "" +#~ "Controls the density (spacing) of internal bridge lines. Default is 100%. " +#~ "100% means a solid internal bridge.\n" +#~ "\n" +#~ "Internal bridges act as intermediate support between sparse infill and " +#~ "top solid infill and can strongly affect top surface quality.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Improves internal bridge strength and support under top layers, " +#~ "reducing sagging and improving top-surface finish.\n" +#~ " - Cons: Increases material use and print time; excessive density may " +#~ "cause overextrusion and internal stresses.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can reduce pillowing and improve cooling (more airflow through " +#~ "the bridge), and may speed up printing.\n" +#~ " - Cons: May reduce internal support, increasing the risk of sagging and " +#~ "top surface defects.\n" +#~ "\n" +#~ "This option works particularly well when combined with the second " +#~ "internal bridge over infill option to improve bridging further before " +#~ "solid infill is extruded." +#~ msgstr "" +#~ "Steuert die Dichte (Abstand) der Linien der internen Brücke. Standard ist " +#~ "100%. 100% bedeutet eine solide interne Brücke.\n" +#~ "\n" +#~ "Interne Brücken wirken als Zwischenstütze zwischen lockerer Füllung und " +#~ "oberer festen Füllung und können die Qualität der Oberseite stark " +#~ "beeinflussen.\n" +#~ "\n" +#~ "- Höher als 100% Dichte (Empfohlen Max 125%):\n" +#~ " - Vorteile: Verbessert die Stärke der internen Brücke und die " +#~ "Unterstützung unter den oberen Schichten, reduziert das Durchhängen und " +#~ "verbessert die Oberflächenqualität.\n" +#~ " - Nachteile: Erhöht den Materialverbrauch und die Druckzeit; eine zu " +#~ "hohe Dichte kann zu Überfüllung und inneren Spannungen führen.\n" +#~ "\n" +#~ "- Niedriger als 100% Dichte (Min 10%):\n" +#~ " - Vorteile: Kann das Pillowing reduzieren und die Kühlung verbessern " +#~ "(mehr Luftzirkulation durch die Brücke), und kann den Druck " +#~ "beschleunigen.\n" +#~ " - Nachteile: Kann die innere Unterstützung reduzieren und das Risiko " +#~ "von Durchhängen und Defekten auf der Oberseite erhöhen.\n" +#~ "\n" +#~ "Diese Option funktioniert besonders gut in Kombination mit der zweiten " +#~ "internen Brücke über Füllungsoption, um die Brückenbildung weiter zu " +#~ "verbessern, bevor die obere feste Füllung extrudiert wird." + +#, c-format, boost-format +#~ msgid "" +#~ "Bridge line width is expressed either as an absolute value or as a " +#~ "percentage of the active nozzle diameter (percentages are computed from " +#~ "the nozzle diameter).\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "Die Brückenlinienbreite wird entweder als absoluter Wert oder als " +#~ "Prozentsatz des aktiven Düsendurchmessers angegeben (Prozentsätze werden " +#~ "vom Düsendurch- messer berechnet).\n" +#~ "Wird empfohlen, in Verbindung mit einer höheren Brückendichte oder einer " +#~ "höheren Brückenflussrate zu verwenden.\n" +#~ "\n" +#~ "Der maximale Wert beträgt 100% oder der Düsendurchmesser.\n" +#~ "Wenn auf 0 gesetzt, entspricht die Linienbreite der Breite der inneren " +#~ "festen Füllung." + #, c-format, boost-format #~ msgid "" #~ "Failed to connect to OrcaCloud.\n" @@ -25182,9 +25652,6 @@ msgstr "" #~ "den Drucker neu starten oder aktualisieren, wenn das Problem weiterhin " #~ "besteht." -#~ msgid "Sending failed, please try again!" -#~ msgstr "Senden fehlgeschlagen, bitte erneut versuchen!" - #~ msgid "Open Wiki for more information >" #~ msgstr "Öffnen Sie das Wiki für weitere Informationen >" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 5c5ca1f48e..12f07ee995 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-05-18 09:32-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -183,6 +183,15 @@ msgstr "" msgid "Support Generated" msgstr "Support generated" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "" @@ -268,6 +277,15 @@ msgstr "" msgid "To:" msgstr "" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "" @@ -287,6 +305,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "" @@ -669,6 +696,15 @@ msgstr "" msgid "Delete connector" msgstr "" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "" @@ -1510,6 +1546,12 @@ msgstr "" msgid "Flip by Face 2" msgstr "" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "" @@ -1543,6 +1585,12 @@ msgstr "" msgid "Face and face assembly" msgstr "" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "" @@ -1805,6 +1853,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3031,6 +3093,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3277,6 +3378,9 @@ msgstr "" msgid "There is no valid surface for text projection." msgstr "" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -8068,9 +8172,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "" - msgid "By type" msgstr "" @@ -8411,6 +8512,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "" @@ -9182,6 +9291,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice complete" @@ -9558,6 +9670,9 @@ msgstr "" msgid "Travel speed" msgstr "" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "" @@ -10373,9 +10488,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -10835,12 +10947,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "" @@ -10944,6 +11067,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "" @@ -11998,7 +12124,7 @@ msgid "External bridge density" msgstr "" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12012,18 +12138,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12058,11 +12180,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -13831,9 +13951,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19051,9 +19168,6 @@ msgstr "" msgid "Filament Preset Template" msgstr "" -msgid "Deselect All" -msgstr "" - msgid "Process Preset Template" msgstr "" @@ -19496,9 +19610,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "" @@ -20137,6 +20263,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "" @@ -20187,6 +20412,12 @@ msgstr "" msgid "Please select single object." msgstr "" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "" @@ -20196,6 +20427,9 @@ msgstr "" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "" @@ -20341,6 +20575,100 @@ msgstr "" msgid "Calculating, please wait..." msgstr "" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 4bfa89ed68..d307c79b6c 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 21:07-0300\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -122,7 +122,7 @@ msgid "On highlighted overhangs only" msgstr "Solo en voladizos resaltados" msgid "Erase all" -msgstr "" +msgstr "Borrar todo" msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" @@ -197,6 +197,15 @@ msgstr "Hecho" msgid "Support Generated" msgstr "Soportes generados" +msgid "Entering Paint-on supports" +msgstr "Entrando al mecanismo de pintar soportes" + +msgid "Leaving Paint-on supports" +msgstr "Saliendo del mecanismo de pintar soportes" + +msgid "Paint-on supports editing" +msgstr "Pintar soportes" + msgid "Gizmo-Place on Face" msgstr "Herramienta de selección de faceta como base" @@ -285,6 +294,15 @@ msgstr "Pintado con: Filamento %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "Entrando al mecanismo de pintar color" + +msgid "Leaving color painting" +msgstr "Saliendo del mecanismo de pintar color" + +msgid "Color painting editing" +msgstr "Edición de pintura de colores" + msgid "Paint-on fuzzy skin" msgstr "Pintar piel difusa" @@ -306,6 +324,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Habilitar piel difusa pintada para este objeto" +msgid "Entering Paint-on fuzzy skin" +msgstr "Entrando al mecanismo de pintar piel difusa" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "Saliendo del mecanismo de pintar piel difusa" + +msgid "Paint-on fuzzy skin editing" +msgstr "Pintar piel difusa" + msgid "Move" msgstr "Mover" @@ -350,10 +377,10 @@ msgid "Fixed step drag" msgstr "Arrastre de paso fijo" msgid "Context Menu" -msgstr "" +msgstr "Menú contextual" msgid "Toggle Auto-Drop" -msgstr "" +msgstr "Activar/desactivar dejar caer automáticamente" msgid "Single sided scaling" msgstr "Escalado de un solo lado" @@ -509,7 +536,7 @@ msgid "Multiple" msgstr "Múltiple" msgid "Count" -msgstr "" +msgstr "Contar" msgid "Gap" msgstr "Brecha" @@ -698,6 +725,15 @@ msgstr "Corte por Línea" msgid "Delete connector" msgstr "Borrar conector" +msgid "Entering Cut gizmo" +msgstr "Entrando al mecanismo de corte" + +msgid "Leaving Cut gizmo" +msgstr "Saliendo del mecanismo de corte" + +msgid "Cut gizmo editing" +msgstr "Edición de objetos recortados" + msgid "Mesh name" msgstr "Nombre de la malla" @@ -880,7 +916,7 @@ msgid "Advanced" msgstr "Avanzado" msgid "Reset all options except the text and operation" -msgstr "" +msgstr "Restablecer todas las opciones excepto el texto y la operación" msgid "" "The text cannot be written using the selected font. Please try choosing a " @@ -1581,6 +1617,12 @@ msgstr "Distancia paralela:" msgid "Flip by Face 2" msgstr "Voltear por la cara 2" +msgid "Entering Measure gizmo" +msgstr "Entrando al mecanismo de medición" + +msgid "Leaving Measure gizmo" +msgstr "Saliendo del mecanismo de medición" + msgid "Assemble" msgstr "Agrupar" @@ -1620,6 +1662,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montaje de cara y cara" +msgid "Entering Assembly gizmo" +msgstr "Entrando al mecanismo de ensamblaje" + +msgid "Leaving Assembly gizmo" +msgstr "Saliendo del mecanismo de ensamblaje" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1806,16 +1854,16 @@ msgid "Info" msgstr "Información" msgid "Loading printer & filament profiles" -msgstr "" +msgstr "Cargando perfiles de impresora y filamento" msgid "Creating main window" -msgstr "" +msgstr "Creación de la ventana principal" msgid "Loading current preset" -msgstr "" +msgstr "Cargando el preajuste actual" msgid "Showing main window" -msgstr "" +msgstr "Mostrando la ventana principal" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" @@ -1873,12 +1921,14 @@ msgid "" "You are currently in Stealth Mode. To log into the Cloud, you need to " "disable Stealth Mode first." msgstr "" +"Actualmente estás en modo sigiloso. Para iniciar sesión en la nube, primero " +"debes desactivar el modo sigiloso." msgid "Stealth Mode" -msgstr "" +msgstr "Modo sigiloso" msgid "Quit Stealth Mode" -msgstr "" +msgstr "Salir del modo sigiloso" msgid "new or open project file is not allowed during the slicing process!" msgstr "" @@ -1900,20 +1950,53 @@ msgid "" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflicto de sincronización en la nube: este perfil tiene una versión más " +"reciente en OrcaCloud.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." msgid "" "Cloud sync conflict: a preset with this name already exists in OrcaCloud.\n" "Pull downloads the cloud copy. Force push overwrites it with your local " "preset." msgstr "" +"Conflicto de sincronización en la nube: ya existe un perfil con este nombre " +"en OrcaCloud.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." + +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" +"Conflicto de sincronización en la nube: ya se ha eliminado de la nube un " +"perfil con el mismo nombre.\n" +"Al hacer clic en «Eliminar», se borrará tu perfil local. Al hacer clic en " +"«Forzar envío», se sobrescribirá con tu perfil local." + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" +"Conflicto de sincronización en la nube: se ha producido un conflicto " +"inesperado o no identificado con los perfiles.\n" +"«Descargar» descarga la copia de la nube. «Forzar envío» la sobrescribe con " +"tu perfil local." msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" msgstr "" +"Forzar el envío sobrescribirá la copia en la nube con los cambios que hayas " +"realizado en los ajustes preestablecidos locales.\n" +"¿Deseas continuar?" msgid "Resolve cloud sync conflict" -msgstr "" +msgstr "Resolver conflictos de sincronización con la nube" msgid "Retrieving printer information, please try again later." msgstr "" @@ -2235,7 +2318,7 @@ msgid "Orca Cube" msgstr "Cubo Orca" msgid "OrcaSliced Combo" -msgstr "" +msgstr "Combo OrcaSliced" msgid "Orca Tolerance Test" msgstr "Test de tolerancia Orca" @@ -3218,6 +3301,45 @@ msgstr "La temperatura máxima no puede superar " msgid "The minmum temperature should not be less than " msgstr "La temperatura mínima no debe ser inferior a " +msgid "Type to filter..." +msgstr "Escribe para filtrar..." + +msgid "All" +msgstr "Todas" + +msgid "No selected items..." +msgstr "No hay artículos seleccionados..." + +msgid "All items selected..." +msgstr "Todos los elementos seleccionados..." + +msgid "No matching items..." +msgstr "No se han encontrado resultados..." + +msgid "Deselect All" +msgstr "Deseleccionar Todo" + +msgid "Select visible" +msgstr "Seleccionar elementos visibles" + +msgid "Deselect visible" +msgstr "Desmarcar los elementos visibles" + +msgid "Filter selected" +msgstr "Filtrar seleccionados" + +msgid "Filter nonSelected" +msgstr "Filtrar no seleccionados" + +msgid "Simple settings" +msgstr "Ajustes básicos" + +msgid "Advanced settings" +msgstr "Ajustes avanzados" + +msgid "Expert settings" +msgstr "Configuración para expertos" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3508,6 +3630,9 @@ msgstr "La fuente no tiene ninguna forma para el texto dado." msgid "There is no valid surface for text projection." msgstr "No hay ninguna superficie válida para la proyección de texto." +msgid "An unexpected error occurred" +msgstr "Se ha producido un error inesperado" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Preacondicionamiento térmico para la optimización de la primera capa" @@ -5661,7 +5786,7 @@ msgid "Outline" msgstr "Contorno" msgid "Realistic View" -msgstr "" +msgstr "Vista realista" msgid "Perspective" msgstr "Perspectiva" @@ -5968,7 +6093,7 @@ msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" msgid "Troubleshoot Center" -msgstr "" +msgstr "Centro de resolución de problemas" msgid "Open Network Test" msgstr "Abrir Test de Red" @@ -6111,13 +6236,15 @@ msgid "Export" msgstr "Exportar" msgid "Sync Presets" -msgstr "" +msgstr "Sincronizar perfiles" msgid "Pull and apply the latest presets from OrcaCloud" -msgstr "" +msgstr "Descarga y aplica los últimos ajustes preestablecidos de OrcaCloud" msgid "You must be logged in to sync presets from cloud." msgstr "" +"Debes haber iniciado sesión para sincronizar los ajustes preestablecidos " +"desde la nube." msgid "Quit" msgstr "Salir del programa" @@ -6247,7 +6374,7 @@ msgid "Preset Bundle" msgstr "Paquete de perfiles" msgid "Syncing presets from cloud…" -msgstr "" +msgstr "Sincronizando perfiles desde la nube…" msgid "Help" msgstr "Ayuda" @@ -7349,10 +7476,10 @@ msgid "Model file downloaded." msgstr "Archivo de modelo descargado." msgid "Pull" -msgstr "" +msgstr "Descargar" msgid "Force push" -msgstr "" +msgstr "Forzar envío" msgid "Shared profiles may be available for this printer." msgstr "" @@ -8421,10 +8548,10 @@ msgstr "" "se exportarán las partes positivas." msgid "Flashforge host is not available." -msgstr "" +msgstr "El servidor de Flashforge no está disponible." msgid "Unable to log in to the Flashforge printer." -msgstr "" +msgstr "No puedo iniciar sesión en la impresora Flashforge." msgid "Is the printer ready? Is the print sheet in place, empty and clean?" msgstr "" @@ -8731,7 +8858,7 @@ msgstr "" "compartidos cuando se cambie la impresora seleccionada." msgid "Use window buttons on left side" -msgstr "" +msgstr "Utiliza los botones de la ventana situados a la izquierda" msgid "(Requires restart)" msgstr "(Requiere reinicio)" @@ -8812,9 +8939,6 @@ msgstr "Agrupar perfiles de filamento del usuario" msgid "Group user filament presets based on selection" msgstr "Agrupar perfiles de filamento del usuario según la selección" -msgid "All" -msgstr "Todas" - msgid "By type" msgstr "Por tipo" @@ -8960,25 +9084,31 @@ msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Si se activa, invierte la dirección del zoom con la rueda del ratón." msgid "Pan" -msgstr "" +msgstr "Desplazamiento" msgid "Left Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón izquierdo del ratón" msgid "Set the action that dragging the left mouse button should perform." msgstr "" +"Establece la acción que se debe realizar al arrastrar el botón izquierdo del " +"ratón." msgid "Middle Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón central del ratón" msgid "Set the action that dragging the middle mouse button should perform." msgstr "" +"Configura la acción que se debe realizar al arrastrar el botón central del " +"ratón." msgid "Right Mouse Drag" -msgstr "" +msgstr "Arrastrar con el botón derecho del ratón" msgid "Set the action that dragging the right mouse button should perform." msgstr "" +"Establece la acción que se debe realizar al arrastrar el botón derecho del " +"ratón." msgid "Clear my choice on..." msgstr "Limpiar mi elección en..." @@ -9005,31 +9135,33 @@ msgstr "" "cargar el archivo." msgid "Graphics" -msgstr "" +msgstr "Gráficos" msgid "Phong shading" -msgstr "" +msgstr "Sombreado Phong" msgid "Uses Phong shading inside realistic view." -msgstr "" +msgstr "Utiliza sombreado Phong en la vista realista." msgid "SSAO ambient occlusion" -msgstr "" +msgstr "Oclusión ambiental SSAO" msgid "Applies SSAO in realistic view." -msgstr "" +msgstr "Aplica SSAO en vista realista." msgid "Shadows" -msgstr "" +msgstr "Sombras" msgid "Renders cast shadows on the plate in realistic view." msgstr "" +"Los objetos renderizados proyectan sombras sobre la cama en la vista " +"realista." msgid "Anti-aliasing" -msgstr "" +msgstr "Anti-aliasing" msgid "MSAA Multiplier" -msgstr "" +msgstr "Multiplicador MSAA" msgid "" "Set the Multi-Sample Anti-Aliasing level.\n" @@ -9041,12 +9173,21 @@ msgid "" "\n" "Requires application restart." msgstr "" +"Ajusta el nivel de suavizado por muestreo múltiple.\n" +"Los valores más altos producen bordes más suaves, pero el impacto en el " +"rendimiento es exponencial.\n" +"Los valores más bajos mejoran el rendimiento, a costa de que los bordes " +"queden dentados.\n" +"Si se desactiva, se recomienda habilitar FXAA para reducir los bordes " +"dentados con un impacto mínimo en el rendimiento.\n" +"\n" +"Es necesario reiniciar la aplicación." msgid "Disabled" msgstr "Desactivado" msgid "FXAA post-processing" -msgstr "" +msgstr "Posprocesamiento FXAA" msgid "" "Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" @@ -9054,26 +9195,35 @@ msgid "" "\n" "Takes effect immediately." msgstr "" +"Aplica el suavizado de bordes rápido aproximado (FXAA) como un pase en el " +"espacio de la pantalla.\n" +"Resulta útil para desactivar o reducir la configuración de MSAA con el fin " +"de mejorar el rendimiento.\n" +"\n" +"Surte efecto de inmediato." msgid "FPS" -msgstr "" +msgstr "FPS" msgid "FPS cap" -msgstr "" +msgstr "Limite de FPS" msgid "(0 = unlimited)" -msgstr "" +msgstr "(0 = ilimitado)" msgid "" "Limits viewport frame rate to reduce GPU load and power usage.\n" "Set to 0 for unlimited frame rate." msgstr "" +"Limita la frecuencia de fotogramas de la ventana gráfica para reducir la " +"carga de la GPU y el consumo de energía.\n" +"Establece el valor en 0 para una frecuencia de fotogramas ilimitada." msgid "Show FPS overlay" -msgstr "" +msgstr "Mostrar FPS en pantalla" msgid "Displays current viewport FPS in the top-right corner." -msgstr "" +msgstr "Muestra los FPS en la esquina superior derecha." msgid "Login region" msgstr "Región de inicio de sesión" @@ -9087,12 +9237,17 @@ msgid "" "Note: When Stealth Mode is enabled, your user profiles will not be backed up " "to Orca Cloud." msgstr "" +"Esto desactiva todas las funciones en la nube, incluida la sincronización de " +"perfiles con Orca Cloud. Los usuarios que prefieran trabajar totalmente sin " +"conexión pueden activar esta opción.\n" +"Nota: Cuando el modo sigiloso está activado, no se realizará ninguna copia " +"de seguridad de tus perfiles de usuario en Orca Cloud." msgid "Hide login side panel" -msgstr "" +msgstr "Ocultar el panel lateral de inicio de sesión" msgid "Hide the login side panel on the home page." -msgstr "" +msgstr "Ocultar el panel lateral de inicio de sesión en la página de inicio." msgid "Network test" msgstr "Prueba de red" @@ -9200,6 +9355,16 @@ msgstr "Descargar plugin de red" msgid "Associate files to OrcaSlicer" msgstr "Asociar archivos a OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" +"Las asociaciones de archivos para la versión de Microsoft Store se gestionan " +"desde la configuración de Windows." + +msgid "Open Windows Default Apps Settings" +msgstr "Abrir la configuración de aplicaciones predeterminadas de Windows" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Asociar archivos 3MF a OrcaSlicer" @@ -9245,21 +9410,28 @@ msgid "Skip AMS blacklist check" msgstr "Evitar la comprobación de lista negra de AMS" msgid "(Experimental) Keep painted feature after mesh change" -msgstr "" +msgstr "(Experimental) Mantener el elemento pintado tras un cambio de malla" msgid "" "Attempt to keep painted features (color/seam/support/fuzzy etc.) after " "changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" "Highly experimental! Slow and may create artifact." msgstr "" +"Intenta conservar las característica pintadas (color, costuras, soportes, " +"piel difusa, etc.) tras modificar la malla del objeto (por ejemplo, al " +"cortar, volver a cargar desde el disco, simplificar, corregir, etc.).\n" +"¡Muy experimental! Es lento y puede generar artefactos." msgid "Show unsupported presets" -msgstr "" +msgstr "Mostrar ajustes preestablecidos no compatibles" msgid "" "Show incompatible/unsupported presets in the printer and filament dropdown " "lists. These presets cannot be selected." msgstr "" +"Mostrar los ajustes preestablecidos incompatibles o no compatibles en los " +"menús desplegables de impresoras y filamentos. Estos ajustes preestablecidos " +"no se pueden seleccionar." msgid "Allow Abnormal Storage" msgstr "Permitir almacenamiento anómalo" @@ -10088,6 +10260,9 @@ msgstr "" "versión del firmware admite esta operación o verifique si la impresora " "funciona correctamente." +msgid "Sending failed, please try again!" +msgstr "El envío ha fallado, ¡inténtalo de nuevo!" + msgid "Slice ok." msgstr "Laminado correcto." @@ -10552,6 +10727,9 @@ msgstr "Configurar velocidad para puentes externos e internos" msgid "Travel speed" msgstr "Velocidad de desplazamiento" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -10923,6 +11101,10 @@ msgid "" "\n" "Shall I set it to 100% in order to enable Firmware Retraction?" msgstr "" +"La opción «Retracción antes de purgado» solo puede establecerse al 100 % " +"cuando se utiliza el modo de retracción por firmware.\n" +"\n" +"¿Debo configurarla al 100 % para habilitar la retracción por firmware?" msgid "Firmware Retraction" msgstr "Retracción de firmware" @@ -11076,7 +11258,7 @@ msgid "Discard" msgstr "Descartar" msgid "the new profile" -msgstr "" +msgstr "el nuevo perfil" #, boost-format msgid "" @@ -11085,6 +11267,10 @@ msgid "" "discarding any changes made in\n" "\"%2%\"." msgstr "" +"Cambiar a\n" +"«%1%»\n" +"descartando cualquier cambio realizado en\n" +"«%2%»." #, boost-format msgid "" @@ -11093,6 +11279,10 @@ msgid "" "will be transferred to\n" "\"%2%\"." msgstr "" +"Todos los ajustes de «Nuevo valor» modificados en\n" +"«%1%»\n" +"se transferirán a\n" +"«%2%»." #, boost-format msgid "" @@ -11100,6 +11290,9 @@ msgid "" "\"%1%\"\n" "and \"%2%\" will open without any changes." msgstr "" +"Todos los ajustes de «Nuevo valor» se guardan en\n" +"\"%1%\"\n" +"y \"%2%\" se abrirá sin cambios." msgid "Click the right mouse button to display the full text." msgstr "Pulse el botón derecho del ratón para mostrar el texto completo." @@ -11452,9 +11645,6 @@ msgstr "" "filamentos de la impresora. Los filamentos de impresora no utilizados se " "añadirán automáticamente al final de la lista." -msgid "Advanced settings" -msgstr "Ajustes avanzados" - msgid "Add unused AMS filaments to filaments list." msgstr "Añadir filamentos AMS sin usar a la lista de filamentos." @@ -11690,7 +11880,7 @@ msgid "Login" msgstr "Inicio de sesión" msgid "Login failed. Please try again." -msgstr "" +msgstr "El inicio de sesión ha fallado. Inténtalo de nuevo." msgid "[Action Required] " msgstr "[Acción requerida] " @@ -11736,7 +11926,7 @@ msgid "Rotate View" msgstr "Rotación de vista" msgid "Middle mouse button" -msgstr "" +msgstr "Botón central del ratón" msgid "Zoom View" msgstr "Zoom de vista" @@ -11871,7 +12061,7 @@ msgid "Zoom out" msgstr "Alejar" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Activar/desactivar la impresión para el objeto/pieza" msgid "Switch between Prepare/Preview" msgstr "Cambiar entre Preparar/Previsualizar" @@ -11964,12 +12154,25 @@ msgstr "Un nuevo plug-in de red (%s) está disponible. ¿Desea instalarlo?" msgid "New version of Orca Slicer" msgstr "Nueva versión de Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "Echa un vistazo en Microsoft Store" + msgid "Check on Github" msgstr "Ver en Github" +msgid "Open Microsoft Store" +msgstr "Abrir Microsoft Store" + msgid "Skip this Version" msgstr "Saltar esta Versión" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" +"Hay una nueva versión disponible: %s. Actualiza OrcaSlicer desde la Tienda " +"Microsoft." + msgid "Confirm and Update Nozzle" msgstr "Confirmar y Actualizar la Boquilla" @@ -12085,6 +12288,9 @@ msgstr "Módulo de corte" msgid "Auto Fire Extinguishing System" msgstr "Sistema de extinción automática de incendios" +msgid "Beta" +msgstr "Beta" + msgid "Update firmware" msgstr "Actualizar firmware" @@ -12648,16 +12854,21 @@ msgstr "La altura de la capa no puede superar el diámetro de la boquilla." msgid "Bridge line width must not exceed nozzle diameter" msgstr "" +"El ancho de la línea del puente no debe superar el diámetro de la boquilla" msgid "" "\"G92 E0\" was found in before_layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"Se ha encontrado «G92 E0» en «before_layer_change_gcode», pero las letras G " +"y E no están en mayúsculas. Por favor, cámbialas por «G92 E0» en mayúsculas." msgid "" "\"G92 E0\" was found in layer_change_gcode, but the G or E are not " "uppercase. Please change them to the exact uppercase \"G92 E0\"." msgstr "" +"Se ha encontrado «G92 E0» en layer_change_gcode, pero las letras G y E no " +"están en mayúsculas. Por favor, cámbialas por «G92 E0» en mayúsculas." msgid "" "Relative extruder addressing requires resetting the extruder position at " @@ -12672,11 +12883,15 @@ msgid "" "\"G92 E0\" was found in before_layer_change_gcode, which is incompatible " "with absolute extruder addressing." msgstr "" +"Se ha detectado «G92 E0» en «before_layer_change_gcode», lo cual es " +"incompatible con el direccionamiento absoluto del extrusor." msgid "" "\"G92 E0\" was found in layer_change_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" +"Se ha detectado «G92 E0» en el archivo layer_change_gcode, lo cual es " +"incompatible con el direccionamiento absoluto del extrusor." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" @@ -12782,29 +12997,39 @@ msgid "Extruder printable area" msgstr "Área imprimible del extrusor" msgid "Support parallel printheads" -msgstr "" +msgstr "Compatibilidad con cabezales de impresión paralelos" msgid "" "Enable printer settings for machines that can use multiple printheads in " "parallel." msgstr "" +"Activa la configuración de la impresora para los equipos que pueden utilizar " +"varios cabezales de impresión en paralelo." msgid "Parallel printheads count" -msgstr "" +msgstr "Número de cabezales de impresión paralelos" msgid "" "Set the number of parallel printheads for machines like OrangeStorm Giga " "printer." msgstr "" +"Configure el número de cabezales de impresión en paralelo para máquinas como " +"la impresora OrangeStorm Giga." msgid "Parallel printheads bed exclude areas" msgstr "" +"Las plataformas de los cabezales de impresión paralelos excluyen ciertas " +"zonas" msgid "" "Ordered list of bed exclude areas by parallel printhead count. Item 1 " "applies to one printhead, item 2 to two printheads, and so on. Leave an item " "empty for no excluded area." msgstr "" +"Lista ordenada de áreas excluidas de la cama según el número de cabezales de " +"impresión paralelos. El punto 1 se aplica a un cabezal de impresión, el " +"punto 2 a dos cabezales, y así sucesivamente. Deje un punto en blanco si no " +"hay áreas excluidas." msgid "Bed exclude area" msgstr "Área excluida de la cama" @@ -12951,10 +13176,11 @@ msgstr "" "autenticación." msgid "Serial Number" -msgstr "" +msgstr "Número de serie" msgid "Flashforge local API requires the printer serial number." msgstr "" +"La API local de Flashforge requiere el número de serie de la impresora." msgid "Name of the printer." msgstr "Nombre de la impresora." @@ -13327,6 +13553,17 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Anulación del ángulo de puente externo.\n" +"Si se deja en cero, el ángulo de puente se calculará automáticamente para " +"cada puente concreto.\n" +"De lo contrario, se utilizará el ángulo indicado según:\n" +" - Las coordenadas absolutas\n" +" - Las coordenadas absolutas + rotación del modelo: si está activada la " +"opción «Alinear la dirección de relleno al modelo»\n" +" - El ángulo automático óptimo + este valor: si está activada la opción " +"«Ángulo de puente relativo»\n" +"\n" +"Utiliza 180° para un ángulo absoluto de cero." msgid "Internal bridge infill direction" msgstr "Dirección de relleno de puentes internos" @@ -13344,20 +13581,33 @@ msgid "" "\n" "Use 180° for zero absolute angle." msgstr "" +"Anulación del ángulo de puente interno.\n" +"Si se deja en cero, el ángulo de puente se calculará automáticamente para " +"cada puente concreto.\n" +"De lo contrario, se utilizará el ángulo indicado según:\n" +" - Las coordenadas absolutas\n" +" - Las coordenadas absolutas + rotación del modelo: si está activada la " +"opción «Alinear la dirección de relleno al modelo»\n" +" - El ángulo automático óptimo + este valor: si está activada la opción " +"«Ángulo de puente relativo»\n" +"\n" +"Utiliza 180° para un ángulo absoluto de cero." msgid "Relative bridge angle" -msgstr "" +msgstr "Ángulo de puente relativo" msgid "" "When enabled, the bridge angle values are added to the automatically " "calculated bridge direction instead of overriding it." msgstr "" +"Cuando está activada, los valores del ángulo del puente se suman a la " +"dirección del puente calculada automáticamente, en lugar de anularla." msgid "External bridge density" msgstr "Densidad de puente externo" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13371,18 +13621,32 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" +"Controla la densidad (espaciado) de las líneas de puente externas.\n" +"En teoría, un 100 % equivale a un puente completo, pero debido a la " +"tendencia de las extrusiones de los puentes a combarse, es posible que un " +"100 % no sea suficiente.\n" +"\n" +"- Densidad superior al 100 % (máximo recomendado: 125 %):\n" +" - Ventajas: produce superficies de puente más lisas, ya que las líneas " +"superpuestas proporcionan un soporte adicional durante la impresión.\n" +" - Inconvenientes: puede provocar una sobreextrusión, lo que puede reducir " +"la calidad de las superficies inferior y superior y aumentar el riesgo de " +"deformación.\n" +"\n" +"- Densidad inferior al 100 % (mínimo 10 %):\n" +" - Ventajas: Puede crear una primera capa con aspecto de hilo. Es más " +"rápido y se enfría mejor, ya que hay más espacio para que el aire circule " +"alrededor del puente extruido.\n" +" - Desventajas: Puede provocar combaduras y un acabado superficial de menor " +"calidad." msgid "Internal bridge density" msgstr "Densidad de puente interno" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13402,6 +13666,28 @@ msgid "" "bridge over infill option to improve bridging further before solid infill is " "extruded." msgstr "" +"Controla la densidad (espaciado) de las líneas de los puentes internos.\n" +"Los puentes internos actúan como soporte intermedio entre el relleno " +"disperso y el relleno sólido de la superficie superior, y pueden influir " +"considerablemente en la calidad de esta última.\n" +"\n" +"- Densidad superior al 100 % (máximo recomendado: 125 %):\n" +" - Ventajas: mejora la resistencia de los puentes internos y el soporte " +"bajo las capas superiores, lo que reduce el hundimiento y mejora el acabado " +"de la superficie superior.\n" +" - Inconvenientes: aumenta el consumo de material y el tiempo de impresión; " +"una densidad excesiva puede provocar sobreextrusión y tensiones internas.\n" +"\n" +"- Densidad inferior al 100 % (mínimo 10 %):\n" +" - Ventajas: puede reducir el efecto de almohadilla y mejorar la " +"refrigeración (mayor flujo de aire a través del puente), y puede acelerar la " +"impresión.\n" +" - Inconvenientes: puede reducir el soporte interno, aumentando el riesgo " +"de hundimiento y defectos en la superficie superior.\n" +"\n" +"Esta opción funciona especialmente bien cuando se combina con la segunda " +"opción de puente interno sobre el relleno para mejorar aún más los puentes " +"antes de que se extruya el relleno sólido." msgid "Bridge flow ratio" msgstr "Factor de flujo en puentes" @@ -13416,17 +13702,34 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este valor determina el grosor de la capa externa (visible) del puente.\n" +"Valores superiores a 1,0: aumentan la cantidad de material manteniendo el " +"espaciado entre líneas. Esto puede mejorar el contacto entre líneas y la " +"resistencia.\n" +"Valores inferiores a 1,0: reducen la cantidad de material al tiempo que " +"ajustan el espaciado entre líneas para mantener el contacto. Esto puede " +"mejorar el colgado.\n" +"\n" +"El flujo de puente real utilizado se calcula multiplicando este valor por la " +"relación de flujo del filamento y, si se ha establecido, por la relación de " +"flujo del objeto." -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" +"Ancho de línea del puente. Si se expresa en porcentaje, se calculará sobre " +"el diámetro de la boquilla.\n" +"Se recomienda utilizarlo con una densidad de puente o una relación de flujo " +"de puente más altas.\n" +"\n" +"El valor máximo es del 100 % o el diámetro de la boquilla.\n" +"Si se establece en 0, el ancho de línea seguirá el ancho del relleno sólido " +"interno." msgid "Internal bridge flow ratio" msgstr "Factor de flujo de puentes internos" @@ -13443,6 +13746,19 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" +"Este valor determina el grosor de la capa de puente interna. Se trata de la " +"primera capa que se aplica sobre el relleno disperso, por lo que aumentarlo " +"puede mejorar la resistencia y la calidad de la capa superior.\n" +"Valores superiores a 1,0: Aumentan la cantidad de material manteniendo el " +"espaciado entre líneas. Esto puede mejorar el contacto entre líneas y la " +"resistencia.\n" +"Valores inferiores a 1,0: Reducen la cantidad de material ajustando el " +"espaciado entre líneas para mantener el contacto. Esto puede mejorar el " +"hundimiento.\n" +"\n" +"El flujo de puente real utilizado se calcula multiplicando este valor por la " +"relación de flujo del filamento y, si se ha configurado, por la relación de " +"flujo del objeto." msgid "Top surface flow ratio" msgstr "Factor de flujo en superficie superior" @@ -13687,7 +14003,7 @@ msgstr "" "puentes no pueden ser anclados." msgid "Reverse on even" -msgstr "Revertir en sentido inverso" +msgstr "Invertir en los pares" msgid "Overhang reversal" msgstr "Inversión de voladizo" @@ -13823,6 +14139,42 @@ msgid "" "For example, when the perimeters are 100% overhanging, with no wall " "supporting them from underneath, the 100% overhang speed will be applied." msgstr "" +"Active esta opción para ralentizar la impresión en áreas donde los " +"perímetros puedan haberse curvado hacia arriba.\n" +"\n" +"Por ejemplo, se aplicará una ralentización adicional al imprimir voladizos " +"en esquinas afiladas, como la parte frontal del casco de Benchy, reduciendo " +"la curvatura que se acumula en varias capas.\n" +"\n" +"Generalmente se recomienda tener esta opción activada, a menos que la " +"refrigeración de la impresora sea lo suficientemente potente o la velocidad " +"de impresión lo suficientemente baja como para evitar la curvatura de los " +"perímetros.\n" +"Si imprime con una alta velocidad de perímetro externo, este parámetro puede " +"generar artefactos en las paredes al reducir la velocidad, debido a la " +"posible gran variación en las velocidades de impresión, lo que impide que el " +"extrusor pueda seguir el ritmo del cambio de flujo solicitado.\n" +"\n" +"La causa principal de estos artefactos probablemente sea una ligera " +"desajustación en el ajuste de la presión, especialmente cuando se combina " +"con un tiempo de suavizado de presión elevado.\n" +"\n" +"Recomendaciones al activar esta opción:\n" +"1. Reduzca el tiempo de suavizado de avance de presión a 0,015 - 0,02 para " +"que el extrusor reaccione rápidamente a los cambios de velocidad.\n" +"2. Aumente la velocidad mínima de impresión para limitar la magnitud de la " +"ralentización y reducir la variación entre los segmentos rápidos y lentos.\n" +"\n" +"3. Si aún aparecen artefactos, active la función de suavizado de la " +"velocidad de extrusión (ERS) para suavizar aún más las transiciones del " +"flujo.\n" +"\n" +"Nota: Cuando esta opción está activada, los perímetros en voladizo se tratan " +"como tales, lo que significa que se aplica la velocidad de voladizo incluso " +"si el perímetro en voladizo forma parte de un puente.\n" +"\n" +"Por ejemplo, cuando los perímetros sobresalen al 100%, sin ninguna pared que " +"los sostenga por debajo, se aplicará la velocidad de voladizo del 100%." msgid "mm/s or %" msgstr "mm/s o %" @@ -14117,6 +14469,12 @@ msgid "" "If disabled, bridges may look better but are generally reliable only for " "shorter spans." msgstr "" +"Si se activa, la extrusión de puentes utiliza una altura de línea igual al " +"diámetro de la boquilla.\n" +"Esto aumenta la resistencia y la fiabilidad de los puentes, lo que permite " +"tramos más largos, pero puede empeorar el aspecto.\n" +"Si se desactiva, los puentes pueden tener mejor aspecto, pero por lo general " +"solo son fiables para tramos más cortos." msgid "Thick internal bridges" msgstr "Puentes gruesos internos" @@ -14129,6 +14487,12 @@ msgid "" "If disabled, internal bridges may look better but can be less reliable over " "sparse infill." msgstr "" +"Si se activa, la extrusión de los puentes internos utiliza una altura de " +"línea igual al diámetro de la boquilla.\n" +"Esto aumenta la resistencia y la fiabilidad de los puentes internos cuando " +"se imprime sobre un relleno escaso, pero puede empeorar el aspecto.\n" +"Si se desactiva, los puentes internos pueden tener mejor aspecto, pero " +"pueden ser menos fiables sobre un relleno escaso." msgid "Extra bridge layers (beta)" msgstr "Capas extra de puente (beta)" @@ -14906,16 +15270,18 @@ msgid "Auto For Match" msgstr "Auto para Coincidencia" msgid "Enable filament dynamic map" -msgstr "" +msgstr "Habilitar mapa dinámico de filamentos" msgid "Enable dynamic filament mapping during print." -msgstr "" +msgstr "Activar la asignación dinámica de filamentos durante la impresión." msgid "Has filament switcher" -msgstr "" +msgstr "Cuenta con un selector de filamentos" msgid "Printer has a filament switcher hardware (e.g., AMS)." msgstr "" +"La impresora cuenta con un dispositivo de cambio de filamento (por ejemplo, " +"AMS)." msgid "Flush temperature" msgstr "Temperatura de descarga" @@ -15415,6 +15781,10 @@ msgid "" "When enabled, directions rotate with the model to maintain optimal strength " "characteristics." msgstr "" +"Alinea las direcciones de relleno, puente, alisado y relleno superficial " +"para que sigan la orientación del modelo sobre la placa de impresión.\n" +"Cuando está activada, las direcciones giran junto con el modelo para " +"mantener sus características de resistencia óptimas." msgid "Insert solid layers" msgstr "Insertar capas sólidas" @@ -15440,9 +15810,9 @@ msgstr "" "soporta." msgid "Z-buckling bias optimization (experimental)" -msgstr "" +msgstr "Optimización del desplazamiento por deformación en Z (experimental)" -#, c-format, boost-format +#, fuzzy, c-format, boost-format msgid "" "Tightens the gyroid wave along the Z (vertical) axis at low infill density " "to shorten the effective vertical column length and improve Z-axis " @@ -15450,6 +15820,12 @@ msgid "" "~30% sparse infill density and above. Only applies when Sparse infill " "pattern is set to Gyroid." msgstr "" +"Ajusta la onda giroide a lo largo del eje Z (vertical) con una densidad de " +"relleno baja para acortar la longitud efectiva de la columna vertical y " +"mejorar la resistencia al pandeo por compresión en el eje Z. Se mantiene el " +"consumo de filamento. No tiene efecto con una densidad de relleno escasa de " +"aproximadamente el ~30% o superior. Solo se aplica cuando el patrón de " +"relleno escaso está configurado en «Giroide»." msgid "Sparse infill pattern" msgstr "Patrón de relleno de baja densidad" @@ -15544,25 +15920,32 @@ msgstr "" "panal puro." msgid "Lightning overhang angle" -msgstr "" +msgstr "Ángulo de saliente del rayo" msgid "Maximum overhang angle for Lightning infill support propagation." msgstr "" +"Ángulo máximo de voladizo para la propagación de los soportes de relleno en " +"Rayo." msgid "Prune angle" -msgstr "" +msgstr "Ángulo de recorte" msgid "" "Controls how aggressively short or unsupported Lightning branches are " "pruned.\n" "This angle is converted internally to a per-layer distance." msgstr "" +"Determina con qué intensidad se podan las ramas de los rayos cortas o sin " +"soporte.\n" +"Este ángulo se convierte internamente en una distancia por capa." msgid "Straightening angle" -msgstr "" +msgstr "Ángulo de enderezado" msgid "Maximum straightening angle used to simplify Lightning branches." msgstr "" +"Ángulo máximo de enderezamiento utilizado para simplificar las ramas del " +"Rayo." msgid "Sparse infill anchor length" msgstr "Longitud del anclaje de relleno de baja densidad" @@ -15705,9 +16088,6 @@ msgstr "El max_accel_to_decel de Klipper se ajustará a este %% de aceleración. msgid "Default jerk." msgstr "Jerk por defecto." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -16355,7 +16735,7 @@ msgstr "" "Ajústelo a 0 para desactivarlo." msgid "Minimum non-zero part cooling fan speed" -msgstr "" +msgstr "Velocidad mínima no nula del ventilador de refrigeración" msgid "" "Some part-cooling fans cannot start spinning when commanded below a certain " @@ -16374,6 +16754,25 @@ msgid "" "below the one you know it can actually spool at.\n" "Set to 0 to deactivate." msgstr "" +"Algunos ventiladores de refrigeración de partes no pueden ponerse en marcha " +"cuando se les envía una orden por debajo de un determinado ciclo de trabajo " +"PWM. Si se establece un valor superior a 0, cualquier orden de ventilador de " +"refrigeración de partes distinta de cero se elevará al menos hasta este " +"porcentaje para que el ventilador se ponga en marcha de forma fiable. Un " +"comando de ventilador de 0 (ventilador apagado) siempre se respeta al pie de " +"la letra. Este límite se aplica después de todos los demás cálculos del " +"ventilador (rampa de la primera capa, interpolación del tiempo de capa, " +"anulaciones de voladizo/puente/interfaz de soporte/alisado), por lo que el " +"escalado sigue funcionando dentro del rango [este valor, 100 %].\n" +"Si tu firmware ya desactiva el ventilador por debajo de un umbral (por " +"ejemplo, [fan] off_below: 0.10 de Klipper apaga el ventilador siempre que el " +"ciclo de trabajo ordenado sea inferior al 10 %), lo ideal es que esta opción " +"y el umbral del firmware se establezcan en el mismo valor. Hacer que " +"coincidan (por ejemplo, off_below: 0,10 en Klipper y 10 % aquí) garantiza " +"que el cortador nunca emita un valor distinto de cero que el firmware " +"descartaría silenciosamente, y que el ventilador nunca reciba un valor " +"inferior al que sabes que realmente puede alcanzar.\n" +"Establece en 0 para desactivar." msgid "%" msgstr "%" @@ -16642,6 +17041,8 @@ msgid "" "Filament to print internal sparse infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir un relleno interno poco denso.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -17542,20 +17943,24 @@ msgstr "" "utiliza la velocidad de puente." msgid "Outer walls" -msgstr "" +msgstr "Paredes exteriores" msgid "" "Filament to print outer walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir las paredes exteriores.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "Inner walls" -msgstr "" +msgstr "Paredes internas" msgid "" "Filament to print inner walls.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir las paredes interiores.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -18271,16 +18676,22 @@ msgid "" "Filament to print internal solid infill.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir el relleno sólido interno.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Filament to print top surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir la superficie superior.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Filament to print bottom surface.\n" "\"Default\" uses the active object/part filament." msgstr "" +"Filamento para imprimir la superficie inferior.\n" +"La opción «Predeterminado» utiliza el filamento del objeto o pieza activa." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -18491,7 +18902,7 @@ msgid "Enable filament ramming" msgstr "Habilitar compactación de filamento" msgid "Tool change on wipe tower" -msgstr "" +msgstr "Cambio de herramienta en la torre de purga" msgid "" "Force the toolhead to travel to the wipe tower before issuing the tool " @@ -18502,6 +18913,14 @@ msgid "" "this option if you want the tool change to always be issued above the wipe " "tower instead." msgstr "" +"Obliga al cabezal a desplazarse hasta la torre de purga antes de emitir el " +"comando de cambio de herramienta (Tx). Solo es relevante para impresoras con " +"múltiples extrusores (múltiples cabezales) que utilicen una torre de " +"limpieza de tipo 2. Por defecto, Orca omite el desplazamiento en máquinas " +"con múltiples cabezales porque el firmware se encarga del cambio de cabezal, " +"lo que puede provocar que el comando Tx se emita por encima de la pieza " +"impresa. Habilita esta opción si deseas que el cambio de herramienta se " +"emita siempre por encima de la torre de purga." msgid "No sparse layers (beta)" msgstr "Sin capas de baja densidad (beta)" @@ -18671,6 +19090,9 @@ msgid "" "\"Default\" means no specific filament for support and current filament is " "used." msgstr "" +"Filamento para imprimir la base de soporte y la balsa.\n" +"«Predeterminado» significa que no hay un filamento específico para el " +"soporte y se utiliza el filamento actual." msgid "Avoid interface filament for base" msgstr "Evitar usar filamento de interfaz para la base" @@ -18705,6 +19127,9 @@ msgid "" "\"Default\" means no specific filament for support interface and current " "filament is used." msgstr "" +"Filamento para la interfaz de soporte de impresión.\n" +"«Predeterminado» significa que no hay ningún filamento específico para la " +"interfaz de soporte y se utiliza el filamento actual." msgid "Top interface layers" msgstr "Capas de la interfaz superior" @@ -19822,6 +20247,7 @@ msgstr "Valor no válido cuando está activado el modo jarrón espiral: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" +"El ancho de la línea del puente no debe superar el diámetro de la boquilla:" msgid "too large line width " msgstr "ancho de línea excesivo " @@ -20087,10 +20513,10 @@ msgstr "" "3:información, 4:depuración, 5:rastreo\n" msgid "Log file" -msgstr "" +msgstr "Archivo de registro" msgid "Redirects debug logging to file.\n" -msgstr "" +msgstr "Redirige el registro de depuración a un archivo.\n" msgid "Enable timelapse for print" msgstr "Habilitar timelapse para impresión" @@ -21655,13 +22081,13 @@ msgid "Top Surface Pattern" msgstr "Patrón de superficie superior" msgid "Choose a slot for the selected color" -msgstr "" +msgstr "Elige una posición para el color seleccionado" msgid "Material in the material station" -msgstr "" +msgstr "Material en la estación de materiales" msgid "Only materials of the same type can be selected." -msgstr "" +msgstr "Solo se pueden seleccionar materiales del mismo tipo." msgid "Send G-code to printer host" msgstr "Enviar G-Code al host de impresión" @@ -21687,46 +22113,56 @@ msgid "Upload" msgstr "Cargar" msgid "Leveling before print" -msgstr "" +msgstr "Nivelación antes de la impresión" msgid "Time-lapse" msgstr "Time-lapse" msgid "Enable IFS" -msgstr "" +msgstr "Habilitar IFS" #, c-format, boost-format msgid "Detected %d IFS slots on printer." -msgstr "" +msgstr "Se han detectado %d posiciones IFS en la impresora." msgid "This printer does not report a material station." -msgstr "" +msgstr "Esta impresora no detecta ninguna estación de material." msgid "Unable to read IFS slots from printer." -msgstr "" +msgstr "No se pueden leer las ranuras IFS de la impresora." msgid "Loading IFS slots from printer..." -msgstr "" +msgstr "Cargando posiciones IFS desde la impresora..." msgid "Slice the plate first to get project material information." msgstr "" +"Lamina primero la placa para obtener información sobre el material del " +"proyecto." msgid "" "This plate uses multiple materials. Enable IFS and assign each tool to a " "printer slot." msgstr "" +"Esta cama utiliza varios materiales. Active IFS y asigne cada herramienta a " +"una ranura de impresora." msgid "Each project material must be assigned to an IFS slot before printing." msgstr "" +"Cada material del proyecto debe asignarse a una posición IFS antes de " +"imprimirlo." msgid "" "Each project material must be assigned to a loaded IFS slot before printing." msgstr "" +"Cada material del proyecto debe asignarse a una posición IFS ocupada antes " +"de imprimir." msgid "" "Each project material must match the material loaded in the selected IFS " "slot." msgstr "" +"El material de cada proyecto debe coincidir con el material cargado en la " +"posición IFS seleccionada." msgid "Print host upload queue" msgstr "Cola de carga del host de impresión" @@ -21783,13 +22219,13 @@ msgstr "Placa de construcción lisa (Lado B)" #, c-format, boost-format msgid "Printer: %s" -msgstr "" +msgstr "Impresora: %s" msgid "Calibrate before printing" -msgstr "" +msgstr "Calibra antes de imprimir" msgid "Filament Mapping:" -msgstr "" +msgstr "Mapeo de filamentos:" msgid "Unable to perform boolean operation on selected parts" msgstr "No es posible realizar la operación buleana en las partes selecionadas" @@ -22073,9 +22509,6 @@ msgstr "Perfil de Impresora" msgid "Filament Preset Template" msgstr "Plantilla de Perfil de Filamento" -msgid "Deselect All" -msgstr "Deseleccionar Todo" - msgid "Process Preset Template" msgstr "Plantilla de Perfil de Proceso" @@ -22176,12 +22609,18 @@ msgid "" "\n" "Available nozzle profiles for this printer:" msgstr "" +"\n" +"\n" +"Perfiles de boquilla disponibles para esta impresora:" msgid "" "\n" "\n" "Choose YES to switch existing preset:" msgstr "" +"\n" +"\n" +"Selecciona «SÍ» para cambiar el perfil actual:" msgid "Printer Created Successfully" msgstr "Impresora creada con éxito" @@ -22514,16 +22953,17 @@ msgstr "" "impresora. Los agentes disponibles se registran al iniciar el sistema." msgid "Select a Flashforge printer" -msgstr "" +msgstr "Selecciona una impresora Flashforge" msgid "Discovered Printers" -msgstr "" +msgstr "Impresoras detectadas" msgid "Could not get a valid Printer Host reference" msgstr "No se ha podido obtener una referencia de host de impresora válida" msgid "Valid session not detected. Proceed with login to 3DPrinterOS?" msgstr "" +"No se ha detectado una sesión válida. ¿Desea iniciar sesión en 3DPrinterOS?" msgid "Success!" msgstr "¡Éxito!" @@ -22577,28 +23017,40 @@ msgstr "" "impresión." msgid "3DPrinterOS Cloud upload options" -msgstr "" +msgstr "Opciones de carga en la nube de 3DPrinterOS" msgid "Single file" -msgstr "" +msgstr "Archivo único" msgid "Project File" -msgstr "" +msgstr "Archivo del proyecto" msgid "Project:" -msgstr "" +msgstr "Proyecto:" msgid "Printer type:" -msgstr "" +msgstr "Tipo de impresora:" msgid "Printer type not found, please select manually." -msgstr "" +msgstr "No se ha encontrado el tipo de impresora; selecciónelo manualmente." msgid "Authorizing..." -msgstr "" +msgstr "Autorizando..." + +msgid "Error. Can't get api token for authorization" +msgstr "Error. No se puede obtener el token de la API para la autorización" + +msgid "Could not parse server response." +msgstr "No se ha podido analizar la respuesta del servidor." + +msgid "Error saving session to file" +msgstr "Error al guardar la sesión en un archivo" msgid "Error session check" -msgstr "" +msgstr "Error al verificar la sesión" + +msgid "Error during file upload" +msgstr "Error al subir el archivo" #, c-format, boost-format msgid "Mismatched type of print host: %s" @@ -23405,25 +23857,142 @@ msgstr "" "configurarla." msgid "Flashforge returned an invalid JSON response." -msgstr "" +msgstr "Flashforge ha devuelto una respuesta JSON inválida." msgid "No Flashforge printers were discovered on the local network." -msgstr "" +msgstr "No se han encontrado impresoras Flashforge en la red local." msgid "Connected to Flashforge local API successfully." -msgstr "" +msgstr "Se ha conectado correctamente a la API local de Flashforge." msgid "Serial connection to Flashforge is working correctly." msgstr "La conexión serie a Flashforge funciona correctamente." msgid "Could not connect to Flashforge local API" -msgstr "" +msgstr "No se ha podido conectar a la API local de Flashforge" msgid "Could not connect to Flashforge via serial" msgstr "No se pudo conectar a Flashforge vía serie" msgid "Flashforge local API requires both serial number and access code." msgstr "" +"La API local de Flashforge requiere tanto el número de serie como el código " +"de acceso." + +msgid "Printer returned an error" +msgstr "La impresora ha devuelto un error" + +msgid "Missing system_info in response" +msgstr "Falta «system_info» en la respuesta" + +msgid "Missing printer serial number in response" +msgstr "Falta el número de serie de la impresora en la respuesta" + +msgid "Error parsing response" +msgstr "Error al procesar la respuesta" + +msgid "ElegooLink not detected" +msgstr "No se ha detectado ElegooLink" + +msgid "Invalid access code" +msgstr "Código de acceso no válido" + +msgid "CC2 device not detected" +msgstr "No se ha detectado el dispositivo CC2" + +msgid "Connection to ElegooLink is working correctly." +msgstr "La conexión con ElegooLink funciona correctamente." + +msgid "Could not connect to ElegooLink" +msgstr "No se ha podido conectar a ElegooLink" + +#, boost-format +msgid "Error code: %1%" +msgstr "Código de error: %1%" + +msgid "Upload failed" +msgstr "Error al subir el archivo" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" +"El archivo se ha transferido, pero se han producido algunos errores " +"desconocidos. Comprueba la página del dispositivo donde se encuentra el " +"archivo e intenta iniciar la impresión de nuevo." + +msgid "Failed to open file for upload." +msgstr "No se ha podido abrir el archivo para su carga." + +msgid "Failed to read file chunk for upload." +msgstr "No se ha podido leer el fragmento de archivo para la subida." + +msgid "CC2 upload failed" +msgstr "Error al subir el archivo CC2" + +msgid "The file is empty or could not be read." +msgstr "El archivo está vacío o no se ha podido leer." + +msgid "Failed to calculate file checksum." +msgstr "No se ha podido calcular la suma de comprobación del archivo." + +msgid "Error code not found" +msgstr "Código de error no encontrado" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" +"La impresora está ocupada. Comprueba la página del dispositivo para ver el " +"archivo e intenta volver a iniciar la impresión." + +msgid "The file is lost, please check and try again." +msgstr "El archivo se ha perdido; compruébalo e inténtalo de nuevo." + +msgid "The file is corrupted, please check and try again." +msgstr "El archivo está dañado; compruébalo e inténtalo de nuevo." + +msgid "Transmission abnormality, please check and try again." +msgstr "" +"Se ha producido un error en la transmisión. Por favor, compruébalo e " +"inténtalo de nuevo." + +msgid "The file does not match the printer, please check and try again." +msgstr "" +"El archivo no es compatible con la impresora. Compruébalo e inténtalo de " +"nuevo." + +msgid "Start print timeout" +msgstr "Tiempo de espera de inicio de impresión" + +msgid "Start print failed" +msgstr "Error al iniciar la impresión" + +msgid "Connected to CrealityPrint successfully!" +msgstr "¡Conectado a CrealityPrint correctamente!" + +msgid "Could not connect to CrealityPrint" +msgstr "No se ha podido conectar a CrealityPrint" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" +"Se ha agotado el tiempo de espera de la conexión. Comprueba si la impresora " +"y la red del ordenador funcionan correctamente y asegúrate de que estén " +"conectadas a la misma red." + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" +"No se ha podido analizar el nombre de host, la dirección IP o la URL. " +"Compruébalo e inténtalo de nuevo." + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" +"Se ha interrumpido la transferencia de archivos o datos. Comprueba la " +"impresora y la red y vuelve a intentarlo." msgid "The provided state is not correct." msgstr "El estado proporcionado no es correcto." @@ -23449,16 +24018,17 @@ msgid "Detection radius" msgstr "Radio de detección" msgid "Selected" -msgstr "" +msgstr "Seleccionado" msgid "Auto-generate" -msgstr "" +msgstr "Autogenerar" msgid "Generate brim ears using Max angle and Detection radius" msgstr "" +"Genera orejas de borde utilizando el ángulo máximo y el radio de detección" msgid "Add or Select" -msgstr "" +msgstr "Añadir o seleccionar" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -23471,7 +24041,7 @@ msgid "Set the brim type of this object to \"painted\"" msgstr "Establecer el tipo de borde de este objeto a \"pintado\"" msgid "invalid brim ears" -msgstr "" +msgstr "orejas con el borde defectuoso" msgid "Brim Ears" msgstr "Orejas de borde" @@ -23479,6 +24049,12 @@ msgstr "Orejas de borde" msgid "Please select single object." msgstr "Por favor, seleccione un solo objeto." +msgid "Entering Brim Ears" +msgstr "Entrando al mecanismo de orejas de borde" + +msgid "Leaving Brim Ears" +msgstr "Saliendo del mecanismo de orejas de borde" + msgid "Zoom Out" msgstr "Alejar" @@ -23490,6 +24066,9 @@ msgstr "" "Error al cargar información de objetos omitidos. Por favor, inténtelo de " "nuevo." +msgid "Failed to create the temporary folder." +msgstr "No se ha podido crear la carpeta temporal." + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seleccionado" @@ -23643,6 +24222,121 @@ msgstr "Número de caras triangulares" msgid "Calculating, please wait..." msgstr "Calculando, por favor espere..." +msgid "PresetBundle" +msgstr "PaqueteDePerfiles" + +msgid "Bundle folder does not exist." +msgstr "La carpeta «Bundle» no existe." + +msgid "Failed to open folder." +msgstr "No se ha podido abrir la carpeta." + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" +"¿Eliminar el paquete seleccionado de la carpeta y todos los ajustes " +"preestablecidos cargados desde él?" + +msgid "Delete Bundle" +msgstr "Eliminar paquete" + +msgid "Failed to remove bundle." +msgstr "No se ha podido eliminar el paquete." + +msgid "Remove Bundle" +msgstr "Eliminar paquete" + +msgid "Unsubscribe bundle?" +msgstr "¿Desuscribirse del paquete?" + +msgid "UnsubscribeBundle" +msgstr "DesubscribirPaquete" + +msgid "Failed to unsubscribe bundle." +msgstr "No se pudo suspender la suscripción al paquete." + +msgid "Unsubscribe Bundle" +msgstr "Desuscribirse del paquete" + +msgid "ExportPresetBundle" +msgstr "ExportarPaqueteDePerfiles" + +msgid "Save preset bundle" +msgstr "Guardar paquete de perfiles" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" +"Se ha producido un error al realizar la integración en el escritorio: boost::" +"filesystem::canonical no ha devuelto la ruta de AppImage." + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" +"Error al realizar la integración en el escritorio: no se ha encontrado el " +"archivo ejecutable." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" +"No se ha podido realizar la integración en el escritorio porque no se ha " +"encontrado el directorio de la aplicación." + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" +"Se ha producido un error al realizar la integración en el escritorio: no se " +"ha podido crear el archivo de escritorio de Gcodeviewer. Es probable que el " +"archivo de escritorio de OrcaSlicer se haya creado correctamente." + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" +"Se ha producido un error al integrar el programa de descarga en el " +"escritorio: boost::filesystem::canonical no ha devuelto la ruta de AppImage." + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" +"Error al realizar la integración en el escritorio: no se ha encontrado el " +"archivo ejecutable." + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" +"No se ha podido realizar la integración en el escritorio porque no se ha " +"encontrado el directorio de la aplicación." + +msgid "Desktop Integration" +msgstr "Integración con el escritorio" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" +"La integración en el escritorio hace que el sistema pueda buscar este " +"archivo binario.\n" +"\n" +"Pulsa «Realizar» para continuar." + +msgid "The download has failed" +msgstr "La descarga ha fallado" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "No se puede crear el archivo en %1%" + +msgid "Archive preview" +msgstr "Vista previa del archivo" + +msgid "Open File" +msgstr "Abrir archivo" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -23765,6 +24459,10 @@ msgid "" "the surface quality of your overhangs? However, it can cause wall " "inconsistencies so use carefully!" msgstr "" +"Invertir en los pares\n" +"¿Sabías que la función Invertir en los pares puede mejorar " +"considerablemente la calidad de la superficie de tus salientes? Sin embargo, " +"puede provocar irregularidades en las paredes, ¡así que úsala con precaución!" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 80e0be6884..4eb1d03ac7 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -202,6 +202,15 @@ msgstr "Terminé" msgid "Support Generated" msgstr "Supports générés" +msgid "Entering Paint-on supports" +msgstr "Entrée dans Supports peints" + +msgid "Leaving Paint-on supports" +msgstr "Quitter Supports peints" + +msgid "Paint-on supports editing" +msgstr "Modification des supports peints" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Placer sur la face" @@ -290,6 +299,15 @@ msgstr "Peint avec : filament %1%" msgid "To:" msgstr "Vers :" +msgid "Entering color painting" +msgstr "Entrée dans la mise en couleur" + +msgid "Leaving color painting" +msgstr "Quitter la mise en couleur" + +msgid "Color painting editing" +msgstr "Modification de la mise en couleur" + msgid "Paint-on fuzzy skin" msgstr "Surface irrégulière peinte" @@ -311,6 +329,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Activer la surface irrégulière peinte pour cet objet" +msgid "Entering Paint-on fuzzy skin" +msgstr "Entrée dans Surface irrégulière peinte" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "Quitter Surface irrégulière peinte" + +msgid "Paint-on fuzzy skin editing" +msgstr "Modification de la surface irrégulière peinte" + msgid "Move" msgstr "Déplacer" @@ -702,6 +729,15 @@ msgstr "Coupe par ligne" msgid "Delete connector" msgstr "Supprimer le connecteur" +msgid "Entering Cut gizmo" +msgstr "Entrée dans l’outil Couper" + +msgid "Leaving Cut gizmo" +msgstr "Quitter l’outil Couper" + +msgid "Cut gizmo editing" +msgstr "Modification de la découpe" + msgid "Mesh name" msgstr "Nom du maillage" @@ -1596,6 +1632,12 @@ msgstr "Distance parallèle :" msgid "Flip by Face 2" msgstr "Retournement par la Face 2" +msgid "Entering Measure gizmo" +msgstr "Entrée dans l’outil Mesurer" + +msgid "Leaving Measure gizmo" +msgstr "Quitter l’outil Mesurer" + msgid "Assemble" msgstr "Assembler" @@ -1635,6 +1677,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Assemblage face à face" +msgid "Entering Assembly gizmo" +msgstr "Entrée dans l’outil Assemblage" + +msgid "Leaving Assembly gizmo" +msgstr "Quitter l’outil Assemblage" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1933,6 +1981,20 @@ msgstr "" "Récupérer télécharge la copie du cloud. Forcer l’envoi l’écrase avec votre " "préréglage local." +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3248,6 +3310,45 @@ msgstr "La température maximale ne peut pas dépasser " msgid "The minmum temperature should not be less than " msgstr "La température minimale ne doit pas être inférieure à " +msgid "Type to filter..." +msgstr "Saisissez du texte pour filtrer…" + +msgid "All" +msgstr "Tous" + +msgid "No selected items..." +msgstr "Aucun élément sélectionné…" + +msgid "All items selected..." +msgstr "Tous les éléments sont sélectionnés…" + +msgid "No matching items..." +msgstr "Aucun élément correspondant…" + +msgid "Deselect All" +msgstr "Désélectionner tout" + +msgid "Select visible" +msgstr "Sélectionner les éléments visibles" + +msgid "Deselect visible" +msgstr "Désélectionner les éléments visibles" + +msgid "Filter selected" +msgstr "Filtrer les éléments sélectionnés" + +msgid "Filter nonSelected" +msgstr "Filtrer les éléments non sélectionnés" + +msgid "Simple settings" +msgstr "Paramètres simples" + +msgid "Advanced settings" +msgstr "Paramètres avancés" + +msgid "Expert settings" +msgstr "Paramètres expert" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3530,6 +3631,9 @@ msgstr "La police n'a aucune forme pour le texte donné." msgid "There is no valid surface for text projection." msgstr "Il n'y a pas de surface valide pour la projection du texte." +msgid "An unexpected error occurred" +msgstr "Une erreur inattendue s’est produite" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Préconditionnement thermique pour l'optimisation de la première couche" @@ -4837,8 +4941,8 @@ msgid "" "TPU) is not allowed to be loaded." msgstr "" "La température actuelle ou cible du caisson dépasse 45℃. Afin d’éviter le " -"bouchage de l’extrudeur, le chargement de filament basse température " -"(PLA/PETG/TPU) n’est pas autorisé." +"bouchage de l’extrudeur, le chargement de filament basse température (PLA/" +"PETG/TPU) n’est pas autorisé." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder. In order " @@ -7029,9 +7133,8 @@ msgid "" "If the chamber temperature exceeds 40℃, the system will automatically switch " "to heating mode. Please confirm whether to switch." msgstr "" -"Si la température du caisson dépasse 40℃, le système passera " -"automatiquement en mode chauffage. Veuillez confirmer si vous souhaitez " -"commuter." +"Si la température du caisson dépasse 40℃, le système passera automatiquement " +"en mode chauffage. Veuillez confirmer si vous souhaitez commuter." msgid "Please select an AMS slot before calibration" msgstr "Veuillez sélectionner un emplacement AMS avant la calibration" @@ -8868,9 +8971,6 @@ msgstr "Regrouper les préréglages de filament utilisateur" msgid "Group user filament presets based on selection" msgstr "Regrouper les préréglages de filament utilisateur selon la sélection" -msgid "All" -msgstr "Tous" - msgid "By type" msgstr "Par type" @@ -9287,6 +9387,14 @@ msgstr "Télécharger le plug-in réseau" msgid "Associate files to OrcaSlicer" msgstr "Associer des fichiers à Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associer les fichiers 3MF à OrcaSlicer" @@ -10190,6 +10298,9 @@ msgstr "" "firmware prend en charge cette opération ou si l'imprimante fonctionne " "correctement." +msgid "Sending failed, please try again!" +msgstr "L’envoi a échoué, veuillez réessayer !" + msgid "Slice ok." msgstr "Découpe terminée." @@ -10664,6 +10775,9 @@ msgstr "Définir la vitesse pour les ponts externes et internes" msgid "Travel speed" msgstr "Vitesse de déplacement" +msgid "Junction Deviation" +msgstr "Déviation de jonction" + msgid "Jerk(XY)" msgstr "Jerk (X-Y)" @@ -11600,9 +11714,6 @@ msgstr "" "filaments de l'imprimante. Les filaments non utilisés de l'imprimante seront " "automatiquement ajoutés à la fin de la liste." -msgid "Advanced settings" -msgstr "Paramètres avancés" - msgid "Add unused AMS filaments to filaments list." msgstr "Ajouter les filaments AMS non utilisés à la liste de filaments." @@ -12125,12 +12236,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Nouvelle version de OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Vérifier sur GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Sauter cette version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmation et mise à jour de la buse" @@ -12248,6 +12370,9 @@ msgstr "Module de découpe" msgid "Auto Fire Extinguishing System" msgstr "Système d'extinction automatique" +msgid "Beta" +msgstr "Bêta" + msgid "Update firmware" msgstr "Mise à jour du firmware" @@ -13583,7 +13708,7 @@ msgid "External bridge density" msgstr "Densité du pont externe" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13597,9 +13722,7 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" "Contrôle la densité (espacement) des lignes de ponts externes. La valeur par " "défaut est 100 %.\n" @@ -13626,9 +13749,7 @@ msgid "Internal bridge density" msgstr "Densité du pont interne" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13699,11 +13820,9 @@ msgstr "" "par le rapport de débit du filament et, s’il est défini, par celui de " "l’objet." -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14474,8 +14593,8 @@ msgid "" msgstr "" "Si activé, l’extrusion des ponts internes utilise une hauteur de ligne égale " "au diamètre de la buse.\n" -"Cela augmente la résistance et la fiabilité des ponts internes imprimés " -"au-dessus du remplissage, mais peut dégrader l’apparence.\n" +"Cela augmente la résistance et la fiabilité des ponts internes imprimés au-" +"dessus du remplissage, mais peut dégrader l’apparence.\n" "Si désactivé, les ponts internes peuvent être plus esthétiques mais moins " "fiables au-dessus du remplissage." @@ -15818,7 +15937,7 @@ msgstr "" msgid "Z-buckling bias optimization (experimental)" msgstr "Optimisation du biais de flambage en Z (expérimental)" -#, no-c-format, no-boost-format +#, fuzzy, c-format, boost-format msgid "" "Tightens the gyroid wave along the Z (vertical) axis at low infill density " "to shorten the effective vertical column length and improve Z-axis " @@ -15829,8 +15948,8 @@ msgstr "" "Resserre l’onde gyroïde le long de l’axe Z (vertical) à faible densité de " "remplissage afin de raccourcir la longueur effective des colonnes verticales " "et d’améliorer la résistance au flambage en compression selon l’axe Z. La " -"consommation de filament est préservée. Aucun effet à partir d’environ 30 % " -"de densité de remplissage. S’applique uniquement lorsque le motif de " +"consommation de filament est préservée. Aucun effet à partir d’environ 30 " +"% de densité de remplissage. S’applique uniquement lorsque le motif de " "remplissage est réglé sur Gyroïde." msgid "Sparse infill pattern" @@ -16095,9 +16214,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk par défaut." -msgid "Junction Deviation" -msgstr "Déviation de jonction" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20294,8 +20410,7 @@ msgstr "Valeur non valide lorsque le mode vase en spirale est activé: " msgid "Bridge line width must not exceed nozzle diameter: " msgstr "" -"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la " -"buse : " +"La largeur de ligne des ponts ne doit pas dépasser le diamètre de la buse : " msgid "too large line width " msgstr "largeur de ligne trop grande " @@ -20571,8 +20686,7 @@ msgid "Log file" msgstr "Fichier journal" msgid "Redirects debug logging to file.\n" -msgstr "" -"Redirige les journaux de débogage vers un fichier.\n" +msgstr "Redirige les journaux de débogage vers un fichier.\n" msgid "Enable timelapse for print" msgstr "Activer le timelapse pour l’impression" @@ -22575,9 +22689,6 @@ msgstr "Préréglage de l’imprimante" msgid "Filament Preset Template" msgstr "Modèle de préréglage Filament" -msgid "Deselect All" -msgstr "Désélectionner tout" - msgid "Process Preset Template" msgstr "Modèle de préréglage de traitement" @@ -23113,9 +23224,21 @@ msgstr "Type d’imprimante introuvable, veuillez le sélectionner manuellement. msgid "Authorizing..." msgstr "Autorisation en cours…" +msgid "Error. Can't get api token for authorization" +msgstr "Erreur : impossible d’obtenir le jeton d’API pour l’autorisation" + +msgid "Could not parse server response." +msgstr "Impossible d’analyser la réponse du serveur." + +msgid "Error saving session to file" +msgstr "Erreur lors de l’enregistrement de la session dans un fichier" + msgid "Error session check" msgstr "Erreur lors de la vérification de la session" +msgid "Error during file upload" +msgstr "Erreur pendant l’envoi du fichier" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Type d’hôte d’impression non compatible : %s" @@ -23955,6 +24078,108 @@ msgstr "" "L’API locale Flashforge nécessite à la fois le numéro de série et le code " "d’accès." +msgid "Printer returned an error" +msgstr "L’imprimante a renvoyé une erreur" + +msgid "Missing system_info in response" +msgstr "Champ system_info absent de la réponse" + +msgid "Missing printer serial number in response" +msgstr "Numéro de série de l’imprimante absent de la réponse" + +msgid "Error parsing response" +msgstr "Erreur lors de l’analyse de la réponse" + +msgid "ElegooLink not detected" +msgstr "ElegooLink non détecté" + +msgid "Invalid access code" +msgstr "Code d’accès invalide" + +msgid "CC2 device not detected" +msgstr "Appareil CC2 non détecté" + +msgid "Connection to ElegooLink is working correctly." +msgstr "La connexion à ElegooLink fonctionne correctement." + +msgid "Could not connect to ElegooLink" +msgstr "Impossible de se connecter à ElegooLink" + +#, boost-format +msgid "Error code: %1%" +msgstr "Code d’erreur : %1%" + +msgid "Upload failed" +msgstr "Échec de l’envoi" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "Impossible d’ouvrir le fichier à envoyer." + +msgid "Failed to read file chunk for upload." +msgstr "Impossible de lire le fragment de fichier à envoyer." + +msgid "CC2 upload failed" +msgstr "Échec de l’envoi vers la CC2" + +msgid "The file is empty or could not be read." +msgstr "Le fichier est vide ou n’a pas pu être lu." + +msgid "Failed to calculate file checksum." +msgstr "Impossible de calculer la somme de contrôle du fichier." + +msgid "Error code not found" +msgstr "Code d’erreur introuvable" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "Le fichier est introuvable, veuillez vérifier et réessayer." + +msgid "The file is corrupted, please check and try again." +msgstr "Le fichier est corrompu, veuillez vérifier et réessayer." + +msgid "Transmission abnormality, please check and try again." +msgstr "Anomalie de transmission, veuillez vérifier et réessayer." + +msgid "The file does not match the printer, please check and try again." +msgstr "" +"Le fichier ne correspond pas à l’imprimante, veuillez vérifier et réessayer." + +msgid "Start print timeout" +msgstr "Délai de démarrage de l’impression dépassé" + +msgid "Start print failed" +msgstr "Échec du démarrage de l’impression" + +msgid "Connected to CrealityPrint successfully!" +msgstr "Connexion à CrealityPrint réussie !" + +msgid "Could not connect to CrealityPrint" +msgstr "Impossible de se connecter à CrealityPrint" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" +"Le nom d’hôte/IP/URL n’a pas pu être analysé, veuillez le vérifier et " +"réessayer." + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "L’état communiqué n’est pas correct." @@ -24013,6 +24238,12 @@ msgstr "Bordure à oreilles" msgid "Please select single object." msgstr "Veuillez sélectionner un seul objet." +msgid "Entering Brim Ears" +msgstr "Entrée dans Bordure à oreilles" + +msgid "Leaving Brim Ears" +msgstr "Quitter Bordure à oreilles" + msgid "Zoom Out" msgstr "Zoom arrière" @@ -24023,6 +24254,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "Échec du chargement des informations d'objets à sauter. Veuillez réessayer." +msgid "Failed to create the temporary folder." +msgstr "Échec de la création du dossier temporaire." + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Sélectionné(s)" @@ -24176,6 +24410,102 @@ msgstr "Nombre de facettes triangulaires" msgid "Calculating, please wait..." msgstr "Calcul en cours, veuillez patienter…" +msgid "PresetBundle" +msgstr "Paquet de préréglages" + +msgid "Bundle folder does not exist." +msgstr "Le dossier du paquet n’existe pas." + +msgid "Failed to open folder." +msgstr "Impossible d’ouvrir le dossier." + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" +"Supprimer le paquet sélectionné du dossier ainsi que tous les préréglages " +"chargés depuis celui-ci ?" + +msgid "Delete Bundle" +msgstr "Supprimer le paquet" + +msgid "Failed to remove bundle." +msgstr "Impossible de retirer le paquet." + +msgid "Remove Bundle" +msgstr "Retirer le paquet" + +msgid "Unsubscribe bundle?" +msgstr "Se désabonner du paquet ?" + +msgid "UnsubscribeBundle" +msgstr "Se désabonner du paquet" + +msgid "Failed to unsubscribe bundle." +msgstr "Impossible de se désabonner du paquet." + +msgid "Unsubscribe Bundle" +msgstr "Se désabonner du paquet" + +msgid "ExportPresetBundle" +msgstr "Exporter le paquet de préréglages" + +msgid "Save preset bundle" +msgstr "Enregistrer le paquet de préréglages" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "Échec de l’intégration au bureau : exécutable introuvable." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "Intégration au bureau" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "Le téléchargement a échoué" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "Impossible de créer le fichier à l’emplacement %1%" + +msgid "Archive preview" +msgstr "Aperçu de l’archive" + +msgid "Open File" +msgstr "Ouvrir un fichier" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24341,8 +24671,8 @@ msgid "" "Did you know that you can auto-arrange all the objects in your project?" msgstr "" "Agencement automatique\n" -"Saviez-vous que vous pouvez agencer automatiquement tous les objets de " -"votre projet ?" +"Saviez-vous que vous pouvez agencer automatiquement tous les objets de votre " +"projet ?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" @@ -24624,249 +24954,6 @@ msgstr "" #~ "Veuillez vérifier votre connexion réseau\n" #~ "(HTTP %u)" -msgid "Entering Paint-on supports" -msgstr "Entrée dans Supports peints" - -msgid "Leaving Paint-on supports" -msgstr "Quitter Supports peints" - -msgid "Paint-on supports editing" -msgstr "Modification des supports peints" - -msgid "Entering Brim Ears" -msgstr "Entrée dans Bordure à oreilles" - -msgid "Leaving Brim Ears" -msgstr "Quitter Bordure à oreilles" - -msgid "Entering color painting" -msgstr "Entrée dans la mise en couleur" - -msgid "Leaving color painting" -msgstr "Quitter la mise en couleur" - -msgid "Color painting editing" -msgstr "Modification de la mise en couleur" - -msgid "Entering Paint-on fuzzy skin" -msgstr "Entrée dans Surface irrégulière peinte" - -msgid "Leaving Paint-on fuzzy skin" -msgstr "Quitter Surface irrégulière peinte" - -msgid "Paint-on fuzzy skin editing" -msgstr "Modification de la surface irrégulière peinte" - -msgid "Entering Cut gizmo" -msgstr "Entrée dans l’outil Couper" - -msgid "Leaving Cut gizmo" -msgstr "Quitter l’outil Couper" - -msgid "Cut gizmo editing" -msgstr "Modification de la découpe" - -msgid "Entering Measure gizmo" -msgstr "Entrée dans l’outil Mesurer" - -msgid "Leaving Measure gizmo" -msgstr "Quitter l’outil Mesurer" - -msgid "Entering Assembly gizmo" -msgstr "Entrée dans l’outil Assemblage" - -msgid "Leaving Assembly gizmo" -msgstr "Quitter l’outil Assemblage" - -msgid "Simple settings" -msgstr "Paramètres simples" - -msgid "Expert settings" -msgstr "Paramètres expert" - -msgid "Type to filter..." -msgstr "Saisissez du texte pour filtrer…" - -msgid "No selected items..." -msgstr "Aucun élément sélectionné…" - -msgid "All items selected..." -msgstr "Tous les éléments sont sélectionnés…" - -msgid "No matching items..." -msgstr "Aucun élément correspondant…" - -msgid "Select visible" -msgstr "Sélectionner les éléments visibles" - -msgid "Deselect visible" -msgstr "Désélectionner les éléments visibles" - -msgid "Filter selected" -msgstr "Filtrer les éléments sélectionnés" - -msgid "Filter nonSelected" -msgstr "Filtrer les éléments non sélectionnés" - -msgid "An unexpected error occurred" -msgstr "Une erreur inattendue s’est produite" - -msgid "The download has failed" -msgstr "Le téléchargement a échoué" - -msgid "Can't create file at %1%" -msgstr "Impossible de créer le fichier à l’emplacement %1%" - -msgid "Archive preview" -msgstr "Aperçu de l’archive" - -msgid "Open File" -msgstr "Ouvrir un fichier" - -msgid "Desktop Integration" -msgstr "Intégration au bureau" - -msgid "Performing desktop integration failed - Could not find executable." -msgstr "Échec de l’intégration au bureau : exécutable introuvable." - -msgid "Beta" -msgstr "Bêta" - -msgid "Sending failed, please try again!" -msgstr "L’envoi a échoué, veuillez réessayer !" - -msgid "Failed to create the temporary folder." -msgstr "Échec de la création du dossier temporaire." - -msgid "PresetBundle" -msgstr "Paquet de préréglages" - -msgid "ExportPresetBundle" -msgstr "Exporter le paquet de préréglages" - -msgid "Save preset bundle" -msgstr "Enregistrer le paquet de préréglages" - -msgid "Bundle folder does not exist." -msgstr "Le dossier du paquet n’existe pas." - -msgid "Failed to open folder." -msgstr "Impossible d’ouvrir le dossier." - -msgid "Delete selected bundle from folder and all presets loaded from it?" -msgstr "Supprimer le paquet sélectionné du dossier ainsi que tous les préréglages chargés depuis celui-ci ?" - -msgid "Delete Bundle" -msgstr "Supprimer le paquet" - -msgid "Failed to remove bundle." -msgstr "Impossible de retirer le paquet." - -msgid "Remove Bundle" -msgstr "Retirer le paquet" - -msgid "Unsubscribe bundle?" -msgstr "Se désabonner du paquet ?" - -msgid "UnsubscribeBundle" -msgstr "Se désabonner du paquet" - -msgid "Failed to unsubscribe bundle." -msgstr "Impossible de se désabonner du paquet." - -msgid "Unsubscribe Bundle" -msgstr "Se désabonner du paquet" - -msgid "The Hostname/IP/URL could not be parsed, please check it and try again." -msgstr "Le nom d’hôte/IP/URL n’a pas pu être analysé, veuillez le vérifier et réessayer." - -msgid "Could not parse server response." -msgstr "Impossible d’analyser la réponse du serveur." - -msgid "Connected to CrealityPrint successfully!" -msgstr "Connexion à CrealityPrint réussie !" - -msgid "Could not connect to CrealityPrint" -msgstr "Impossible de se connecter à CrealityPrint" - -msgid "Connection to ElegooLink is working correctly." -msgstr "La connexion à ElegooLink fonctionne correctement." - -msgid "Could not connect to ElegooLink" -msgstr "Impossible de se connecter à ElegooLink" - -msgid "ElegooLink not detected" -msgstr "ElegooLink non détecté" - -msgid "Invalid access code" -msgstr "Code d’accès invalide" - -msgid "CC2 device not detected" -msgstr "Appareil CC2 non détecté" - -msgid "CC2 upload failed" -msgstr "Échec de l’envoi vers la CC2" - -msgid "Upload failed" -msgstr "Échec de l’envoi" - -msgid "Printer returned an error" -msgstr "L’imprimante a renvoyé une erreur" - -msgid "Missing system_info in response" -msgstr "Champ system_info absent de la réponse" - -msgid "Missing printer serial number in response" -msgstr "Numéro de série de l’imprimante absent de la réponse" - -msgid "Error parsing response" -msgstr "Erreur lors de l’analyse de la réponse" - -msgid "Error code: %1%" -msgstr "Code d’erreur : %1%" - -msgid "Error code not found" -msgstr "Code d’erreur introuvable" - -msgid "Failed to open file for upload." -msgstr "Impossible d’ouvrir le fichier à envoyer." - -msgid "Failed to read file chunk for upload." -msgstr "Impossible de lire le fragment de fichier à envoyer." - -msgid "The file is empty or could not be read." -msgstr "Le fichier est vide ou n’a pas pu être lu." - -msgid "Failed to calculate file checksum." -msgstr "Impossible de calculer la somme de contrôle du fichier." - -msgid "The file is lost, please check and try again." -msgstr "Le fichier est introuvable, veuillez vérifier et réessayer." - -msgid "The file is corrupted, please check and try again." -msgstr "Le fichier est corrompu, veuillez vérifier et réessayer." - -msgid "Transmission abnormality, please check and try again." -msgstr "Anomalie de transmission, veuillez vérifier et réessayer." - -msgid "The file does not match the printer, please check and try again." -msgstr "Le fichier ne correspond pas à l’imprimante, veuillez vérifier et réessayer." - -msgid "Start print timeout" -msgstr "Délai de démarrage de l’impression dépassé" - -msgid "Start print failed" -msgstr "Échec du démarrage de l’impression" - -msgid "Error. Can't get api token for authorization" -msgstr "Erreur : impossible d’obtenir le jeton d’API pour l’autorisation" - -msgid "Error saving session to file" -msgstr "Erreur lors de l’enregistrement de la session dans un fichier" - -msgid "Error during file upload" -msgstr "Erreur pendant l’envoi du fichier" - #~ msgid "Cloud Error" #~ msgstr "Erreur cloud" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index c6e4dcf7ad..f58573acaa 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -194,6 +194,15 @@ msgstr "Kész" msgid "Support Generated" msgstr "Támasz legenerálva" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Felület Tárgyasztalra Illesztése" @@ -281,6 +290,15 @@ msgstr "A következővel festve: %1% filament" msgid "To:" msgstr "Ide:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Festett bolyhos felület" @@ -302,6 +320,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Festett bolyhos felület engedélyezése ennél az objektumnál" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Mozgatás" @@ -691,6 +718,15 @@ msgstr "Vágás vonallal" msgid "Delete connector" msgstr "Csatlakozó törlése" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Háló neve" @@ -1566,6 +1602,12 @@ msgstr "Párhuzamos távolság:" msgid "Flip by Face 2" msgstr "Tükrözés a 2. felület szerint" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Összeállítás" @@ -1604,6 +1646,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Felület-felület összeállítás" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1886,6 +1934,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3191,6 +3253,45 @@ msgstr "A maximális hőmérséklet nem haladhatja meg ezt: " msgid "The minmum temperature should not be less than " msgstr "A minimális hőmérséklet nem lehet kevesebb ennél: " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Összes" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Kijelölés megszüntetése" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Előrehaladott beállítások" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3472,6 +3573,9 @@ msgstr "A betűtípus nem tartalmaz alakzatot a megadott szöveghez." msgid "There is no valid surface for text projection." msgstr "Nincs érvényes felület a szöveg vetítéséhez." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Hőelőkészítés az első réteg optimalizálásához" @@ -8695,9 +8799,6 @@ msgstr "Felhasználói filamentbeállítások csoportosítása" msgid "Group user filament presets based on selection" msgstr "Felhasználói filamentbeállítások csoportosítása kiválasztás alapján" -msgid "All" -msgstr "Összes" - msgid "By type" msgstr "Típus szerint" @@ -9095,6 +9196,14 @@ msgstr "Hálózati bővítmény letöltése" msgid "Associate files to OrcaSlicer" msgstr "Fájlok társítása a OrcaSlicerhoz" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf fájlok társítása a OrcaSlicerhoz" @@ -9973,6 +10082,9 @@ msgstr "" "Fájlfeltöltés időtúllépés. Ellenőrizd, hogy a firmware verzió támogatja-e " "ezt a műveletet, és hogy a nyomtató megfelelően működik-e." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Szeletelés kész." @@ -10430,6 +10542,9 @@ msgstr "Sebesség beállítása a külső és belső hidakhoz" msgid "Travel speed" msgstr "Mozgás sebessége" +msgid "Junction Deviation" +msgstr "Csomóponti eltérés" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11339,9 +11454,6 @@ msgstr "" "lecseréli. A nem használt nyomtató-filamentek automatikusan a lista végére " "kerülnek." -msgid "Advanced settings" -msgstr "Előrehaladott beállítások" - msgid "Add unused AMS filaments to filaments list." msgstr "A nem használt AMS filamentek hozzáadása a filamentlistához." @@ -11854,12 +11966,23 @@ msgstr "Új hálózati bővítmény (%s) érhető el. Szeretnéd telepíteni?" msgid "New version of Orca Slicer" msgstr "A Orca Slicer új verziója" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Ellenőrizd a GitHub-on" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Verzió kihagyása" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Fúvóka lecserélésének megerősítése" @@ -11976,6 +12099,9 @@ msgstr "Vágómodul" msgid "Auto Fire Extinguishing System" msgstr "Automatikus tűzoltó rendszer" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware frissítése" @@ -13234,7 +13360,7 @@ msgid "External bridge density" msgstr "Külső híd sűrűsége" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13248,18 +13374,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Belső híd sűrűsége" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13294,11 +13416,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15553,9 +15673,6 @@ msgstr "" msgid "Default jerk." msgstr "Alapértelmezett jerk." -msgid "Junction Deviation" -msgstr "Csomóponti eltérés" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21855,9 +21972,6 @@ msgstr "Nyomtatóbeállítás" msgid "Filament Preset Template" msgstr "Filamentbeállítás sablon" -msgid "Deselect All" -msgstr "Kijelölés megszüntetése" - msgid "Process Preset Template" msgstr "Folyamatbeállítás sablon" @@ -22369,9 +22483,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "A nyomtatóállomás típusa nem egyezik: %s" @@ -23188,6 +23314,105 @@ msgstr "Nem sikerült soros kapcsolaton keresztül csatlakozni a Flashforge-hoz" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "A megadott állapot nem megfelelő." @@ -23241,6 +23466,12 @@ msgstr "Karimás Fülek" msgid "Please select single object." msgstr "Válassz ki egyetlen objektumot." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Kicsinyítés" @@ -23250,6 +23481,9 @@ msgstr "Nagyítás" msgid "Load skipping objects information failed. Please try again." msgstr "A kihagyott objektumok adatainak betöltése sikertelen. Próbáld újra." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d kiválasztva" @@ -23402,6 +23636,100 @@ msgstr "Háromszögfelületek száma" msgid "Calculating, please wait..." msgstr "Számítás folyamatban, kérlek várj..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 677a5d56c7..8695e4387e 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -198,6 +198,15 @@ msgstr "Fatto" msgid "Support Generated" msgstr "Supporto generato" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Strumento selezione faccia come base" @@ -286,6 +295,15 @@ msgstr "Dipinto utilizzando: Filamento %1%" msgid "To:" msgstr "A:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Dipingi superficie ruvida" @@ -307,6 +325,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Abilita la superficie ruvida dipinta per questo oggetto" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Sposta" @@ -697,6 +724,15 @@ msgstr "Taglia sulla linea" msgid "Delete connector" msgstr "Cancella connettore" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nome maglia poligonale" @@ -1589,6 +1625,12 @@ msgstr "Distanza parallela:" msgid "Flip by Face 2" msgstr "Capovolgi da Faccia 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Assembla" @@ -1626,6 +1668,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Assemblaggio faccia a faccia" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1911,6 +1959,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3218,6 +3280,45 @@ msgstr "La temperatura massima non può superare " msgid "The minmum temperature should not be less than " msgstr "La temperatura minima non deve essere inferiore a " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tutto" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Deseleziona tutto" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Impostazioni avanzate" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3501,6 +3602,9 @@ msgstr "Il carattere non ha alcuna forma per il testo specificato." msgid "There is no valid surface for text projection." msgstr "Non esiste una superficie valida per la proiezione del testo." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Precondizionamento termico per l'ottimizzazione del primo strato" @@ -8779,9 +8883,6 @@ msgstr "Raggruppa profili di filamento utente" msgid "Group user filament presets based on selection" msgstr "Raggruppa i profili di filamento utente in base alla selezione" -msgid "All" -msgstr "Tutto" - msgid "By type" msgstr "Per tipo" @@ -9168,6 +9269,14 @@ msgstr "Scarica modulo di rete" msgid "Associate files to OrcaSlicer" msgstr "Associa i file ad OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associa i file 3MF ad OrcaSlicer" @@ -10046,6 +10155,9 @@ msgstr "" "Timeout caricamento file. Verificare se la versione del firmware supporta " "questa operazione o se la stampante funziona correttamente." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Elaborazione completa." @@ -10512,6 +10624,9 @@ msgstr "Imposta la velocità per ponti esterni e interni" msgid "Travel speed" msgstr "Velocità di spostamento" +msgid "Junction Deviation" +msgstr "Deviazione di giunzione" + msgid "Jerk(XY)" msgstr "Scatto(XY)" @@ -11421,9 +11536,6 @@ msgstr "" "sui filamenti della stampante. I filamenti della stampante non utilizzati " "verranno aggiunti automaticamente alla fine della lista." -msgid "Advanced settings" -msgstr "Impostazioni avanzate" - msgid "Add unused AMS filaments to filaments list." msgstr "Aggiungi filamenti AMS non utilizzati alla lista filamenti." @@ -11947,12 +12059,23 @@ msgstr "È disponibile un nuovo modulo di rete (%s). Vuoi installarlo?" msgid "New version of Orca Slicer" msgstr "Nuova versione di OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Visualizza su GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Salta questa versione" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Conferma e aggiorna l'ugello" @@ -12071,6 +12194,9 @@ msgstr "Modulo di taglio" msgid "Auto Fire Extinguishing System" msgstr "Sistema antincendio automatico" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aggiorna firmware" @@ -13359,7 +13485,7 @@ msgid "External bridge density" msgstr "Densità ponti esterni" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13373,18 +13499,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densità ponti interni" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13419,11 +13541,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15731,9 +15851,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk predefinito." -msgid "Junction Deviation" -msgstr "Deviazione di giunzione" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -22143,9 +22260,6 @@ msgstr "Profilo stampante" msgid "Filament Preset Template" msgstr "Modello profilo di filamento" -msgid "Deselect All" -msgstr "Deseleziona tutto" - msgid "Process Preset Template" msgstr "Modello profilo di processo" @@ -22662,9 +22776,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipo di host di stampa non corrispondente: %s" @@ -23486,6 +23612,105 @@ msgstr "Impossibile connettersi a Flashforge tramite seriale" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Lo stato fornito non è corretto." @@ -23542,6 +23767,12 @@ msgstr "Tese ad orecchio" msgid "Please select single object." msgstr "Seleziona un singolo oggetto." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom indietro" @@ -23551,6 +23782,9 @@ msgstr "Zoom avanti" msgid "Load skipping objects information failed. Please try again." msgstr "Caricamento informazioni sugli oggetti da saltare fallito. Riprovare." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selezionati" @@ -23703,6 +23937,100 @@ msgstr "Numero di facce triangolari" msgid "Calculating, please wait..." msgstr "Calcolo in corso, attendere..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 0bcdfa1066..be614efa71 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -196,6 +196,15 @@ msgstr "完了" msgid "Support Generated" msgstr "生成されたサポート" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "ギズモ-面に配置" @@ -282,6 +291,15 @@ msgstr "フィラメント %1%でペイントします" msgid "To:" msgstr "先:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "ファジースキンのペイント" @@ -303,6 +321,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "このオブジェクトのペイントファジースキンを有効にする" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移動" @@ -688,6 +715,15 @@ msgstr "ラインでカット" msgid "Delete connector" msgstr "コネクター削除" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "メッシュ名" @@ -1559,6 +1595,12 @@ msgstr "平行距離:" msgid "Flip by Face 2" msgstr "面2で反転" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "組立てる" @@ -1596,6 +1638,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面と面の組み立て" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1869,6 +1917,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3141,6 +3203,45 @@ msgstr "最高温度は次の値を超えることはできません " msgid "The minmum temperature should not be less than " msgstr "最低温度は次の値を下回ることはできません " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "すべて" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "すべて選択解除" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "詳細設定" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3413,6 +3514,9 @@ msgstr "フォントに指定されたテキストの形状がありません。 msgid "There is no valid surface for text projection." msgstr "テキスト投影に有効な面がありません。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "初期レイヤー最適化のための熱プリコンディショニング" @@ -8487,9 +8591,6 @@ msgstr "ユーザーフィラメントプリセットをグループ化" msgid "Group user filament presets based on selection" msgstr "選択に基づいてユーザーフィラメントプリセットをグループ化" -msgid "All" -msgstr "すべて" - msgid "By type" msgstr "タイプ別" @@ -8861,6 +8962,14 @@ msgstr "ネットワークプラグインをダウンロード" msgid "Associate files to OrcaSlicer" msgstr "ファイルをOrca Slicerに関連付ける" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mfファイルをOrca Slicerに関連付けます。" @@ -9697,6 +9806,9 @@ msgstr "" "ファイルアップロードがタイムアウトしました。ファームウェアバージョンがこの操" "作をサポートしているか、プリンターが正常に動作しているか確認してください。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "スライス完了" @@ -10135,6 +10247,9 @@ msgstr "外部および内部ブリッジの速度を設定" msgid "Travel speed" msgstr "移動速度" +msgid "Junction Deviation" +msgstr "接合偏差" + msgid "Jerk(XY)" msgstr "ジャーク(XY)" @@ -10981,9 +11096,6 @@ msgstr "" "プリンターのフィラメントに基づいてプロジェクトフィラメントリストを順次置き換" "えます。未使用のプリンターフィラメントはリストの末尾に自動的に追加されます。" -msgid "Advanced settings" -msgstr "詳細設定" - msgid "Add unused AMS filaments to filaments list." msgstr "未使用のAMSフィラメントをフィラメントリストに追加します。" @@ -11468,12 +11580,23 @@ msgstr "新しいプラグイン (%s) が発見しました、インストール msgid "New version of Orca Slicer" msgstr "新バージョン" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "このバージョンをスキップ" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "確認してノズルを更新" @@ -11585,6 +11708,9 @@ msgstr "カッティングモジュール" msgid "Auto Fire Extinguishing System" msgstr "自動消火システム" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "ファームウェアを更新" @@ -12679,7 +12805,7 @@ msgid "External bridge density" msgstr "外部ブリッジ密度" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12693,18 +12819,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "内部ブリッジ密度" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12739,11 +12861,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14547,9 +14667,6 @@ msgstr "" msgid "Default jerk." msgstr "デフォルトジャーク。" -msgid "Junction Deviation" -msgstr "接合偏差" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19950,9 +20067,6 @@ msgstr "プリンタープリセット" msgid "Filament Preset Template" msgstr "フィラメントプリセットテンプレート" -msgid "Deselect All" -msgstr "すべて選択解除" - msgid "Process Preset Template" msgstr "プロセスプリセットテンプレート" @@ -20433,9 +20547,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "印刷ホストのタイプが一致しません: %s" @@ -21133,6 +21259,105 @@ msgstr "シリアル経由でFlashforgeに接続できませんでした" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "指定された状態が正しくありません。" @@ -21184,6 +21409,12 @@ msgstr "ブリム" msgid "Please select single object." msgstr "単一のオブジェクトを選択してください" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "ズームアウト" @@ -21193,6 +21424,9 @@ msgstr "ズームイン" msgid "Load skipping objects information failed. Please try again." msgstr "スキップオブジェクト情報のロードに失敗しました。再試行してください。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 選択済み" @@ -21345,6 +21579,100 @@ msgstr "三角面の数" msgid "Calculating, please wait..." msgstr "計算中、お待ちください..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index cba6c41c9f..fd97b851a1 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -198,6 +198,15 @@ msgstr "완료" msgid "Support Generated" msgstr "서포트 생성됨" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "변형도구 - 면에 배치" @@ -285,6 +294,15 @@ msgstr "칠하기에 사용한 필라멘트 %1%" msgid "To:" msgstr "대상:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "퍼지 스킨 칠하기" @@ -305,6 +323,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "이 객체의 칠한 퍼지 스킨 활성화" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "이동" @@ -691,6 +718,15 @@ msgstr "라인별로 자르기" msgid "Delete connector" msgstr "커넥터 삭제" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "메시 이름" @@ -1555,6 +1591,12 @@ msgstr "평행 거리:" msgid "Flip by Face 2" msgstr "면 2로 뒤집기" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "병합" @@ -1591,6 +1633,12 @@ msgstr "" msgid "Face and face assembly" msgstr "면과 면 조립" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1866,6 +1914,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3130,6 +3192,45 @@ msgstr "최대 온도는 다음 값을 초과할 수 없습니다 " msgid "The minmum temperature should not be less than " msgstr "최소 온도는 다음 값보다 낮아서는 안 됩니다 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "모두" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "모두 선택 해제" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "고급 설정" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3399,6 +3500,9 @@ msgstr "글꼴에 지정된 텍스트의 형태가 없습니다." msgid "There is no valid surface for text projection." msgstr "텍스트 프로젝션에 유효한 표면이 없습니다." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "첫 번째 레이어 최적화를 위한 열 사전 조건" @@ -8428,9 +8532,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "모두" - msgid "By type" msgstr "" @@ -8777,6 +8878,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "파일을 OrcaSlicer에 연결" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf 파일을 OrcaSlicer에 연결" @@ -9600,6 +9709,9 @@ msgstr "" "파일 업로드 시간이 초과되었습니다. 펌웨어 버전이 이 작업을 지원하는지 확인하" "거나 프린터가 제대로 작동하는지 확인하세요." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "슬라이스 완료." @@ -10022,6 +10134,9 @@ msgstr "외부 및 내부 브릿지 속도 설정" msgid "Travel speed" msgstr "이동 속도" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "저크(XY)" @@ -10874,9 +10989,6 @@ msgstr "" "프린터 필라멘트를 기준으로 프로젝트 필라멘트 목록을 순차적으로 교체합니다. 사" "용하지 않는 프린터 필라멘트는 자동으로 목록 끝에 추가됩니다." -msgid "Advanced settings" -msgstr "고급 설정" - msgid "Add unused AMS filaments to filaments list." msgstr "미사용 AMS 필라멘트를 필라멘트 목록에 추가하기." @@ -11364,12 +11476,23 @@ msgstr "새 네트워크 플러그인(%s)을 사용할 수 있습니다. 설치 msgid "New version of Orca Slicer" msgstr "Orca Slicer의 새 버전" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "이 버전 건너뛰기" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "노즐 확인 및 업데이트" @@ -11482,6 +11605,9 @@ msgstr "커팅 모듈" msgid "Auto Fire Extinguishing System" msgstr "자동 화재 진압 시스템" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "펌웨어 업데이트" @@ -12631,7 +12757,7 @@ msgid "External bridge density" msgstr "외부 브릿지 밀도" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12645,18 +12771,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "내부 브릿지 밀도" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12691,11 +12813,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14745,9 +14865,6 @@ msgstr "Klipper의 max_accel_to_decel은 가속도의 %%로 조정됩니다" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20478,9 +20595,6 @@ msgstr "프린터 사전 설정" msgid "Filament Preset Template" msgstr "필라멘트 사전 설정 템플릿" -msgid "Deselect All" -msgstr "모두 선택 해제" - msgid "Process Preset Template" msgstr "프로세스 사전 설정 템플릿" @@ -20964,9 +21078,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "일치하지 않는 출력 호스트 유형: %s" @@ -21710,6 +21836,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "제공된 상태가 올바르지 않습니다." @@ -21763,6 +21988,12 @@ msgstr "브림 귀" msgid "Please select single object." msgstr "단일 객체를 선택하세요." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "축소" @@ -21772,6 +22003,9 @@ msgstr "확대" msgid "Load skipping objects information failed. Please try again." msgstr "건너뛰는 개체 정보를 로드하지 못했습니다. 다시 시도해 주세요." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 선택됨" @@ -21918,6 +22152,100 @@ msgstr "삼각형 패싯 수" msgid "Calculating, please wait..." msgstr "계산 중, 잠시만 기다려주세요..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 95a9564ca6..3e5826f896 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-10-25 23:01+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -197,6 +197,15 @@ msgstr "Atlikta" msgid "Support Generated" msgstr "Atramos sugeneruotos" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Patalpinti ant paviršiaus" @@ -284,6 +293,15 @@ msgstr "Piešta naudojant: Gija %1%" msgid "To:" msgstr "To:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Piešti grublėtą paviršių" @@ -304,6 +322,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Perkelti" @@ -695,6 +722,15 @@ msgstr "Pjovimas pagal liniją" msgid "Delete connector" msgstr "Ištrinti jungtį" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Figūros pavadinimas" @@ -1564,6 +1600,12 @@ msgstr "Lygiagretus atstumas:" msgid "Flip by Face 2" msgstr "Apversti pagal paviršių 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Surinkti" @@ -1600,6 +1642,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1886,6 +1934,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3184,6 +3246,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Visi" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Atšaukti visus" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3464,6 +3565,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8641,9 +8745,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Visi" - msgid "By type" msgstr "By type" @@ -9018,6 +9119,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Susieti failus su Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Susieti .3mf failus su Orca Slicer" @@ -9877,6 +9986,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Sluoksniavimas baigtas." @@ -10338,6 +10450,9 @@ msgstr "Vidinių ir išorinių tiltų greitis" msgid "Travel speed" msgstr "Judėjimo greitis" +msgid "Junction Deviation" +msgstr "Sujungimo nuokrypis" + msgid "Jerk(XY)" msgstr "Pagreitis (XY)" @@ -11222,9 +11337,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11727,12 +11839,23 @@ msgstr "Yra naujas tinklo papildinys(%s), ar norite jį įdiegti?" msgid "New version of Orca Slicer" msgstr "Nauja \"Orca Slicer\" versija" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Praleisti šią versiją" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Patvirtinti ir atnaujinti purkštuką" @@ -11846,6 +11969,9 @@ msgstr "Pjovimo modulis" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Atnaujinti programinę įrangą" @@ -13079,7 +13205,7 @@ msgid "External bridge density" msgstr "Išorinio tilto tankis" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13093,18 +13219,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Vidinių tiltų tankis" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13139,11 +13261,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15350,9 +15470,6 @@ msgstr "\"Klipper\" max_accel_to_decel bus pakoreguotas pagal šį pagreičio %% msgid "Default jerk." msgstr "Numatytasis trūkčiojimas." -msgid "Junction Deviation" -msgstr "Sujungimo nuokrypis" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21493,9 +21610,6 @@ msgstr "Spausdintuvo nustatymai" msgid "Filament Preset Template" msgstr "Gijos nustatymų šablonas" -msgid "Deselect All" -msgstr "Atšaukti visus" - msgid "Process Preset Template" msgstr "Proceso nustatymų šablonas" @@ -22012,9 +22126,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Neatitinka tinklinio spausdintuvo tipas: %s" @@ -22816,6 +22942,105 @@ msgstr "Nepavyko prisijungti prie „Flashforge“ per nuoseklųjį prievadą" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Pateikta būsena neteisinga." @@ -22868,6 +23093,12 @@ msgstr "Krašto \"ausys\"" msgid "Please select single object." msgstr "Pasirinkite vieną objektą." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22877,6 +23108,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -23028,6 +23262,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 47626464be..c80242b576 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -191,6 +191,15 @@ msgstr "Klaar" msgid "Support Generated" msgstr "Ondersteuning gegenereerd" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Plaats op vlak" @@ -279,6 +288,15 @@ msgstr "Geschilderd met filament %1%" msgid "To:" msgstr "Naar:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Paint-on fuzzy skin" @@ -299,6 +317,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Verplaats" @@ -688,6 +715,15 @@ msgstr "Cut by line" msgid "Delete connector" msgstr "Delete connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Meshnaam" @@ -1557,6 +1593,12 @@ msgstr "Parallel distance:" msgid "Flip by Face 2" msgstr "Flip by Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Monteren" @@ -1593,6 +1635,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1874,6 +1922,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3172,6 +3234,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Alles" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Alles deselecteren" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3448,6 +3549,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8648,9 +8752,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Alles" - msgid "By type" msgstr "By type" @@ -9025,6 +9126,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Koppel bestanden aan OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Koppel .3mf-bestanden aan OrcaSlicer" @@ -9884,6 +9993,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice gelukt." @@ -10338,6 +10450,9 @@ msgstr "Snelheid instellen voor externe en interne bruggen" msgid "Travel speed" msgstr "Verplaatsing-sneleheid" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11220,9 +11335,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11729,12 +11841,23 @@ msgstr "" msgid "New version of Orca Slicer" msgstr "Nieuwe versie van Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Deze versie overslaan" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bevestig en update het mondstuk" @@ -11848,6 +11971,9 @@ msgstr "Cutting Module" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Firmware bijwerken" @@ -13083,7 +13209,7 @@ msgid "External bridge density" msgstr "External bridge density" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13097,18 +13223,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Internal bridge density" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13143,11 +13265,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15353,9 +15473,6 @@ msgstr "" msgid "Default jerk." msgstr "Default jerk." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21490,9 +21607,6 @@ msgstr "Vooraf ingestelde printer" msgid "Filament Preset Template" msgstr "Filament vooraf ingestelde sjabloon" -msgid "Deselect All" -msgstr "Alles deselecteren" - msgid "Process Preset Template" msgstr "Vooraf ingesteld proces sjabloon" @@ -21999,9 +22113,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Verkeerd type afdrukhost: %s" @@ -22792,6 +22918,105 @@ msgstr "Could not connect to Flashforge via serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "The provided state is not correct." @@ -22844,6 +23069,12 @@ msgstr "Rand Oren" msgid "Please select single object." msgstr "Selecteer een enkel object." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Uitzoomen" @@ -22853,6 +23084,9 @@ msgstr "Inzoomen" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d geselecteerd" @@ -23004,6 +23238,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 332fd42da7..8da5eb8614 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -199,6 +199,15 @@ msgstr "Gotowe" msgid "Support Generated" msgstr "Wygenerowana podpora" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Uchwyt-Połóż na Płaszczyźnie" @@ -287,6 +296,15 @@ msgstr "Pomalowane za pomocą: Filament %1%" msgid "To:" msgstr "Do:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Malowanie Fuzzy Skin" @@ -306,6 +324,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Przesuń" @@ -699,6 +726,15 @@ msgstr "Cięcie linią" msgid "Delete connector" msgstr "Usuń łącznik" +msgid "Entering Cut gizmo" +msgstr "Otwieranie uchwytu przecinania" + +msgid "Leaving Cut gizmo" +msgstr "Zamykanie uchwytu wytłaczania" + +msgid "Cut gizmo editing" +msgstr "Edytowanie uchwytów przecinania" + msgid "Mesh name" msgstr "Nazwa siatki" @@ -1571,6 +1607,12 @@ msgstr "Odległość między równoległymi krawędziami:" msgid "Flip by Face 2" msgstr "Obróć względem 2 powierzchni" +msgid "Entering Measure gizmo" +msgstr "Otwieranie uchwytu pomiaru" + +msgid "Leaving Measure gizmo" +msgstr "Zamykanie uchwytu wytłaczania" + msgid "Assemble" msgstr "Złożenie" @@ -1609,6 +1651,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montaż - powierzchnia do powierzchni" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1892,6 +1940,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3168,6 +3230,45 @@ msgstr "Maksymalna temperatura nie może przekroczyć " msgid "The minmum temperature should not be less than " msgstr "Minimalna temperatura nie powinna być mniejsza niż " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Wszystkie" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Odznacz wszystko" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Ustawienia zaawansowane" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3433,6 +3534,9 @@ msgstr "Czcionka nie ma żadnego kształtu dla danego tekstu." msgid "There is no valid surface for text projection." msgstr "Nie ma prawidłowej powierzchni do rzutowania tekstu." +msgid "An unexpected error occurred" +msgstr "Wystąpił nieoczekiwany błąd" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Wyrównywanie termiczne w celu optymalizacji pierwszej warstwy" @@ -8599,9 +8703,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "Wszystkie" - msgid "By type" msgstr "" @@ -8951,6 +9052,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "Skojarzenia plików z OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Skojarzenie plików 3MF" @@ -9802,6 +9911,9 @@ msgstr "" "Przekroczono limit czasu wgrywania pliku. Sprawdź czy Twoja wersja " "oprogramowania obsługuje tą operację oraz czy drukarka działa poprawnie." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Zakończono cięcie modelu." @@ -10236,6 +10348,9 @@ msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostów" msgid "Travel speed" msgstr "Szybkość przemieszczania" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "Jerk (XY)" @@ -11119,9 +11234,6 @@ msgstr "" "drukarki. Nieużywane filamenty drukarki zostaną automatycznie dodane na " "koniec listy." -msgid "Advanced settings" -msgstr "Ustawienia zaawansowane" - msgid "Add unused AMS filaments to filaments list." msgstr "Dodaj nieużywane filamenty AMS do listy filamentów." @@ -11619,12 +11731,23 @@ msgstr "Dostępna jest nowa wtyczka sieciowa (%s). Czy zainstalować ją?" msgid "New version of Orca Slicer" msgstr "Nowa wersja Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Pomiń tę wersję" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Potwierdź i zaktualizuj dyszę" @@ -11738,6 +11861,9 @@ msgstr "Moduł tnący" msgid "Auto Fire Extinguishing System" msgstr "Automatyczny system gaśniczy" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Aktualizuj oprogramowanie" @@ -12959,7 +13085,7 @@ msgid "External bridge density" msgstr "Gęstość zewnętrznych mostów" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12973,18 +13099,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Gęstość wewnętrznych mostów" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13019,11 +13141,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15201,9 +15321,6 @@ msgstr "" msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21196,9 +21313,6 @@ msgstr "Profil drukarki" msgid "Filament Preset Template" msgstr "Opracuj profil filamentu" -msgid "Deselect All" -msgstr "Odznacz wszystko" - msgid "Process Preset Template" msgstr "Opracuj profil procesu" @@ -21704,9 +21818,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Niepasujący typ hosta drukowania: %s" @@ -22496,6 +22622,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Podany stan nie jest właściwy" @@ -22549,6 +22774,12 @@ msgstr "Uszy brim" msgid "Please select single object." msgstr "Proszę wybrać pojedynczy obiekt." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Pomniejsz" @@ -22560,6 +22791,9 @@ msgstr "" "Nie udało się pobrać informacji o pomijanych obiektach. Proszę spróbować " "ponownie." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d wybrano" @@ -22707,6 +22941,112 @@ msgstr "Liczba trójkątnych faset" msgid "Calculating, please wait..." msgstr "Obliczanie, proszę czekać..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" +"Integracja z pulpitem nie powiodła się - boost::filesystem::canonical nie " +"zwrócił ścieżki do appimage." + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" +"Integracji z pulpitem nie powiodła się - nie znaleziono pliku wykonywalnego." + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" +"Integracja z pulpitem nie powiodła się, ponieważ nie znaleziono katalogu " +"aplikacji." + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" +"Integracji z pulpitem nie powiodła się - nie można utworzyć pliku pulpitu " +"Gcodeviewer. Plik pulpitu OrcaSlicer został prawdopodobnie utworzony " +"pomyślnie." + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "Integracja z pulpitem" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" +"Integracja z pulpitem ustawia ten plik binarny jako możliwy do wyszukania " +"przez system.\n" +"\n" +"Naciśnij \"Wykonaj\", aby kontynuować." + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -26075,46 +26415,6 @@ msgstr "" #~ msgid "Configuration &Wizard" #~ msgstr "Asystent Ko&nfiguracji" -#~ msgid "" -#~ "Performing desktop integration failed - boost::filesystem::canonical did " -#~ "not return appimage path." -#~ msgstr "" -#~ "Integracja z pulpitem nie powiodła się - boost::filesystem::canonical nie " -#~ "zwrócił ścieżki do appimage." - -#~ msgid "Performing desktop integration failed - Could not find executable." -#~ msgstr "" -#~ "Integracji z pulpitem nie powiodła się - nie znaleziono pliku " -#~ "wykonywalnego." - -#~ msgid "" -#~ "Performing desktop integration failed because the application directory " -#~ "was not found." -#~ msgstr "" -#~ "Integracja z pulpitem nie powiodła się, ponieważ nie znaleziono katalogu " -#~ "aplikacji." - -#~ msgid "" -#~ "Performing desktop integration failed - could not create Gcodeviewer " -#~ "desktop file. OrcaSlicer desktop file was probably created successfully." -#~ msgstr "" -#~ "Integracji z pulpitem nie powiodła się - nie można utworzyć pliku pulpitu " -#~ "Gcodeviewer. Plik pulpitu OrcaSlicer został prawdopodobnie utworzony " -#~ "pomyślnie." - -#~ msgid "Desktop Integration" -#~ msgstr "Integracja z pulpitem" - -#~ msgid "" -#~ "Desktop Integration sets this binary to be searchable by the system.\n" -#~ "\n" -#~ "Press \"Perform\" to proceed." -#~ msgstr "" -#~ "Integracja z pulpitem ustawia ten plik binarny jako możliwy do wyszukania " -#~ "przez system.\n" -#~ "\n" -#~ "Naciśnij \"Wykonaj\", aby kontynuować." - #~ msgid "3D Models" #~ msgstr "Modele 3D" @@ -26193,9 +26493,6 @@ msgstr "" #~ msgid "The maximum temperature cannot exceed" #~ msgstr "Maksymalna temperatura nie może przekroczyć" -#~ msgid "An unexpected error occurred" -#~ msgstr "Wystąpił nieoczekiwany błąd" - #~ msgid "Best surface quality" #~ msgstr "Najlepsza jakość powierzchni" @@ -26276,15 +26573,6 @@ msgstr "" #~ "Nieprawidłowy stan.\n" #~ "Żadna część nie została wybrana do zachowania po cięciu" -#~ msgid "Entering Cut gizmo" -#~ msgstr "Otwieranie uchwytu przecinania" - -#~ msgid "Leaving Cut gizmo" -#~ msgstr "Zamykanie uchwytu wytłaczania" - -#~ msgid "Cut gizmo editing" -#~ msgstr "Edytowanie uchwytów przecinania" - #~ msgid "Hollow this object" #~ msgstr "Wydrąż ten model" @@ -26318,12 +26606,6 @@ msgstr "" #~ msgid "Hollow and drill" #~ msgstr "Drążenie i wiercenie" -#~ msgid "Entering Measure gizmo" -#~ msgstr "Otwieranie uchwytu pomiaru" - -#~ msgid "Leaving Measure gizmo" -#~ msgstr "Zamykanie uchwytu wytłaczania" - #~ msgid "Measure gizmo editing" #~ msgstr "Edycja uchwytów pomiaru" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index fa8b4cb575..79a3bb08f9 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-03-22 17:15-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -203,6 +203,15 @@ msgstr "Concluído" msgid "Support Generated" msgstr "Suporte Gerado" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Posicionar na face" @@ -291,6 +300,15 @@ msgstr "Pintado usando: Filamento %1%" msgid "To:" msgstr "Para:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Textura difusa pintada" @@ -312,6 +330,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Ativar textura difusa pintada para este objeto" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Mover" @@ -701,6 +728,15 @@ msgstr "Corte por linha" msgid "Delete connector" msgstr "Apagar conector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Nome da malha" @@ -1576,6 +1612,12 @@ msgstr "Distância paralela:" msgid "Flip by Face 2" msgstr "Virar pela Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Montar" @@ -1614,6 +1656,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Montagem face a face" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1898,6 +1946,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3195,6 +3257,45 @@ msgstr "A temperatura máxima não pode exceder " msgid "The minmum temperature should not be less than " msgstr "A temperatura mínima não pode ser menor do que " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Todos" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Desselecionar Tudo" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Definições avançadas" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3478,6 +3579,9 @@ msgstr "A fonte não possui nenhuma forma para o texto fornecido." msgid "There is no valid surface for text projection." msgstr "Não existe uma superfície válida para projeção de texto." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Pré-condicionamento térmico para otimização da primeira camada" @@ -8742,9 +8846,6 @@ msgstr "Agrupar predefinições de filamento do usuário" msgid "Group user filament presets based on selection" msgstr "Agrupar predefinições de filamento do usuário com base na seleção" -msgid "All" -msgstr "Todos" - msgid "By type" msgstr "Por tipo" @@ -9144,6 +9245,14 @@ msgstr "Baixar Plug-in de Rede" msgid "Associate files to OrcaSlicer" msgstr "Associar arquivos ao OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associar arquivos 3MF ao OrcaSlicer" @@ -10020,6 +10129,9 @@ msgstr "" "versão do firmware suporta esta operação ou verifique se a impressora está " "funcionando corretamente." +msgid "Sending failed, please try again!" +msgstr "Falha no envio, tente novamente!" + msgid "Slice ok." msgstr "Fatiamento ok." @@ -10484,6 +10596,9 @@ msgstr "Definir velocidade para pontes externas e internas" msgid "Travel speed" msgstr "Velocidade de deslocamento" +msgid "Junction Deviation" +msgstr "Desvio de Junção" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11393,9 +11508,6 @@ msgstr "" "filamentos da impressora. Os filamentos de impressora não utilizados serão " "adicionados automaticamente ao final da lista." -msgid "Advanced settings" -msgstr "Definições avançadas" - msgid "Add unused AMS filaments to filaments list." msgstr "Adicionar filamentos AMS não utilizados à lista de filamentos." @@ -11903,12 +12015,23 @@ msgstr "Um novo plug-in de rede (%s) está disponível, deseja instalá-lo?" msgid "New version of Orca Slicer" msgstr "Nova versão do OrcaSlicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Verifique no GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Pular esta versão" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Confirmar e Atualizar Bico" @@ -12025,6 +12148,9 @@ msgstr "Módulo de Corte" msgid "Auto Fire Extinguishing System" msgstr "Sistema Automático de Extinção de Incêndio" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Atualizar firmware" @@ -13284,7 +13410,7 @@ msgid "External bridge density" msgstr "Densidade de ponte externa" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13298,18 +13424,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Densidade de ponte interna" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13344,11 +13466,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15618,9 +15738,6 @@ msgstr "" msgid "Default jerk." msgstr "Jerk padrão." -msgid "Junction Deviation" -msgstr "Desvio de Junção" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21931,9 +22048,6 @@ msgstr "Predefinição de Impressora" msgid "Filament Preset Template" msgstr "Gabarito de Predefinição de Filamento" -msgid "Deselect All" -msgstr "Desselecionar Tudo" - msgid "Process Preset Template" msgstr "Processar Gabarito de Predefinição" @@ -22461,9 +22575,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Tipo de Host de Impressão incompatível: %s" @@ -23281,6 +23407,105 @@ msgstr "Não foi possível conectar via serial com a Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "O estado fornecido não está correto." @@ -23335,6 +23560,12 @@ msgstr "Orelhas da Borda" msgid "Please select single object." msgstr "Por favor selecione um único objeto." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Afastar Zoom" @@ -23345,6 +23576,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "Falha ao carregar ignorando as informações dos objetos. Tente novamente." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selecionados" @@ -23496,6 +23730,100 @@ msgstr "Numero de facetas triangulares" msgid "Calculating, please wait..." msgstr "Calculando, por favor aguarde…" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -24706,9 +25034,6 @@ msgstr "" #~ "Verifique a rede e tente novamente. Se o problema persistir, você pode " #~ "reiniciar ou atualizar a impressora." -#~ msgid "Sending failed, please try again!" -#~ msgstr "Falha no envio, tente novamente!" - #~ msgid "Open Wiki for more information >" #~ msgstr "Abra o Wiki para mais informações >" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 9bd8ebbec0..6c3e8cb963 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.3.2 beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), " @@ -214,6 +214,15 @@ msgstr "Готово" msgid "Support Generated" msgstr "Поддержка сгенерирована" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Гизмо: Поверхностью на стол" @@ -302,6 +311,15 @@ msgstr "Окрашено с использованием прутка %1%" msgid "To:" msgstr "Заменить на:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Рисование нечёткой оболочки" @@ -322,6 +340,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Включить нечёткую оболочку для модели" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Перемещение" @@ -718,6 +745,15 @@ msgstr "Разрез по линии" msgid "Delete connector" msgstr "Удалить соединение" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Название" @@ -1603,6 +1639,12 @@ msgstr "Расстояние между параллельными граням msgid "Flip by Face 2" msgstr "Перевернуть грань 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + # при выборе на столе msgid "Assemble" msgstr "Объединить в сборку" @@ -1643,6 +1685,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Сборка по граням" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1937,6 +1985,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3263,6 +3325,47 @@ msgstr "Температура не должна превышать " msgid "The minmum temperature should not be less than " msgstr "Температура не должна быть ниже " +msgid "Type to filter..." +msgstr "" + +# в Сохранение толщины вертикальной оболочки. +# было Везде, но из-за условия совместимости изменено.... как тогда быть? +msgid "All" +msgstr "Все" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Снять выбор со всего" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Расширенные настройки" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3551,6 +3654,9 @@ msgstr "В шрифте отсутствуют данные для создан msgid "There is no valid surface for text projection." msgstr "Невозможно спроецировать текст." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Преднагрев для оптимизации первого слоя" @@ -8875,11 +8981,6 @@ msgstr "" "Объединять пользовательские профили материалов в подгруппы по выбранному " "критерию." -# в Сохранение толщины вертикальной оболочки. -# было Везде, но из-за условия совместимости изменено.... как тогда быть? -msgid "All" -msgstr "Все" - msgid "By type" msgstr "Тип материала" @@ -9260,6 +9361,14 @@ msgstr "Загрузить сетевой плагин" msgid "Associate files to OrcaSlicer" msgstr "Открытие файлов по умолчанию" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Открывать файлы 3MF в OrcaSlicer" @@ -10124,6 +10233,9 @@ msgstr "" "Превышено время ожидания отправки файла. Убедитесь, что прошивка " "поддерживает эту функцию, и что принтер работает нормально." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Нарезка завершена." @@ -10584,6 +10696,9 @@ msgstr "" msgid "Travel speed" msgstr "Ограничение скорости холостых перемещений" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Рывок (XY)" @@ -11494,9 +11609,6 @@ msgstr "" "принтера. Неиспользуемые филаменты принтера будут автоматически добавлены в " "конец списка." -msgid "Advanced settings" -msgstr "Расширенные настройки" - msgid "Add unused AMS filaments to filaments list." msgstr "Добавить незадействованные материалы из AMS в список" @@ -11994,12 +12106,23 @@ msgstr "Доступен новый сетевой плагин (%s). Хотит msgid "New version of Orca Slicer" msgstr "Доступна новая версия Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "Открыть на GitHub" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Пропустить эту версию" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Подтвердить и обновить сопло" @@ -12120,6 +12243,9 @@ msgstr "Модуль обрезки" msgid "Auto Fire Extinguishing System" msgstr "Автоматическая система пожаротушения" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Обновить прошивку" @@ -13360,7 +13486,7 @@ msgid "External bridge density" msgstr "Плотность внешних мостов" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13374,18 +13500,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Плотность внутренних мостов" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13420,11 +13542,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15769,9 +15889,6 @@ msgstr "" msgid "Default jerk." msgstr "Рывок по умолчанию." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -22311,9 +22428,6 @@ msgstr "Профиль принтера" msgid "Filament Preset Template" msgstr "Шаблон профиля материала" -msgid "Deselect All" -msgstr "Снять выбор со всего" - msgid "Process Preset Template" msgstr "Шаблон профиля настроек" @@ -22824,9 +22938,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Несоответствующий тип хоста печати: %s" @@ -23625,6 +23751,105 @@ msgstr "Не удалось подключиться к Flashforge через п msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Указано неверное состояние." @@ -23679,6 +23904,12 @@ msgstr "Кайма «мышиные уши»" msgid "Please select single object." msgstr "Пожалуйста, выберите один объект." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Отдалить" @@ -23689,6 +23920,9 @@ msgid "Load skipping objects information failed. Please try again." msgstr "" "Не удалось загрузить информацию о пропуске объектов, попробуйте ещё раз." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "из %d выбрано" @@ -23843,6 +24077,100 @@ msgstr "Количество треугольников" msgid "Calculating, please wait..." msgstr "Расчёт, подождите..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index fb3865d31c..d5916dbd45 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -188,6 +188,15 @@ msgstr "Klar" msgid "Support Generated" msgstr "Support skapad" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Place on Face" @@ -276,6 +285,15 @@ msgstr "Färgläggning använder: Filament %1%" msgid "To:" msgstr "Till:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Paint-on fuzzy skin" @@ -296,6 +314,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Flytta" @@ -683,6 +710,15 @@ msgstr "Cut by line" msgid "Delete connector" msgstr "Delete connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Mesh namn" @@ -1548,6 +1584,12 @@ msgstr "Parallel distance:" msgid "Flip by Face 2" msgstr "Flip by Face 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Montera" @@ -1584,6 +1626,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl +" @@ -1862,6 +1910,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3150,6 +3212,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Allt" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Avmarkera alla" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3428,6 +3529,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8575,9 +8679,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Allt" - msgid "By type" msgstr "By type" @@ -8949,6 +9050,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Associerade filer till Orca Slicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Associerade 3MF filer till Orca Slicer" @@ -9791,6 +9900,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Beredning klar." @@ -10242,6 +10354,9 @@ msgstr "Set speed for external and internal bridges" msgid "Travel speed" msgstr "Förflyttnings hastighet" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Jerk(XY)" @@ -11118,9 +11233,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11619,12 +11731,23 @@ msgstr "En ny nätverksplugin (%s) är tillgänglig. Vill du installera den?" msgid "New version of Orca Slicer" msgstr "Ny version av Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Hoppa över denna version" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Bekräfta och uppdatera nozzeln" @@ -11738,6 +11861,9 @@ msgstr "Cutting Module" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Uppdatera programvara" @@ -12943,7 +13069,7 @@ msgid "External bridge density" msgstr "External bridge density" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12957,18 +13083,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Internal bridge density" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13003,11 +13125,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15198,9 +15318,6 @@ msgstr "" msgid "Default jerk." msgstr "Default jerk." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21290,9 +21407,6 @@ msgstr "Printer inställningar" msgid "Filament Preset Template" msgstr "Filament inställnings mall" -msgid "Deselect All" -msgstr "Avmarkera alla" - msgid "Process Preset Template" msgstr "Mall för process inställning" @@ -21797,9 +21911,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Felaktig typ av utskriftsvärd: %s" @@ -22588,6 +22714,105 @@ msgstr "Could not connect to Flashforge via serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "The provided state is not correct." @@ -22641,6 +22866,12 @@ msgstr "Brätte Öron" msgid "Please select single object." msgstr "Please select single object." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22650,6 +22881,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22801,6 +23035,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index f62f44cfe3..2432eaf787 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-06-04 12:39+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -193,6 +193,15 @@ msgstr "เสร็จแล้ว" msgid "Support Generated" msgstr "สร้างส่วนรองรับแล้ว" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Place บนหน้า" @@ -280,6 +289,15 @@ msgstr "ทาสีโดยใช้: เส้นพลาสติก %1%" msgid "To:" msgstr "ถึง:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "ระบายผิวฟัซซี" @@ -299,6 +317,15 @@ msgstr "คำเตือน: ผิวฟัซซีถูกปิดใช msgid "Enable painted fuzzy skin for this object" msgstr "เปิดใช้งานสกินฟัซซี่ที่ทาสีแล้วสำหรับวัตถุนี้" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "ย้าย" @@ -684,6 +711,15 @@ msgstr "ตัดด้วยเส้น" msgid "Delete connector" msgstr "ลบตัวเชื่อมต่อ" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "ชื่อเมช" @@ -1544,6 +1580,12 @@ msgstr "ระยะทางขนาน:" msgid "Flip by Face 2" msgstr "พลิกตามผิวหน้า 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "ประกอบ" @@ -1580,6 +1622,12 @@ msgstr "" msgid "Face and face assembly" msgstr "การประกอบผิวหน้าและผิวหน้า" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1853,6 +1901,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3114,6 +3176,45 @@ msgstr "อุณหภูมิสูงสุดต้องไม่เกิ msgid "The minmum temperature should not be less than " msgstr "อุณหภูมิต่ำสุดไม่ควรต่ำกว่า" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "ทั้งหมด" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "ยกเลิกการเลือกทั้งหมด" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "การตั้งค่าขั้นสูง" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3372,6 +3473,9 @@ msgstr "แบบอักษรไม่มีรูปร่างสำหร msgid "There is no valid surface for text projection." msgstr "ไม่มีพื้นผิวที่ถูกต้องสำหรับการฉายข้อความ" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "การปรับสภาพล่วงหน้าด้วยความร้อนเพื่อการเพิ่มประสิทธิภาพชั้นแรก" @@ -8379,9 +8483,6 @@ msgstr "การตั้งค่าเส้นพลาสติกผู้ msgid "Group user filament presets based on selection" msgstr "ตั้งค่าเส้นพลาสติกผู้ใช้แบบกลุ่มตามการเลือก" -msgid "All" -msgstr "ทั้งหมด" - msgid "By type" msgstr "ตามประเภท" @@ -8755,6 +8856,14 @@ msgstr "ดาวน์โหลดปลั๊กอินเครือข่ msgid "Associate files to OrcaSlicer" msgstr "เชื่อมโยงไฟล์กับ OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "เชื่อมโยงไฟล์ 3MF กับ OrcaSlicer" @@ -9562,6 +9671,9 @@ msgstr "" "การอัปโหลดไฟล์หมดเวลา โปรดตรวจสอบว่าเวอร์ชันเฟิร์มแวร์รองรับการทำงานนี้หรือไม่ " "หรือตรวจสอบว่าเครื่องพิมพ์ทำงานอย่างถูกต้องหรือไม่" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "ชิ้นตกลง" @@ -10000,6 +10112,9 @@ msgstr "ตั้งค่าความเร็วสำหรับบริ msgid "Travel speed" msgstr "ความเร็วเดินหัวเปล่า" +msgid "Junction Deviation" +msgstr "ส่วนเบี่ยงเบนทางแยก" + msgid "Jerk(XY)" msgstr "กระตุก(XY)" @@ -10864,9 +10979,6 @@ msgstr "" "แทนที่รายการเส้นพลาสติกของโครงการตามลำดับตามเส้นพลาสติกของเครื่องพิมพ์ " "และเส้นพลาสติกเครื่องพิมพ์ที่ไม่ได้ใช้จะถูกเพิ่มเข้าที่ส่วนท้ายของรายการโดยอัตโนมัติ" -msgid "Advanced settings" -msgstr "การตั้งค่าขั้นสูง" - msgid "Add unused AMS filaments to filaments list." msgstr "เพิ่มเส้นพลาสติก AMS ที่ไม่ได้ใช้ลงในรายการเส้นพลาสติก" @@ -11356,12 +11468,23 @@ msgstr "มีปลั๊กอินเครือข่ายใหม่ (% msgid "New version of Orca Slicer" msgstr "Orca Slicer เวอร์ชันใหม่" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "ตรวจสอบบน Github" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "ข้ามเวอร์ชันนี้" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "ยืนยันและอัปเดตหัวฉีด" @@ -11469,6 +11592,9 @@ msgstr "โมดูลการตัด" msgid "Auto Fire Extinguishing System" msgstr "ระบบดับเพลิงอัตโนมัติ" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "อัพเดตเฟิร์มแวร์" @@ -12598,7 +12724,7 @@ msgid "External bridge density" msgstr "ความหนาแน่นของสะพานภายนอก" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12612,18 +12738,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "ความหนาแน่นสะพานภายใน" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12658,11 +12780,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14751,9 +14871,6 @@ msgstr "max_accel_to_decel ของ Klipper จะถูกปรับเป msgid "Default jerk." msgstr "กระตุกเริ่มต้น" -msgid "Junction Deviation" -msgstr "ส่วนเบี่ยงเบนทางแยก" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20606,9 +20723,6 @@ msgstr "พรีเซ็ตเครื่องพิมพ์" msgid "Filament Preset Template" msgstr "เทมเพลตที่ตั้งไว้ล่วงหน้าของเส้นพลาสติก" -msgid "Deselect All" -msgstr "ยกเลิกการเลือกทั้งหมด" - msgid "Process Preset Template" msgstr "ประมวลผลเทมเพลตที่กำหนดไว้ล่วงหน้า" @@ -21086,9 +21200,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "ประเภทของโฮสต์การพิมพ์ไม่ตรงกัน: %s" @@ -21834,6 +21960,105 @@ msgstr "ไม่สามารถเชื่อมต่อกับ Flashfor msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "สถานะที่ระบุไม่ถูกต้อง" @@ -21884,6 +22109,12 @@ msgstr "หู ขอบยึดชิ้นงาน" msgid "Please select single object." msgstr "กรุณาเลือกวัตถุเดียว" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "ซูมออก" @@ -21893,6 +22124,9 @@ msgstr "ซูมเข้า" msgid "Load skipping objects information failed. Please try again." msgstr "โหลดข้อมูลวัตถุที่ข้ามล้มเหลว โปรดลองอีกครั้ง" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d เลือกแล้ว" @@ -22041,6 +22275,100 @@ msgstr "จำนวนด้านสามเหลี่ยม" msgid "Calculating, please wait..." msgstr "กำลังคำนวณ โปรดรอสักครู่..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 06569dcf54..eec799358a 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2026-04-08 23:59+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -197,6 +197,15 @@ msgstr "Tamamlandı" msgid "Support Generated" msgstr "Destek Oluşturuldu" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-Yüzeye yerleştir" @@ -284,6 +293,15 @@ msgstr "Şunlar kullanılarak boyanmıştır: Filament %1%" msgid "To:" msgstr "İle:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Pütürlü yüzey boyama" @@ -305,6 +323,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Bu nesne için boyalı pütürlü yüzeyi etkinleştir" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Taşı" @@ -694,6 +721,15 @@ msgstr "Satıra göre kes" msgid "Delete connector" msgstr "Bağlayıcıyı sil" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Mesh adı" @@ -1567,6 +1603,12 @@ msgstr "Paralel mesafe:" msgid "Flip by Face 2" msgstr "Yüzey 2’ye Göre Çevir" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Birleştir" @@ -1604,6 +1646,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Yüz ve yüz montajı" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1883,6 +1931,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3160,6 +3222,45 @@ msgstr "Maksimum sıcaklık aşılamaz" msgid "The minmum temperature should not be less than " msgstr "Minimum sıcaklık," +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tümü" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Hiçbirini seçme" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Gelişmiş ayarlar" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3441,6 +3542,9 @@ msgstr "Yazı tipinin verilen metin için herhangi bir şekli yoktur." msgid "There is no valid surface for text projection." msgstr "Metin yansıtma için geçerli bir yüzey yoktur." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "İlk katman optimizasyonu için Termal Ön Şartlandırma" @@ -8606,9 +8710,6 @@ msgstr "Grup kullanıcı filament ön ayarları" msgid "Group user filament presets based on selection" msgstr "Kullanıcı filament ön ayarlarını seçime göre gruplandırın" -msgid "All" -msgstr "Tümü" - msgid "By type" msgstr "Türe göre" @@ -8987,6 +9088,14 @@ msgstr "Ağ Eklentisini İndirin" msgid "Associate files to OrcaSlicer" msgstr "Dosyaları OrcaSlicer ile ilişkilendirin" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr ".3mf dosyalarını OrcaSlicer ile ilişkilendirin" @@ -9850,6 +9959,9 @@ msgstr "" "destekleyip desteklemediğini kontrol edin veya yazıcının düzgün çalışıp " "çalışmadığını kontrol edin." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Dilimleme tamam." @@ -10306,6 +10418,9 @@ msgstr "Harici ve dahili köprüler için hızı ayarlayın" msgid "Travel speed" msgstr "Seyahat Hızı" +msgid "Junction Deviation" +msgstr "Köşe sapması" + msgid "Jerk(XY)" msgstr "Sarsıntı(XY)" @@ -11179,9 +11294,6 @@ msgstr "" "Kullanılmayan yazıcı filamentleri ise otomatik olarak listenin sonuna " "eklenecektir." -msgid "Advanced settings" -msgstr "Gelişmiş ayarlar" - msgid "Add unused AMS filaments to filaments list." msgstr "Kullanılmayan AMS filamentlerini filament listesine ekleyin." @@ -11682,12 +11794,23 @@ msgstr "Yeni bir Ağ eklentisi(%s) mevcut, Yüklemek istiyor musunuz?" msgid "New version of Orca Slicer" msgstr "Orca Slicer’ın yeni versiyonu" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Bu versiyonu atla" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Nozulu Onaylayın ve Güncelleyin" @@ -11802,6 +11925,9 @@ msgstr "Kesim Modülü" msgid "Auto Fire Extinguishing System" msgstr "Otomatik Yangın Söndürme Sistemi" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Ürün yazılımını güncelle" @@ -13025,7 +13151,7 @@ msgid "External bridge density" msgstr "Dış köprü yoğunluğu" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -13039,18 +13165,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "İç köprü yoğunluğu" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -13085,11 +13207,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15281,9 +15401,6 @@ msgstr "" msgid "Default jerk." msgstr "Varsayılan sarsıntı." -msgid "Junction Deviation" -msgstr "Köşe sapması" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21414,9 +21531,6 @@ msgstr "Yazıcı Ön Ayarı" msgid "Filament Preset Template" msgstr "Filament Ön Ayar Şablonu" -msgid "Deselect All" -msgstr "Hiçbirini seçme" - msgid "Process Preset Template" msgstr "İşleme Ön Ayarı Şablonu" @@ -21930,9 +22044,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Eşleşmeyen yazdırma ana bilgisayarı türü: %s" @@ -22750,6 +22876,105 @@ msgstr "Flashforge'a seri bağlantı yoluyla bağlanılamadı" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Sağlanan durum doğru değil." @@ -22803,6 +23028,12 @@ msgstr "Kenar kulakları" msgid "Please select single object." msgstr "Lütfen tek bir nesne seçin." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Uzaklaştır" @@ -22812,6 +23043,9 @@ msgstr "Yakınlaştır" msgid "Load skipping objects information failed. Please try again." msgstr "Nesne bilgilerinin atlanması yüklenemedi. Lütfen tekrar deneyin." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Seçildi" @@ -22963,6 +23197,100 @@ msgstr "Üçgen yüzeylerin sayısı" msgid "Calculating, please wait..." msgstr "Hesaplanıyor, lütfen bekleyin..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index c70cb3a0ea..7479c80d2f 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-03-07 09:30+0200\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" @@ -194,6 +194,15 @@ msgstr "Виконано" msgid "Support Generated" msgstr "Згенеровані підтримки" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo - Покласти на грань" @@ -282,6 +291,15 @@ msgstr "Забарвлений за допомогою: Філамент %1%" msgid "To:" msgstr "До:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Нанесення текстури" @@ -301,6 +319,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Перемістити" @@ -695,6 +722,15 @@ msgstr "Розрізати по лінії" msgid "Delete connector" msgstr "Видалити з'єднувач" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Назва сітки" @@ -1568,6 +1604,12 @@ msgstr "Паралельна відстань:" msgid "Flip by Face 2" msgstr "Перевернути за Гранню 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Об'єднати у збірку" @@ -1606,6 +1648,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Збірка грань до грані" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1884,6 +1932,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3147,6 +3209,45 @@ msgstr "" msgid "The minmum temperature should not be less than " msgstr "" +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Всі" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Скасувати вибір всіх" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3416,6 +3517,9 @@ msgstr "Шрифт не має жодної форми для вказаного msgid "There is no valid surface for text projection." msgstr "Немає дійсної поверхні для проекції тексту." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "" @@ -8461,9 +8565,6 @@ msgstr "" msgid "Group user filament presets based on selection" msgstr "" -msgid "All" -msgstr "Всі" - msgid "By type" msgstr "" @@ -8814,6 +8915,14 @@ msgstr "" msgid "Associate files to OrcaSlicer" msgstr "Асоціювати файли з OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + #, fuzzy msgid "Associate 3MF files to OrcaSlicer" msgstr "Асоціювати файли .3mf з OrcaSlicer" @@ -9607,6 +9716,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Нарізка прибл." @@ -10042,6 +10154,9 @@ msgstr "Встановіть швидкість для зовнішніх та msgid "Travel speed" msgstr "Швидкість переміщення" +msgid "Junction Deviation" +msgstr "" + msgid "Jerk(XY)" msgstr "Ривок (XY)" @@ -10906,9 +11021,6 @@ msgid "" "list." msgstr "" -msgid "Advanced settings" -msgstr "" - msgid "Add unused AMS filaments to filaments list." msgstr "" @@ -11395,12 +11507,23 @@ msgstr "Доступний новий мережевий плагін (%s), чи msgid "New version of Orca Slicer" msgstr "Нова версія Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Пропустити цю версію" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Підтвердити і оновити сопло" @@ -11507,6 +11630,9 @@ msgstr "" msgid "Auto Fire Extinguishing System" msgstr "" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Оновити прошивку" @@ -12704,7 +12830,7 @@ msgid "External bridge density" msgstr "Щільність зовнішніх мостів" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12718,18 +12844,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Щільність внутрішніх мостів" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12764,11 +12886,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14910,9 +15030,6 @@ msgstr "Klipper-ів max_accel_to_decel буде скориговано на ц msgid "Default jerk." msgstr "" -msgid "Junction Deviation" -msgstr "" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20850,9 +20967,6 @@ msgstr "Набір параметрів принтера" msgid "Filament Preset Template" msgstr "Шаблон набору параметрів філаменту" -msgid "Deselect All" -msgstr "Скасувати вибір всіх" - msgid "Process Preset Template" msgstr "Шаблон набору параметрів процесу" @@ -21350,9 +21464,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Невідповідність типу принт-сервера: %s" @@ -22130,6 +22256,105 @@ msgstr "" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Наданий стан невірний." @@ -22182,6 +22407,12 @@ msgstr "Краєчки" msgid "Please select single object." msgstr "Будь ласка, виберіть один об’єкт." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Зменшити" @@ -22191,6 +22422,9 @@ msgstr "Збільшити" msgid "Load skipping objects information failed. Please try again." msgstr "" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "" @@ -22337,6 +22571,100 @@ msgstr "Кількість трикутних граней" msgid "Calculating, please wait..." msgstr "Розрахунок, будь ласка, зачекайте…" +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 28568c1ece..4cb2269bb1 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -192,6 +192,15 @@ msgstr "Hoàn thành" msgid "Support Generated" msgstr "Đã tạo support" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo - Đặt lên mặt" @@ -279,6 +288,15 @@ msgstr "Vẽ bằng: Filament %1%" msgid "To:" msgstr "To:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "Tô fuzzy skin" @@ -299,6 +317,15 @@ msgstr "" msgid "Enable painted fuzzy skin for this object" msgstr "Enable painted fuzzy skin for this object" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "Di chuyển" @@ -685,6 +712,15 @@ msgstr "Cắt bằng đường" msgid "Delete connector" msgstr "Xóa connector" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "Tên mesh" @@ -1547,6 +1583,12 @@ msgstr "Khoảng cách song song:" msgid "Flip by Face 2" msgstr "Lật theo mặt 2" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "Lắp ráp" @@ -1583,6 +1625,12 @@ msgstr "" msgid "Face and face assembly" msgstr "Face and face assembly" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1859,6 +1907,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3133,6 +3195,45 @@ msgstr "The maximum temperature cannot exceed " msgid "The minmum temperature should not be less than " msgstr "The minmum temperature should not be less than " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "Tất cả" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "Bỏ chọn tất cả" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "Advanced settings" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3403,6 +3504,9 @@ msgstr "Font doesn't have any shape for given text." msgid "There is no valid surface for text projection." msgstr "There is no valid surface for text projection." +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "Thermal Preconditioning for first layer optimization" @@ -8521,9 +8625,6 @@ msgstr "Group user filament presets" msgid "Group user filament presets based on selection" msgstr "Group user filament presets based on selection" -msgid "All" -msgstr "Tất cả" - msgid "By type" msgstr "By type" @@ -8894,6 +8995,14 @@ msgstr "Download Network Plug-in" msgid "Associate files to OrcaSlicer" msgstr "Liên kết file với OrcaSlicer" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "Liên kết file 3MF với OrcaSlicer" @@ -9723,6 +9832,9 @@ msgstr "" "File upload timed out. Please check if the firmware version supports this " "operation or verify if the printer is functioning properly." +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "Slice hoàn tất." @@ -10168,6 +10280,9 @@ msgstr "Đặt tốc độ cho cầu bên ngoài và bên trong" msgid "Travel speed" msgstr "Tốc độ di chuyển" +msgid "Junction Deviation" +msgstr "Junction Deviation" + msgid "Jerk(XY)" msgstr "Giật(XY)" @@ -11030,9 +11145,6 @@ msgstr "" "And unused printer filaments will be automatically added to the end of the " "list." -msgid "Advanced settings" -msgstr "Advanced settings" - msgid "Add unused AMS filaments to filaments list." msgstr "Add unused AMS filaments to filaments list." @@ -11528,12 +11640,23 @@ msgstr "Có plug-in mạng mới (%s). Bạn có muốn cài đặt nó?" msgid "New version of Orca Slicer" msgstr "Phiên bản mới của Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "Bỏ qua phiên bản này" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "Xác nhận và cập nhật đầu phun" @@ -11647,6 +11770,9 @@ msgstr "Module cắt" msgid "Auto Fire Extinguishing System" msgstr "Auto Fire Extinguishing System" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "Cập nhật firmware" @@ -12839,7 +12965,7 @@ msgid "External bridge density" msgstr "Mật độ cầu bên ngoài" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12853,18 +12979,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "Mật độ cầu bên trong" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12899,11 +13021,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -15055,9 +15175,6 @@ msgstr "" msgid "Default jerk." msgstr "Giật mặc định." -msgid "Junction Deviation" -msgstr "Junction Deviation" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -21072,9 +21189,6 @@ msgstr "Cài đặt sẵn máy in" msgid "Filament Preset Template" msgstr "Mẫu cài đặt sẵn filament" -msgid "Deselect All" -msgstr "Bỏ chọn tất cả" - msgid "Process Preset Template" msgstr "Mẫu cài đặt sẵn quy trình" @@ -21574,9 +21688,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "Loại máy chủ in không khớp: %s" @@ -22365,6 +22491,105 @@ msgstr "Không thể kết nối với Flashforge qua serial" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "Trạng thái được cung cấp không chính xác." @@ -22418,6 +22643,12 @@ msgstr "Tai vành" msgid "Please select single object." msgstr "Vui lòng chọn một đối tượng duy nhất." +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "Zoom Out" @@ -22427,6 +22658,9 @@ msgstr "Zoom In" msgid "Load skipping objects information failed. Please try again." msgstr "Load skipping objects information failed. Please try again." +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d Selected" @@ -22578,6 +22812,100 @@ msgstr "Number of triangular facets" msgid "Calculating, please wait..." msgstr "Calculating, please wait..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index bbf3c65ad9..6367948cab 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" -"PO-Revision-Date: 2026-02-28 00:59\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" +"PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" "Language: zh_CN\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: OrcaSlicer Translation Helper\n" +"X-Generator: Poedit 3.9\n" msgid "right" msgstr "右" @@ -186,6 +186,15 @@ msgstr "完成" msgid "Support Generated" msgstr "已生成支撑" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "选择底面" @@ -272,6 +281,15 @@ msgstr "绘制使用:耗材丝%1%" msgid "To:" msgstr "到:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "手绘绒毛表面" @@ -291,6 +309,15 @@ msgstr "警告:绒毛表面已禁用,手绘的绒毛表面将不会生效! msgid "Enable painted fuzzy skin for this object" msgstr "为此对象启用手绘绒毛表面" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移动" @@ -676,6 +703,15 @@ msgstr "按线切割" msgid "Delete connector" msgstr "删除连接器" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "网格名称" @@ -1529,6 +1565,12 @@ msgstr "平行距离:" msgid "Flip by Face 2" msgstr "通过面2翻转" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "组合" @@ -1565,6 +1607,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面对面装配" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1836,6 +1884,20 @@ msgstr "" "云同步冲突:OrcaCloud 中已存在同名预设。\n" "拉取将下载云端副本。强制推送将用您的本地预设覆盖它。" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3081,6 +3143,45 @@ msgstr "最高温度不可超过 " msgid "The minmum temperature should not be less than " msgstr "最低温度不可低于 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "所有" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "全部取消选中" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "高级设置" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3329,6 +3430,9 @@ msgstr "字体没有给定文本对应的形状。" msgid "There is no valid surface for text projection." msgstr "没有有效的表面用于文字投影。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "用于第一层优化的热预处理" @@ -8232,9 +8336,6 @@ msgstr "组用户耗材丝预设" msgid "Group user filament presets based on selection" msgstr "根据选择对用户耗材丝预设进行分组" -msgid "All" -msgstr "所有" - msgid "By type" msgstr "按类型" @@ -8601,6 +8702,14 @@ msgstr "下载网络插件" msgid "Associate files to OrcaSlicer" msgstr "逆戟鲸切片器文件关联" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "将 3MF 文件关联到 OrcaSlicer" @@ -9397,6 +9506,9 @@ msgid "" "operation or verify if the printer is functioning properly." msgstr "文件上传超时。请检查固件版本是否支持此操作或验证打印机是否正常工作。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "切片完成." @@ -9809,6 +9921,9 @@ msgstr "设置外部和内部桥接的速度" msgid "Travel speed" msgstr "空驶速度" +msgid "Junction Deviation" +msgstr "结点偏差" + msgid "Jerk(XY)" msgstr "抖动(XY轴)" @@ -10660,9 +10775,6 @@ msgid "" msgstr "" "根据打印机耗材顺序替换项目耗材列表。未使用的打印机耗材将自动添加到列表末尾。" -msgid "Advanced settings" -msgstr "高级设置" - msgid "Add unused AMS filaments to filaments list." msgstr "将未使用的 AMS 耗材丝添加到耗材丝列表中。" @@ -11145,12 +11257,23 @@ msgstr "新的网络插件(%s) 可用,您是否需要安装它?" msgid "New version of Orca Slicer" msgstr "新版本的Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "在 Github 上查看" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "跳过本版本" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "确认并更新喷嘴" @@ -11256,6 +11379,9 @@ msgstr "切割模块" msgid "Auto Fire Extinguishing System" msgstr "自动灭火系统" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "更新固件" @@ -12358,8 +12484,9 @@ msgstr "启用后,桥接角度值将被加到自动计算出的桥接方向上 msgid "External bridge density" msgstr "外部桥接密度" +#, fuzzy msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12373,9 +12500,7 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" "控制外部桥接线的密度(间距)。默认值为 100%。\n" "理论上 100% 意味着实心桥接,但由于桥接挤出物容易下垂,100% 可能并不足够。\n" @@ -12387,17 +12512,14 @@ msgstr "" "- 低于 100% 的密度(最小 10%):\n" " - 优点:可形成类似拉丝的第一层。速度更快、冷却更好,因为挤出桥接周围有更多" "空气流通的空间。\n" -" - 缺点:可能导致下垂和较差的表面光洁度。\n" -"\n" -"推荐范围:最小 10% - 最大 125%。" +" - 缺点:可能导致下垂和较差的表面光洁度。" msgid "Internal bridge density" msgstr "内部桥接密度" +#, fuzzy msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12454,18 +12576,15 @@ msgstr "" "实际使用的桥接流量是将此值乘以耗材流量比,以及(如已设置)对象的流量比计算得" "出的。" -#, fuzzy, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width." msgstr "" -"桥接线宽可以表示为绝对值,或当前喷嘴直径的百分比(百分比根据喷嘴直径计" -"算)。\n" +"桥接线的线宽。如果以百分比表示,将根据喷嘴直径计算。\n" "建议与较高的桥接密度或桥接流量比配合使用。\n" "\n" "最大值为 100% 或喷嘴直径。\n" @@ -14482,9 +14601,6 @@ msgstr "Klipper固件的max_accel_to_decel将被调整为该加速度的百分 msgid "Default jerk." msgstr "默认抖动" -msgid "Junction Deviation" -msgstr "结点偏差" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -20165,9 +20281,6 @@ msgstr "打印机预设" msgid "Filament Preset Template" msgstr "耗材预设模板" -msgid "Deselect All" -msgstr "全部取消选中" - msgid "Process Preset Template" msgstr "工艺预设模板" @@ -20628,9 +20741,21 @@ msgstr "未找到打印机类型,请手动选择。" msgid "Authorizing..." msgstr "正在授权..." +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "会话检查出错" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "%s 打印机的主机类型不匹配" @@ -21357,6 +21482,105 @@ msgstr "无法通过串口连接Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "Flashforge 本地 API 同时需要序列号和访问码。" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "提供的状态不正确。" @@ -21407,6 +21631,12 @@ msgstr "耳状帽檐" msgid "Please select single object." msgstr "请选中单个对象。" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "缩小" @@ -21416,6 +21646,9 @@ msgstr "放大" msgid "Load skipping objects information failed. Please try again." msgstr "加载跳过对象信息失败。请再试一次。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 已选择" @@ -21561,6 +21794,100 @@ msgstr "三角面片数量" msgid "Calculating, please wait..." msgstr "正在计算,请稍候..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." @@ -21938,6 +22265,97 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "" +#~ "Controls the density (spacing) of external bridge lines. Default is " +#~ "100%.\n" +#~ "Theoretically, 100% means a solid bridge, but due to the tendency of " +#~ "bridge extrusions to sag, 100% may not be sufficient.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Produces smoother bridge surfaces, as overlapping lines provide " +#~ "additional support during printing.\n" +#~ " - Cons: Can cause overextrusion, which may reduce lower and upper " +#~ "surface quality and increase the risk of warping.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can create a string-like first layer. Faster and with better " +#~ "cooling because there is more space for air to circulate around the " +#~ "extruded bridge.\n" +#~ " - Cons: May lead to sagging and poorer surface finish.\n" +#~ "\n" +#~ "Recommended range: Minimum 10% - Maximum 125%." +#~ msgstr "" +#~ "控制外部桥接线的密度(间距)。默认值为 100%。\n" +#~ "理论上 100% 意味着实心桥接,但由于桥接挤出物容易下垂,100% 可能并不足" +#~ "够。\n" +#~ "\n" +#~ "- 高于 100% 的密度(推荐最大 125%):\n" +#~ " - 优点:产生更平滑的桥接表面,因为重叠的线在打印过程中提供额外支撑。\n" +#~ " - 缺点:可能导致过度挤出,从而降低上下表面质量并增加翘曲风险。\n" +#~ "\n" +#~ "- 低于 100% 的密度(最小 10%):\n" +#~ " - 优点:可形成类似拉丝的第一层。速度更快、冷却更好,因为挤出桥接周围有更" +#~ "多空气流通的空间。\n" +#~ " - 缺点:可能导致下垂和较差的表面光洁度。\n" +#~ "\n" +#~ "推荐范围:最小 10% - 最大 125%。" + +#~ msgid "" +#~ "Controls the density (spacing) of internal bridge lines. Default is 100%. " +#~ "100% means a solid internal bridge.\n" +#~ "\n" +#~ "Internal bridges act as intermediate support between sparse infill and " +#~ "top solid infill and can strongly affect top surface quality.\n" +#~ "\n" +#~ "- Higher than 100% density (Recommended Max 125%):\n" +#~ " - Pros: Improves internal bridge strength and support under top layers, " +#~ "reducing sagging and improving top-surface finish.\n" +#~ " - Cons: Increases material use and print time; excessive density may " +#~ "cause overextrusion and internal stresses.\n" +#~ "\n" +#~ "- Lower than 100% density (Min 10%):\n" +#~ " - Pros: Can reduce pillowing and improve cooling (more airflow through " +#~ "the bridge), and may speed up printing.\n" +#~ " - Cons: May reduce internal support, increasing the risk of sagging and " +#~ "top surface defects.\n" +#~ "\n" +#~ "This option works particularly well when combined with the second " +#~ "internal bridge over infill option to improve bridging further before " +#~ "solid infill is extruded." +#~ msgstr "" +#~ "控制内部桥接线的密度(间距)。默认值为 100%。100% 表示实心内部桥接。\n" +#~ "\n" +#~ "内部桥接作为稀疏填充与顶部实心填充之间的过渡支撑,会强烈影响顶面质量。\n" +#~ "\n" +#~ "- 高于 100% 的密度(推荐最大 125%):\n" +#~ " - 优点:提升内部桥接强度以及对顶层的支撑,减少下垂并改善顶面光洁度。\n" +#~ " - 缺点:增加材料用量和打印时间;密度过高可能导致过度挤出和内部应力。\n" +#~ "\n" +#~ "- 低于 100% 的密度(最小 10%):\n" +#~ " - 优点:可减少表面起鼓并改善冷却(更多气流通过桥接),还可能加快打印速" +#~ "度。\n" +#~ " - 缺点:可能降低内部支撑,增加下垂和顶面缺陷的风险。\n" +#~ "\n" +#~ "此选项与“在填充上方增加第二层内部桥接”选项结合使用时效果尤佳,可在挤出实心" +#~ "填充之前进一步改善桥接。" + +#, fuzzy, c-format, boost-format +#~ msgid "" +#~ "Bridge line width is expressed either as an absolute value or as a " +#~ "percentage of the active nozzle diameter (percentages are computed from " +#~ "the nozzle diameter).\n" +#~ "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" +#~ "\n" +#~ "The maximum value is 100% or the nozzle diameter.\n" +#~ "If set to 0, the line width will match the Internal solid infill width." +#~ msgstr "" +#~ "桥接线宽可以表示为绝对值,或当前喷嘴直径的百分比(百分比根据喷嘴直径计" +#~ "算)。\n" +#~ "建议与较高的桥接密度或桥接流量比配合使用。\n" +#~ "\n" +#~ "最大值为 100% 或喷嘴直径。\n" +#~ "如果设置为 0,线宽将与内部实心填充宽度一致。" + #~ msgid "" #~ "The Wipe option is not available when using the Firmware Retraction " #~ "mode.\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 5f3c60c7e9..f1df580f3f 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-06-08 00:18+0800\n" +"POT-Creation-Date: 2026-06-11 17:12-0300\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -191,6 +191,15 @@ msgstr "完成" msgid "Support Generated" msgstr "已產生支撐" +msgid "Entering Paint-on supports" +msgstr "" + +msgid "Leaving Paint-on supports" +msgstr "" + +msgid "Paint-on supports editing" +msgstr "" + msgid "Gizmo-Place on Face" msgstr "Gizmo-放置在臉上" @@ -276,6 +285,15 @@ msgstr "上色:線材 %1%" msgid "To:" msgstr "到:" +msgid "Entering color painting" +msgstr "" + +msgid "Leaving color painting" +msgstr "" + +msgid "Color painting editing" +msgstr "" + msgid "Paint-on fuzzy skin" msgstr "塗刷絨毛表面效果" @@ -295,6 +313,15 @@ msgstr "警告:絨毛表面功能已停用,繪製的絨毛表面效果將不 msgid "Enable painted fuzzy skin for this object" msgstr "為此物件啟用繪製的絨毛表面" +msgid "Entering Paint-on fuzzy skin" +msgstr "" + +msgid "Leaving Paint-on fuzzy skin" +msgstr "" + +msgid "Paint-on fuzzy skin editing" +msgstr "" + msgid "Move" msgstr "移動" @@ -680,6 +707,15 @@ msgstr "用線切割" msgid "Delete connector" msgstr "刪除連接件" +msgid "Entering Cut gizmo" +msgstr "" + +msgid "Leaving Cut gizmo" +msgstr "" + +msgid "Cut gizmo editing" +msgstr "" + msgid "Mesh name" msgstr "網格名稱" @@ -1532,6 +1568,12 @@ msgstr "平行距離:" msgid "Flip by Face 2" msgstr "通過面 2 翻轉" +msgid "Entering Measure gizmo" +msgstr "" + +msgid "Leaving Measure gizmo" +msgstr "" + msgid "Assemble" msgstr "組合" @@ -1568,6 +1610,12 @@ msgstr "" msgid "Face and face assembly" msgstr "面對面裝配" +msgid "Entering Assembly gizmo" +msgstr "" + +msgid "Leaving Assembly gizmo" +msgstr "" + msgid "Ctrl+" msgstr "Ctrl+" @@ -1838,6 +1886,20 @@ msgid "" "preset." msgstr "" +msgid "" +"Cloud sync conflict: a preset with the same name was previously deleted from " +"the cloud.\n" +"Delete will delete your local preset. Force push overwrites it with your " +"local preset." +msgstr "" + +msgid "" +"Cloud sync conflict: there was an unexpected or unidentified preset " +"conflict.\n" +"Pull downloads the cloud copy. Force push overwrites it with your local " +"preset." +msgstr "" + msgid "" "Force push will overwrite the cloud copy with your local preset changes.\n" "Do you want to continue?" @@ -3081,6 +3143,45 @@ msgstr "最高溫度不能超過 " msgid "The minmum temperature should not be less than " msgstr "最低溫度不應低於 " +msgid "Type to filter..." +msgstr "" + +msgid "All" +msgstr "所有" + +msgid "No selected items..." +msgstr "" + +msgid "All items selected..." +msgstr "" + +msgid "No matching items..." +msgstr "" + +msgid "Deselect All" +msgstr "取消全選" + +msgid "Select visible" +msgstr "" + +msgid "Deselect visible" +msgstr "" + +msgid "Filter selected" +msgstr "" + +msgid "Filter nonSelected" +msgstr "" + +msgid "Simple settings" +msgstr "" + +msgid "Advanced settings" +msgstr "進階設定" + +msgid "Expert settings" +msgstr "" + msgid "" "All the selected objects are on a locked plate.\n" "Cannot auto-arrange these objects." @@ -3334,6 +3435,9 @@ msgstr "字型沒有指定文字對應的形狀。" msgid "There is no valid surface for text projection." msgstr "沒有有效的表面用於文字投影。" +msgid "An unexpected error occurred" +msgstr "" + msgid "Thermal Preconditioning for first layer optimization" msgstr "首層優化的熱預調節" @@ -8285,9 +8389,6 @@ msgstr "將使用者線材預設分組" msgid "Group user filament presets based on selection" msgstr "根據選擇將使用者線材預設分組" -msgid "All" -msgstr "所有" - msgid "By type" msgstr "按類型" @@ -8640,6 +8741,14 @@ msgstr "下載網路外掛程式" msgid "Associate files to OrcaSlicer" msgstr "Orca Slicer 檔案關聯" +msgid "" +"File associations for the Microsoft Store version are managed by Windows " +"Settings." +msgstr "" + +msgid "Open Windows Default Apps Settings" +msgstr "" + msgid "Associate 3MF files to OrcaSlicer" msgstr "將 3MF 檔案關聯到 OrcaSlicer" @@ -9433,6 +9542,9 @@ msgid "" msgstr "" "檔案上傳逾時。請檢查韌體版本是否支援此操作,或確認列印設備是否正常運作。" +msgid "Sending failed, please try again!" +msgstr "" + msgid "Slice ok." msgstr "切片完成。" @@ -9852,6 +9964,9 @@ msgstr "設定外部和內部橋接的速度" msgid "Travel speed" msgstr "空駛速度" +msgid "Junction Deviation" +msgstr "轉折偏移值" + msgid "Jerk(XY)" msgstr "抖動(XY軸)" @@ -10684,9 +10799,6 @@ msgstr "" "根據列印設備線材依序替換專案線材清單。未使用的列印設備線材將自動新增至清單末" "端。" -msgid "Advanced settings" -msgstr "進階設定" - msgid "Add unused AMS filaments to filaments list." msgstr "將未使用的 AMS 線材新增至線材清單。" @@ -11165,12 +11277,23 @@ msgstr "新版的網路外掛程式(%s)可用,是否要安裝?" msgid "New version of Orca Slicer" msgstr "新版本的 Orca Slicer" +msgid "Check on Microsoft Store" +msgstr "" + msgid "Check on Github" msgstr "" +msgid "Open Microsoft Store" +msgstr "" + msgid "Skip this Version" msgstr "跳過這個版本" +#, c-format, boost-format +msgid "" +"New version available: %s. Please update OrcaSlicer from the Microsoft Store." +msgstr "" + msgid "Confirm and Update Nozzle" msgstr "確認並更新噴嘴" @@ -11276,6 +11399,9 @@ msgstr "切割模組" msgid "Auto Fire Extinguishing System" msgstr "自動滅火系統" +msgid "Beta" +msgstr "" + msgid "Update firmware" msgstr "更新韌體" @@ -12354,7 +12480,7 @@ msgid "External bridge density" msgstr "外部橋接密度" msgid "" -"Controls the density (spacing) of external bridge lines. Default is 100%.\n" +"Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge " "extrusions to sag, 100% may not be sufficient.\n" "\n" @@ -12368,18 +12494,14 @@ msgid "" " - Pros: Can create a string-like first layer. Faster and with better " "cooling because there is more space for air to circulate around the extruded " "bridge.\n" -" - Cons: May lead to sagging and poorer surface finish.\n" -"\n" -"Recommended range: Minimum 10% - Maximum 125%." +" - Cons: May lead to sagging and poorer surface finish." msgstr "" msgid "Internal bridge density" msgstr "內部橋接密度" msgid "" -"Controls the density (spacing) of internal bridge lines. Default is 100%. " -"100% means a solid internal bridge.\n" -"\n" +"Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top " "solid infill and can strongly affect top surface quality.\n" "\n" @@ -12414,11 +12536,9 @@ msgid "" "filament flow ratio, and if set, the object's flow ratio." msgstr "" -#, c-format, boost-format msgid "" -"Bridge line width is expressed either as an absolute value or as a " -"percentage of the active nozzle diameter (percentages are computed from the " -"nozzle diameter).\n" +"Line width of the Bridge. If expressed as a %, it will be computed over the " +"nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n" "\n" "The maximum value is 100% or the nozzle diameter.\n" @@ -14380,9 +14500,6 @@ msgstr "Klipper 的最大煞車速度將調整為加速度的 %%" msgid "Default jerk." msgstr "預設抖動" -msgid "Junction Deviation" -msgstr "轉折偏移值" - msgid "" "Marlin Firmware Junction Deviation (replaces the traditional XY Jerk " "setting)." @@ -19995,9 +20112,6 @@ msgstr "列印設備預設設定" msgid "Filament Preset Template" msgstr "線材預設設定範本" -msgid "Deselect All" -msgstr "取消全選" - msgid "Process Preset Template" msgstr "處理預設設定範本" @@ -20455,9 +20569,21 @@ msgstr "" msgid "Authorizing..." msgstr "" +msgid "Error. Can't get api token for authorization" +msgstr "" + +msgid "Could not parse server response." +msgstr "" + +msgid "Error saving session to file" +msgstr "" + msgid "Error session check" msgstr "" +msgid "Error during file upload" +msgstr "" + #, c-format, boost-format msgid "Mismatched type of print host: %s" msgstr "列印主機類型不符:%s" @@ -21184,6 +21310,105 @@ msgstr "無法透過串列埠連接 Flashforge" msgid "Flashforge local API requires both serial number and access code." msgstr "" +msgid "Printer returned an error" +msgstr "" + +msgid "Missing system_info in response" +msgstr "" + +msgid "Missing printer serial number in response" +msgstr "" + +msgid "Error parsing response" +msgstr "" + +msgid "ElegooLink not detected" +msgstr "" + +msgid "Invalid access code" +msgstr "" + +msgid "CC2 device not detected" +msgstr "" + +msgid "Connection to ElegooLink is working correctly." +msgstr "" + +msgid "Could not connect to ElegooLink" +msgstr "" + +#, boost-format +msgid "Error code: %1%" +msgstr "" + +msgid "Upload failed" +msgstr "" + +msgid "" +"The file has been transferred, but some unknown errors occurred. Please " +"check the device page for the file and try to start printing again." +msgstr "" + +msgid "Failed to open file for upload." +msgstr "" + +msgid "Failed to read file chunk for upload." +msgstr "" + +msgid "CC2 upload failed" +msgstr "" + +msgid "The file is empty or could not be read." +msgstr "" + +msgid "Failed to calculate file checksum." +msgstr "" + +msgid "Error code not found" +msgstr "" + +msgid "" +"The printer is busy, Please check the device page for the file and try to " +"start printing again." +msgstr "" + +msgid "The file is lost, please check and try again." +msgstr "" + +msgid "The file is corrupted, please check and try again." +msgstr "" + +msgid "Transmission abnormality, please check and try again." +msgstr "" + +msgid "The file does not match the printer, please check and try again." +msgstr "" + +msgid "Start print timeout" +msgstr "" + +msgid "Start print failed" +msgstr "" + +msgid "Connected to CrealityPrint successfully!" +msgstr "" + +msgid "Could not connect to CrealityPrint" +msgstr "" + +msgid "" +"Connection timed out. Please check if the printer and computer network are " +"functioning properly, and confirm that they are on the same network." +msgstr "" + +msgid "The Hostname/IP/URL could not be parsed, please check it and try again." +msgstr "" + +msgid "" +"File/data transfer interrupted. Please check the printer and network, then " +"try it again." +msgstr "" + msgid "The provided state is not correct." msgstr "提供的狀態不正確。" @@ -21234,6 +21459,12 @@ msgstr "邊緣支撐 (Brim)" msgid "Please select single object." msgstr "請選擇一個物件。" +msgid "Entering Brim Ears" +msgstr "" + +msgid "Leaving Brim Ears" +msgstr "" + msgid "Zoom Out" msgstr "縮小" @@ -21243,6 +21474,9 @@ msgstr "放大" msgid "Load skipping objects information failed. Please try again." msgstr "載入跳過物件資訊失敗。請再試一次。" +msgid "Failed to create the temporary folder." +msgstr "" + #, c-format, boost-format msgid "/%d Selected" msgstr "/%d 已選擇" @@ -21388,6 +21622,100 @@ msgstr "三角面片數量" msgid "Calculating, please wait..." msgstr "正在計算,請稍候..." +msgid "PresetBundle" +msgstr "" + +msgid "Bundle folder does not exist." +msgstr "" + +msgid "Failed to open folder." +msgstr "" + +msgid "Delete selected bundle from folder and all presets loaded from it?" +msgstr "" + +msgid "Delete Bundle" +msgstr "" + +msgid "Failed to remove bundle." +msgstr "" + +msgid "Remove Bundle" +msgstr "" + +msgid "Unsubscribe bundle?" +msgstr "" + +msgid "UnsubscribeBundle" +msgstr "" + +msgid "Failed to unsubscribe bundle." +msgstr "" + +msgid "Unsubscribe Bundle" +msgstr "" + +msgid "ExportPresetBundle" +msgstr "" + +msgid "Save preset bundle" +msgstr "" + +msgid "" +"Performing desktop integration failed - boost::filesystem::canonical did not " +"return appimage path." +msgstr "" + +msgid "Performing desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing desktop integration failed because the application directory was " +"not found." +msgstr "" + +msgid "" +"Performing desktop integration failed - could not create Gcodeviewer desktop " +"file. OrcaSlicer desktop file was probably created successfully." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - boost::filesystem::" +"canonical did not return appimage path." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed - Could not find executable." +msgstr "" + +msgid "" +"Performing downloader desktop integration failed because the application " +"directory was not found." +msgstr "" + +msgid "Desktop Integration" +msgstr "" + +msgid "" +"Desktop Integration sets this binary to be searchable by the system.\n" +"\n" +"Press \"Perform\" to proceed." +msgstr "" + +msgid "The download has failed" +msgstr "" + +#. TRN %1% = file path +#, boost-format +msgid "Can't create file at %1%" +msgstr "" + +msgid "Archive preview" +msgstr "" + +msgid "Open File" +msgstr "" + msgid "" "The filament may not be compatible with the current machine settings. " "Generic filament presets will be used." diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5e657971a5..b27540dd87 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1284,15 +1284,14 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_density", coPercent); def->label = L("External bridge density"); def->category = L("Strength"); - def->tooltip = L("Controls the density (spacing) of external bridge lines. Default is 100%.\n" + def->tooltip = L("Controls the density (spacing) of external bridge lines.\n" "Theoretically, 100% means a solid bridge, but due to the tendency of bridge extrusions to sag, 100% may not be sufficient.\n\n" "- Higher than 100% density (Recommended Max 125%):\n" " - Pros: Produces smoother bridge surfaces, as overlapping lines provide additional support during printing.\n" " - Cons: Can cause overextrusion, which may reduce lower and upper surface quality and increase the risk of warping.\n\n" "- Lower than 100% density (Min 10%):\n" " - Pros: Can create a string-like first layer. Faster and with better cooling because there is more space for air to circulate around the extruded bridge.\n" - " - Cons: May lead to sagging and poorer surface finish.\n\n" - "Recommended range: Minimum 10% - Maximum 125%."); + " - Cons: May lead to sagging and poorer surface finish."); def->sidetext = "%"; def->min = 10; def->max = 125; @@ -1302,7 +1301,7 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_density", coPercent); def->label = L("Internal bridge density"); def->category = L("Strength"); - def->tooltip = L("Controls the density (spacing) of internal bridge lines. Default is 100%. 100% means a solid internal bridge.\n\n" + def->tooltip = L("Controls the density (spacing) of internal bridge lines.\n" "Internal bridges act as intermediate support between sparse infill and top solid infill and can strongly affect top surface quality.\n\n" "- Higher than 100% density (Recommended Max 125%):\n" " - Pros: Improves internal bridge strength and support under top layers, reducing sagging and improving top-surface finish.\n" @@ -1332,7 +1331,7 @@ void PrintConfigDef::init_fff_params() def = this->add("bridge_line_width", coFloatOrPercent); def->label = L("Bridge"); def->category = L("Quality"); - def->tooltip = L("Bridge line width is expressed either as an absolute value or as a percentage of the active nozzle diameter (percentages are computed from the nozzle diameter).\n" + def->tooltip = L("Line width of the Bridge. If expressed as a %, it will be computed over the nozzle diameter.\n" "Recommended to use with a higher Bridge density or Bridge flow ratio.\n\n" "The maximum value is 100% or the nozzle diameter.\n" "If set to 0, the line width will match the Internal solid infill width."); From 5f8b48473a02512103f5ed1078eb0a67fd9c904b Mon Sep 17 00:00:00 2001 From: yw4z Date: Sat, 13 Jun 2026 15:45:42 +0300 Subject: [PATCH 10/20] Show printer name on titlebar of printer section while its folded (#14148) --- src/slic3r/GUI/Plater.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index ad1dbab30b..71a48297a4 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -650,6 +650,16 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual) // Single nozzle & non ams panel_nozzle_dia->Show(!isDual && preset_bundle.get_printer_extruder_count() < 2); extruder_single_sizer->Show(false); + + // ORCA ensure printer section is visible after changing printer from printer selection dialog + // this will inform user on printer change when printer section is collapsed + if (m_panel_printer_content){ + bool isShown = m_panel_printer_content->IsShown(); + if(!isShown && m_text_printer_settings){ + m_text_printer_settings->SetLabel(_L("Printer")); // ensure title returns to default state + m_panel_printer_content->Show(); + } + } } void Sidebar::priv::flush_printer_sync(bool restart) @@ -1650,7 +1660,7 @@ Sidebar::Sidebar(Plater *parent) p->m_panel_printer_title->SetBackgroundColor2(0xF1F1F1); p->m_printer_icon = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer"); - p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT); + p->m_text_printer_settings = new Label(p->m_panel_printer_title, _L("Printer"), LB_PROPAGATE_MOUSE_EVENT | wxST_ELLIPSIZE_END); p->m_printer_icon->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { //auto wizard_t = new ConfigWizard(wxGetApp().mainframe); @@ -1683,8 +1693,8 @@ Sidebar::Sidebar(Plater *parent) wxBoxSizer* h_sizer_title = new wxBoxSizer(wxHORIZONTAL); h_sizer_title->Add(p->m_printer_icon, 0, wxALIGN_CENTRE | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); h_sizer_title->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - h_sizer_title->Add(p->m_text_printer_settings, 0, wxALIGN_CENTER); - h_sizer_title->AddStretchSpacer(); + h_sizer_title->Add(p->m_text_printer_settings, 1, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); + //h_sizer_title->AddStretchSpacer(); h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(SidebarProps::WideSpacing())); // used larger margin to prevent accidental clicks h_sizer_title->Add(p->m_printer_setting, 0, wxALIGN_CENTER); @@ -1703,7 +1713,13 @@ Sidebar::Sidebar(Plater *parent) // add printer title scrolled_sizer->Add(p->m_panel_printer_title, 0, wxEXPAND | wxALL, 0); p->m_panel_printer_title->Bind(wxEVT_LEFT_UP, [this] (auto & e) { - p->m_panel_printer_content->Show(!p->m_panel_printer_content->IsShown()); + if (!p || !p->combo_printer || !p->m_text_printer_settings || !p->m_panel_printer_content || !m_scrolled_sizer) + return; + // ORCA Show printer name on title when its folded to inform user without expanding it again + bool isShown = p->m_panel_printer_content->IsShown(); + wxString title = _L("Printer") + wxString(!isShown ? "" : (" | " + p->combo_printer->GetValue())); + p->m_text_printer_settings->SetLabel(title); + p->m_panel_printer_content->Show(!isShown); m_scrolled_sizer->Layout(); }); From 0c4c04bcafbe4ca4183fc7d2feb765bff6755c94 Mon Sep 17 00:00:00 2001 From: "Michel (Mike) a.k.a VE2EXB" <78823828+dielectric-coder@users.noreply.github.com> Date: Sat, 13 Jun 2026 13:24:43 -0400 Subject: [PATCH 11/20] Fix Arch Linux dependency installation (gstreamermm, webkit2gtk, -Syy) (#14171) Fix Arch Linux dependency installation The arch dependency script listed packages that are no longer available in current Arch/CachyOS repositories: - gstreamermm: removed from official repos (AUR only) and not referenced anywhere in the OrcaSlicer build; the build uses plain gstreamer. - webkit2gtk: replaced upstream by webkit2gtk-4.1. Also switch the install command from `pacman -Syy` to `pacman -Syu` to avoid the partial-upgrade pattern that Arch officially discourages on a rolling-release distro. Co-authored-by: Claude Opus 4.8 (1M context) --- scripts/linux.d/arch | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/linux.d/arch b/scripts/linux.d/arch index c9342f561e..ead963e9a6 100644 --- a/scripts/linux.d/arch +++ b/scripts/linux.d/arch @@ -14,7 +14,6 @@ export REQUIRED_DEV_PACKAGES=( glew gst-plugins-good gstreamer - gstreamermm gtk3 libmspack libsecret @@ -24,7 +23,7 @@ export REQUIRED_DEV_PACKAGES=( openssl texinfo wayland-protocols - webkit2gtk + webkit2gtk-4.1 wget ) @@ -37,7 +36,7 @@ then done if [[ "${#NEEDED_PKGS[*]}" -gt 0 ]]; then - sudo pacman -Syy --noconfirm "${NEEDED_PKGS[@]}" + sudo pacman -Syu --noconfirm "${NEEDED_PKGS[@]}" fi echo -e "done\n" exit 0 From 9bcee518f859205fbcf3455c4f89fce5c606049c Mon Sep 17 00:00:00 2001 From: yw4z Date: Sun, 14 Jun 2026 07:04:34 +0300 Subject: [PATCH 12/20] Filament list improvements (Filament counter & Auto unfold & Scroll to end of list on changes) (#14158) * Update Plater.cpp * filament counter --- src/slic3r/GUI/Plater.cpp | 48 ++++++++++++++++++++++++++++++++++++--- src/slic3r/GUI/Plater.hpp | 1 + 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 71a48297a4..a5ba4f079d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -524,6 +524,7 @@ struct Sidebar::priv wxStaticLine * m_staticline1; StaticBox* m_panel_filament_title; wxStaticText* m_staticText_filament_settings; + wxStaticText* m_staticText_filament_count; ScalableButton * m_bpButton_add_filament; ScalableButton * m_bpButton_del_filament; ScalableButton * m_bpButton_ams_filament; @@ -2073,6 +2074,8 @@ Sidebar::Sidebar(Plater *parent) return; p->m_panel_filament_content->Show(!p->m_panel_filament_content->IsShown()); m_scrolled_sizer->Layout(); + + CallAfter([this]{update_filaments_counter(true);}); // call after all UI processing done }); wxBoxSizer* bSizer39; @@ -2080,11 +2083,13 @@ Sidebar::Sidebar(Plater *parent) p->m_filament_icon = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "filament"); p->m_staticText_filament_settings = new Label(p->m_panel_filament_title, _L("Project Filaments"), LB_PROPAGATE_MOUSE_EVENT); bSizer39->Add(p->m_filament_icon, 0, wxALIGN_CENTER | wxLEFT, FromDIP(SidebarProps::TitlebarMargin())); - bSizer39->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); - bSizer39->Add( p->m_staticText_filament_settings, 0, wxALIGN_CENTER ); - bSizer39->Add(FromDIP(10), 0, 0, 0, 0); + bSizer39->Add(p->m_staticText_filament_settings, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ElementSpacing())); bSizer39->SetMinSize(-1, FromDIP(30)); + p->m_staticText_filament_count = new Label(p->m_panel_filament_title, "(0)", LB_PROPAGATE_MOUSE_EVENT); + bSizer39->Add(p->m_staticText_filament_count, 0, wxALIGN_CENTER ); + bSizer39->Add(FromDIP(10), 0, 0, 0, 0); + p->m_panel_filament_title->SetSizer( bSizer39 ); p->m_panel_filament_title->Layout(); auto spliter_1 = new ::StaticLine(p->scrolled); @@ -2119,6 +2124,7 @@ Sidebar::Sidebar(Plater *parent) add_btn->SetToolTip(_L("Add one filament")); add_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent& e){ add_filament(); + update_filaments_counter(); }); p->m_bpButton_add_filament = add_btn; @@ -2128,6 +2134,7 @@ Sidebar::Sidebar(Plater *parent) del_btn->SetToolTip(_L("Remove last filament")); del_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) { delete_filament(); + update_filaments_counter(); }); p->m_bpButton_del_filament = del_btn; @@ -2854,6 +2861,26 @@ void Sidebar::update_filaments_area_height() if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) min_size.y = p->m_panel_filament_content->GetMaxHeight(); p->m_panel_filament_content->SetMinSize({-1, min_size.y}); + + update_filaments_counter(); +} + +void Sidebar::update_filaments_counter(bool force_layout) +// ORCA +{ + int current_count = p->combos_filament.size(); + int preferred_count = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); + bool isShown = p->m_panel_filament_content->IsShown(); + auto counter = p->m_staticText_filament_count; + + counter->SetLabel("(" + std::to_string(current_count) + ")"); // update counter on every change + if(current_count > preferred_count || !isShown) + counter->Show(); + else if (isShown) // hide when list is visible and short enough + counter->Hide(); + + if(force_layout) + m_scrolled_sizer->Layout(); } void Sidebar::msw_rescale() @@ -3161,6 +3188,13 @@ void Sidebar::add_filament() { if (p->combos_filament.size() >= MAXIMUM_EXTRUDER_NUMBER) return; wxColour new_col = Plater::get_next_color_for_filament(); add_custom_filament(new_col); + + auto filament_list = p->m_panel_filament_content; + if(!filament_list->IsShown()){ + filament_list->Show(); // ORCA show list if its folded + m_scrolled_sizer->Layout(); + } + filament_list->Scroll(-1, INT_MAX); // ORCA scroll to end of list on changes to inform user about filament count } void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) { @@ -3193,6 +3227,14 @@ void Sidebar::delete_filament(size_t filament_id, int replace_filament_id) { wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); wxGetApp().plater()->update(); + + auto filament_list = p->m_panel_filament_content; + if(!filament_list->IsShown()){ + filament_list->Show(); // ORCA show list if its folded + m_scrolled_sizer->Layout(); + } + + filament_list->Scroll(-1, INT_MAX); // ORCA scroll to end of list on changes to inform user about filament count } void Sidebar::change_filament(size_t from_id, size_t to_id) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index f2089c1c4f..18254383cd 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -173,6 +173,7 @@ public: bool reset_bed_type_combox_choices(bool is_sidebar_init = false); void change_top_border_for_mode_sizer(bool increase_border); void update_filaments_area_height(); + void update_filaments_counter(bool force_layout = false); void msw_rescale(); void sys_color_changed(); void search(); From abb4eddb9c81e5c0ecf3b04ce943548aa7025b32 Mon Sep 17 00:00:00 2001 From: Myself <107336861+totrytakeoff@users.noreply.github.com> Date: Sun, 14 Jun 2026 16:23:52 +0800 Subject: [PATCH 13/20] Fix CrealityPrint uploads with non-ASCII filenames (#13833) Fix Creality upload URLs for encoded filenames --- src/slic3r/Utils/CrealityPrint.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/slic3r/Utils/CrealityPrint.cpp b/src/slic3r/Utils/CrealityPrint.cpp index 220d046d2e..99f62a3824 100644 --- a/src/slic3r/Utils/CrealityPrint.cpp +++ b/src/slic3r/Utils/CrealityPrint.cpp @@ -137,20 +137,22 @@ bool CrealityPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, } bool res = true; - auto url = make_url("upload/" + safe_filename(upload_filename.string())); + const auto safe_upload_filename = safe_filename(upload_filename.string()); + // Only encode the URL path segment; keep the multipart filename and start-print path as the stored filename. + auto url = make_url("upload/" + Http::url_encode(safe_upload_filename)); auto http = Http::post(url); // std::move(url)); set_auth(http); if (!supports_multi_color_print()) http.form_add("path", upload_parent_path.string()); - http.form_add_file("file", upload_data.source_path.string(), upload_filename.string()) + http.form_add_file("file", upload_data.source_path.string(), safe_upload_filename) .on_complete([&](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: File uploaded: HTTP %2%: %3%") % name % status % body; if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { wxString errormsg; - if (!start_print(errormsg, safe_filename(upload_filename.string()), upload_data.extended_info)) { + if (!start_print(errormsg, safe_upload_filename, upload_data.extended_info)) { error_fn(std::move(errormsg)); res = false; } From 5fafbb59fca10c2c44781e8173671e6b61a2e890 Mon Sep 17 00:00:00 2001 From: raistlin7447 Date: Sun, 14 Jun 2026 04:42:53 -0500 Subject: [PATCH 14/20] Revive the disabled fff_print test suite (#14196) * Fix null-deref and arranger bugs that gate headless slicing tests export_gcode dereferenced a null result out-param, enum serialization dereferenced a null keys_map, and get_arrange_polys left bed_idx unseeded so the arranger dropped items. All only affect the headless test/CLI path. * Fix the headless test harness and add G-code test helpers Use the real arranger, fix temp-file handling with an RAII guard, and add layers_with_role / max_z for inspecting sliced G-code. * Re-enable the Model construction test * Re-enable SupportMaterial tests and add an enforced-support test * Re-enable and extend PrintObject layer-height and perimeter tests * Re-enable Print skirt, brim, and solid-surface tests * Re-enable and extend PrintGCode tests Un-hide the basic scenario (dead-key fixes, reframes, trimmed trivia) and add initial-layer-height, sequential-order, and null-result export tests. * Re-enable and reframe the skirt/brim tests Detect skirt/brim by G-code role comment instead of a sentinel speed, and resolve the previously-unfinished skirt-enclosure test. * Replace the stale lift()/unlift() test with a z_hop test * Delete the stub and broken Flow tests --- src/libslic3r/Config.hpp | 2 +- src/libslic3r/GCode.cpp | 2 +- src/libslic3r/ModelArrange.cpp | 4 + src/libslic3r/Print.cpp | 3 +- .../test_gcodewriter/config_lift_unlift.ini | 30 --- tests/fff_print/test_data.cpp | 29 ++- tests/fff_print/test_data.hpp | 9 + tests/fff_print/test_flow.cpp | 77 +----- tests/fff_print/test_gcodewriter.cpp | 87 ++----- tests/fff_print/test_model.cpp | 13 +- tests/fff_print/test_print.cpp | 79 ++---- tests/fff_print/test_printgcode.cpp | 210 +++++++++------- tests/fff_print/test_printobject.cpp | 91 ++++--- tests/fff_print/test_skirt_brim.cpp | 206 +++++++--------- tests/fff_print/test_support_material.cpp | 229 ++++-------------- tests/test_utils.hpp | 24 ++ 16 files changed, 419 insertions(+), 676 deletions(-) delete mode 100644 tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index 8ef014564c..5fedaa9b28 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -2186,7 +2186,7 @@ private: else throw ConfigurationError("Serializing NaN"); } - else { + else if (this->keys_map != nullptr) { for (const auto& kvp : *this->keys_map) if (kvp.second == v) ss << kvp.first; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 54b4d4bcff..cdcca01f38 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2194,7 +2194,7 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu BOOST_LOG_TRIVIAL(info) << "Exporting G-code finished" << log_memory_info(); print->set_done(psGCodeExport); - if(is_BBL_Printer()) + if(is_BBL_Printer() && result != nullptr) result->label_object_enabled = m_enable_exclude_object; // Write the profiler measurements to file PROFILE_UPDATE(); diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index 477509e69e..95167565aa 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -19,6 +19,10 @@ arrangement::ArrangePolygons get_arrange_polys(const Model &model, ModelInstance for (ModelObject *mo : model.objects) for (ModelInstance *minst : mo->instances) { minst->get_arrange_polygon(&ap); + // ModelInstance::get_arrange_polygon leaves bed_idx at its UNARRANGED + // default; seed it to bed 0 (as get_instance_arrange_poly does) so the + // nester treats the item as placeable instead of returning it unplaced. + ap.bed_idx = 0; input.emplace_back(ap); instances.emplace_back(minst); } diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 0d58e2dc00..78bdc8f1cf 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -2632,7 +2632,8 @@ std::string Print::export_gcode(const std::string& path_template, GCodeProcessor gcode.do_export(this, path.c_str(), result, thumbnail_cb); gcode.export_layer_filaments(result); //BBS - result->conflict_result = m_conflict_result; + if (result != nullptr) + result->conflict_result = m_conflict_result; return path.c_str(); } diff --git a/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini b/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini deleted file mode 100644 index 9d44cd43e7..0000000000 --- a/tests/data/fff_print_tests/test_gcodewriter/config_lift_unlift.ini +++ /dev/null @@ -1,30 +0,0 @@ -before_layer_gcode = -between_objects_gcode = -end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n" -end_gcode = M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n -extrusion_axis = E -extrusion_multiplier = 1 -filament_cost = 0 -filament_density = 0 -filament_diameter = 3 -filament_max_volumetric_speed = 0 -gcode_comments = 0 -gcode_flavor = reprap -layer_gcode = -max_print_speed = 80 -max_volumetric_speed = 0 -retract_length = 2 -retract_length_toolchange = 10 -retract_lift = 1.5 -retract_lift_above = 0 -retract_lift_below = 0 -retract_restart_extra = 0 -retract_restart_extra_toolchange = 0 -retract_speed = 40 -start_filament_gcode = "; Filament gcode\n" -start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n -toolchange_gcode = -travel_speed = 130 -use_firmware_retraction = 0 -use_relative_e_distances = 0 -use_volumetric_e = 0 diff --git a/tests/fff_print/test_data.cpp b/tests/fff_print/test_data.cpp index 307a279bef..b1096307c8 100644 --- a/tests/fff_print/test_data.cpp +++ b/tests/fff_print/test_data.cpp @@ -10,10 +10,11 @@ #include #include -#include #include #include +#include "test_utils.hpp" + using namespace std; namespace Slic3r { namespace Test { @@ -282,16 +283,36 @@ void init_and_process_print(std::initializer_list meshes, Slic3r:: std::string gcode(Print & print) { - boost::filesystem::path temp = boost::filesystem::unique_path(); + ScopedTemporaryFile temp(".gcode"); print.set_status_silent(); print.process(); print.export_gcode(temp.string(), nullptr, nullptr); std::ifstream t(temp.string()); std::string str((std::istreambuf_iterator(t)), std::istreambuf_iterator()); - boost::nowide::remove(temp.string().c_str()); return str; } +std::set layers_with_role(const std::string &gcode, const std::string &role) +{ + std::set layers; + GCodeReader parser; + parser.parse_buffer(gcode, [&layers, &role](GCodeReader &self, const GCodeReader::GCodeLine &line) { + if (line.extruding(self) && line.comment().find(role) != std::string_view::npos) + layers.insert(self.z()); + }); + return layers; +} + +double max_z(const std::string &gcode) +{ + double z = 0.0; + GCodeReader parser; + parser.parse_buffer(gcode, [&z](GCodeReader &self, const GCodeReader::GCodeLine &) { + z = std::max(z, static_cast(self.z())); + }); + return z; +} + Slic3r::Model model(const std::string &model_name, TriangleMesh &&_mesh) { Slic3r::Model result; @@ -338,7 +359,7 @@ std::string slice(std::initializer_list meshes, std::initializer_l #include -SCENARIO("init_print functionality", "[test_data][.]") { +SCENARIO("init_print functionality", "[test_data]") { GIVEN("A default config") { Slic3r::DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); WHEN("init_print is called with a single mesh.") { diff --git a/tests/fff_print/test_data.hpp b/tests/fff_print/test_data.hpp index 378d7fce7a..721446bc7e 100644 --- a/tests/fff_print/test_data.hpp +++ b/tests/fff_print/test_data.hpp @@ -8,6 +8,8 @@ #include "libslic3r/Print.hpp" #include "libslic3r/TriangleMesh.hpp" +#include +#include #include namespace Slic3r { namespace Test { @@ -80,6 +82,13 @@ std::string slice(std::initializer_list meshes, const DynamicPrint std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); std::string slice(std::initializer_list meshes, std::initializer_list config_items, bool comments = false); +// Distinct layer Z heights that carry an extrusion tagged with the given role +// comment (requires gcode_comments), e.g. "skirt", "brim", "support". +std::set layers_with_role(const std::string &gcode, const std::string &role); + +// Highest Z reached by any move in the gcode. +double max_z(const std::string &gcode); + } } // namespace Slic3r::Test diff --git a/tests/fff_print/test_flow.cpp b/tests/fff_print/test_flow.cpp index 7c0ad00ef1..4419d7f5bf 100644 --- a/tests/fff_print/test_flow.cpp +++ b/tests/fff_print/test_flow.cpp @@ -15,82 +15,7 @@ using namespace Slic3r::Test; using namespace Slic3r; -SCENARIO("Extrusion width specifics", "[Flow][.]") { - GIVEN("A config with a skirt, brim, some fill density, 3 perimeters, and 1 bottom solid layer and a 20mm cube mesh") { - // this is a sharedptr - DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); - config.set_deserialize_strict({ - { "brim_width", 2 }, - { "skirts", 1 }, - { "perimeters", 3 }, - { "fill_density", "40%" }, - { "first_layer_height", 0.3 } - }); - - WHEN("first layer width set to 2mm") { - Slic3r::Model model; - config.set("first_layer_extrusion_width", 2); - Slic3r::Print print; - Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, config); - - std::vector E_per_mm_bottom; - std::string gcode = Test::gcode(print); - Slic3r::GCodeReader parser; - const double layer_height = config.opt_float("layer_height"); - parser.parse_buffer(gcode, [&E_per_mm_bottom, layer_height] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) - { - if (self.z() == Catch::Approx(layer_height).margin(0.01)) { // only consider first layer - if (line.extruding(self) && line.dist_XY(self) > 0) { - E_per_mm_bottom.emplace_back(line.dist_E(self) / line.dist_XY(self)); - } - } - }); - THEN(" First layer width applies to everything on first layer.") { - bool pass = false; - double avg_E = std::accumulate(E_per_mm_bottom.cbegin(), E_per_mm_bottom.cend(), 0.0) / static_cast(E_per_mm_bottom.size()); - - pass = (std::count_if(E_per_mm_bottom.cbegin(), E_per_mm_bottom.cend(), [avg_E] (const double& v) { return v == Catch::Approx(avg_E); }) == 0); - REQUIRE(pass == true); - REQUIRE(E_per_mm_bottom.size() > 0); // make sure it actually passed because of extrusion - } - THEN(" First layer width does not apply to upper layer.") { - } - } - } -} -// needs gcode export -SCENARIO(" Bridge flow specifics.", "[Flow]") { - GIVEN("A default config with no cooling and a fixed bridge speed, flow ratio and an overhang mesh.") { - WHEN("bridge_flow_ratio is set to 1.0") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 0.5") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 2.0") { - THEN("Output flow is as expected.") { - } - } - } - GIVEN("A default config with no cooling and a fixed bridge speed, flow ratio, fixed extrusion width of 0.4mm and an overhang mesh.") { - WHEN("bridge_flow_ratio is set to 1.0") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 0.5") { - THEN("Output flow is as expected.") { - } - } - WHEN("bridge_flow_ratio is set to 2.0") { - THEN("Output flow is as expected.") { - } - } - } -} - -/// Test the expected behavior for auto-width, +/// Test the expected behavior for auto-width, /// spacing, etc SCENARIO("Flow: Flow math for non-bridges", "[Flow]") { GIVEN("Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5") { diff --git a/tests/fff_print/test_gcodewriter.cpp b/tests/fff_print/test_gcodewriter.cpp index ef8fb58b41..2d53dd099d 100644 --- a/tests/fff_print/test_gcodewriter.cpp +++ b/tests/fff_print/test_gcodewriter.cpp @@ -6,68 +6,6 @@ using namespace Slic3r; -SCENARIO("lift() is not ignored after unlift() at normal values of Z", "[GCodeWriter][.]") { - GIVEN("A config from a file and a single extruder.") { - GCodeWriter writer; - GCodeConfig &config = writer.config; - config.load(std::string(TEST_DATA_DIR) + "/fff_print_tests/test_gcodewriter/config_lift_unlift.ini", ForwardCompatibilitySubstitutionRule::Disable); - - std::vector extruder_ids {0}; - writer.set_extruders(extruder_ids); - writer.set_extruder(0); - - WHEN("Z is set to 203") { - double trouble_Z = 203; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - WHEN("Z is set to 500003") { - double trouble_Z = 500003; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - WHEN("Z is set to 10.3") { - double trouble_Z = 10.3; - writer.travel_to_z(trouble_Z); - AND_WHEN("GcodeWriter::Lift() is called") { - REQUIRE(writer.lazy_lift().size() > 0); - AND_WHEN("Z is moved post-lift to the same delta as the config Z lift") { - REQUIRE(writer.travel_to_z(trouble_Z + config.z_hop.values[0]).size() == 0); - AND_WHEN("GCodeWriter::Unlift() is called") { - REQUIRE(writer.unlift().size() == 0); // we're the same height so no additional move happens. - THEN("GCodeWriter::Lift() emits gcode.") { - REQUIRE(writer.lazy_lift().size() > 0); - } - } - } - } - } - // The test above will fail for trouble_Z == 9007199254740992, where trouble_Z + 1.5 will be rounded to trouble_Z + 2.0 due to double mantisa overflow. - } -} - SCENARIO("set_speed emits values with fixed-point output.", "[GCodeWriter]") { GIVEN("GCodeWriter instance") { @@ -94,3 +32,28 @@ SCENARIO("set_speed emits values with fixed-point output.", "[GCodeWriter]") { } } } + +SCENARIO("z_hop lifts the nozzle when a lift is requested", "[GCodeWriter]") { + GIVEN("A writer with the nozzle parked at Z = 10") { + GCodeWriter writer; + std::vector extruder_ids { 0 }; + writer.set_extruders(extruder_ids); + writer.set_extruder(0); + writer.travel_to_z(10.0); + + WHEN("z_hop is 1 and an eager lift is requested") { + writer.config.z_hop.values = { 1.0 }; + std::string gcode = writer.eager_lift(LiftType::NormalLift); + THEN("a Z move up by z_hop is emitted") { + REQUIRE_THAT(gcode, Catch::Matchers::ContainsSubstring("Z11")); + } + } + WHEN("z_hop is 0") { + writer.config.z_hop.values = { 0.0 }; + std::string gcode = writer.eager_lift(LiftType::NormalLift); + THEN("no lift is emitted") { + REQUIRE(gcode.empty()); + } + } + } +} diff --git a/tests/fff_print/test_model.cpp b/tests/fff_print/test_model.cpp index a802782607..fc25e0eef8 100644 --- a/tests/fff_print/test_model.cpp +++ b/tests/fff_print/test_model.cpp @@ -4,15 +4,15 @@ #include "libslic3r/Model.hpp" #include "libslic3r/ModelArrange.hpp" -#include #include #include "test_data.hpp" +#include "test_utils.hpp" using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("Model construction", "[Model][.]") { +SCENARIO("Model construction", "[Model]") { GIVEN("A Slic3r Model") { Slic3r::Model model; Slic3r::TriangleMesh sample_mesh = Slic3r::make_cube(20,20,20); @@ -49,12 +49,11 @@ SCENARIO("Model construction", "[Model][.]") { print.set_status_silent(); print.apply(model, config); print.process(); - boost::filesystem::path temp = boost::filesystem::unique_path(); + ScopedTemporaryFile temp(".gcode"); print.export_gcode(temp.string(), nullptr, nullptr); - REQUIRE(boost::filesystem::exists(temp)); - REQUIRE(boost::filesystem::is_regular_file(temp)); - REQUIRE(boost::filesystem::file_size(temp) > 0); - boost::nowide::remove(temp.string().c_str()); + REQUIRE(boost::filesystem::exists(temp.path())); + REQUIRE(boost::filesystem::is_regular_file(temp.path())); + REQUIRE(boost::filesystem::file_size(temp.path()) > 0); } } } diff --git a/tests/fff_print/test_print.cpp b/tests/fff_print/test_print.cpp index c94e302e9a..8c59b30292 100644 --- a/tests/fff_print/test_print.cpp +++ b/tests/fff_print/test_print.cpp @@ -9,35 +9,14 @@ using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("PrintObject: Perimeter generation", "[PrintObject][.]") { +SCENARIO("Print: Skirt generation", "[Print]") { GIVEN("20mm cube and default config") { - WHEN("make_perimeters() is called") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { { "fill_density", 0 } }); - const PrintObject &object = *print.objects().front(); - THEN("67 layers exist in the model") { - REQUIRE(object.layers().size() == 66); - } - THEN("Every layer in region 0 has 1 island of perimeters") { - for (const Layer *layer : object.layers()) - REQUIRE(layer->regions().front()->perimeters.entities.size() == 1); - } - THEN("Every layer in region 0 has 3 paths in its perimeters list.") { - for (const Layer *layer : object.layers()) - REQUIRE(layer->regions().front()->perimeters.items_count() == 3); - } - } - } -} - -SCENARIO("Print: Skirt generation", "[Print][.]") { - GIVEN("20mm cube and default config") { - WHEN("Skirts is set to 2 loops") { + WHEN("skirt_loops is set to 2") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "skirt_height", 1 }, - { "skirt_distance", 1 }, - { "skirts", 2 } + { "skirt_height", 1 }, + { "skirt_distance", 1 }, + { "skirt_loops", 2 } }); THEN("Skirt Extrusion collection has 2 loops in it") { REQUIRE(print.skirt().items_count() == 2); @@ -47,19 +26,19 @@ SCENARIO("Print: Skirt generation", "[Print][.]") { } } -SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces to become internal.", "[Print][.]") { - GIVEN("sliced 20mm cube and config with top_solid_surfaces = 2 and bottom_solid_surfaces = 1") { +SCENARIO("Print: Changing number of solid shell layers does not cause all surfaces to become internal.", "[Print]") { + GIVEN("sliced 20mm cube and config with top_shell_layers = 2 and bottom_shell_layers = 1") { Slic3r::DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_deserialize_strict({ - { "top_solid_layers", 2 }, - { "bottom_solid_layers", 1 }, - { "layer_height", 0.25 }, // get a known number of layers - { "first_layer_height", 0.25 } + { "top_shell_layers", 2 }, + { "bottom_shell_layers", 1 }, + { "layer_height", 0.25 }, // get a known number of layers + { "initial_layer_print_height", 0.25 } }); Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, config); - // Precondition: Ensure that the model has 2 solid top layers (39, 38) + // Precondition: Ensure that the model has 2 solid top layers (79, 78) // and one solid bottom layer (0). auto test_is_solid_infill = [&print](size_t obj_id, size_t layer_id) { const Layer &layer = *(print.objects().at(obj_id)->get_layer((int)layer_id)); @@ -74,8 +53,8 @@ SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces t test_is_solid_infill(0, 0); // should be solid test_is_solid_infill(0, 79); // should be solid test_is_solid_infill(0, 78); // should be solid - WHEN("Model is re-sliced with top_solid_layers == 3") { - config.set("top_solid_layers", 3); + WHEN("Model is re-sliced with top_shell_layers == 3") { + config.set("top_shell_layers", 3); print.apply(model, config); print.process(); THEN("Print object does not have 0 solid bottom layers.") { @@ -90,27 +69,14 @@ SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces t } } -SCENARIO("Print: Brim generation", "[Print][.]") { +SCENARIO("Print: Brim generation", "[Print]") { GIVEN("20mm cube and default config, 1mm first layer width") { - WHEN("Brim is set to 3mm") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 3 } - }); - THEN("Brim Extrusion collection has 3 loops in it") { - size_t total_items = 0; - for (const auto& pair : print.get_brimMap()) { - total_items += pair.second.items_count(); - } - REQUIRE(total_items == 3); - } - } WHEN("Brim is set to 6mm") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 6 } + { "brim_type", "outer_only" }, + { "initial_layer_line_width", 1 }, + { "brim_width", 6 } }); THEN("Brim Extrusion collection has 6 loops in it") { size_t total_items = 0; @@ -123,17 +89,16 @@ SCENARIO("Print: Brim generation", "[Print][.]") { WHEN("Brim is set to 6mm, extrusion width 0.5mm") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_extrusion_width", 1 }, - { "brim_width", 6 }, - { "first_layer_extrusion_width", 0.5 } + { "brim_type", "outer_only" }, + { "brim_width", 6 }, + { "initial_layer_line_width", 0.5 } }); - print.process(); THEN("Brim Extrusion collection has 12 loops in it") { size_t total_items = 0; for (const auto& pair : print.get_brimMap()) { total_items += pair.second.items_count(); } - REQUIRE(total_items == 14); + REQUIRE(total_items == 12); } } } diff --git a/tests/fff_print/test_printgcode.cpp b/tests/fff_print/test_printgcode.cpp index 180fc6d998..e790c55a93 100644 --- a/tests/fff_print/test_printgcode.cpp +++ b/tests/fff_print/test_printgcode.cpp @@ -14,9 +14,14 @@ #include "libslic3r/GCodeReader.hpp" #include "test_data.hpp" +#include "test_utils.hpp" #include #include +#include +#include +#include +#include using namespace Slic3r; using namespace Slic3r::Test; @@ -25,25 +30,23 @@ boost::regex perimeters_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; perimeter"); boost::regex infill_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; infill"); boost::regex skirt_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; skirt"); -SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { +SCENARIO( "PrintGCode basic functionality", "[PrintGCode]") { GIVEN("A default configuration and a print test object") { WHEN("the output is executed with no support material") { Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, { - { "layer_height", 0.2 }, - { "first_layer_height", 0.2 }, - { "first_layer_extrusion_width", 0 }, - { "gcode_comments", true }, - { "start_gcode", "" } + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "initial_layer_line_width", 0 }, + { "gcode_comments", true }, + { "machine_start_gcode", "" }, + { "z_hop", 0 } }); std::string gcode = Slic3r::Test::gcode(print); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); } - THEN("Exported text contains slic3r version") { - REQUIRE(gcode.find(SLIC3R_VERSION) != std::string::npos); - } //THEN("Exported text contains git commit id") { // REQUIRE(gcode.find("; Git Commit") != std::string::npos); // REQUIRE(gcode.find(SLIC3R_BUILD_ID) != std::string::npos); @@ -61,14 +64,9 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(gcode.find(";_EXTRUDE_SET_SPEED") == std::string::npos); } - THEN("GCode preamble is emitted.") { - REQUIRE(gcode.find("G21 ; set units to millimeters") != std::string::npos); - } - - THEN("Config options emitted for print config, default region config, default object config") { - REQUIRE(gcode.find("; first_layer_temperature") != std::string::npos); + THEN("The config trailer includes print and region settings") { REQUIRE(gcode.find("; layer_height") != std::string::npos); - REQUIRE(gcode.find("; fill_density") != std::string::npos); + REQUIRE(gcode.find("; sparse_infill_density") != std::string::npos); } THEN("Infill is emitted.") { boost::smatch has_match; @@ -83,27 +81,22 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(boost::regex_search(gcode, has_match, skirt_regex)); } THEN("final Z height is 20mm") { - double final_z = 0.0; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - }); - REQUIRE(final_z == Catch::Approx(20.)); + REQUIRE_THAT(max_z(gcode), Catch::Matchers::WithinAbs(20., 1e-4)); } } - WHEN("output is executed with complete objects and two differently-sized meshes") { + WHEN("output is executed with two objects printed sequentially") { Slic3r::Print print; Slic3r::Model model; Slic3r::Test::init_print({TestMesh::cube_20x20x20,TestMesh::cube_20x20x20}, print, model, { - { "first_layer_extrusion_width", 0 }, - { "first_layer_height", 0.3 }, - { "layer_height", 0.2 }, - { "support_material", false }, - { "raft_layers", 0 }, - { "complete_objects", true }, - { "gcode_comments", true }, - { "between_objects_gcode", "; between-object-gcode" } + { "initial_layer_line_width", 0 }, + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.2 }, + { "enable_support", false }, + { "raft_layers", 0 }, + { "print_sequence", "by object" }, + { "gcode_comments", true }, + { "printing_by_object_gcode", "; between-object-gcode" }, + { "z_hop", 0 } }); std::string gcode = Slic3r::Test::gcode(print); THEN("Some text output is generated.") { @@ -125,13 +118,7 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(gcode.find("; between-object-gcode") != std::string::npos); } THEN("final Z height is 20.1mm") { - double final_z = 0.0; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - }); - REQUIRE(final_z == Catch::Approx(20.1)); + REQUIRE_THAT(max_z(gcode), Catch::Matchers::WithinAbs(20.1, 1e-4)); } THEN("Z height resets on object change") { double final_z = 0.0; @@ -147,27 +134,13 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { }); REQUIRE(reset == true); } - THEN("Shorter object is printed before taller object.") { - double final_z = 0.0; - bool reset = false; - GCodeReader reader; - reader.apply_config(print.config()); - reader.parse_buffer(gcode, [&final_z, &reset] (GCodeReader& self, const GCodeReader::GCodeLine& line) { - if (final_z > 0 && std::abs(self.z() - 0.3) < 0.01 ) { - reset = (final_z > 20.0); - } else { - final_z = std::max(final_z, static_cast(self.z())); // record the highest Z point we reach - } - }); - REQUIRE(reset == true); - } } WHEN("the output is executed with support material") { std::string gcode = ::Test::slice({TestMesh::cube_20x20x20}, { - { "first_layer_extrusion_width", 0 }, - { "support_material", true }, - { "raft_layers", 3 }, - { "gcode_comments", true } + { "initial_layer_line_width", 0 }, + { "enable_support", true }, + { "raft_layers", 3 }, + { "gcode_comments", true } }); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); @@ -187,7 +160,7 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } WHEN("the output is executed with a separate first layer extrusion width") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "first_layer_extrusion_width", "0.5" } + { "initial_layer_line_width", "0.5" } }); THEN("Some text output is generated.") { REQUIRE(gcode.size() > 0); @@ -204,18 +177,18 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } WHEN("Cooling is enabled and the fan is disabled.") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "cooling", true }, - { "disable_fan_first_layers", 5 } + { "cooling", true }, + { "close_fan_the_first_x_layers", 5 } }); THEN("GCode to disable fan is emitted."){ - REQUIRE(gcode.find("M107") != std::string::npos); + REQUIRE(gcode.find("M106 S0") != std::string::npos); } } WHEN("end_gcode exists with layer_num and layer_z") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "end_gcode", "; Layer_num [layer_num]\n; Layer_z [layer_z]" }, - { "layer_height", 0.1 }, - { "first_layer_height", 0.1 } + { "machine_end_gcode", "; Layer_num [layer_num]\n; Layer_z [layer_z]" }, + { "layer_height", 0.1 }, + { "initial_layer_print_height", 0.1 } }); THEN("layer_num and layer_z are processed in the end gcode") { REQUIRE(gcode.find("; Layer_num 199") != std::string::npos); @@ -223,39 +196,21 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { } } WHEN("current_extruder exists in start_gcode") { - { - std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { - { "start_gcode", "; Extruder [current_extruder]" } - }); - THEN("current_extruder is processed in the start gcode and set for first extruder") { - REQUIRE(gcode.find("; Extruder 0") != std::string::npos); - } - } - { - DynamicPrintConfig config = DynamicPrintConfig::full_print_config(); - config.set_num_extruders(4); - config.set_deserialize_strict({ - { "start_gcode", "; Extruder [current_extruder]" }, - { "infill_extruder", 2 }, - { "solid_infill_extruder", 2 }, - { "perimeter_extruder", 2 }, - { "support_material_extruder", 2 }, - { "support_material_interface_extruder", 2 } - }); - std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - THEN("current_extruder is processed in the start gcode and set for second extruder") { - REQUIRE(gcode.find("; Extruder 1") != std::string::npos); - } + std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20 }, { + { "machine_start_gcode", "; Extruder [current_extruder]" } + }); + THEN("current_extruder is processed in the start gcode and set for first extruder") { + REQUIRE(gcode.find("; Extruder 0") != std::string::npos); } } WHEN("layer_num represents the layer's index from z=0") { std::string gcode = ::Test::slice({ TestMesh::cube_20x20x20, TestMesh::cube_20x20x20 }, { - { "complete_objects", true }, - { "gcode_comments", true }, - { "layer_gcode", ";Layer:[layer_num] ([layer_z] mm)" }, - { "layer_height", 0.1 }, - { "first_layer_height", 0.1 } + { "print_sequence", "by object" }, + { "gcode_comments", true }, + { "layer_change_gcode", ";Layer:[layer_num] ([layer_z] mm)" }, + { "layer_height", 0.1 }, + { "initial_layer_print_height", 0.1 } }); // End of the 1st object. std::string token = ";Layer:199 "; @@ -267,15 +222,82 @@ SCENARIO( "PrintGCode basic functionality", "[PrintGCode][.]") { REQUIRE(pos < gcode.size()); double z = 0; REQUIRE((sscanf(gcode.data() + pos, "(%lf mm)", &z) == 1)); - REQUIRE(z == Catch::Approx(20.)); + REQUIRE_THAT(z, Catch::Matchers::WithinAbs(20., 1e-4)); // Second object pos = gcode.find(";Layer:399 ", pos); REQUIRE(pos != std::string::npos); pos += token.size(); REQUIRE(pos < gcode.size()); REQUIRE((sscanf(gcode.data() + pos, "(%lf mm)", &z) == 1)); - REQUIRE(z == Catch::Approx(20.)); + REQUIRE_THAT(z, Catch::Matchers::WithinAbs(20., 1e-4)); } } } } + +TEST_CASE("export_gcode writes G-code without a result pointer", "[PrintGCode][export_gcode]") +{ + Print print; + Model model; + Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model); + print.process(); + + SECTION("non-BBL printer") {} + SECTION("BBL printer") { print.is_BBL_printer() = true; } + + ScopedTemporaryFile temp(".gcode"); + REQUIRE_NOTHROW(print.export_gcode(temp.string(), nullptr, nullptr)); + + std::ifstream in(temp.string()); + const std::string gcode((std::istreambuf_iterator(in)), std::istreambuf_iterator()); + + REQUIRE_FALSE(gcode.empty()); +} + +TEST_CASE("Initial layer height is honored", "[PrintGCode]") +{ + const std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, { + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.2 }, + { "z_hop", 0 } // keep recorded Z equal to the printed layer height + }); + + std::set layer_zs; + GCodeReader reader; + reader.parse_buffer(gcode, [&layer_zs] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (line.extruding(self) && line.dist_XY(self) > 0) + layer_zs.insert(self.z()); + }); + + REQUIRE(layer_zs.size() > 1); + REQUIRE_THAT(*layer_zs.begin(), Catch::Matchers::WithinAbs(0.3, 1e-4)); + REQUIRE_THAT(*std::next(layer_zs.begin()), Catch::Matchers::WithinAbs(0.5, 1e-4)); +} + +TEST_CASE("Sequential printing follows model order", "[PrintGCode]") +{ + // Two objects of different heights, taller one added first. Orca prints + // sequential objects in model order, so the taller one is printed first. + const std::string gcode = Slic3r::Test::slice({ Slic3r::make_cube(20, 20, 20), Slic3r::make_cube(20, 20, 10) }, { + { "print_sequence", "by object" }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.2 }, + { "z_hop", 0 } + }); + + // The first object's height is the peak Z reached before Z drops back to the + // first layer (the object change). With by-object printing only an object + // change returns Z to the bottom. + double first_object_peak_z = 0.0; + double running_peak = 0.0; + GCodeReader reader; + reader.parse_buffer(gcode, [&] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (first_object_peak_z != 0.0 || !line.extruding(self)) return; // ignore travels (e.g. start-gcode Z lift) + if (running_peak > 1.0 && self.z() < 1.0) + first_object_peak_z = running_peak; + else + running_peak = std::max(running_peak, static_cast(self.z())); + }); + + REQUIRE_THAT(first_object_peak_z, Catch::Matchers::WithinAbs(20.0, 0.3)); +} diff --git a/tests/fff_print/test_printobject.cpp b/tests/fff_print/test_printobject.cpp index 88b88826a3..c569384acb 100644 --- a/tests/fff_print/test_printobject.cpp +++ b/tests/fff_print/test_printobject.cpp @@ -9,14 +9,14 @@ using namespace Slic3r; using namespace Slic3r::Test; -SCENARIO("PrintObject: object layer heights", "[PrintObject][.]") { - GIVEN("20mm cube and default initial config, initial layer height of 2mm") { - WHEN("generate_object_layers() is called for 2mm layer heights and nozzle diameter of 3mm") { +SCENARIO("PrintObject: object layer heights", "[PrintObject]") { + GIVEN("A 20mm cube") { + WHEN("sliced with a 2mm layer height and a 3mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 2 }, - { "nozzle_diameter", 3 } + { "initial_layer_print_height", 2 }, + { "layer_height", 2 }, + { "nozzle_diameter", 3 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 10 entries") { @@ -25,65 +25,84 @@ SCENARIO("PrintObject: object layer heights", "[PrintObject][.]") { AND_THEN("Each layer is approximately 2mm above the previous Z") { coordf_t last = 0.0; for (size_t i = 0; i < layers.size(); ++ i) { - REQUIRE((layers[i]->print_z - last) == Catch::Approx(2.0)); + REQUIRE_THAT(layers[i]->print_z - last, Catch::Matchers::WithinAbs(2.0, 1e-4)); last = layers[i]->print_z; } } } - WHEN("generate_object_layers() is called for 10mm layer heights and nozzle diameter of 11mm") { + WHEN("sliced with a 10mm layer height and an 11mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 10 }, - { "nozzle_diameter", 11 } + { "initial_layer_print_height", 2 }, + { "layer_height", 10 }, + { "nozzle_diameter", 11 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 3 entries") { REQUIRE(layers.size() == 3); } AND_THEN("Layer 0 is at 2mm") { - REQUIRE(layers.front()->print_z == Catch::Approx(2.0)); + REQUIRE_THAT(layers.front()->print_z, Catch::Matchers::WithinAbs(2.0, 1e-4)); } AND_THEN("Layer 1 is at 12mm") { - REQUIRE(layers[1]->print_z == Catch::Approx(12.0)); + REQUIRE_THAT(layers[1]->print_z, Catch::Matchers::WithinAbs(12.0, 1e-4)); } } - WHEN("generate_object_layers() is called for 15mm layer heights and nozzle diameter of 16mm") { + WHEN("sliced with a 15mm layer height and a 16mm nozzle") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 15 }, - { "nozzle_diameter", 16 } + { "initial_layer_print_height", 2 }, + { "layer_height", 15 }, + { "nozzle_diameter", 16 } }); ConstLayerPtrsAdaptor layers = print.objects().front()->layers(); THEN("The output vector has 2 entries") { REQUIRE(layers.size() == 2); } AND_THEN("Layer 0 is at 2mm") { - REQUIRE(layers[0]->print_z == Catch::Approx(2.0)); + REQUIRE_THAT(layers[0]->print_z, Catch::Matchers::WithinAbs(2.0, 1e-4)); } AND_THEN("Layer 1 is at 17mm") { - REQUIRE(layers[1]->print_z == Catch::Approx(17.0)); + REQUIRE_THAT(layers[1]->print_z, Catch::Matchers::WithinAbs(17.0, 1e-4)); } } -#if 0 - WHEN("generate_object_layers() is called for 15mm layer heights and nozzle diameter of 5mm") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { - { "first_layer_height", 2 }, - { "layer_height", 15 }, - { "nozzle_diameter", 5 } - }); - const std::vector &layers = print.objects().front()->layers(); - THEN("The layer height is limited to 5mm.") { - CHECK(layers.size() == 5); - coordf_t last = 2.0; - for (size_t i = 1; i < layers.size(); i++) { - REQUIRE((layers[i]->print_z - last) == Catch::Approx(5.0)); - last = layers[i]->print_z; - } + WHEN("layer height exceeds the nozzle diameter") { + // Orca does not clamp an over-large layer height to the nozzle; it + // rejects the slice during flow computation. Pin that behavior. + THEN("Slicing is rejected") { + Slic3r::Print print; + REQUIRE_THROWS(Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { + { "initial_layer_print_height", 0.3 }, + { "layer_height", 0.5 }, + { "nozzle_diameter", 0.4 } + })); + } + } + } +} + +SCENARIO("PrintObject: Perimeter generation", "[PrintObject]") { + GIVEN("20mm cube and default config") { + WHEN("make_perimeters() is called") { + Slic3r::Print print; + Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { { "sparse_infill_density", 0 } }); + const PrintObject &object = *print.objects().front(); + THEN("Every layer in region 0 has 1 island of perimeters") { + for (const Layer *layer : object.layers()) + REQUIRE(layer->regions().front()->perimeters.entities.size() == 1); + } + } + WHEN("wall_loops is set to 3") { + Slic3r::Print print; + Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { + { "sparse_infill_density", 0 }, + { "wall_loops", 3 } + }); + const PrintObject &object = *print.objects().front(); + THEN("Every layer in region 0 has 3 perimeter loops") { + for (const Layer *layer : object.layers()) + REQUIRE(layer->regions().front()->perimeters.items_count() == 3); } } -#endif } } diff --git a/tests/fff_print/test_skirt_brim.cpp b/tests/fff_print/test_skirt_brim.cpp index 88032730c7..e274915d61 100644 --- a/tests/fff_print/test_skirt_brim.cpp +++ b/tests/fff_print/test_skirt_brim.cpp @@ -3,16 +3,19 @@ #include "libslic3r/GCodeReader.hpp" #include "libslic3r/Config.hpp" #include "libslic3r/Geometry.hpp" +#include "libslic3r/Geometry/ConvexHull.hpp" #include +#include + #include "test_data.hpp" // get access to init_print, etc using namespace Slic3r::Test; using namespace Slic3r; -/// Helper method to find the tool used for the brim (always the first extrusion) -static int get_brim_tool(const std::string &gcode) +/// Helper method to find the tool used for the brim (always the first extrusion). +[[maybe_unused]] static int get_brim_tool(const std::string &gcode) { int brim_tool = -1; int tool = -1; @@ -29,16 +32,13 @@ static int get_brim_tool(const std::string &gcode) return brim_tool; } -TEST_CASE("Skirt height is honored", "[Skirt][.]") { +TEST_CASE("Skirt height is honored", "[SkirtBrim]") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_deserialize_strict({ - { "skirts", 1 }, - { "skirt_height", 5 }, - { "perimeters", 0 }, - { "support_material_speed", 99 }, - // avoid altering speeds unexpectedly - { "cooling", false }, - { "first_layer_speed", "100%" } + { "skirt_loops", 1 }, + { "skirt_height", 5 }, + { "wall_loops", 0 }, + { "gcode_comments", true } }); std::string gcode; @@ -49,75 +49,38 @@ TEST_CASE("Skirt height is honored", "[Skirt][.]") { gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20, TestMesh::cube_20x20x20}, config); } - std::map layers_with_skirt; - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - GCodeReader parser; - parser.parse_buffer(gcode, [&layers_with_skirt, &support_speed] (Slic3r::GCodeReader &self, const Slic3r::GCodeReader::GCodeLine &line) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - layers_with_skirt[self.z()] = 1; - } - }); - REQUIRE(layers_with_skirt.size() == (size_t)config.opt_int("skirt_height")); + REQUIRE(layers_with_role(gcode, "skirt").size() == (size_t)config.opt_int("skirt_height")); } -SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { +SCENARIO("Skirt and brim generation", "[SkirtBrim]") { GIVEN("A default configuration") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_num_extruders(4); config.set_deserialize_strict({ - { "support_material_speed", 99 }, - { "first_layer_height", 0.3 }, - { "gcode_comments", true }, + { "initial_layer_print_height", 0.3 }, + { "gcode_comments", true }, // avoid altering speeds unexpectedly - { "cooling", false }, - { "first_layer_speed", "100%" }, + { "slow_down_for_layer_cooling", false }, + { "initial_layer_speed", "100%" }, // remove noise from top/solid layers - { "top_solid_layers", 0 }, - { "bottom_solid_layers", 1 }, - { "start_gcode", "T[initial_tool]\n" } + { "top_shell_layers", 0 }, + { "bottom_shell_layers", 1 }, + { "machine_start_gcode", "T[initial_tool]\n" } }); WHEN("Brim width is set to 5") { config.set_deserialize_strict({ - { "perimeters", 0 }, - { "skirts", 0 }, - { "brim_width", 5 } + { "wall_loops", 0 }, + { "skirt_loops", 0 }, + { "brim_type", "outer_only" }, + { "brim_width", 5 } }); THEN("Brim is generated") { std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - bool brim_generated = false; - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - Slic3r::GCodeReader parser; - parser.parse_buffer(gcode, [&brim_generated, support_speed] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) { - if (self.z() == Catch::Approx(0.3) || line.new_Z(self) == Catch::Approx(0.3)) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - brim_generated = true; - } - } - }); - REQUIRE(brim_generated); + REQUIRE(! layers_with_role(gcode, "brim").empty()); } } - WHEN("Skirt area is smaller than the brim") { - config.set_deserialize_strict({ - { "skirts", 1 }, - { "brim_width", 10} - }); - THEN("Gcode generates") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); - } - } - - WHEN("Skirt height is 0 and skirts > 0") { - config.set_deserialize_strict({ - { "skirts", 2 }, - { "skirt_height", 0 } - }); - THEN("Gcode generates") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); - } - } #if 0 // This is a real error! One shall print the brim with the external perimeter extruder! @@ -154,10 +117,11 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { WHEN("brim width to 1 with layer_width of 0.5") { config.set_deserialize_strict({ - { "skirts", 0 }, - { "first_layer_extrusion_width", 0.5 }, - { "brim_width", 1 } - }); + { "skirt_loops", 0 }, + { "initial_layer_line_width", 0.5 }, + { "brim_type", "outer_only" }, + { "brim_width", 1 } + }); THEN("2 brim lines") { Slic3r::Print print; Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, config); @@ -203,68 +167,68 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim][.]") { WHEN("Object is plated with overhang support and a brim") { config.set_deserialize_strict({ - { "layer_height", 0.4 }, - { "first_layer_height", 0.4 }, - { "skirts", 1 }, - { "skirt_distance", 0 }, - { "support_material_speed", 99 }, - { "perimeter_extruder", 1 }, - { "support_material_extruder", 2 }, - { "infill_extruder", 3 }, // ensure that a tool command gets emitted. - { "cooling", false }, // to prevent speeds to be altered - { "first_layer_speed", "100%" }, // to prevent speeds to be altered - { "start_gcode", "T[initial_tool]\n" } + { "layer_height", 0.4 }, + { "initial_layer_print_height", 0.4 }, + { "skirt_loops", 1 }, + { "skirt_distance", 0 }, + { "enable_support", 1 }, + { "brim_type", "outer_only" }, + { "brim_width", 5 } }); - THEN("overhang generates?") { - //FIXME does it make sense? - REQUIRE(! Slic3r::Test::slice({TestMesh::overhang}, config).empty()); + THEN("Support and brim are both emitted") { + std::string gcode = Slic3r::Test::slice({TestMesh::overhang}, config); + REQUIRE(! layers_with_role(gcode, "support").empty()); + REQUIRE(! layers_with_role(gcode, "brim").empty()); } - // config.set("support_material", true); // to prevent speeds to be altered - -#if 0 - // This test is not finished. - THEN("skirt length is large enough to contain object with support") { - CHECK(config.opt_bool("support_material")); // test is not valid if support material is off - std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); - double support_speed = config.opt("support_material_speed")->value * MM_PER_MIN; - double skirt_length = 0.0; - Points extrusion_points; - int tool = -1; - GCodeReader parser; - parser.parse_buffer(gcode, [config, &extrusion_points, &tool, &skirt_length, support_speed] (Slic3r::GCodeReader& self, const Slic3r::GCodeReader::GCodeLine& line) { - // std::cerr << line.cmd() << "\n"; - if (boost::starts_with(line.cmd(), "T")) { - tool = atoi(line.cmd().data() + 1); - } else if (self.z() == Catch::Approx(config.opt("first_layer_height")->value)) { - // on first layer - if (line.extruding(self) && line.dist_XY(self) > 0) { - float speed = ( self.f() > 0 ? self.f() : line.new_F(self)); - // std::cerr << "Tool " << tool << "\n"; - if (speed == Catch::Approx(support_speed) && tool == config.opt_int("perimeter_extruder") - 1) { - // Skirt uses first material extruder, support material speed. - skirt_length += line.dist_XY(self); - } else - extrusion_points.push_back(Slic3r::Point::new_scale(line.new_X(self), line.new_Y(self))); - } - } - if (self.z() == Catch::Approx(0.3) || line.new_Z(self) == Catch::Approx(0.3)) { - if (line.extruding(self) && self.f() == Catch::Approx(support_speed)) { - } - } - }); - Slic3r::Polygon convex_hull = Slic3r::Geometry::convex_hull(extrusion_points); - double hull_perimeter = unscale(convex_hull.split_at_first_point().length()); - REQUIRE(skirt_length > hull_perimeter); - } -#endif - + } + WHEN("an object with support is surrounded by a skirt") { + config.set_deserialize_strict({ + { "enable_support", 1 }, + { "skirt_loops", 1 }, + { "skirt_distance", 2 }, + { "brim_type", "no_brim" }, + { "z_hop", 0 } + }); + THEN("the skirt is long enough to enclose the object and its support") { + std::string gcode = Slic3r::Test::slice({TestMesh::overhang}, config); + const double first_layer_z = config.opt_float("initial_layer_print_height"); + + // On the first layer, accumulate the skirt loop length and collect the + // object + support extrusion points; the skirt must enclose them. + double skirt_length = 0.0; + Points footprint; + GCodeReader parser; + parser.parse_buffer(gcode, [&] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (! line.extruding(self) || line.dist_XY(self) <= 0 || std::abs(self.z() - first_layer_z) > 0.01) + return; + if (line.comment().find("skirt") != std::string_view::npos) + skirt_length += line.dist_XY(self); + else + footprint.push_back(Point::new_scale(line.new_X(self), line.new_Y(self))); + }); + + const double hull_perimeter = unscale(Geometry::convex_hull(footprint).split_at_first_point().length()); + REQUIRE(hull_perimeter > 0.0); // guard against an empty footprint passing trivially + REQUIRE(skirt_length > hull_perimeter); + } } WHEN("Large minimum skirt length is used.") { - config.set("min_skirt_length", 20); - THEN("Gcode generation doesn't crash") { - REQUIRE(! Slic3r::Test::slice({TestMesh::cube_20x20x20}, config).empty()); + // One skirt loop around a 20mm cube is ~88mm, so 500mm forces extra loops. + config.set_deserialize_strict({ + { "skirt_loops", 1 }, + { "min_skirt_length", 500 } + }); + THEN("The skirt is extended to at least the minimum length") { + std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config); + double skirt_length = 0.0; + GCodeReader parser; + parser.parse_buffer(gcode, [&skirt_length] (GCodeReader& self, const GCodeReader::GCodeLine& line) { + if (line.extruding(self) && line.comment().find("skirt") != std::string_view::npos) + skirt_length += line.dist_XY(self); + }); + REQUIRE(skirt_length >= 500.0); } } } diff --git a/tests/fff_print/test_support_material.cpp b/tests/fff_print/test_support_material.cpp index d61f97ca81..d1fc9d66e4 100644 --- a/tests/fff_print/test_support_material.cpp +++ b/tests/fff_print/test_support_material.cpp @@ -8,24 +8,41 @@ using namespace Slic3r::Test; using namespace Slic3r; -TEST_CASE("SupportMaterial: Three raft layers created", "[SupportMaterial][.]") +TEST_CASE("SupportMaterial: Three raft layers created", "[SupportMaterial]") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ TestMesh::cube_20x20x20 }, print, { - { "support_material", 1 }, - { "raft_layers", 3 } + { "enable_support", 1 }, + { "raft_layers", 3 } }); REQUIRE(print.objects().front()->support_layers().size() == 3); } -SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMaterial][.]") +TEST_CASE("SupportMaterial: enforced support layers are generated", "[SupportMaterial]") +{ + // enforce_support_layers forces support on the first N layers even with support off. + Slic3r::Print baseline; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, baseline, { + { "enable_support", 0 }, + { "enforce_support_layers", 0 } + }); + REQUIRE(baseline.objects().front()->support_layers().empty()); + + Slic3r::Print enforced; + Slic3r::Test::init_and_process_print({ TestMesh::overhang }, enforced, { + { "enable_support", 0 }, + { "enforce_support_layers", 100 } + }); + REQUIRE(enforced.objects().front()->support_layers().size() > 0); +} + +SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMaterial]") { // Box h = 20mm, hole bottom at 5mm, hole height 10mm (top edge at 15mm). TriangleMesh mesh = Slic3r::Test::mesh(Slic3r::Test::TestMesh::cube_with_hole); mesh.rotate_x(float(M_PI / 2)); -// mesh.write_binary("d:\\temp\\cube_with_hole.stl"); - auto check = [](Slic3r::Print &print, bool &first_support_layer_height_ok, bool &layer_height_minimum_ok, bool &layer_height_maximum_ok, bool &top_spacing_ok) + auto check = [](Slic3r::Print &print, bool &first_support_layer_height_ok, bool &layer_height_minimum_ok, bool &layer_height_maximum_ok) { ConstSupportLayerPtrsAdaptor support_layers = print.objects().front()->support_layers(); @@ -43,196 +60,36 @@ SCENARIO("SupportMaterial: support_layers_z and contact_distance", "[SupportMate if (support_layers[i]->print_z - support_layers[i - 1]->print_z > max_layer_height + EPSILON) layer_height_maximum_ok = false; } - -#if 0 - double expected_top_spacing = print.default_object_config().layer_height + print.config().nozzle_diameter.get_at(0); - bool wrong_top_spacing = 0; - std::vector top_z { 1.1 }; - for (coordf_t top_z_el : top_z) { - // find layer index of this top surface. - size_t layer_id = -1; - for (size_t i = 0; i < support_z.size(); ++ i) { - if (abs(support_z[i] - top_z_el) < EPSILON) { - layer_id = i; - i = static_cast(support_z.size()); - } - } - - // check that first support layer above this top surface (or the next one) is spaced with nozzle diameter - if (abs(support_z[layer_id + 1] - support_z[layer_id] - expected_top_spacing) > EPSILON && - abs(support_z[layer_id + 2] - support_z[layer_id] - expected_top_spacing) > EPSILON) { - wrong_top_spacing = 1; - } - } - d = ! wrong_top_spacing; -#else - top_spacing_ok = true; -#endif }; GIVEN("A print object having one modelObject") { - WHEN("First layer height = 0.4") { + WHEN("Layer height = 0.2 and first layer height = 0.4") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.4 }, - { "dont_support_bridges", false }, + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.4 }, + { "dont_support_bridges", false }, }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } + bool first_layer_ok, layer_min_ok, layer_max_ok; + check(print, first_layer_ok, layer_min_ok, layer_max_ok); + THEN("First layer height is honored") { REQUIRE(first_layer_ok == true); } + THEN("No null or negative support layers") { REQUIRE(layer_min_ok == true); } + THEN("No layers thicker than nozzle diameter") { REQUIRE(layer_max_ok == true); } } - WHEN("Layer height = 0.2 and, first layer height = 0.3") { + WHEN("Layer height = 0.2 and first layer height = 0.3") { Slic3r::Print print; Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.3 }, - { "dont_support_bridges", false }, + { "enable_support", 1 }, + { "layer_height", 0.2 }, + { "initial_layer_print_height", 0.3 }, + { "dont_support_bridges", false }, }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } - } - WHEN("Layer height = nozzle_diameter[0]") { - Slic3r::Print print; - Slic3r::Test::init_and_process_print({ mesh }, print, { - { "support_material", 1 }, - { "layer_height", 0.2 }, - { "first_layer_height", 0.3 }, - { "dont_support_bridges", false }, - }); - bool a, b, c, d; - check(print, a, b, c, d); - THEN("First layer height is honored") { REQUIRE(a == true); } - THEN("No null or negative support layers") { REQUIRE(b == true); } - THEN("No layers thicker than nozzle diameter") { REQUIRE(c == true); } -// THEN("Layers above top surfaces are spaced correctly") { REQUIRE(d == true); } + bool first_layer_ok, layer_min_ok, layer_max_ok; + check(print, first_layer_ok, layer_min_ok, layer_max_ok); + THEN("First layer height is honored") { REQUIRE(first_layer_ok == true); } + THEN("No null or negative support layers") { REQUIRE(layer_min_ok == true); } + THEN("No layers thicker than nozzle diameter") { REQUIRE(layer_max_ok == true); } } } } - -#if 0 -// Test 8. -TEST_CASE("SupportMaterial: forced support is generated", "[SupportMaterial]") -{ - // Create a mesh & modelObject. - TriangleMesh mesh = TriangleMesh::make_cube(20, 20, 20); - - Model model = Model(); - ModelObject *object = model.add_object(); - object->add_volume(mesh); - model.add_default_instances(); - model.align_instances_to_origin(); - - Print print = Print(); - - std::vector contact_z = {1.9}; - std::vector top_z = {1.1}; - print.default_object_config.support_material_enforce_layers = 100; - print.default_object_config.support_material = 0; - print.default_object_config.layer_height = 0.2; - print.default_object_config.set_deserialize("first_layer_height", "0.3"); - - print.add_model_object(model.objects[0]); - print.objects.front()->_slice(); - - SupportMaterial *support = print.objects.front()->_support_material(); - auto support_z = support->support_layers_z(contact_z, top_z, print.default_object_config.layer_height); - - bool check = true; - for (size_t i = 1; i < support_z.size(); i++) { - if (support_z[i] - support_z[i - 1] <= 0) - check = false; - } - - REQUIRE(check == true); -} - -// TODO -bool test_6_checks(Print& print) -{ - bool has_bridge_speed = true; - - // Pre-Processing. - PrintObject* print_object = print.objects.front(); - print_object->infill(); - SupportMaterial* support_material = print.objects.front()->_support_material(); - support_material->generate(print_object); - // TODO but not needed in test 6 (make brims and make skirts). - - // Exporting gcode. - // TODO validation found in Simple.pm - - - return has_bridge_speed; -} - -// Test 6. -SCENARIO("SupportMaterial: Checking bridge speed", "[SupportMaterial]") -{ - GIVEN("Print object") { - // Create a mesh & modelObject. - TriangleMesh mesh = TriangleMesh::make_cube(20, 20, 20); - - Model model = Model(); - ModelObject *object = model.add_object(); - object->add_volume(mesh); - model.add_default_instances(); - model.align_instances_to_origin(); - - Print print = Print(); - print.config.brim_width = 0; - print.config.skirts = 0; - print.config.skirts = 0; - print.default_object_config.support_material = 1; - print.default_region_config.top_solid_layers = 0; // so that we don't have the internal bridge over infill. - print.default_region_config.bridge_speed = 99; - print.config.cooling = 0; - print.config.set_deserialize("first_layer_speed", "100%"); - - WHEN("support_material_contact_distance = 0.2") { - print.default_object_config.support_material_contact_distance = 0.2; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is used. - } - - WHEN("support_material_contact_distance = 0") { - print.default_object_config.support_material_contact_distance = 0; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is not used. - } - - WHEN("support_material_contact_distance = 0.2 & raft_layers = 5") { - print.default_object_config.support_material_contact_distance = 0.2; - print.default_object_config.raft_layers = 5; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - REQUIRE(check == true); // bridge speed is used. - } - - WHEN("support_material_contact_distance = 0 & raft_layers = 5") { - print.default_object_config.support_material_contact_distance = 0; - print.default_object_config.raft_layers = 5; - print.add_model_object(model.objects[0]); - - bool check = test_6_checks(print); - - REQUIRE(check == true); // bridge speed is not used. - } - } -} - -#endif diff --git a/tests/test_utils.hpp b/tests/test_utils.hpp index 3cdd717643..7fe55c5333 100644 --- a/tests/test_utils.hpp +++ b/tests/test_utils.hpp @@ -4,6 +4,8 @@ #include #include +#include + #if defined(WIN32) || defined(_WIN32) #define PATH_SEPARATOR R"(\)" #else @@ -20,4 +22,26 @@ inline Slic3r::TriangleMesh load_model(const std::string &obj_filename) return mesh; } +// RAII holder for a unique temporary file path, removed when the guard goes out +// of scope so a failing assertion never leaks it. Uses the system temp dir with +// a unique name (parallel-safe, cross-platform). The file itself is created by +// whoever writes to path()/string(); this only reserves the name and cleans up. +class ScopedTemporaryFile +{ +public: + explicit ScopedTemporaryFile(const std::string &extension = ".tmp") + : m_path(boost::filesystem::temp_directory_path() + / boost::filesystem::unique_path("orca-%%%%-%%%%-%%%%" + extension)) + {} + ~ScopedTemporaryFile() { boost::system::error_code ec; boost::filesystem::remove(m_path, ec); } + ScopedTemporaryFile(const ScopedTemporaryFile &) = delete; + ScopedTemporaryFile &operator=(const ScopedTemporaryFile &) = delete; + + const boost::filesystem::path &path() const { return m_path; } + std::string string() const { return m_path.string(); } + +private: + boost::filesystem::path m_path; +}; + #endif // SLIC3R_TEST_UTILS From fe0eafc02b5f3b232e8975c66b03725e4e128d46 Mon Sep 17 00:00:00 2001 From: raistlin7447 Date: Sun, 14 Jun 2026 04:44:20 -0500 Subject: [PATCH 15/20] Fix Unit Tests CI job that silently ran zero tests (#14175) Fix Unit Tests CI job silently running zero tests scripts/run_unit_tests.sh selected tests with `ctest -L "Http|PlaceholderParser"`, but catch_discover_tests() was called without ADD_TAGS_AS_LABELS, so Catch2 tags were never registered as CTest labels. The -L filter matched nothing and the job passed green while running no tests ("No tests were found!!!"). Tests have not run in CI since PR #11485 added that -L line (2025-12-23). Register tags as labels via a shared orcaslicer_discover_tests() wrapper in tests/CMakeLists.txt (passing ADD_TAGS_AS_LABELS), routed through all five test suites. Restore full-suite execution by replacing the narrow -L selection with a `-LE NotWorking` exclusion, so all reliable tests gate PRs again (the suite ran in full before #11485). Tag the two OrcaCloudServiceAgent display-name tests [NotWorking]: their constructor reaches wxStandardPaths::Get().GetUserDataDir(), which dereferences the null wxTheApp in the headless test binary and segfaults on every platform. Excluded until the agent can be constructed without the wx app context. CI now runs 151 tests (was 0) and passes. --- scripts/run_unit_tests.sh | 4 +++- tests/CMakeLists.txt | 5 +++++ tests/fff_print/CMakeLists.txt | 2 +- tests/libnest2d/CMakeLists.txt | 2 +- tests/libslic3r/CMakeLists.txt | 2 +- tests/sla_print/CMakeLists.txt | 2 +- tests/slic3rutils/CMakeLists.txt | 2 +- tests/slic3rutils/slic3rutils_tests_main.cpp | 6 ++++-- 8 files changed, 17 insertions(+), 8 deletions(-) diff --git a/scripts/run_unit_tests.sh b/scripts/run_unit_tests.sh index 292c6c9d3f..bd9e969227 100755 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_unit_tests.sh @@ -9,4 +9,6 @@ ROOT_DIR="$(dirname "$0")/.." cd "${ROOT_DIR}" || exit 1 -ctest --test-dir build/tests -L "Http|PlaceholderParser" --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j +# Run the whole suite, excluding tests tagged [NotWorking]. +# --no-tests=error fails the job if the filter matches nothing (instead of passing green). +ctest --test-dir build/tests -LE "NotWorking" --no-tests=error --output-junit "$(pwd)/ctest_results.xml" --output-on-failure -j diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6b93962a33..1108fe9350 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -47,6 +47,11 @@ function(orcaslicer_copy_test_dlls) endforeach() endfunction() +# Register Catch2 tags as CTest labels so `ctest -L`/`-LE` can filter by tag. +function(orcaslicer_discover_tests TARGET) + catch_discover_tests(${TARGET} ADD_TAGS_AS_LABELS) +endfunction() + add_subdirectory(libnest2d) add_subdirectory(libslic3r) add_subdirectory(slic3rutils) diff --git a/tests/fff_print/CMakeLists.txt b/tests/fff_print/CMakeLists.txt index 452a40adb9..1467c1397f 100644 --- a/tests/fff_print/CMakeLists.txt +++ b/tests/fff_print/CMakeLists.txt @@ -21,4 +21,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/libnest2d/CMakeLists.txt b/tests/libnest2d/CMakeLists.txt index 6ead7f11a0..2c36b9cdcb 100644 --- a/tests/libnest2d/CMakeLists.txt +++ b/tests/libnest2d/CMakeLists.txt @@ -10,4 +10,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/libslic3r/CMakeLists.txt b/tests/libslic3r/CMakeLists.txt index 1824df8dc0..9c451e0456 100644 --- a/tests/libslic3r/CMakeLists.txt +++ b/tests/libslic3r/CMakeLists.txt @@ -38,4 +38,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/sla_print/CMakeLists.txt b/tests/sla_print/CMakeLists.txt index bb53f5bee2..b348e21bdc 100644 --- a/tests/sla_print/CMakeLists.txt +++ b/tests/sla_print/CMakeLists.txt @@ -9,4 +9,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/slic3rutils/CMakeLists.txt b/tests/slic3rutils/CMakeLists.txt index e734fcf6c6..30f58a9562 100644 --- a/tests/slic3rutils/CMakeLists.txt +++ b/tests/slic3rutils/CMakeLists.txt @@ -12,4 +12,4 @@ set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests") orcaslicer_copy_test_dlls() -catch_discover_tests(${_TEST_NAME}_tests) +orcaslicer_discover_tests(${_TEST_NAME}_tests) diff --git a/tests/slic3rutils/slic3rutils_tests_main.cpp b/tests/slic3rutils/slic3rutils_tests_main.cpp index cea6934e8e..e29b518f3d 100644 --- a/tests/slic3rutils/slic3rutils_tests_main.cpp +++ b/tests/slic3rutils/slic3rutils_tests_main.cpp @@ -53,7 +53,8 @@ TEST_CASE("Check SSL certificates paths", "[Http][NotWorking]") { REQUIRE(status == 200); } -TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCloudServiceAgent]") +// [NotWorking]: OrcaCloudServiceAgent ctor segfaults headless (wxStandardPaths::Get() -> null wxTheApp). +TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCloudServiceAgent][NotWorking]") { CHECK(resolved_display_name(flat_session_json({ {"username", "orca_username"}, @@ -81,7 +82,8 @@ TEST_CASE("Orca cloud flat session resolves display name consistently", "[OrcaCl })) == "orca_username"); } -TEST_CASE("Orca cloud nested session resolves display name consistently", "[OrcaCloudServiceAgent]") +// [NotWorking]: see flat-session test above. +TEST_CASE("Orca cloud nested session resolves display name consistently", "[OrcaCloudServiceAgent][NotWorking]") { CHECK(resolved_display_name(nested_session_json({ {"username", "orca_username"}, From 2abfa512ef0020d186cde86ddcc0ce746363811c Mon Sep 17 00:00:00 2001 From: Ian Chua Date: Sun, 14 Jun 2026 18:30:42 +0800 Subject: [PATCH 16/20] feat: notification where there is an update available for subscribed presets (#14121) * feat: notification where there is an update available for subscribed presets * add tracking set for updates available --- src/slic3r/GUI/GUI_App.cpp | 91 ++++++++++++++++++++++++-------------- src/slic3r/GUI/GUI_App.hpp | 2 +- 2 files changed, 59 insertions(+), 34 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 4b35274867..9017d39d5c 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -6523,16 +6523,16 @@ void GUI_App::update_single_bundle(wxCommandEvent& evt) }); } -void GUI_App::sync_bundle(std::string bundle_id, std::string version) +int GUI_App::sync_bundle(std::string bundle_id, std::string version) { // if(preset_bundle->bundles.pauseReads.load()) // { // BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread sync_bundle function yielded to main thread. 1"; // return; // if the main thread acquires the lock at the start of our operations, we will yield // } - if (!m_agent || !m_agent->is_user_login()) return; + if (!m_agent || !m_agent->is_user_login()) return 0; auto orca_agent = std::dynamic_pointer_cast(m_agent->get_cloud_agent()); - if (!orca_agent) return; + if (!orca_agent) return 0; BOOST_LOG_TRIVIAL(info) << "sync_bundle: checking bundle " << bundle_id << " for updates"; @@ -6555,12 +6555,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to parse versions for bundle " << bundle_id << " (local: " << local_version << ", remote: " << remote_version << ")"; preset_bundle->bundles.ReadUnlock(); // unlock read when fail - return; + return -1; } if (remote_version <= local_version) { BOOST_LOG_TRIVIAL(info) << "sync_bundle: bundle " << bundle_id << " is up-to-date (version " << local_version << ")"; preset_bundle->bundles.ReadUnlock(); // unlock read when fail - return; + return -1; } BOOST_LOG_TRIVIAL(info) << "sync_bundle: updating bundle " << bundle_id << " from version " << local_version @@ -6577,8 +6577,7 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) // if it is an update, we will lock and write std::string ver; - if(is_update) - { + if (is_update) { preset_bundle->bundles.WriteLock(); preset_bundle->bundles.m_bundles[bundle_id].update_available = true; preset_bundle->bundles.m_bundles[bundle_id].is_subscribed = true; @@ -6586,8 +6585,13 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) preset_bundle->bundles.WriteUnlock(); } - if(app_config->get_bool("preset_bundle_auto_update") == true || is_new) - { + const bool auto_update = app_config->get_bool("preset_bundle_auto_update"); + + if (is_update && !auto_update) { + return 1; + } + + if (auto_update || is_new) { // Fetch the latest bundle data from cloud std::map> bundle_presets; BundleMetadata remote_metadata; @@ -6595,22 +6599,23 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) if (result != 0) { BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to fetch bundle " << bundle_id << ", result=" << result; - return; + return -1; } // Import the updated bundle on the main thread - CallAfter([this, bundle_id, bundle_presets, remote_metadata,is_new,is_update,ver]() { - if (!is_closing() && preset_bundle && app_config) { - // Check the presets for any system vendors that need to be installed - for (auto data : bundle_presets) { - if (!check_preset_parent_available(data)) { - add_pending_vendor_preset(data); + CallAfter( + [this, bundle_id, bundle_presets, remote_metadata, is_new, is_update, ver]() { + if (!is_closing() && preset_bundle && app_config) { + // Check the presets for any system vendors that need to be installed + for (auto data : bundle_presets) { + if (!check_preset_parent_available(data)) { + add_pending_vendor_preset(data); + } } - } - load_pending_vendors(); + load_pending_vendors(); - // if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread - // { + // if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread + // { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : CallAfter from sync_bundle function actually updating subscribed presets"; preset_bundle->bundles.WriteLock(); @@ -6640,10 +6645,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version) if (mainframe) mainframe->update_side_preset_ui(); BOOST_LOG_TRIVIAL(info) << "sync_bundle: successfully updated bundle " << bundle_id; - // } - } - }); + // } + } + }); } + + return 0; } @@ -6847,6 +6854,10 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) std::vector presets_to_sync; std::vector> bundles_to_sync; std::unordered_set bundles_synced; + + std::unordered_set known_available_updates; + + bool update_available = false; // Sync once immediately, then every 60 seconds. while (!t.expired()) { ++tick_tock; @@ -6952,17 +6963,31 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) // Iterate over the bundles, and update/create for (const auto& bundle_entry : bundles_to_sync) { - bundles_synced.insert(bundle_entry.first); - // Sync each bundle individually - // if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether - // { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles"; - sync_bundle(bundle_entry.first, bundle_entry.second); - // } - // Small delay between bundle syncs to avoid overwhelming the server - boost::this_thread::sleep_for(boost::chrono::milliseconds(100)); - + // Sync each bundle individually + // if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether + // { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles"; + int res = sync_bundle(bundle_entry.first, bundle_entry.second); + + const std::string known_update_key = bundle_entry.first + ":" + bundle_entry.second; + if (res == 1 && known_available_updates.insert(known_update_key).second) { + update_available = true; + } + + // } + // Small delay between bundle syncs to avoid overwhelming the server + boost::this_thread::sleep_for(boost::chrono::milliseconds(100)); + } + + if (update_available) { + wxGetApp() + .plater() + ->get_notification_manager() + ->push_notification(NotificationType::CustomNotification, + NotificationManager::NotificationLevel::RegularNotificationLevel, "There is an update available. Open the preset bundle dialog to update it."); + + update_available = false; } std::vector to_delete; diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 60ef782f51..f72ba263aa 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -544,7 +544,7 @@ public: // Bundle subscription sync void check_bundle_updates(); - void sync_bundle(std::string bundle_id, std::string version); + int sync_bundle(std::string bundle_id, std::string version); bool unsubscribe_bundle(const std::string& id); void update_single_bundle(wxCommandEvent& evt); From 3e2373c86e391cb4284d70d9163e6d3c55702c35 Mon Sep 17 00:00:00 2001 From: "Mikhail f. Shiryaev" Date: Sun, 14 Jun 2026 12:35:56 +0200 Subject: [PATCH 17/20] Improve build cache (#14014) * Improve build cache: use it in deps, add sccache * Add a way to to set `ccache` or `sccache` using CMAKE_CCACHE --- build_linux.sh | 23 +++++++++++++++++------ deps/CMakeLists.txt | 4 ++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/build_linux.sh b/build_linux.sh index 98201958f4..72ea742f1a 100755 --- a/build_linux.sh +++ b/build_linux.sh @@ -504,13 +504,24 @@ if [[ -n "${USE_LLD}" ]] ; then fi fi -# Auto-detect ccache for faster rebuilds export CMAKE_CCACHE_ARGS=() -if command -v ccache >/dev/null 2>&1 ; then - echo "ccache found at $(command -v ccache), enabling compiler caching..." - export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache) +CMAKE_CCACHE=${CMAKE_CCACHE:-} +if [ -n "$CMAKE_CCACHE" ]; then + echo "Checking ${CMAKE_CCACHE} environment variable for compiler cache program..." + CMAKE_CCACHE=$(command -v "${CMAKE_CCACHE}") || { + echo "CMAKE_CCACHE environment variable is set to '${CMAKE_CCACHE}' but it was not found in PATH." + CMAKE_CCACHE="" + } +elif command -v sccache >/dev/null 2>&1 ; then + CMAKE_CCACHE=$(command -v sccache) +elif command -v ccache >/dev/null 2>&1 ; then + CMAKE_CCACHE=$(command -v ccache) +fi +if [ -n "${CMAKE_CCACHE}" ] ; then + echo "${CMAKE_CCACHE} found, enabling compiler caching..." + export CMAKE_CCACHE_ARGS=(-DCMAKE_C_COMPILER_LAUNCHER="${CMAKE_CCACHE}" -DCMAKE_CXX_COMPILER_LAUNCHER="${CMAKE_CCACHE}") else - echo "Note: ccache not found. Install ccache for faster rebuilds." + echo "Note: ccache or sccache are not found. Install either of them for faster rebuilds." fi if [[ -n "${BUILD_DEPS}" ]] ; then @@ -525,7 +536,7 @@ if [[ -n "${BUILD_DEPS}" ]] ; then BUILD_ARGS+=(-DCMAKE_BUILD_TYPE="${BUILD_CONFIG}") fi - print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}" + print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" "${CMAKE_CCACHE_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}" print_and_run cmake --build deps/$BUILD_DIR -j1 fi diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 7657b56738..dbbf9a0463 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -196,6 +196,8 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE) -DCMAKE_DEBUG_POSTFIX:STRING=d -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} @@ -241,6 +243,8 @@ else() -DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR} -DCMAKE_PREFIX_PATH:STRING=${DESTDIR} -DCMAKE_IGNORE_PREFIX_PATH:STRING=${CMAKE_IGNORE_PREFIX_PATH} + -DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER} -DBUILD_SHARED_LIBS:BOOL=OFF ${_cmake_osx_arch} "${_configs_line}" From 8c0b89bc8a754fa339297f9bfc0f6d2465f5872b Mon Sep 17 00:00:00 2001 From: yw4z Date: Sun, 14 Jun 2026 13:55:40 +0300 Subject: [PATCH 18/20] Launch troubleshoot center with clicking to dev button (#14178) * init * show tooltip for dev mode --- src/slic3r/GUI/ParamsPanel.cpp | 15 ++++++--------- src/slic3r/GUI/Widgets/SwitchButton.cpp | 24 +++++++++++++++++++++--- src/slic3r/GUI/Widgets/SwitchButton.hpp | 5 ++++- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index d612b56298..7d054d8a1b 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -279,12 +279,9 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c }); m_mode_icon->SetToolTip(_L("Cycle settings visibility")); m_mode_view = new ModeSwitchButton(m_top_panel); - if (wxGetApp().get_mode() == comDevelop) { - m_mode_view->SetSelection(mode_to_selection(comExpert)); - m_mode_view->Enable(false); - } else { - m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); - } + bool isDevMode = wxGetApp().get_mode() == comDevelop; + m_mode_view->SetSelection(mode_to_selection(isDevMode ? comExpert : wxGetApp().get_saved_mode())); + m_mode_view->SetDevMode(isDevMode); // BBS: new layout //m_search_btn = new ScalableButton(m_top_panel, wxID_ANY, "search", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); @@ -653,13 +650,13 @@ void ParamsPanel::update_mode() if (app_mode == comDevelop) { mode_view->SetSelection(mode_to_selection(comExpert)); - mode_view->Enable(false); + mode_view->SetDevMode(true); return; } mode_view->SetSelection(mode_to_selection(Slic3r::GUI::wxGetApp().get_saved_mode())); - if (!mode_view->IsEnabled()) - mode_view->Enable(); + if (mode_view->GetDevMode()) + mode_view->SetDevMode(false); }; sync_mode_view(m_mode_view); diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp index 60c9344077..6eae9e9615 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -262,6 +262,7 @@ ModeSwitchButton::ModeSwitchButton(wxWindow* parent, wxWindowID id) m_tooltips[0] = _L("Simple settings"); m_tooltips[1] = _L("Advanced settings"); m_tooltips[2] = _L("Expert settings"); + m_tooltips[3] = _L("Developer mode") + "\n" + _L("Launch troubleshoot center") + "..."; Bind(wxEVT_LEFT_DOWN, &ModeSwitchButton::mouseDown, this); Bind(wxEVT_LEFT_UP, &ModeSwitchButton::mouseReleased, this); @@ -280,7 +281,7 @@ void ModeSwitchButton::SetSelection(int selection) void ModeSwitchButton::SelectAndNotify(int selection) { - if (!IsEnabled()) + if (m_dev_mode || !IsEnabled()) return; SetSelection(selection); @@ -310,6 +311,15 @@ bool ModeSwitchButton::Enable(bool enable /* = true */) return changed; } +void ModeSwitchButton::SetDevMode(bool enable /* = true */) +{ + if (enable != m_dev_mode){ + m_dev_mode = enable; + update_tooltip(); + Refresh(); + } +} + void ModeSwitchButton::doRender(wxDC& dc) { const wxRect bounds = GetClientRect(); @@ -328,7 +338,7 @@ void ModeSwitchButton::doRender(wxDC& dc) dc.SetBrush(wxBrush(background_color.colorForStates(states))); dc.DrawRoundedRectangle(bounds, v_center); - if (m_enabled) { + if (!m_dev_mode) { double dot_dist = (bounds.width - bounds.height) * 0.50; // Track @@ -368,6 +378,11 @@ void ModeSwitchButton::doRender(wxDC& dc) void ModeSwitchButton::mouseDown(wxMouseEvent& event) { + if (m_dev_mode){ + Slic3r::GUI::wxGetApp().troubleshoot(); + return; + } + if (!IsEnabled()) { event.Skip(); return; @@ -425,7 +440,10 @@ wxRect ModeSwitchButton::thumb_rect_for(int selection) const void ModeSwitchButton::update_tooltip() { - SetToolTip(m_tooltips[m_selection]); + if (m_dev_mode) + SetToolTip(m_tooltips[3]); + else + SetToolTip(m_tooltips[m_selection]); } MultiSwitchButton::MultiSwitchButton(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style) diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp index 0884fa64aa..69de98c6ff 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -63,6 +63,8 @@ public: void msw_rescale() { Rescale(); } bool Enable(bool enable = true) override; + void SetDevMode(bool enable = true); + bool GetDevMode() const {return m_dev_mode;}; protected: void doRender(wxDC& dc) override; @@ -79,7 +81,8 @@ private: int m_selection { 0 }; bool m_pressed { false }; bool m_enabled { true }; - wxString m_tooltips[3]; + bool m_dev_mode { false }; + wxString m_tooltips[4]; StateColor dot_active; StateColor dot_dimmed; StateColor text_color; From b1e510fc9977a6aec7526229d448a6c7e1b93c2b Mon Sep 17 00:00:00 2001 From: raistlin7447 Date: Sun, 14 Jun 2026 19:53:45 -0500 Subject: [PATCH 19/20] Disable fff_print tests that fail only in CI (#14207) * Disable fff_print tests that fail only in CI Skirt height is honored, Scenario: Skirt and brim generation, and Scenario: PrintGCode basic functionality slice geometry that makes clipper's coordinate range check throw "Coordinate outside allowed range" in the Linux CI environment, while the same tests pass in local builds. Tag them [NotWorking] so the Unit Tests job (ctest -LE NotWorking) excludes them until the underlying slicing issue is fixed in a follow-up PR. * Trigger Build all workflow on tests/** changes The push and pull_request path filters did not include tests/**, so a test-only change never started the build and the Unit Tests job never ran. Add tests/** to both filters so changes to the test suite are built and exercised by CI. --- .github/workflows/build_all.yml | 2 ++ tests/fff_print/test_printgcode.cpp | 5 ++++- tests/fff_print/test_skirt_brim.cpp | 8 ++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 0788832d5c..4472eb8227 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -15,6 +15,7 @@ on: - ".github/workflows/build_*.yml" - 'scripts/flatpak/**' - 'scripts/msix/**' + - 'tests/**' pull_request: branches: @@ -32,6 +33,7 @@ on: - 'build_release_macos.sh' - 'scripts/flatpak/**' - 'scripts/msix/**' + - 'tests/**' schedule: diff --git a/tests/fff_print/test_printgcode.cpp b/tests/fff_print/test_printgcode.cpp index e790c55a93..7ac2f43231 100644 --- a/tests/fff_print/test_printgcode.cpp +++ b/tests/fff_print/test_printgcode.cpp @@ -30,7 +30,10 @@ boost::regex perimeters_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; perimeter"); boost::regex infill_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; infill"); boost::regex skirt_regex("G1 X[-0-9.]* Y[-0-9.]* E[-0-9.]* ; skirt"); -SCENARIO( "PrintGCode basic functionality", "[PrintGCode]") { +// [NotWorking]: slice() intermittently throws clipper's "Coordinate outside allowed +// range" in CI (Linux) while passing locally. Disabled pending a root-cause fix in a +// follow-up PR. +SCENARIO( "PrintGCode basic functionality", "[PrintGCode][NotWorking]") { GIVEN("A default configuration and a print test object") { WHEN("the output is executed with no support material") { Slic3r::Print print; diff --git a/tests/fff_print/test_skirt_brim.cpp b/tests/fff_print/test_skirt_brim.cpp index e274915d61..7a927fade2 100644 --- a/tests/fff_print/test_skirt_brim.cpp +++ b/tests/fff_print/test_skirt_brim.cpp @@ -32,7 +32,10 @@ using namespace Slic3r; return brim_tool; } -TEST_CASE("Skirt height is honored", "[SkirtBrim]") { +// [NotWorking]: slice() intermittently throws clipper's "Coordinate outside allowed +// range" in CI (Linux) while passing locally. Disabled pending a root-cause fix in a +// follow-up PR. +TEST_CASE("Skirt height is honored", "[SkirtBrim][NotWorking]") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_deserialize_strict({ { "skirt_loops", 1 }, @@ -52,7 +55,8 @@ TEST_CASE("Skirt height is honored", "[SkirtBrim]") { REQUIRE(layers_with_role(gcode, "skirt").size() == (size_t)config.opt_int("skirt_height")); } -SCENARIO("Skirt and brim generation", "[SkirtBrim]") { +// [NotWorking]: see "Skirt height is honored" above; same CI-only clipper range throw. +SCENARIO("Skirt and brim generation", "[SkirtBrim][NotWorking]") { GIVEN("A default configuration") { DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); config.set_num_extruders(4); From 14d2dfdd4c8989dacb77f5598aaf8759225fb8fe Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 15 Jun 2026 14:29:30 +0800 Subject: [PATCH 20/20] Fix test errors by guarding against null dereference of wxTheApp in OrcaCloudServiceAgent::compute_fallback_path() and skipping file persistence when no fallback path is available. --- src/slic3r/Utils/OrcaCloudServiceAgent.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 61eb388b92..215216651e 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #if defined(_WIN32) @@ -1416,6 +1417,10 @@ void OrcaCloudServiceAgent::persist_refresh_token(const std::string& token) } compute_fallback_path(); + if (refresh_fallback_path.empty()) { + BOOST_LOG_TRIVIAL(warning) << "OrcaCloudServiceAgent: no refresh-token storage path available; skipping file persistence"; + return; + } wxFileName path(wxString::FromUTF8(refresh_fallback_path.c_str())); path.Normalize(); if (!wxFileName::DirExists(path.GetPath())) { @@ -2219,7 +2224,15 @@ bool OrcaCloudServiceAgent::http_post_auth(const std::string& path, const std::s void OrcaCloudServiceAgent::compute_fallback_path() { - if (!refresh_fallback_path.empty()) return; + if (!refresh_fallback_path.empty()) + return; + // wxStandardPaths::GetUserDataDir() resolves the app data directory via + // wxAppConsoleBase::GetAppName(), which dereferences wxTheApp. In headless + // contexts (CLI, unit tests) there is no wxApp, so guard the call to avoid a + // null dereference. The path can still be provided explicitly through + // set_config_dir(); when it is left empty, file persistence is skipped. + if (wxTheApp == nullptr) + return; wxFileName fallback(wxStandardPaths::Get().GetUserDataDir(), "orca_refresh_token.sec"); fallback.Normalize(); refresh_fallback_path = fallback.GetFullPath().ToStdString();