From 14fe5080ec9f1043467e9525af8b953d35766bc4 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Mon, 9 Sep 2019 19:30:43 +0300 Subject: [PATCH] - modified camlib.py, FlatCAMApp.py and ObjectCollection.py files to the new string format that will allow easier translations - updated the POT file and the German language --- FlatCAMApp.py | 593 +++-- ObjectCollection.py | 3 +- README.md | 2 + camlib.py | 223 +- locale/de/LC_MESSAGES/strings.mo | Bin 333692 -> 330077 bytes locale/de/LC_MESSAGES/strings.po | 3893 ++++++++++++++++-------------- locale_template/strings.pot | 1299 +++++----- 7 files changed, 3213 insertions(+), 2800 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index af61c8ea..ef3869b6 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -1109,7 +1109,8 @@ class App(QtCore.QObject): ret_val = fcTranslate.apply_language('strings') if ret_val == "no language": - self.inform.emit(_("[ERROR] Could not find the Language files. The App strings are missing.")) + self.inform.emit('[ERROR] %s' % + _("Could not find the Language files. The App strings are missing.")) log.debug("Could not find the Language files. The App strings are missing.") else: # make the current language the current selection on the language combobox @@ -2647,7 +2648,8 @@ class App(QtCore.QObject): isinstance(edited_object, FlatCAMExcellon): pass else: - self.inform.emit(_("[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Select a Geometry, Gerber or Excellon Object to edit.")) return if isinstance(edited_object, FlatCAMGeometry): @@ -2660,7 +2662,8 @@ class App(QtCore.QObject): if edited_object.multigeo is True: edited_tools = [int(x.text()) for x in edited_object.ui.geo_tools_table.selectedItems()] if len(edited_tools) > 1: - self.inform.emit(_("[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo Geometry " + self.inform.emit('[WARNING_NOTCL] %s' % + _("Simultanoeus editing of tools geometry in a MultiGeo Geometry " "is not possible.\n" "Edit only one geometry at a time.")) @@ -2714,7 +2717,8 @@ class App(QtCore.QObject): self.ui.plot_tab_area.setTabText(0, "EDITOR Area") self.ui.plot_tab_area.protectTab(0) - self.inform.emit(_("[WARNING_NOTCL] Editor is activated ...")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Editor is activated ...")) self.should_we_save = True @@ -2765,7 +2769,8 @@ class App(QtCore.QObject): edited_obj.options['xmax'] = xmax edited_obj.options['ymax'] = ymax except AttributeError as e: - self.inform.emit(_("[WARNING] Object empty after edit.")) + self.inform.emit('[WARNING] %s' % + _("Object empty after edit.")) log.debug("App.editor2object() --> Geometry --> %s" % str(e)) elif isinstance(edited_obj, FlatCAMGerber): obj_type = "Gerber" @@ -2787,10 +2792,12 @@ class App(QtCore.QObject): self.exc_editor.update_options(edited_obj) self.exc_editor.deactivate() else: - self.inform.emit(_("[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Select a Gerber, Geometry or Excellon Object to update.")) return - self.inform.emit(_("[selected] %s is updated, returning to App...") % obj_type) + self.inform.emit('[selected] %s %s' % + (obj_type, _("is updated, returning to App..."))) elif response == bt_no: # clean the Tools Tab self.ui.tool_scroll_area.takeWidget() @@ -2806,7 +2813,8 @@ class App(QtCore.QObject): # set focus on the project tab self.ui.notebook.setCurrentWidget(self.ui.project_tab) else: - self.inform.emit(_("[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Select a Gerber, Geometry or Excellon Object to update.")) return elif response == bt_cancel: return @@ -2818,7 +2826,8 @@ class App(QtCore.QObject): elif isinstance(edited_obj, FlatCAMExcellon): self.exc_editor.deactivate() else: - self.inform.emit(_("[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Select a Gerber, Geometry or Excellon Object to update.")) return # if notebook is hidden we show it @@ -3173,7 +3182,8 @@ class App(QtCore.QObject): f.close() except IOError: self.log.error("Could not load defaults file.") - self.inform.emit(_("[ERROR] Could not load defaults file.")) + self.inform.emit('[ERROR] %s' % + _("Could not load defaults file.")) # in case the defaults file can't be loaded, show all toolbars self.defaults["global_toolbar_view"] = 511 return @@ -3185,7 +3195,8 @@ class App(QtCore.QObject): self.defaults["global_toolbar_view"] = 511 e = sys.exc_info()[0] App.log.error(str(e)) - self.inform.emit(_("[ERROR] Failed to parse defaults file.")) + self.inform.emit('[ERROR] %s' % + _("Failed to parse defaults file.")) return self.defaults.update(defaults) log.debug("FlatCAM defaults loaded from: %s" % filename) @@ -3216,7 +3227,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] FlatCAM preferences import cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("FlatCAM preferences import cancelled.")) else: try: f = open(filename) @@ -3224,7 +3236,8 @@ class App(QtCore.QObject): f.close() except IOError: self.log.error("Could not load defaults file.") - self.inform.emit(_("[ERROR_NOTCL] Could not load defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Could not load defaults file.")) return try: @@ -3232,11 +3245,13 @@ class App(QtCore.QObject): except Exception as e: e = sys.exc_info()[0] App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Failed to parse defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to parse defaults file.")) return self.defaults.update(defaults_from_file) self.on_preferences_edited() - self.inform.emit(_("[success] Imported Defaults from %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Imported Defaults from"), filename)) def on_export_preferences(self): """ @@ -3268,7 +3283,8 @@ class App(QtCore.QObject): defaults_from_file = {} if filename == "": - self.inform.emit(_("[WARNING_NOTCL] FlatCAM preferences export cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("FlatCAM preferences export cancelled.")) return else: try: @@ -3276,7 +3292,8 @@ class App(QtCore.QObject): defaults_file_content = f.read() f.close() except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return except IOError: @@ -3288,7 +3305,8 @@ class App(QtCore.QObject): e = sys.exc_info()[0] App.log.error("Could not load defaults file.") App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Could not load defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Could not load preferences file.")) return try: @@ -3307,12 +3325,14 @@ class App(QtCore.QObject): json.dump(defaults_from_file, f, default=to_dict, indent=2, sort_keys=True) f.close() except: - self.inform.emit(_("[ERROR_NOTCL] Failed to write defaults to file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to write defaults to file.")) return if self.defaults["global_open_style"] is False: self.file_opened.emit("preferences", filename) self.file_saved.emit("preferences", filename) - self.inform.emit("[success] Exported Defaults to %s" % filename) + self.inform.emit('[success] %s: %s' % + (_("Exported preferences to"), filename)) def on_preferences_open_folder(self): """ @@ -3328,7 +3348,8 @@ class App(QtCore.QObject): os.system('open "%s"' % self.data_path) else: subprocess.Popen(['xdg-open', self.data_path]) - self.inform.emit("[success] FlatCAM Preferences Folder opened.") + self.inform.emit('[success] %s' % + _("FlatCAM Preferences Folder opened.")) def save_geometry(self, x, y, width, height, notebook_width): """ @@ -3400,7 +3421,8 @@ class App(QtCore.QObject): f = open(self.data_path + '/recent.json', 'w') except IOError: App.log.error("Failed to open recent items file for writing.") - self.inform.emit(_('[ERROR_NOTCL] Failed to open recent files file for writing.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Failed to open recent files file for writing.')) return json.dump(self.recent, f, default=to_dict, indent=2, sort_keys=True) @@ -3410,7 +3432,8 @@ class App(QtCore.QObject): fp = open(self.data_path + '/recent_projects.json', 'w') except IOError: App.log.error("Failed to open recent items file for writing.") - self.inform.emit(_('[ERROR_NOTCL] Failed to open recent projects file for writing.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Failed to open recent projects file for writing.')) return json.dump(self.recent_projects, fp, default=to_dict, indent=2, sort_keys=True) @@ -3492,7 +3515,8 @@ class App(QtCore.QObject): try: return_value = initialize(obj, self) except Exception as e: - msg = _("[ERROR_NOTCL] An internal error has ocurred. See shell.\n") + msg = '[ERROR_NOTCL] %s' % \ + _("An internal error has ocurred. See shell.\n") msg += _("Object ({kind}) failed because: {error} \n\n").format(kind=kind, error=str(e)) msg += traceback.format_exc() self.inform.emit(msg) @@ -3513,7 +3537,8 @@ class App(QtCore.QObject): # Check units and convert if necessary # This condition CAN be true because initialize() can change obj.units if self.options["units"].upper() != obj.units.upper(): - self.inform.emit(_("Converting units to ") + self.options["units"] + ".") + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Converting units to "), self.options["units"])) obj.convert_units(self.options["units"]) t3 = time.time() self.log.debug("%f seconds converting units." % (t3 - t2)) @@ -3860,7 +3885,8 @@ class App(QtCore.QObject): e = sys.exc_info()[0] App.log.error("Could not load defaults file.") App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Could not load defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Could not load defaults file.")) return try: @@ -3869,7 +3895,8 @@ class App(QtCore.QObject): e = sys.exc_info()[0] App.log.error("Failed to parse defaults file.") App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Failed to parse defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to parse defaults file.")) return # Update options @@ -3914,11 +3941,13 @@ class App(QtCore.QObject): json.dump(defaults, f, default=to_dict, indent=2, sort_keys=True) f.close() except: - self.inform.emit(_("[ERROR_NOTCL] Failed to write defaults to file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to write defaults to file.")) return if not silent: - self.inform.emit(_("[success] Defaults saved.")) + self.inform.emit('[success] %s' % + _("Preferences saved.")) def save_factory_defaults(self, silent=False, data_path=None): """ @@ -3945,7 +3974,8 @@ class App(QtCore.QObject): e = sys.exc_info()[0] App.log.error("Could not load factory defaults file.") App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Could not load factory defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Could not load factory defaults file.")) return try: @@ -3954,7 +3984,8 @@ class App(QtCore.QObject): e = sys.exc_info()[0] App.log.error("Failed to parse factory defaults file.") App.log.error(str(e)) - self.inform.emit(_("[ERROR_NOTCL] Failed to parse factory defaults file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to parse factory defaults file.")) return # Update options @@ -3968,7 +3999,8 @@ class App(QtCore.QObject): json.dump(factory_defaults, f_f_def_s, default=to_dict, indent=2, sort_keys=True) f_f_def_s.close() except: - self.inform.emit(_("[ERROR_NOTCL] Failed to write factory defaults to file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to write factory defaults to file.")) return if silent is False: @@ -3982,7 +4014,8 @@ class App(QtCore.QObject): :return: None """ if self.save_in_progress: - self.inform.emit(_("[WARNING_NOTCL] Application is saving the project. Please wait ...")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Application is saving the project. Please wait ...")) return if self.should_we_save and self.collection.get_list(): @@ -4222,7 +4255,8 @@ class App(QtCore.QObject): for ext in gco_list: new_ext = new_ext + ext + ', ' self.defaults["fa_gcode"] = new_ext - self.inform.emit(_("[success] Selected GCode file extensions registered with FlatCAM.")) + self.inform.emit('[success] %s' % + _("Selected GCode file extensions registered with FlatCAM.")) if obj_type is None or obj_type == 'gerber': grb_list = self.ui.fa_defaults_form.fa_gerber_group.grb_list_text.get_value().replace(' ', '').split(',') @@ -4243,7 +4277,8 @@ class App(QtCore.QObject): for ext in grb_list: new_ext = new_ext + ext + ', ' self.defaults["fa_gerber"] = new_ext - self.inform.emit(_("[success] Selected Gerber file extensions registered with FlatCAM.")) + self.inform.emit('[success] %s' % + _("Selected Gerber file extensions registered with FlatCAM.")) def on_edit_join(self, name=None): """ @@ -4266,7 +4301,8 @@ class App(QtCore.QObject): # if len(geo_type_list) == 1 means that all list elements are the same if len(geo_type_list) != 1: - self.inform.emit(_("[ERROR] Failed join. The Geometry objects are of different types.\n" + self.inform.emit('[ERROR] %s' % + _("Failed join. The Geometry objects are of different types.\n" "At least one is MultiGeo type and the other is SingleGeo type. A possibility is to " "convert from one to another and retry joining \n" "but in the case of converting from MultiGeo to SingleGeo, informations may be lost and " @@ -4307,7 +4343,8 @@ class App(QtCore.QObject): for obj in objs: if not isinstance(obj, FlatCAMExcellon): - self.inform.emit(_("[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Excellon joining works only on Excellon objects.")) return def initialize(obj, app): @@ -4329,7 +4366,8 @@ class App(QtCore.QObject): for obj in objs: if not isinstance(obj, FlatCAMGerber): - self.inform.emit(_("[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Gerber joining works only on Gerber objects.")) return def initialize(obj, app): @@ -4353,11 +4391,13 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[ERROR_NOTCL] Failed. Select a Geometry Object and try again.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Select a Geometry Object and try again.")) return if not isinstance(obj, FlatCAMGeometry): - self.inform.emit(_("[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s") % type(obj)) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Expected a FlatCAMGeometry, got"), type(obj))) return obj.multigeo = True @@ -4370,7 +4410,8 @@ class App(QtCore.QObject): self.should_we_save = True - self.inform.emit(_("[success] A Geometry object was converted to MultiGeo type.")) + self.inform.emit('[success] %s' % + _("A Geometry object was converted to MultiGeo type.")) def on_convert_multigeo_to_singlegeo(self): """ @@ -4387,11 +4428,13 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[ERROR_NOTCL] Failed. Select a Geometry Object and try again.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Select a Geometry Object and try again.")) return if not isinstance(obj, FlatCAMGeometry): - self.inform.emit(_("[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s") % type(obj)) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Expected a FlatCAMGeometry, got %s"), type(obj))) return obj.multigeo = False @@ -4405,7 +4448,8 @@ class App(QtCore.QObject): self.should_we_save = True - self.inform.emit(_("[success] A Geometry object was converted to SingleGeo type.")) + self.inform.emit('[success] %s' % + _("A Geometry object was converted to SingleGeo type.")) def on_options_dict_change(self, field): """ @@ -4719,7 +4763,8 @@ class App(QtCore.QObject): current.to_form() self.plot_all() - self.inform.emit(_("[success] Converted units to %s") % new_units) + self.inform.emit('[success] %s: %s' % + (_("Converted units to %s"), new_units)) # self.ui.units_label.setText("[" + self.options["units"] + "]") self.set_screen_units(new_units) else: @@ -4730,7 +4775,8 @@ class App(QtCore.QObject): else: self.ui.general_defaults_form.general_app_group.units_radio.set_value('MM') self.toggle_units_ignore = False - self.inform.emit(_("[WARNING_NOTCL] Units conversion cancelled.")) + self.inform.emit('[WARNING_NOTCL]%s' % + _(" Units conversion cancelled.")) self.options_read_form() self.defaults_read_form() @@ -5467,7 +5513,8 @@ class App(QtCore.QObject): filename = str(QtWidgets.QFileDialog.getSaveFileName(caption=_("Export G-Code ..."), filter=_filter_)[0]) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Export Code cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Export Code cancelled.")) return else: try: @@ -5476,10 +5523,12 @@ class App(QtCore.QObject): for line in my_gcode: f.write(line) except FileNotFoundError: - self.inform.emit(_("[WARNING] No such file or directory")) + self.inform.emit('[WARNING] %s' % + _("No such file or directory")) return except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return @@ -5549,13 +5598,13 @@ class App(QtCore.QObject): val, ok = tool_add_popup.get_value() if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) return self.collection.get_active().on_tool_add(dia=float(val)) else: - self.inform.emit( - _("[WARNING_NOTCL] Adding Tool cancelled ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Adding Tool cancelled")) else: msgbox = QtWidgets.QMessageBox() msgbox.setText(_("Adding Tool works only when Advanced is checked.\n" @@ -5582,19 +5631,19 @@ class App(QtCore.QObject): if tool_widget == self.ncclear_tool.toolName: if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) return self.ncclear_tool.on_tool_add(dia=float(val)) else: - self.inform.emit( - _("[WARNING_NOTCL] Adding Tool cancelled ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Adding Tool cancelled")) # and only if the tool is Paint Area Tool elif tool_widget == self.paint_tool.toolName: if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) return self.paint_tool.on_tool_add(dia=float(val)) else: @@ -5604,13 +5653,13 @@ class App(QtCore.QObject): elif tool_widget == self.paste_tool.toolName: if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a tool diameter with non-zero value, in Float format.")) return self.paste_tool.on_tool_add(dia=float(val)) else: - self.inform.emit( - _("[WARNING_NOTCL] Adding Tool cancelled ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Adding Tool cancelled")) # It's meant to delete tools in tool tables via a 'Delete' shortcut key but only if certain conditions are met # See description bellow. @@ -5694,7 +5743,8 @@ class App(QtCore.QObject): pass self.delete_first_selected() - self.inform.emit(_("Object(s) deleted ...")) + self.inform.emit('%s...' % + _("Object(s) deleted")) # make sure that the selection shape is deleted, too self.delete_selection_shape() else: @@ -5717,7 +5767,8 @@ class App(QtCore.QObject): # Clear form self.setup_component_editor() - self.inform.emit("Object deleted: %s" % name) + self.inform.emit('%s: %s' % + (_("Object deleted"), name)) def on_set_origin(self): """ @@ -5776,7 +5827,8 @@ class App(QtCore.QObject): obj.options['ymin'] = b obj.options['xmax'] = c obj.options['ymax'] = d - self.inform.emit(_('[success] Origin set ...')) + self.inform.emit('[success]%s...' % + _('Origin set')) self.replot_signal.emit([]) self.worker_task.emit({'fcn': worker_task, 'params': []}) @@ -5817,7 +5869,8 @@ class App(QtCore.QObject): jump_loc = self.plotcanvas.translate_coords_2((location[0], location[1])) cursor.setPos(canvas_origin.x() + jump_loc[0], (canvas_origin.y() + jump_loc[1])) - self.inform.emit(_("[success] Done.")) + self.inform.emit('[success] %s' % + _("Done.")) return location def on_copy_object(self): @@ -5950,7 +6003,8 @@ class App(QtCore.QObject): if not self.collection.get_selected(): log.warning("App.convert_any2geo --> No object selected") - self.inform.emit(_("[WARNING_NOTCL] No object is selected. Select an object and try again.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object is selected. Select an object and try again.")) return for obj in self.collection.get_selected(): @@ -6017,7 +6071,8 @@ class App(QtCore.QObject): if not self.collection.get_selected(): log.warning("App.convert_any2gerber --> No object selected") - self.inform.emit(_("[WARNING_NOTCL] No object is selected. Select an object and try again.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object is selected. Select an object and try again.")) return for obj in self.collection.get_selected(): @@ -6126,7 +6181,8 @@ class App(QtCore.QObject): pass def on_preferences_edited(self): - self.inform.emit(_("[WARNING_NOTCL] Preferences edited but not saved.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Preferences edited but not saved.")) self.preferences_changed_flag = True def on_preferences_closed(self): @@ -6174,7 +6230,8 @@ class App(QtCore.QObject): if response == bt_yes: self.on_save_button() - self.inform.emit(_("[success] Preferences saved.")) + self.inform.emit('[success] %s' % + _("Preferences saved.")) else: self.preferences_changed_flag = False return @@ -6189,7 +6246,8 @@ class App(QtCore.QObject): ymaxlist = [] if not obj_list: - self.inform.emit(_("[WARNING_NOTCL] No object selected to Flip on Y axis.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected to Flip on Y axis.")) else: try: # first get a bounding box to fit all @@ -6214,9 +6272,11 @@ class App(QtCore.QObject): obj.mirror('X', [px, py]) obj.plot() self.object_changed.emit(obj) - self.inform.emit(_("[success] Flip on Y axis done.")) + self.inform.emit('[success] %s' % + _("Flip on Y axis done.")) except Exception as e: - self.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e)) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Flip action was not executed."), str(e))) return def on_flipx(self): @@ -6229,7 +6289,8 @@ class App(QtCore.QObject): ymaxlist = [] if not obj_list: - self.inform.emit(_("[WARNING_NOTCL] No object selected to Flip on X axis.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected to Flip on X axis.")) else: try: # first get a bounding box to fit all @@ -6254,9 +6315,11 @@ class App(QtCore.QObject): obj.mirror('Y', [px, py]) obj.plot() self.object_changed.emit(obj) - self.inform.emit(_("[success] Flip on X axis done.")) + self.inform.emit('[success] %s' % + _("Flip on X axis done.")) except Exception as e: - self.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e)) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Flip action was not executed."), str(e))) return def on_rotate(self, silent=False, preset=None): @@ -6269,7 +6332,8 @@ class App(QtCore.QObject): ymaxlist = [] if not obj_list: - self.inform.emit(_("[WARNING_NOTCL] No object selected to Rotate.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected to Rotate.")) else: if silent is False: rotatebox = FCInputDialog(title=_("Transform"), text=_("Enter the Angle value:"), @@ -6302,9 +6366,11 @@ class App(QtCore.QObject): sel_obj.rotate(-float(num), point=(px, py)) sel_obj.plot() self.object_changed.emit(sel_obj) - self.inform.emit(_("[success] Rotation done.")) + self.inform.emit('[success] %s' % + _("Rotation done.")) except Exception as e: - self.inform.emit(_("[ERROR_NOTCL] Due of %s, rotation movement was not executed.") % str(e)) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Rotation movement was not executed."), str(e))) return def on_skewx(self): @@ -6315,7 +6381,8 @@ class App(QtCore.QObject): yminlist = [] if not obj_list: - self.inform.emit(_("[WARNING_NOTCL] No object selected to Skew/Shear on X axis.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected to Skew/Shear on X axis.")) else: skewxbox = FCInputDialog(title=_("Transform"), text=_("Enter the Angle value:"), min=-360, max=360, decimals=4, @@ -6336,7 +6403,8 @@ class App(QtCore.QObject): obj.skew(num, 0, point=(xminimal, yminimal)) obj.plot() self.object_changed.emit(obj) - self.inform.emit(_("[success] Skew on X axis done.")) + self.inform.emit('[success] %s' % + _("Skew on X axis done.")) def on_skewy(self): self.report_usage("on_skewy()") @@ -6346,7 +6414,8 @@ class App(QtCore.QObject): yminlist = [] if not obj_list: - self.inform.emit(_("[WARNING_NOTCL] No object selected to Skew/Shear on Y axis.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected to Skew/Shear on Y axis.")) else: skewybox = FCInputDialog(title=_("Transform"), text=_("Enter the Angle value:"), min=-360, max=360, decimals=4, @@ -6367,7 +6436,8 @@ class App(QtCore.QObject): obj.skew(0, num, point=(xminimal, yminimal)) obj.plot() self.object_changed.emit(obj) - self.inform.emit(_("[success] Skew on Y axis done.")) + self.inform.emit('[success] %s' % + _("Skew on Y axis done.")) def on_plots_updated(self): """ @@ -6453,20 +6523,20 @@ class App(QtCore.QObject): val, ok = grid_add_popup.get_value() if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a grid value with non-zero value, in Float format.")) return else: if val not in self.defaults["global_grid_context_menu"][str(units)]: self.defaults["global_grid_context_menu"][str(units)].append(val) - self.inform.emit( - _("[success] New Grid added ...")) + self.inform.emit('[success] %s...' % + _("New Grid added")) else: - self.inform.emit( - _("[WARNING_NOTCL] Grid already exists ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Grid already exists")) else: - self.inform.emit( - _("[WARNING_NOTCL] Adding New Grid cancelled ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Adding New Grid cancelled")) def on_grid_delete(self): # ## Current application units in lower Case @@ -6480,21 +6550,21 @@ class App(QtCore.QObject): val, ok = grid_del_popup.get_value() if ok: if float(val) == 0: - self.inform.emit( - _("[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float format.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Please enter a grid value with non-zero value, in Float format.")) return else: try: self.defaults["global_grid_context_menu"][str(units)].remove(val) except ValueError: - self.inform.emit( - _("[ERROR_NOTCL] Grid Value does not exist ...")) + self.inform.emit('[ERROR_NOTCL]%s...' % + _(" Grid Value does not exist")) return - self.inform.emit( - _("[success] Grid Value deleted ...")) + self.inform.emit('[success] %s...' % + _("Grid Value deleted")) else: - self.inform.emit( - _("[WARNING_NOTCL] Delete Grid value cancelled ...")) + self.inform.emit('[WARNING_NOTCL] %s...' % + _("Delete Grid value cancelled")) def on_shortcut_list(self): self.report_usage("on_shortcut_list()") @@ -6533,7 +6603,8 @@ class App(QtCore.QObject): name = obj.options["name"] except AttributeError: log.debug("on_copy_name() --> No object selected to copy it's name") - self.inform.emit(_("[WARNING_NOTCL] No object selected to copy it's name")) + self.inform.emit('[WARNING_NOTCL]%s' % + _(" No object selected to copy it's name")) return self.clipboard.setText(name) @@ -6579,7 +6650,8 @@ class App(QtCore.QObject): self.click_noproject = True self.clipboard.setText(self.defaults["global_point_clipboard_format"] % (self.pos[0], self.pos[1])) - self.inform.emit(_("[success] Coordinates copied to clipboard.")) + self.inform.emit('[success] %s' % + _("Coordinates copied to clipboard.")) return self.on_mouse_move_over_plot(event, origin_click=True) @@ -7069,7 +7141,8 @@ class App(QtCore.QObject): self.on_file_new() else: self.on_file_new() - self.inform.emit(_("[success] New Project created...")) + self.inform.emit('[success] %s...' % + _("New Project created")) def on_file_new(self): """ @@ -7200,7 +7273,8 @@ class App(QtCore.QObject): filenames = [name] if len(filenames) == 0: - self.inform.emit(_("[WARNING_NOTCL] Open Gerber cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open Gerber cancelled.")) else: for filename in filenames: if filename != '': @@ -7230,7 +7304,8 @@ class App(QtCore.QObject): filenames = [str(name)] if len(filenames) == 0: - self.inform.emit(_("[WARNING_NOTCL] Open Excellon cancelled.")) + self.inform.emit('[WARNING_NOTCL]%s' % + _(" Open Excellon cancelled.")) else: for filename in filenames: if filename != '': @@ -7264,7 +7339,8 @@ class App(QtCore.QObject): filenames = [name] if len(filenames) == 0: - self.inform.emit(_("[WARNING_NOTCL] Open G-Code cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open G-Code cancelled.")) else: for filename in filenames: if filename != '': @@ -7292,7 +7368,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Open Project cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open Project cancelled.")) else: # self.worker_task.emit({'fcn': self.open_project, # 'params': [filename]}) @@ -7318,7 +7395,8 @@ class App(QtCore.QObject): filter=_filter_) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Open Config cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open Config cancelled.")) else: self.open_config_file(filename) @@ -7333,7 +7411,8 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) msg = _("Please Select a Geometry object to export") msgbox = QtWidgets.QMessageBox() msgbox.setInformativeText(msg) @@ -7347,7 +7426,8 @@ class App(QtCore.QObject): and not isinstance(obj, FlatCAMGerber) and not isinstance(obj, FlatCAMCNCjob) and not isinstance(obj, FlatCAMExcellon)): - msg = _("[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used.") + msg = '[ERROR_NOTCL] %s' % \ + _("Only Geometry, Gerber and CNCJob objects can be used.") msgbox = QtWidgets.QMessageBox() msgbox.setInformativeText(msg) bt_ok = msgbox.addButton(_('Ok'), QtWidgets.QMessageBox.AcceptRole) @@ -7369,7 +7449,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Export SVG cancelled.")) + self.inform.emit('[WARNING_NOTCL]%s' % + _(" Export SVG cancelled.")) return else: self.export_svg(name, filename) @@ -7388,7 +7469,8 @@ class App(QtCore.QObject): image = _screenshot() data = np.asarray(image) if not data.ndim == 3 and data.shape[-1] in (3, 4): - self.inform.emit(_('[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4')) + self.inform.emit('[[WARNING_NOTCL]] %s' % + _('Data must be a 3D array with last dimension 3 or 4')) return filter_ = "PNG File (*.png);;All Files (*.*)" @@ -7422,12 +7504,14 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected. Please select an Gerber object to export.")) + self.inform.emit('[WARNING_NOTCL] %S' % + _("No object selected. Please select an Gerber object to export.")) return # Check for more compatible types and add as required if not isinstance(obj, FlatCAMGerber): - self.inform.emit(_("[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files...")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Only Gerber objects can be saved as Gerber files...")) return name = self.collection.get_active().options["name"] @@ -7444,7 +7528,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Save Gerber source file cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Save Gerber source file cancelled.")) return else: self.save_source_file(name, filename) @@ -7463,12 +7548,14 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected. Please select an Excellon object to export.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected. Please select an Excellon object to export.")) return # Check for more compatible types and add as required if not isinstance(obj, FlatCAMExcellon): - self.inform.emit(_("[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files...")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Only Excellon objects can be saved as Excellon files...")) return name = self.collection.get_active().options["name"] @@ -7485,7 +7572,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Saving Excellon source file cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Saving Excellon source file cancelled.")) return else: self.save_source_file(name, filename) @@ -7504,12 +7592,14 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an Excellon object to export.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected. Please Select an Excellon object to export.")) return # Check for more compatible types and add as required if not isinstance(obj, FlatCAMExcellon): - self.inform.emit(_("[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files...")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Only Excellon objects can be saved as Excellon files...")) return name = self.collection.get_active().options["name"] @@ -7526,7 +7616,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Export Excellon cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Export Excellon cancelled.")) return else: self.export_excellon(name, filename) @@ -7545,12 +7636,14 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an Gerber object to export.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected. Please Select an Gerber object to export.")) return # Check for more compatible types and add as required if not isinstance(obj, FlatCAMGerber): - self.inform.emit(_("[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files...")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed. Only Gerber objects can be saved as Gerber files...")) return name = self.collection.get_active().options["name"] @@ -7567,7 +7660,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Export Gerber cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Export Gerber cancelled.")) return else: self.export_gerber(name, filename) @@ -7586,7 +7680,8 @@ class App(QtCore.QObject): obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) msg = _("Please Select a Geometry object to export") msgbox = QtWidgets.QMessageBox() msgbox.setInformativeText(msg) @@ -7597,7 +7692,8 @@ class App(QtCore.QObject): # Check for more compatible types and add as required if not isinstance(obj, FlatCAMGeometry): - msg = _("[ERROR_NOTCL] Only Geometry objects can be used.") + msg = '[ERROR_NOTCL] %s' % \ + _("Only Geometry objects can be used.") msgbox = QtWidgets.QMessageBox() msgbox.setInformativeText(msg) bt_ok = msgbox.addButton(_('Ok'), QtWidgets.QMessageBox.AcceptRole) @@ -7621,7 +7717,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Export DXF cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Export DXF cancelled.")) return else: self.export_dxf(name, filename) @@ -7653,7 +7750,8 @@ class App(QtCore.QObject): filenames = [str(filename) for filename in filenames] if len(filenames) == 0: - self.inform.emit(_("[WARNING_NOTCL] Open SVG cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open SVG cancelled.")) else: for filename in filenames: if filename != '': @@ -7685,7 +7783,8 @@ class App(QtCore.QObject): filenames = [str(filename) for filename in filenames] if len(filenames) == 0: - self.inform.emit(_("[WARNING_NOTCL] Open DXF cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open DXF cancelled.")) else: for filename in filenames: if filename != '': @@ -7723,14 +7822,16 @@ class App(QtCore.QObject): try: obj = self.collection.get_active() except: - self.inform.emit(_("[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Select an Gerber or Excellon file to view it's source file.")) return 'fail' # then append the text from GCode to the text editor try: file = StringIO(obj.source_file) except AttributeError: - self.inform.emit(_("[WARNING_NOTCL] There is no selected object for which to see it's source file code.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("There is no selected object for which to see it's source file code.")) return 'fail' if obj.kind == 'gerber': @@ -7748,7 +7849,8 @@ class App(QtCore.QObject): self.ui.code_editor.append(proc_line) except Exception as e: log.debug('App.on_view_source() -->%s' % str(e)) - self.inform.emit(_('[ERROR]App.on_view_source() -->%s') % str(e)) + self.inform.emit('[ERROR] %s %s' % + (_('App.on_view_source() -->'), str(e))) return self.ui.code_editor.moveCursor(QtGui.QTextCursor.Start) @@ -7809,7 +7911,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Open TCL script cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Open TCL script cancelled.")) else: self.on_filenewscript() @@ -7821,7 +7924,8 @@ class App(QtCore.QObject): self.ui.code_editor.append(proc_line) except Exception as e: log.debug('App.on_fileopenscript() -->%s' % str(e)) - self.inform.emit(_('[ERROR]App.on_fileopenscript() -->%s') % str(e)) + self.inform.emit('[ERROR] %s %s' % + (_('App.on_fileopenscript() -->'), str(e))) return self.ui.code_editor.moveCursor(QtGui.QTextCursor.Start) @@ -7858,7 +7962,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == "": - self.inform.emit(_("[WARNING_NOTCL] Run TCL script cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Run TCL script cancelled.")) else: try: with open(filename, "r") as tcl_script: @@ -7922,7 +8027,8 @@ class App(QtCore.QObject): filename = str(filename) if filename == '': - self.inform.emit(_("[WARNING_NOTCL] Save Project cancelled.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Save Project cancelled.")) return try: @@ -8003,14 +8109,16 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(svgcode.toprettyxml()) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' if self.defaults["global_open_style"] is False: self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) - self.inform.emit(_("[success] SVG file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("SVG file exported to"), filename)) def export_svg_negative(self, obj_name, box_name, filename, boundary, scale_factor=0.00, use_thread=True): """ @@ -8044,7 +8152,8 @@ class App(QtCore.QObject): return "Could not retrieve object: %s" % box_name if box is None: - self.inform.emit(_("[WARNING_NOTCL] No object Box. Using instead %s") % obj) + self.inform.emit('[WARNING_NOTCL] %s: %s' % + (_("No object Box. Using instead"), obj)) box = obj def make_negative_film(): @@ -8116,7 +8225,8 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(doc.toprettyxml()) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' @@ -8124,7 +8234,8 @@ class App(QtCore.QObject): if self.defaults["global_open_style"] is False: self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) - self.inform.emit(_("[success] SVG file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("SVG file exported to"), filename)) if use_thread is True: proc = self.proc_container.new(_("Generating Film ... Please wait.")) @@ -8172,7 +8283,8 @@ class App(QtCore.QObject): return "Could not retrieve object: %s" % box_name if box is None: - self.inform.emit(_("[WARNING_NOTCL] No object Box. Using instead %s") % obj) + self.inform.emit('[WARNING_NOTCL] %s: %s' % + (_("No object Box. Using instead"), obj)) box = obj def make_black_film(): @@ -8239,7 +8351,8 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(doc.toprettyxml()) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' @@ -8247,7 +8360,8 @@ class App(QtCore.QObject): if self.defaults["global_open_style"] is False: self.file_opened.emit("SVG", filename) self.file_saved.emit("SVG", filename) - self.inform.emit(_("[success] SVG file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("SVG file exported to"), filename)) if use_thread is True: proc = self.proc_container.new(_("Generating Film ... Please wait.")) @@ -8296,7 +8410,8 @@ class App(QtCore.QObject): for line in file_string: file.writelines(line) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' @@ -8409,14 +8524,16 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(exported_excellon) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' if self.defaults["global_open_style"] is False: self.file_opened.emit("Excellon", filename) self.file_saved.emit("Excellon", filename) - self.inform.emit(_("[success] Excellon file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Excellon file exported to"), filename)) except Exception as e: log.debug("App.export_excellon.make_excellon() --> %s" % str(e)) return 'fail' @@ -8428,14 +8545,16 @@ class App(QtCore.QObject): def job_thread_exc(app_obj): ret = make_excellon() if ret == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Could not export Excellon file.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Could not export Excellon file.')) return self.worker_task.emit({'fcn': job_thread_exc, 'params': [self]}) else: ret = make_excellon() if ret == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Could not export Excellon file.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Could not export Excellon file.')) return def export_gerber(self, obj_name, filename, use_thread=True): @@ -8534,14 +8653,16 @@ class App(QtCore.QObject): with open(filename, 'w') as fp: fp.write(exported_gerber) except PermissionError: - self.inform.emit(_("[WARNING] Permission denied, saving not possible.\n" + self.inform.emit('[WARNING] %s' % + _("Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible.")) return 'fail' if self.defaults["global_open_style"] is False: self.file_opened.emit("Gerber", filename) self.file_saved.emit("Gerber", filename) - self.inform.emit(_("[success] Gerber file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Gerber file exported to"), filename)) except Exception as e: log.debug("App.export_gerber.make_gerber() --> %s" % str(e)) return 'fail' @@ -8553,14 +8674,16 @@ class App(QtCore.QObject): def job_thread_exc(app_obj): ret = make_gerber() if ret == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Could not export Gerber file.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Could not export Gerber file.')) return self.worker_task.emit({'fcn': job_thread_exc, 'params': [self]}) else: ret = make_gerber() if ret == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Could not export Gerber file.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Could not export Gerber file.')) return def export_dxf(self, obj_name, filename, use_thread=True): @@ -8602,7 +8725,8 @@ class App(QtCore.QObject): if self.defaults["global_open_style"] is False: self.file_opened.emit("DXF", filename) self.file_saved.emit("DXF", filename) - self.inform.emit(_("[success] DXF file exported to %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("DXF file exported to"), filename)) except: return 'fail' @@ -8613,14 +8737,16 @@ class App(QtCore.QObject): def job_thread_exc(app_obj): ret = make_dxf() if ret == 'fail': - app_obj.inform.emit(_('[[WARNING_NOTCL]] Could not export DXF file.')) + app_obj.inform.emit('[WARNING_NOTCL] %s' % + _('Could not export DXF file.')) return self.worker_task.emit({'fcn': job_thread_exc, 'params': [self]}) else: ret = make_dxf() if ret == 'fail': - self.inform.emit(_('[[WARNING_NOTCL]] Could not export DXF file.')) + self.inform.emit('[WARNING_NOTCL] %s' % + _('Could not export DXF file.')) return def import_svg(self, filename, geo_type='geometry', outname=None): @@ -8640,7 +8766,8 @@ class App(QtCore.QObject): elif geo_type == "gerber": obj_type = geo_type else: - self.inform.emit(_("[ERROR_NOTCL] Not supported type is picked as parameter. " + self.inform.emit('[ERROR_NOTCL] %s' % + _("Not supported type is picked as parameter. " "Only Geometry and Gerber are supported")) return @@ -8661,7 +8788,8 @@ class App(QtCore.QObject): self.file_opened.emit("svg", filename) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) self.progress.emit(100) def import_dxf(self, filename, geo_type='geometry', outname=None): @@ -8682,7 +8810,8 @@ class App(QtCore.QObject): elif geo_type == "gerber": obj_type = geo_type else: - self.inform.emit(_("[ERROR_NOTCL] Not supported type is picked as parameter. " + self.inform.emit('[ERROR_NOTCL] %s' % + _("Not supported type is picked as parameter. " "Only Geometry and Gerber are supported")) return @@ -8703,7 +8832,8 @@ class App(QtCore.QObject): self.file_opened.emit("dxf", filename) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) self.progress.emit(100) def import_image(self, filename, o_type='gerber', dpi=96, mode='black', mask=[250, 250, 250, 250], outname=None): @@ -8726,7 +8856,8 @@ class App(QtCore.QObject): elif o_type == "gerber": obj_type = o_type else: - self.inform.emit(_("[ERROR_NOTCL] Not supported type is picked as parameter. " + self.inform.emit('[ERROR_NOTCL] %s' % + _("Not supported type is picked as parameter. " "Only Geometry and Gerber are supported")) return @@ -8746,7 +8877,8 @@ class App(QtCore.QObject): self.file_opened.emit("image", filename) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) self.progress.emit(100) def open_gerber(self, filename, outname=None): @@ -8775,19 +8907,22 @@ class App(QtCore.QObject): try: gerber_obj.parse_file(filename) except IOError: - app_obj.inform.emit(_("[ERROR_NOTCL] Failed to open file: %s") % filename) + app_obj.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Failed to open file"), filename)) app_obj.progress.emit(0) - self.inform.emit(_('[ERROR_NOTCL] Failed to open file: %s') % filename) return "fail" except ParseError as err: - app_obj.inform.emit(_("[ERROR_NOTCL] Failed to parse file: {name}. {error}").format(name=filename, - error=str(err))) + app_obj.inform.emit(_("{e_code} Failed to parse file: {name}. {error}").format( + e_code=_("[ERROR_NOTCL]"), + name=filename, + error=str(err))) app_obj.progress.emit(0) self.log.error(str(err)) return "fail" except Exception as e: log.debug("App.open_gerber() --> %s" % str(e)) - msg = _("[ERROR] An internal error has occurred. See shell.\n") + msg = '[ERROR] %s' % \ + _("An internal error has occurred. See shell.\n") msg += traceback.format_exc() app_obj.inform.emit(msg) return "fail" @@ -8796,7 +8931,8 @@ class App(QtCore.QObject): # app_obj.inform.emit("[ERROR] No geometry found in file: " + filename) # self.collection.set_active(gerber_obj.options["name"]) # self.collection.delete_active() - self.inform.emit(_("[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Object is not Gerber file or empty. Aborting object creation.")) return "fail" # Further parsing @@ -8814,7 +8950,8 @@ class App(QtCore.QObject): # # ## Object creation # ## ret = self.new_object("gerber", name, obj_init, autoselected=False) if ret == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file.')) + self.inform.emit('[ERROR_NOTCL]%s' % + _(' Open Gerber failed. Probable not a Gerber file.')) return # Register recent file @@ -8823,7 +8960,8 @@ class App(QtCore.QObject): self.progress.emit(100) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) def open_excellon(self, filename, outname=None): """ @@ -8847,15 +8985,18 @@ class App(QtCore.QObject): ret = excellon_obj.parse_file(filename=filename) if ret == "fail": log.debug("Excellon parsing failed.") - self.inform.emit(_("[ERROR_NOTCL] This is not Excellon file.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("This is not Excellon file.")) return "fail" except IOError: - app_obj.inform.emit(_("[ERROR_NOTCL] Cannot open file: %s") % filename) + app_obj.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Cannot open file"), filename)) log.debug("Could not open Excellon object.") self.progress.emit(0) # TODO: self and app_bjj mixed return "fail" except: - msg = _("[ERROR_NOTCL] An internal error has occurred. See shell.\n") + msg = '[ERROR_NOTCL] %s' % \ + _("An internal error has occurred. See shell.\n") msg += traceback.format_exc() app_obj.inform.emit(msg) return "fail" @@ -8868,7 +9009,8 @@ class App(QtCore.QObject): for tool in excellon_obj.tools: if excellon_obj.tools[tool]['solid_geometry']: return - app_obj.inform.emit(_("[ERROR_NOTCL] No geometry found in file: %s") % filename) + app_obj.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("No geometry found in file"), filename)) return "fail" with self.proc_container.new(_("Opening Excellon.")): @@ -8877,14 +9019,16 @@ class App(QtCore.QObject): name = outname or filename.split('/')[-1].split('\\')[-1] ret_val = self.new_object("excellon", name, obj_init, autoselected=False) if ret_val == 'fail': - self.inform.emit(_('[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file.')) + self.inform.emit('[ERROR_NOTCL] %s' % + _('Open Excellon file failed. Probable not an Excellon file.')) return # Register recent file self.file_opened.emit("excellon", filename) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) def open_gcode(self, filename, outname=None): """ @@ -8914,7 +9058,8 @@ class App(QtCore.QObject): gcode = f.read() f.close() except IOError: - app_obj_.inform.emit(_("[ERROR_NOTCL] Failed to open %s") % filename) + app_obj_.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Failed to open"), filename)) self.progress.emit(0) return "fail" @@ -8924,7 +9069,8 @@ class App(QtCore.QObject): ret = job_obj.gcode_parse() if ret == "fail": - self.inform.emit(_("[ERROR_NOTCL] This is not GCODE")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("This is not GCODE")) return "fail" self.progress.emit(60) @@ -8938,7 +9084,8 @@ class App(QtCore.QObject): # New object creation and file processing ret = self.new_object("cncjob", name, obj_init, autoselected=False) if ret == 'fail': - self.inform.emit(_("[ERROR_NOTCL] Failed to create CNCJob Object. Probable not a GCode file.\n " + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to create CNCJob Object. Probable not a GCode file.\n " "Attempting to create a FlatCAM CNCJob Object from " "G-Code file failed during processing")) return "fail" @@ -8947,7 +9094,8 @@ class App(QtCore.QObject): self.file_opened.emit("cncjob", filename) # GUI feedback - self.inform.emit(_("[success] Opened: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Opened"), filename)) self.progress.emit(100) def open_config_file(self, filename, run_from_arg=None): @@ -8978,7 +9126,8 @@ class App(QtCore.QObject): f.close() except IOError: App.log.error("Failed to open config file: %s" % filename) - self.inform.emit(_("[ERROR_NOTCL] Failed to open config file: %s") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Failed to open config file"), filename)) return def open_project(self, filename, run_from_arg=None): @@ -9006,7 +9155,8 @@ class App(QtCore.QObject): f = open(filename, 'r') except IOError: App.log.error("Failed to open project file: %s" % filename) - self.inform.emit(_("[ERROR_NOTCL] Failed to open project file: %s") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Failed to open project file"), filename)) return try: @@ -9024,7 +9174,8 @@ class App(QtCore.QObject): except Exception as e: App.log.error("Failed to open project file: %s with error: %s" % (filename, str(e))) - self.inform.emit(_("[ERROR_NOTCL] Failed to open project file: %s") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s' % + (_("Failed to open project file"), filename)) return # Clear the current project @@ -9048,12 +9199,17 @@ class App(QtCore.QObject): App.log.debug("Recreating from opened project an %s object: %s" % (obj['kind'].capitalize(), obj['options']['name'])) - self.set_ui_title(name="{} {}: {}".format(_("Loading Project ... restoring"), obj['kind'].upper(), obj['options']['name'])) + self.set_ui_title(name="{} {}: {}".format(_("Loading Project ... restoring"), + obj['kind'].upper(), + obj['options']['name'] + ) + ) self.new_object(obj['kind'], obj['options']['name'], obj_init, active=False, fit=False, plot=True) # self.plot_all() - self.inform.emit(_("[success] Project loaded from: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Project loaded from"), filename)) self.should_we_save = False self.file_opened.emit("project", filename) @@ -9368,14 +9524,16 @@ class App(QtCore.QObject): f = open(self.data_path + '/recent.json') except IOError: App.log.error("Failed to load recent item list.") - self.inform.emit(_("[ERROR_NOTCL] Failed to load recent item list.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to load recent item list.")) return try: self.recent = json.load(f) except json.scanner.JSONDecodeError: App.log.error("Failed to parse recent item list.") - self.inform.emit(_("[ERROR_NOTCL] Failed to parse recent item list.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to parse recent item list.")) f.close() return f.close() @@ -9385,14 +9543,16 @@ class App(QtCore.QObject): fp = open(self.data_path + '/recent_projects.json') except IOError: App.log.error("Failed to load recent project item list.") - self.inform.emit(_("[ERROR_NOTCL] Failed to load recent projects item list.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to load recent projects item list.")) return try: self.recent_projects = json.load(fp) except json.scanner.JSONDecodeError: App.log.error("Failed to parse recent project item list.") - self.inform.emit(_("[ERROR_NOTCL] Failed to parse recent project item list.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to parse recent project item list.")) fp.close() return fp.close() @@ -9581,14 +9741,16 @@ The normal flow when working in FlatCAM is the following:

except: # App.log.warning("Failed checking for latest version. Could not connect.") self.log.warning("Failed checking for latest version. Could not connect.") - self.inform.emit(_("[WARNING_NOTCL] Failed checking for latest version. Could not connect.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("Failed checking for latest version. Could not connect.")) return try: data = json.load(f) except Exception as e: App.log.error("Could not parse information about latest version.") - self.inform.emit(_("[ERROR_NOTCL] Could not parse information about latest version.")) + self.inform.emit('[ERROR_NOTCL] %s' % + _("Could not parse information about latest version.")) App.log.debug("json.load(): %s" % str(e)) f.close() return @@ -9598,7 +9760,8 @@ The normal flow when working in FlatCAM is the following:

# ## Latest version? if self.version >= data["version"]: App.log.debug("FlatCAM is up to date!") - self.inform.emit(_("[success] FlatCAM is up to date!")) + self.inform.emit('[success] %s' % + _("FlatCAM is up to date!")) return App.log.debug("Newer version available.") @@ -9660,25 +9823,29 @@ The normal flow when working in FlatCAM is the following:

self.report_usage("disable_all_plots()") self.disable_plots(self.collection.get_list()) - self.inform.emit(_("[success] All plots disabled.")) + self.inform.emit('[success] %s' % + _("All plots disabled.")) def disable_other_plots(self): self.report_usage("disable_other_plots()") self.disable_plots(self.collection.get_non_selected()) - self.inform.emit(_("[success] All non selected plots disabled.")) + self.inform.emit('[success] %s' % + _("All non selected plots disabled.")) def enable_all_plots(self): self.report_usage("enable_all_plots()") self.enable_plots(self.collection.get_list()) - self.inform.emit(_("[success] All plots enabled.")) + self.inform.emit('[success] %s' % + _("All plots enabled.")) def on_enable_sel_plots(self): log.debug("App.on_enable_sel_plot()") object_list = self.collection.get_selected() self.enable_plots(objects=object_list) - self.inform.emit(_("[success] Selected plots enabled...")) + self.inform.emit('[success] %s' % + _("Selected plots enabled...")) def on_disable_sel_plots(self): log.debug("App.on_disable_sel_plot()") @@ -9686,7 +9853,8 @@ The normal flow when working in FlatCAM is the following:

# self.inform.emit(_("Disabling plots ...")) object_list = self.collection.get_selected() self.disable_plots(objects=object_list) - self.inform.emit(_("[success] Selected plots disabled...")) + self.inform.emit('[success] %s' % + _("Selected plots disabled...")) def enable_plots(self, objects): """ @@ -9819,7 +9987,8 @@ The normal flow when working in FlatCAM is the following:

g = json.dumps(d, default=to_dict, indent=2, sort_keys=True).encode('utf-8') # # Write f.write(g) - self.inform.emit(_("[success] Project saved to: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Project saved to"), filename)) else: # Open file try: @@ -9837,22 +10006,28 @@ The normal flow when working in FlatCAM is the following:

try: saved_f = open(filename, 'r') except IOError: - self.inform.emit(_("[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it.") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s %s' % + (_("Failed to verify project file"), filename, _("Retry to save it.")) + ) return try: saved_d = json.load(saved_f, object_hook=dict2obj) except: - self.inform.emit( - _("[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it.") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s %s' % + (_("Failed to parse saved project file"), filename, _("Retry to save it.")) + ) f.close() return saved_f.close() if 'version' in saved_d: - self.inform.emit(_("[success] Project saved to: %s") % filename) + self.inform.emit('[success] %s: %s' % + (_("Project saved to"), filename)) else: - self.inform.emit(_("[ERROR_NOTCL] Failed to save project file: %s. Retry to save it.") % filename) + self.inform.emit('[ERROR_NOTCL] %s: %s %s' % + (_("Failed to parse saved project file"), filename, _("Retry to save it.")) + ) settings = QSettings("Open Source", "FlatCAM") lock_state = self.ui.lock_action.isChecked() @@ -9938,7 +10113,8 @@ The normal flow when working in FlatCAM is the following:

self.options_read_form() obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) return for option in self.options: if option.find(obj.kind + "_") == 0: @@ -9958,7 +10134,8 @@ The normal flow when working in FlatCAM is the following:

obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) return obj.read_form() for option in obj.options: @@ -9979,7 +10156,8 @@ The normal flow when working in FlatCAM is the following:

obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) return obj.read_form() for option in obj.options: @@ -10001,7 +10179,8 @@ The normal flow when working in FlatCAM is the following:

self.defaults_read_form() obj = self.collection.get_active() if obj is None: - self.inform.emit(_("[WARNING_NOTCL] No object selected.")) + self.inform.emit('[WARNING_NOTCL] %s' % + _("No object selected.")) return for option in self.defaults: if option.find(obj.kind + "_") == 0: diff --git a/ObjectCollection.py b/ObjectCollection.py index 3721db2b..9fe589e1 100644 --- a/ObjectCollection.py +++ b/ObjectCollection.py @@ -762,7 +762,8 @@ class ObjectCollection(QtCore.QAbstractItemModel): try: a_idx.build_ui() except Exception as e: - self.app.inform.emit(_("[ERROR] Cause of error: %s") % str(e)) + self.app.inform.emit('[ERROR] %s: %s' % + (_("Cause of error"), str(e))) raise def get_list(self): diff --git a/README.md b/README.md index 0c257283..1674667d 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ CAD program, and create G-Code for Isolation routing. - some fixes in Paint Tool when done over the Gerber objects in case that the progressive plotting is selected - some fixes in Gerber isolation in case that the progressive plotting is selected; added a 'Buffer solid geometry' button shown only when progressive plotting for Gerber object is selected. It will buffer the entire geometry of the object and plot it, in a threaded way. - modified FlatCAMObj.py file to the new string format that will allow easier translations +- modified camlib.py, FlatCAMAPp.py and ObjectCollection.py files to the new string format that will allow easier translations +- updated the POT file and the German language 8.09.2019 diff --git a/camlib.py b/camlib.py index 048711ac..9b7a1f1c 100644 --- a/camlib.py +++ b/camlib.py @@ -211,7 +211,8 @@ class Geometry(object): if isinstance(self.solid_geometry, list): return len(self.solid_geometry) == 0 - self.app.inform.emit(_("[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list.")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("self.solid_geometry is neither BaseGeometry or list.")) return def subtract_polygon(self, points): @@ -1517,9 +1518,11 @@ class Geometry(object): self.el_count = 0 self.solid_geometry = mirror_geom(self.solid_geometry) - self.app.inform.emit(_('[success] Object was mirrored ...')) + self.app.inform.emit('[success] %s...' % + _('Object was mirrored')) except AttributeError: - self.app.inform.emit(_("[ERROR_NOTCL] Failed to mirror. No object selected")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to mirror. No object selected")) self.app.proc_container.new_text = '' @@ -1587,9 +1590,11 @@ class Geometry(object): self.el_count = 0 self.solid_geometry = rotate_geom(self.solid_geometry) - self.app.inform.emit(_('[success] Object was rotated ...')) + self.app.inform.emit('[success] %s...' % + _('Object was rotated')) except AttributeError: - self.app.inform.emit(_("[ERROR_NOTCL] Failed to rotate. No object selected")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to rotate. No object selected")) self.app.proc_container.new_text = '' @@ -1656,9 +1661,11 @@ class Geometry(object): self.el_count = 0 self.solid_geometry = skew_geom(self.solid_geometry) - self.app.inform.emit(_('[success] Object was skewed ...')) + self.app.inform.emit('[success] %s...' % + _('Object was skewed')) except AttributeError: - self.app.inform.emit(_("[ERROR_NOTCL] Failed to skew. No object selected")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Failed to skew. No object selected")) self.app.proc_container.new_text = '' @@ -2931,8 +2938,10 @@ class Gerber (Geometry): self.apertures['0']['geometry'] = [] last_path_aperture = '0' else: - self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) - self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!")) + self.app.inform.emit('[WARNING] %s: %s' % + (_("Coordinates missing, line ignored"), str(gline))) + self.app.inform.emit('[WARNING_NOTCL] %s' % + _("GERBER file might be CORRUPT. Check the file !!!")) elif current_operation_code == 2: if len(path) > 1: @@ -2981,9 +2990,10 @@ class Gerber (Geometry): geo_s = Polygon(path) except ValueError: log.warning("Problem %s %s" % (gline, line_num)) - self.app.inform.emit(_("[ERROR] Region does not have enough points. " - "File will be processed but there are parser errors. " - "Line number: %s") % str(line_num)) + self.app.inform.emit('[ERROR] %s: %s' % + (_("Region does not have enough points. " + "File will be processed but there are parser errors. " + "Line number"), str(line_num))) else: if last_path_aperture is None: log.warning("No aperture defined for curent path. (%d)" % line_num) @@ -3016,8 +3026,10 @@ class Gerber (Geometry): if linear_x is not None and linear_y is not None: path = [[linear_x, linear_y]] # Start new path else: - self.app.inform.emit(_("[WARNING] Coordinates missing, line ignored: %s") % str(gline)) - self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!")) + self.app.inform.emit('[WARNING] %s: %s' % + (_("Coordinates missing, line ignored"), str(gline))) + self.app.inform.emit('[WARNING_NOTCL] %s' % + _("GERBER file might be CORRUPT. Check the file !!!")) # Flash # Not allowed in region mode. @@ -3376,7 +3388,8 @@ class Gerber (Geometry): log.error("Gerber PARSING FAILED. Line %d: %s" % (line_num, gline)) loc = '%s #%d %s: %s\n' % (_("Gerber Line"), line_num, _("Gerber Line Content"), gline) + repr(err) - self.app.inform.emit('[ERROR] %s\n%s:' % (_("Gerber Parser ERROR"), loc)) + self.app.inform.emit('[ERROR] %s\n%s:' % + (_("Gerber Parser ERROR"), loc)) @staticmethod def create_flash_geometry(location, aperture, steps_per_circle=None): @@ -3623,7 +3636,8 @@ class Gerber (Geometry): log.debug('camlib.Gerber.scale() Exception --> %s' % str(e)) return 'fail' - self.app.inform.emit('[success] %s' % _("Gerber Scale done.")) + self.app.inform.emit('[success] %s' % + _("Gerber Scale done.")) self.app.proc_container.new_text = '' # ## solid_geometry ??? @@ -3712,7 +3726,8 @@ class Gerber (Geometry): log.debug('camlib.Gerber.offset() Exception --> %s' % str(e)) return 'fail' - self.app.inform.emit('[success] %s' % _("Gerber Offset done.")) + self.app.inform.emit('[success] %s' % + _("Gerber Offset done.")) self.app.proc_container.new_text = '' def mirror(self, axis, point): @@ -3788,7 +3803,8 @@ class Gerber (Geometry): log.debug('camlib.Gerber.mirror() Exception --> %s' % str(e)) return 'fail' - self.app.inform.emit('[success] %s' % _("Gerber Mirror done.")) + self.app.inform.emit('[success] %s' % + _("Gerber Mirror done.")) self.app.proc_container.new_text = '' def skew(self, angle_x, angle_y, point): @@ -3856,7 +3872,8 @@ class Gerber (Geometry): log.debug('camlib.Gerber.skew() Exception --> %s' % str(e)) return 'fail' - self.app.inform.emit('[success] %s' % _("Gerber Skew done.")) + self.app.inform.emit('[success] %s' % + _("Gerber Skew done.")) self.app.proc_container.new_text = '' def rotate(self, angle, point): @@ -3916,7 +3933,8 @@ class Gerber (Geometry): except Exception as e: log.debug('camlib.Gerber.rotate() Exception --> %s' % str(e)) return 'fail' - self.app.inform.emit('[success] %s' % _("Gerber Rotate done.")) + self.app.inform.emit('[success] %s' % + _("Gerber Rotate done.")) self.app.proc_container.new_text = '' @@ -4202,7 +4220,8 @@ class Excellon(Geometry): # and we need to exit from here if self.detect_gcode_re.search(eline): log.warning("This is GCODE mark: %s" % eline) - self.app.inform.emit(_('[ERROR_NOTCL] This is GCODE mark: %s') % eline) + self.app.inform.emit('[ERROR_NOTCL] %s: %s' % + (_('This is GCODE mark'), eline)) return # Header Begin (M48) # @@ -4317,13 +4336,18 @@ class Excellon(Geometry): # the bellow construction is so each tool will have a slightly different diameter # starting with a default value, to allow Excellon editing after that self.diameterless = True - self.app.inform.emit(_("[WARNING] No tool diameter info's. See shell.\n" - "A tool change event: T%s was found but the Excellon file " - "have no informations regarding the tool " - "diameters therefore the application will try to load it by " - "using some 'fake' diameters.\nThe user needs to edit the " - "resulting Excellon object and change the diameters to " - "reflect the real diameters.") % current_tool) + self.app.inform.emit('[WARNING] %s%s %s' % + (_("No tool diameter info's. See shell.\n" + "A tool change event: T"), + str(current_tool), + _("was found but the Excellon file " + "have no informations regarding the tool " + "diameters therefore the application will try to load it " + "by using some 'fake' diameters.\n" + "The user needs to edit the resulting Excellon object and " + "change the diameters to reflect the real diameters.") + ) + ) if self.excellon_units == 'MM': diam = self.toolless_diam + (int(current_tool) - 1) / 100 @@ -4769,9 +4793,12 @@ class Excellon(Geometry): log.info("Zeros: %s, Units %s." % (self.zeros, self.units)) except Exception as e: log.error("Excellon PARSING FAILED. Line %d: %s" % (line_num, eline)) - msg = _("[ERROR_NOTCL] An internal error has ocurred. See shell.\n") - msg += _('[ERROR] Excellon Parser error.\nParsing Failed. Line {l_nr}: {line}\n').format(l_nr=line_num, - line=eline) + msg = '[ERROR_NOTCL] %s' % \ + _("An internal error has ocurred. See shell.\n") + msg += _('{e_code} Excellon Parser error.\nParsing Failed. Line {l_nr}: {line}\n').format( + e_code='[ERROR]', + l_nr=line_num, + line=eline) msg += traceback.format_exc() self.app.inform.emit(msg) @@ -4850,7 +4877,8 @@ class Excellon(Geometry): for drill in self.drills: # poly = drill['point'].buffer(self.tools[drill['tool']]["C"]/2.0) if drill['tool'] is '': - self.app.inform.emit(_("[WARNING] Excellon.create_geometry() -> a drill location was skipped " + self.app.inform.emit('[WARNING] %s' % + _("Excellon.create_geometry() -> a drill location was skipped " "due of not having a tool associated.\n" "Check the resulting GCode.")) log.debug("Excellon.create_geometry() -> a drill location was skipped " @@ -5523,7 +5551,8 @@ class CNCjob(Geometry): try: value = getattr(self, command) except AttributeError: - self.app.inform.emit(_("[ERROR] There is no such parameter: %s") % str(match)) + self.app.inform.emit('[ERROR] %s: %s' % + (_("There is no such parameter"), str(match))) log.debug("CNCJob.parse_custom_toolchange_code() --> AttributeError ") return 'fail' text = text.replace(match, str(value)) @@ -5593,15 +5622,17 @@ class CNCjob(Geometry): self.exc_tools = deepcopy(exobj.tools) if drillz > 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter has positive value. " + self.app.inform.emit('[WARNING] %s' % + _("The Cut Z parameter has positive value. " "It is the depth value to drill into material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative. " "Check the resulting CNC code (Gcode etc).")) self.z_cut = -drillz elif drillz == 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter is zero. " - "There will be no cut, skipping %s file") % exobj.options['name']) + self.app.inform.emit('[WARNING] %s: %s' % + (_("The Cut Z parameter is zero. There will be no cut, skipping file"), + exobj.options['name'])) return 'fail' else: self.z_cut = drillz @@ -5614,7 +5645,8 @@ class CNCjob(Geometry): else: self.xy_toolchange = [float(eval(a)) for a in toolchangexy.split(",")] if len(self.xy_toolchange) < 2: - self.app.inform.emit(_("[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be " + self.app.inform.emit('[ERROR]%s' % + _("The Toolchange X,Y field in Edit -> Preferences has to be " "in the format (x, y) \nbut now there is only one value, not two. ")) return 'fail' except Exception as e: @@ -5733,7 +5765,8 @@ class CNCjob(Geometry): measured_up_to_zero_distance = 0.0 measured_lift_distance = 0.0 - self.app.inform.emit('%s...' % _("Starting G-Code")) + self.app.inform.emit('%s...' % + _("Starting G-Code")) current_platform = platform.architecture()[0] if current_platform == '64bit': if excellon_optimization_type == 'M': @@ -5885,12 +5918,14 @@ class CNCjob(Geometry): old_disp_number = disp_number else: - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('G91 coordinates not implemented')) return 'fail' else: log.debug("camlib.CNCJob.generate_from_excellon_by_tool() --> " "The loaded Excellon file has no drills ...") - self.app.inform.emit(_('[ERROR_NOTCL] The loaded Excellon file has no drills ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('The loaded Excellon file has no drills')) return 'fail' log.debug("The total travel distance with OR-TOOLS Metaheuristics is: %s" % str(measured_distance)) @@ -6029,17 +6064,20 @@ class CNCjob(Geometry): old_disp_number = disp_number else: - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('G91 coordinates not implemented')) return 'fail' else: log.debug("camlib.CNCJob.generate_from_excellon_by_tool() --> " "The loaded Excellon file has no drills ...") - self.app.inform.emit(_('[ERROR_NOTCL] The loaded Excellon file has no drills ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('The loaded Excellon file has no drills')) return 'fail' log.debug("The total travel distance with OR-TOOLS Basic Algorithm is: %s" % str(measured_distance)) else: - self.app.inform.emit(_("[ERROR_NOTCL] Wrong optimization type selected.")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Wrong optimization type selected.")) return 'fail' else: log.debug("Using Travelling Salesman drill path optimization.") @@ -6133,12 +6171,14 @@ class CNCjob(Geometry): self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number else: - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('G91 coordinates not implemented')) return 'fail' else: log.debug("camlib.CNCJob.generate_from_excellon_by_tool() --> " "The loaded Excellon file has no drills ...") - self.app.inform.emit(_('[ERROR_NOTCL] The loaded Excellon file has no drills ...')) + self.app.inform.emit('[ERROR_NOTCL] %s...' % + _('The loaded Excellon file has no drills')) return 'fail' log.debug("The total travel distance with Travelling Salesman Algorithm is: %s" % str(measured_distance)) @@ -6249,20 +6289,23 @@ class CNCjob(Geometry): self.f_plunge = self.app.defaults["geometry_f_plunge"] if self.z_cut is None: - self.app.inform.emit(_("[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad combinations of " + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Cut_Z parameter is None or zero. Most likely a bad combinations of " "other parameters.")) return 'fail' if self.z_cut > 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter has positive value. " + self.app.inform.emit('[WARNING] %s' % + _("The Cut Z parameter has positive value. " "It is the depth value to cut into material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative." "Check the resulting CNC code (Gcode etc).")) self.z_cut = -self.z_cut elif self.z_cut == 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter is zero. " - "There will be no cut, skipping %s file") % self.options['name']) + self.app.inform.emit('[WARNING] %s: %s' % + (_("The Cut Z parameter is zero. There will be no cut, skipping file"), + self.options['name'])) return 'fail' # made sure that depth_per_cut is no more then the z_cut @@ -6270,19 +6313,22 @@ class CNCjob(Geometry): self.z_depthpercut = abs(self.z_cut) if self.z_move is None: - self.app.inform.emit(_("[ERROR_NOTCL] Travel Z parameter is None or zero.")) + self.app.inform.emit('[ERROR_NOTCL] %S' % + _("Travel Z parameter is None or zero.")) return 'fail' if self.z_move < 0: - self.app.inform.emit(_("[WARNING] The Travel Z parameter has negative value. " + self.app.inform.emit('[WARNING] %s' % + _("The Travel Z parameter has negative value. " "It is the height value to travel between cuts.\n" "The Z Travel parameter needs to have a positive value, assuming it is a typo " "therefore the app will convert the value to positive." "Check the resulting CNC code (Gcode etc).")) self.z_move = -self.z_move elif self.z_move == 0: - self.app.inform.emit(_("[WARNING] The Z Travel parameter is zero. " - "This is dangerous, skipping %s file") % self.options['name']) + self.app.inform.emit('[WARNING] %s: %s' % + (_("The Z Travel parameter is zero. This is dangerous, skipping file"), + self.options['name'])) return 'fail' # ## Index first and last points in paths @@ -6436,7 +6482,12 @@ class CNCjob(Geometry): self.gcode += self.doformat(p.spindle_stop_code) self.gcode += self.doformat(p.lift_code, x=current_pt[0], y=current_pt[1]) self.gcode += self.doformat(p.end_code, x=0, y=0) - self.app.inform.emit(_("Finished G-Code generation... %s paths traced.") % str(path_count)) + self.app.inform.emit('%s... %s %s.' % + (_("Finished G-Code generation"), + str(path_count), + _("paths traced") + ) + ) return self.gcode def generate_from_geometry_2(self, geometry, append=True, @@ -6468,13 +6519,15 @@ class CNCjob(Geometry): """ if not isinstance(geometry, Geometry): - self.app.inform.emit(_("[ERROR]Expected a Geometry, got %s") % type(geometry)) + self.app.inform.emit('[ERROR] %s: %s' % + (_("Expected a Geometry, got"), type(geometry))) return 'fail' log.debug("Generate_from_geometry_2()") # if solid_geometry is empty raise an exception if not geometry.solid_geometry: - self.app.inform.emit(_("[ERROR_NOTCL] Trying to generate a CNC Job " + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Trying to generate a CNC Job " "from a Geometry object without solid_geometry.")) temp_solid_geometry = [] @@ -6513,7 +6566,8 @@ class CNCjob(Geometry): # if the offset is less than half of the total length or less than half of the total width of the # solid geometry it's obvious we can't do the offset if -offset > ((c - a) / 2) or -offset > ((d - b) / 2): - self.app.inform.emit(_("[ERROR_NOTCL] The Tool Offset value is too negative to use " + self.app.inform.emit(_('[ERROR_NOTCL] %s' % + "The Tool Offset value is too negative to use " "for the current_geometry.\n" "Raise the value (in module) and try again.")) return 'fail' @@ -6565,7 +6619,8 @@ class CNCjob(Geometry): else: self.xy_toolchange = [float(eval(a)) for a in toolchangexy.split(",")] if len(self.xy_toolchange) < 2: - self.app.inform.emit(_("[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be " + self.app.inform.emit('[ERROR] %s' % + _("The Toolchange X,Y field in Edit -> Preferences has to be " "in the format (x, y) \nbut now there is only one value, not two. ")) return 'fail' except Exception as e: @@ -6576,36 +6631,42 @@ class CNCjob(Geometry): self.f_plunge = self.app.defaults["geometry_f_plunge"] if self.z_cut is None: - self.app.inform.emit(_("[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad combinations of " + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Cut_Z parameter is None or zero. Most likely a bad combinations of " "other parameters.")) return 'fail' if self.z_cut > 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter has positive value. " + self.app.inform.emit('[WARNING] %s' % + _("The Cut Z parameter has positive value. " "It is the depth value to cut into material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative." "Check the resulting CNC code (Gcode etc).")) self.z_cut = -self.z_cut elif self.z_cut == 0: - self.app.inform.emit(_("[WARNING] The Cut Z parameter is zero. " - "There will be no cut, skipping %s file") % geometry.options['name']) + self.app.inform.emit('[WARNING] %s: %s' % + (_("The Cut Z parameter is zero. There will be no cut, skipping file"), + geometry.options['name'])) return 'fail' if self.z_move is None: - self.app.inform.emit(_("[ERROR_NOTCL] Travel Z parameter is None or zero.")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("Travel Z parameter is None or zero.")) return 'fail' if self.z_move < 0: - self.app.inform.emit(_("[WARNING] The Travel Z parameter has negative value. " + self.app.inform.emit('[WARNING] %s' % + _("The Travel Z parameter has negative value. " "It is the height value to travel between cuts.\n" "The Z Travel parameter needs to have a positive value, assuming it is a typo " "therefore the app will convert the value to positive." "Check the resulting CNC code (Gcode etc).")) self.z_move = -self.z_move elif self.z_move == 0: - self.app.inform.emit(_("[WARNING] The Z Travel parameter is zero. " - "This is dangerous, skipping %s file") % self.options['name']) + self.app.inform.emit('[WARNING] %s: %s' % + (_("The Z Travel parameter is zero. " + "This is dangerous, skipping file"), self.options['name'])) return 'fail' # made sure that depth_per_cut is no more then the z_cut @@ -6763,7 +6824,12 @@ class CNCjob(Geometry): self.gcode += self.doformat(p.spindle_stop_code) self.gcode += self.doformat(p.lift_code, x=current_pt[0], y=current_pt[1]) self.gcode += self.doformat(p.end_code, x=0, y=0) - self.app.inform.emit(_("Finished G-Code generation... %s paths traced.") % str(path_count)) + self.app.inform.emit('%s... %s %s' % + (_("Finished G-Code generation"), + str(path_count), + _(" paths traced.") + ) + ) return self.gcode @@ -6789,7 +6855,8 @@ class CNCjob(Geometry): if not kwargs: log.debug("camlib.generate_from_solderpaste_geo() --> No tool in the solderpaste geometry.") - self.app.inform.emit(_("[ERROR_NOTCL] There is no tool data in the SolderPaste geometry.")) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _("There is no tool data in the SolderPaste geometry.")) # this is the tool diameter, it is used as such to accommodate the postprocessor who need the tool diameter @@ -6875,7 +6942,13 @@ class CNCjob(Geometry): pass log.debug("Finishing SolderPste G-Code... %s paths traced." % path_count) - self.app.inform.emit(_("Finished SolderPste G-Code generation... %s paths traced.") % str(path_count)) + self.app.inform.emit('%s... %s %s' % + (_("Finished SolderPste G-Code generation"), + str(path_count), + _("paths traced.") + ) + ) + # Finish self.gcode += self.doformat(p.lift_code) @@ -7344,7 +7417,8 @@ class CNCjob(Geometry): visible=visible, layer=1) else: # For Incremental coordinates type G91 - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _('G91 coordinates not implemented ...')) for geo in gcode_parsed: if geo['kind'][0] == 'T': current_position = geo['geom'].coords[0] @@ -7621,7 +7695,8 @@ class CNCjob(Geometry): # For Incremental coordinates type G91 # next_x = pt[0] - prev_x # next_y = pt[1] - prev_y - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _('G91 coordinates not implemented ...')) next_x = pt[0] next_y = pt[1] @@ -7723,7 +7798,8 @@ class CNCjob(Geometry): # For Incremental coordinates type G91 # next_x = pt[0] - prev_x # next_y = pt[1] - prev_y - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _('G91 coordinates not implemented ...')) next_x = pt[0] next_y = pt[1] @@ -7769,7 +7845,8 @@ class CNCjob(Geometry): # For Incremental coordinates type G91 # first_x = path[0][0] - old_point[0] # first_y = path[0][1] - old_point[1] - self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) + self.app.inform.emit('[ERROR_NOTCL] %s' % + _('G91 coordinates not implemented ...')) first_x = path[0][0] first_y = path[0][1] diff --git a/locale/de/LC_MESSAGES/strings.mo b/locale/de/LC_MESSAGES/strings.mo index 91f2fd886219dc1e9d1d18c52ff316a4fc5197fd..208040922f7e5943dcbc0b7e5575a2982a51d1cb 100644 GIT binary patch delta 54290 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 delta 55821 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 Bjz0hZ diff --git a/locale/de/LC_MESSAGES/strings.po b/locale/de/LC_MESSAGES/strings.po index 075ad613..4648c4a0 100644 --- a/locale/de/LC_MESSAGES/strings.po +++ b/locale/de/LC_MESSAGES/strings.po @@ -1,15 +1,15 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-09-07 22:21+0300\n" -"PO-Revision-Date: 2019-09-07 23:14+0300\n" +"POT-Creation-Date: 2019-09-09 18:59+0300\n" +"PO-Revision-Date: 2019-09-09 19:29+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.0.7\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SearchPath-0: .\n" @@ -17,17 +17,17 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: doc\n" "X-Poedit-SearchPathExcluded-2: tests\n" -#: FlatCAMApp.py:1104 -msgid "[ERROR] Could not find the Language files. The App strings are missing." +#: FlatCAMApp.py:1113 +msgid "Could not find the Language files. The App strings are missing." msgstr "" -"[ERROR] Die Sprachdateien konnten nicht gefunden werden. Die App-" -"Zeichenfolgen fehlen." +"Die Sprachdateien konnten nicht gefunden werden. Die App-Zeichenfolgen " +"fehlen." -#: FlatCAMApp.py:1646 +#: FlatCAMApp.py:1655 msgid "Detachable Tabs" msgstr "Abnehmbare Laschen" -#: FlatCAMApp.py:2058 +#: FlatCAMApp.py:2067 msgid "" "Open Source Software - Type help to get started\n" "\n" @@ -35,163 +35,162 @@ msgstr "" "Quelloffene Software - Geben Sie help ein, um zu beginnen\n" "\n" -#: FlatCAMApp.py:2253 FlatCAMApp.py:6878 +#: FlatCAMApp.py:2270 FlatCAMApp.py:7220 msgid "New Project - Not saved" msgstr "Neues Projekt - Nicht gespeichert" -#: FlatCAMApp.py:2299 ObjectCollection.py:80 flatcamTools/ToolImage.py:218 +#: FlatCAMApp.py:2320 ObjectCollection.py:80 flatcamTools/ToolImage.py:218 #: flatcamTools/ToolPcbWizard.py:301 flatcamTools/ToolPcbWizard.py:324 msgid "Open cancelled." msgstr "Geöffnet storniert." -#: FlatCAMApp.py:2314 +#: FlatCAMApp.py:2335 msgid "Open Config file failed." msgstr "Open Config-Datei ist fehlgeschlagen." -#: FlatCAMApp.py:2328 +#: FlatCAMApp.py:2349 msgid "Open Script file failed." msgstr "Open Script-Datei ist fehlgeschlagen." -#: FlatCAMApp.py:2345 +#: FlatCAMApp.py:2366 msgid "Open Excellon file failed." msgstr "Öffnen der Excellon-Datei fehlgeschlagen." -#: FlatCAMApp.py:2356 +#: FlatCAMApp.py:2377 msgid "Open GCode file failed." msgstr "Öffnen der GCode-Datei fehlgeschlagen." -#: FlatCAMApp.py:2367 +#: FlatCAMApp.py:2388 msgid "Open Gerber file failed." msgstr "Öffnen der Gerber-Datei fehlgeschlagen." -#: FlatCAMApp.py:2569 -msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." +#: FlatCAMApp.py:2652 +msgid "Select a Geometry, Gerber or Excellon Object to edit." msgstr "" -"[WARNING_NOTCL] Wählen Sie ein zu bearbeitendes Geometrie-, Gerber- oder " -"Excellon-Objekt aus." +"Wählen Sie ein zu bearbeitendes Geometrie-, Gerber- oder Excellon-Objekt aus." -#: FlatCAMApp.py:2582 +#: FlatCAMApp.py:2666 msgid "" -"[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo " -"Geometry is not possible.\n" +"Simultanoeus editing of tools geometry in a MultiGeo Geometry is not " +"possible.\n" "Edit only one geometry at a time." msgstr "" -"[WARNING_NOTCL] Die gleichzeitige Bearbeitung der Werkzeuggeometrie in einer " -"Multi-Geo-Geometrie ist nicht möglich.\n" +"Die gleichzeitige Bearbeitung der Werkzeuggeometrie in einer Multi-Geo-" +"Geometrie ist nicht möglich.\n" "Bearbeiten Sie jeweils nur eine Geometrie." -#: FlatCAMApp.py:2636 -msgid "[WARNING_NOTCL] Editor is activated ..." -msgstr "[WARNING_NOTCL] Editor ist aktiviert ..." +#: FlatCAMApp.py:2721 +msgid "Editor is activated ..." +msgstr "Editor ist aktiviert ..." -#: FlatCAMApp.py:2654 +#: FlatCAMApp.py:2739 msgid "Do you want to save the edited object?" msgstr "Möchten Sie das bearbeitete Objekt speichern?" -#: FlatCAMApp.py:2655 flatcamGUI/FlatCAMGUI.py:1721 +#: FlatCAMApp.py:2740 flatcamGUI/FlatCAMGUI.py:1721 msgid "Close Editor" msgstr "Editor schließen" -#: FlatCAMApp.py:2658 FlatCAMApp.py:3786 FlatCAMApp.py:5899 FlatCAMApp.py:6787 +#: FlatCAMApp.py:2743 FlatCAMApp.py:4028 FlatCAMApp.py:6224 FlatCAMApp.py:7128 #: FlatCAMTranslation.py:96 FlatCAMTranslation.py:169 #: flatcamGUI/FlatCAMGUI.py:3996 msgid "Yes" msgstr "Ja" -#: FlatCAMApp.py:2659 FlatCAMApp.py:3787 FlatCAMApp.py:5900 FlatCAMApp.py:6788 +#: FlatCAMApp.py:2744 FlatCAMApp.py:4029 FlatCAMApp.py:6225 FlatCAMApp.py:7129 #: FlatCAMTranslation.py:97 FlatCAMTranslation.py:170 -#: flatcamGUI/FlatCAMGUI.py:3997 flatcamGUI/FlatCAMGUI.py:6503 -#: flatcamGUI/FlatCAMGUI.py:6852 flatcamTools/ToolNonCopperClear.py:171 +#: flatcamGUI/FlatCAMGUI.py:3997 flatcamGUI/FlatCAMGUI.py:6517 +#: flatcamGUI/FlatCAMGUI.py:6877 flatcamTools/ToolNonCopperClear.py:171 #: flatcamTools/ToolPaint.py:144 msgid "No" msgstr "Nein" -#: FlatCAMApp.py:2660 FlatCAMApp.py:3788 FlatCAMApp.py:4405 FlatCAMApp.py:5401 -#: FlatCAMApp.py:6789 +#: FlatCAMApp.py:2745 FlatCAMApp.py:4030 FlatCAMApp.py:4719 FlatCAMApp.py:5720 +#: FlatCAMApp.py:7130 msgid "Cancel" msgstr "Kündigen" -#: FlatCAMApp.py:2687 -msgid "[WARNING] Object empty after edit." -msgstr "[WARNING] Das Objekt ist nach der Bearbeitung leer." +#: FlatCAMApp.py:2773 +msgid "Object empty after edit." +msgstr "Das Objekt ist nach der Bearbeitung leer." -#: FlatCAMApp.py:2709 FlatCAMApp.py:2728 FlatCAMApp.py:2740 -msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." +#: FlatCAMApp.py:2796 FlatCAMApp.py:2817 FlatCAMApp.py:2830 +msgid "Select a Gerber, Geometry or Excellon Object to update." msgstr "" -"[WARNING_NOTCL] Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum " -"Aktualisieren aus." +"Wählen Sie ein Gerber-, Geometrie- oder Excellon-Objekt zum Aktualisieren " +"aus." -#: FlatCAMApp.py:2712 -#, python-format -msgid "[selected] %s is updated, returning to App..." -msgstr "[selected] %s wird aktualisiert und kehrt zur App zurück ..." +#: FlatCAMApp.py:2800 +msgid "is updated, returning to App..." +msgstr "wird aktualisiert und kehrt zur App zurück ..." -#: FlatCAMApp.py:3077 -msgid "[ERROR] Could not load defaults file." -msgstr "[ERROR] Standarddatei konnte nicht geladen werden." +#: FlatCAMApp.py:3186 FlatCAMApp.py:3240 FlatCAMApp.py:3889 +msgid "Could not load defaults file." +msgstr "Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:3089 -msgid "[ERROR] Failed to parse defaults file." -msgstr "[ERROR] Fehler beim Parsen der Standarddatei." +#: FlatCAMApp.py:3199 FlatCAMApp.py:3249 FlatCAMApp.py:3899 +msgid "Failed to parse defaults file." +msgstr " Fehler beim Parsen der Standarddatei." -#: FlatCAMApp.py:3110 FlatCAMApp.py:3114 +#: FlatCAMApp.py:3220 FlatCAMApp.py:3224 msgid "Import FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen importieren" -#: FlatCAMApp.py:3120 -msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." -msgstr "[WARNING_NOTCL] Import der FlatCAM-Einstellungen wurde abgebrochen." +#: FlatCAMApp.py:3231 +msgid "FlatCAM preferences import cancelled." +msgstr "Import der FlatCAM-Einstellungen wurde abgebrochen." -#: FlatCAMApp.py:3128 FlatCAMApp.py:3187 FlatCAMApp.py:3662 -msgid "[ERROR_NOTCL] Could not load defaults file." -msgstr "[ERROR_NOTCL] Standarddatei konnte nicht geladen werden." +#: FlatCAMApp.py:3254 +msgid "Imported Defaults from" +msgstr "Importierte Standardwerte aus" -#: FlatCAMApp.py:3136 FlatCAMApp.py:3671 -msgid "[ERROR_NOTCL] Failed to parse defaults file." -msgstr "[ERROR_NOTCL] Fehler beim Parsen der Standarddatei." - -#: FlatCAMApp.py:3140 -#, python-format -msgid "[success] Imported Defaults from %s" -msgstr "[success] Importierte Standardwerte aus %s" - -#: FlatCAMApp.py:3155 FlatCAMApp.py:3160 +#: FlatCAMApp.py:3274 FlatCAMApp.py:3279 msgid "Export FlatCAM Preferences" msgstr "FlatCAM-Voreinstellungen exportieren" -#: FlatCAMApp.py:3167 -msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." -msgstr "[WARNING_NOTCL] Export der FlatCAM-Einstellungen wurde abgebrochen." +#: FlatCAMApp.py:3287 +msgid "FlatCAM preferences export cancelled." +msgstr "Export der FlatCAM-Einstellungen wurde abgebrochen." -#: FlatCAMApp.py:3175 FlatCAMApp.py:5212 FlatCAMApp.py:7737 FlatCAMApp.py:7850 -#: FlatCAMApp.py:7973 FlatCAMApp.py:8030 FlatCAMApp.py:8143 FlatCAMApp.py:8268 -#: FlatCAMObj.py:6104 +#: FlatCAMApp.py:3296 FlatCAMApp.py:5531 FlatCAMApp.py:8113 FlatCAMApp.py:8229 +#: FlatCAMApp.py:8355 FlatCAMApp.py:8414 FlatCAMApp.py:8528 FlatCAMApp.py:8657 +#: FlatCAMObj.py:6165 flatcamTools/ToolSolderPaste.py:1428 msgid "" -"[WARNING] Permission denied, saving not possible.\n" +"Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible." msgstr "" -"[WARNING] Berechtigung verweigert, Speichern nicht möglich.\n" +"Berechtigung verweigert, Speichern nicht möglich.\n" "Wahrscheinlich hält eine andere App die Datei offen und ist nicht zugänglich." -#: FlatCAMApp.py:3206 FlatCAMApp.py:3716 -msgid "[ERROR_NOTCL] Failed to write defaults to file." -msgstr "[ERROR_NOTCL] Fehler beim Schreiben der Standardwerte in die Datei." +#: FlatCAMApp.py:3309 +msgid "Could not load preferences file." +msgstr "Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:3266 -msgid "[ERROR_NOTCL] Failed to open recent files file for writing." -msgstr "" -"[ERROR_NOTCL] Fehler beim Öffnen der zuletzt geöffneten Datei zum Schreiben." +#: FlatCAMApp.py:3329 FlatCAMApp.py:3945 +msgid "Failed to write defaults to file." +msgstr "Fehler beim Schreiben der Standardwerte in die Datei." -#: FlatCAMApp.py:3276 -msgid "[ERROR_NOTCL] Failed to open recent projects file for writing." -msgstr "" -"[ERROR_NOTCL] Fehler beim Öffnen der letzten Projektdatei zum Schreiben." +#: FlatCAMApp.py:3335 +msgid "Exported preferences to" +msgstr "Exportierte Einstellungen nach" -#: FlatCAMApp.py:3358 camlib.py:4703 -msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" -msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" +#: FlatCAMApp.py:3352 +msgid "FlatCAM Preferences Folder opened." +msgstr "FlatCAM-Einstellungsordner geöffnet." -#: FlatCAMApp.py:3359 +#: FlatCAMApp.py:3425 +msgid "Failed to open recent files file for writing." +msgstr "Fehler beim Öffnen der zuletzt geöffneten Datei zum Schreiben." + +#: FlatCAMApp.py:3436 +msgid "Failed to open recent projects file for writing." +msgstr "Fehler beim Öffnen der letzten Projektdatei zum Schreiben." + +#: FlatCAMApp.py:3519 camlib.py:4797 flatcamTools/ToolSolderPaste.py:1214 +msgid "An internal error has ocurred. See shell.\n" +msgstr "Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + +#: FlatCAMApp.py:3520 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" @@ -200,11 +199,11 @@ msgstr "" "Objekt ({kind}) gescheitert weil: {error} \n" "\n" -#: FlatCAMApp.py:3379 +#: FlatCAMApp.py:3541 msgid "Converting units to " msgstr "Einheiten in umrechnen " -#: FlatCAMApp.py:3456 FlatCAMApp.py:3459 FlatCAMApp.py:3462 FlatCAMApp.py:3465 +#: FlatCAMApp.py:3637 FlatCAMApp.py:3640 FlatCAMApp.py:3643 FlatCAMApp.py:3646 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}{name}" "" -#: FlatCAMApp.py:3482 FlatCAMApp.py:5466 FlatCAMObj.py:220 FlatCAMObj.py:235 -#: FlatCAMObj.py:251 flatcamTools/ToolMove.py:187 +#: FlatCAMApp.py:3663 FlatCAMApp.py:5787 FlatCAMObj.py:225 FlatCAMObj.py:240 +#: FlatCAMObj.py:256 FlatCAMObj.py:336 flatcamTools/ToolMove.py:187 msgid "Plotting" msgstr "Plotten" -#: FlatCAMApp.py:3561 +#: FlatCAMApp.py:3782 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -241,36 +240,35 @@ msgstr "" "jpcgt/flatcam/src/Beta/\"> hier.
DOWNLOAD hier.
" -#: FlatCAMApp.py:3597 +#: FlatCAMApp.py:3818 msgid "Close" msgstr "Schließen" -#: FlatCAMApp.py:3720 -msgid "[success] Defaults saved." -msgstr "[success] Standardeinstellungen gespeichert." +#: FlatCAMApp.py:3950 FlatCAMApp.py:6234 +msgid "Preferences saved." +msgstr "Einstellungen gespeichert." -#: FlatCAMApp.py:3744 -msgid "[ERROR_NOTCL] Could not load factory defaults file." -msgstr "[ERROR_NOTCL] Factory-Standarddatei konnte nicht geladen werden." +#: FlatCAMApp.py:3978 +msgid "Could not load factory defaults file." +msgstr "Factory-Standarddatei konnte nicht geladen werden." -#: FlatCAMApp.py:3753 -msgid "[ERROR_NOTCL] Failed to parse factory defaults file." -msgstr "[ERROR_NOTCL] Fehler beim Parsen der Werksvorgaben-Datei." +#: FlatCAMApp.py:3988 +msgid "Failed to parse factory defaults file." +msgstr "Fehler beim Parsen der Werksvorgaben-Datei." -#: FlatCAMApp.py:3767 -msgid "[ERROR_NOTCL] Failed to write factory defaults to file." -msgstr "" -"[ERROR_NOTCL] Fehler beim Schreiben der Werkseinstellungen in die Datei." +#: FlatCAMApp.py:4003 +msgid "Failed to write factory defaults to file." +msgstr "Fehler beim Schreiben der Werkseinstellungen in die Datei." -#: FlatCAMApp.py:3771 +#: FlatCAMApp.py:4007 msgid "Factory defaults saved." msgstr "Werkseinstellungen gespeichert." -#: FlatCAMApp.py:3776 flatcamGUI/FlatCAMGUI.py:3312 -msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." -msgstr "[WARNING_NOTCL] Anwendung speichert das Projekt. Warten Sie mal ..." +#: FlatCAMApp.py:4018 +msgid "Application is saving the project. Please wait ..." +msgstr "Anwendung speichert das Projekt. Warten Sie mal ..." -#: FlatCAMApp.py:3781 FlatCAMTranslation.py:164 +#: FlatCAMApp.py:4023 FlatCAMTranslation.py:164 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" @@ -278,47 +276,36 @@ msgstr "" "In FlatCAM wurden Dateien / Objekte geändert.\n" "Möchten Sie das Projekt speichern?" -#: FlatCAMApp.py:3784 FlatCAMApp.py:6785 FlatCAMTranslation.py:167 +#: FlatCAMApp.py:4026 FlatCAMApp.py:7126 FlatCAMTranslation.py:167 msgid "Save changes" msgstr "Änderungen speichern" -#: FlatCAMApp.py:3972 -#| msgid "" -#| "List of file extensions to be\n" -#| "associated with FlatCAM." +#: FlatCAMApp.py:4237 msgid "[success] Selected Excellon file extensions registered with FlatCAM." msgstr "" "[success] Ausgewählte Excellon-Dateierweiterungen, die bei FlatCAM " "registriert sind." -#: FlatCAMApp.py:3993 -#| msgid "" -#| "List of file extensions to be\n" -#| "associated with FlatCAM." -msgid "[success] Selected GCode file extensions registered with FlatCAM." +#: FlatCAMApp.py:4259 +msgid "Selected GCode file extensions registered with FlatCAM." msgstr "" -"[success] Ausgewählte GCode-Dateierweiterungen, die bei FlatCAM registriert " -"sind." +"Ausgewählte GCode-Dateierweiterungen, die bei FlatCAM registriert sind." -#: FlatCAMApp.py:4014 -#| msgid "" -#| "List of file extensions to be\n" -#| "associated with FlatCAM." -msgid "[success] Selected Gerber file extensions registered with FlatCAM." +#: FlatCAMApp.py:4281 +msgid "Selected Gerber file extensions registered with FlatCAM." msgstr "" -"[success] Ausgewählte Gerber-Dateierweiterungen, die bei FlatCAM registriert " -"sind." +"Ausgewählte Gerber-Dateierweiterungen, die bei FlatCAM registriert sind." -#: FlatCAMApp.py:4037 +#: FlatCAMApp.py:4305 msgid "" -"[ERROR] Failed join. The Geometry objects are of different types.\n" +"Failed join. The Geometry objects are of different types.\n" "At least one is MultiGeo type and the other is SingleGeo type. A possibility " "is to convert from one to another and retry joining \n" "but in the case of converting from MultiGeo to SingleGeo, informations may " "be lost and the result may not be what was expected. \n" "Check the generated GCODE." msgstr "" -"[ERROR]Fehlgeschlagen beitreten. Die Geometrieobjekte sind unterschiedlich.\n" +"Fehlgeschlagen beitreten. Die Geometrieobjekte sind unterschiedlich.\n" "Mindestens einer ist vom Typ MultiGeo und der andere vom Typ SingleGeo. \n" "Eine Möglichkeit besteht darin, von einem zum anderen zu konvertieren und " "erneut zu verbinden\n" @@ -327,46 +314,48 @@ msgstr "" "und das Ergebnis entspricht möglicherweise nicht dem, was erwartet wurde.\n" "Überprüfen Sie den generierten GCODE." -#: FlatCAMApp.py:4078 -msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." +#: FlatCAMApp.py:4347 +msgid "Failed. Excellon joining works only on Excellon objects." msgstr "" -"[ERROR_NOTCL] Gescheitert. Die Verbindung von Excellon funktioniert nur bei " -"Excellon-Objekten." - -#: FlatCAMApp.py:4100 -msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." -msgstr "" -"[ERROR_NOTCL] Gescheitert. Das Gerber-Verbinden funktioniert nur bei Gerber-" +"Gescheitert. Die Verbindung von Excellon funktioniert nur bei Excellon-" "Objekten." -#: FlatCAMApp.py:4115 FlatCAMApp.py:4140 -msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." +#: FlatCAMApp.py:4370 +msgid "Failed. Gerber joining works only on Gerber objects." msgstr "" -"[ERROR_NOTCL] Gescheitert. Wählen Sie ein Geometrieobjekt aus und versuchen " -"Sie es erneut." +"Gescheitert. Das Gerber-Verbinden funktioniert nur bei Gerber-Objekten." -#: FlatCAMApp.py:4119 FlatCAMApp.py:4144 +#: FlatCAMApp.py:4395 FlatCAMApp.py:4432 +msgid "Failed. Select a Geometry Object and try again." +msgstr "" +"Gescheitert. Wählen Sie ein Geometrieobjekt aus und versuchen Sie es erneut." + +#: FlatCAMApp.py:4400 +msgid "Expected a FlatCAMGeometry, got" +msgstr "Erwartete eine FlatCAMGeometry, bekam" + +#: FlatCAMApp.py:4414 +msgid "A Geometry object was converted to MultiGeo type." +msgstr "Ein Geometrieobjekt wurde in den MultiGeo-Typ konvertiert." + +#: FlatCAMApp.py:4437 #, python-format -msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" -msgstr "[ERROR_NOTCL] Erwartete eine FlatCAMGeometry, bekam % s" +msgid "Expected a FlatCAMGeometry, got %s" +msgstr "Erwartete eine FlatCAMGeometry, bekam" -#: FlatCAMApp.py:4132 -msgid "[success] A Geometry object was converted to MultiGeo type." -msgstr "[success] Ein Geometrieobjekt wurde in den MultiGeo-Typ konvertiert." +#: FlatCAMApp.py:4452 +msgid "A Geometry object was converted to SingleGeo type." +msgstr "Ein Geometrieobjekt wurde in den SingleGeo-Typ konvertiert." -#: FlatCAMApp.py:4158 -msgid "[success] A Geometry object was converted to SingleGeo type." -msgstr "[success] Ein Geometrieobjekt wurde in den SingleGeo-Typ konvertiert." - -#: FlatCAMApp.py:4399 +#: FlatCAMApp.py:4713 msgid "Toggle Units" msgstr "Einheiten umschalten" -#: FlatCAMApp.py:4401 +#: FlatCAMApp.py:4715 msgid "Change project units ..." msgstr "Projekteinheiten ändern ..." -#: FlatCAMApp.py:4402 +#: FlatCAMApp.py:4716 msgid "" "Changing the units of the project causes all geometrical properties of all " "objects to be scaled accordingly.\n" @@ -376,55 +365,52 @@ msgstr "" "Eigenschaften aller Objekte entsprechend skaliert.\n" "Fortsetzen?" -#: FlatCAMApp.py:4404 FlatCAMApp.py:5295 FlatCAMApp.py:5400 FlatCAMApp.py:7071 -#: FlatCAMApp.py:7084 FlatCAMApp.py:7324 FlatCAMApp.py:7334 +#: FlatCAMApp.py:4718 FlatCAMApp.py:5614 FlatCAMApp.py:5719 FlatCAMApp.py:7419 +#: FlatCAMApp.py:7433 FlatCAMApp.py:7688 FlatCAMApp.py:7699 msgid "Ok" msgstr "Ok" -#: FlatCAMApp.py:4452 +#: FlatCAMApp.py:4767 #, python-format -msgid "[success] Converted units to %s" -msgstr "[success] Einheiten in umgerechnet %s" +msgid "Converted units to %s" +msgstr "Umgerechnete Einheiten in %s" -#: FlatCAMApp.py:4463 -msgid "[WARNING_NOTCL] Units conversion cancelled." -msgstr "[WARNING_NOTCL] Einheitenumrechnung abgebrochen." +#: FlatCAMApp.py:4779 +msgid " Units conversion cancelled." +msgstr "Einheitenumrechnung abgebrochen." -#: FlatCAMApp.py:5161 +#: FlatCAMApp.py:5477 msgid "Open file" msgstr "Datei öffnen" -#: FlatCAMApp.py:5192 FlatCAMApp.py:5197 +#: FlatCAMApp.py:5508 FlatCAMApp.py:5513 msgid "Export G-Code ..." msgstr "G-Code exportieren ..." -#: FlatCAMApp.py:5200 -msgid "[WARNING_NOTCL] Export Code cancelled." -msgstr "[WARNING_NOTCL] Exportcode wurde abgebrochen." +#: FlatCAMApp.py:5517 +msgid "Export Code cancelled." +msgstr "Exportcode abgebrochen." -#: FlatCAMApp.py:5209 -msgid "[WARNING] No such file or directory" -msgstr "[WARNING] Keine solche Datei oder Ordner" +#: FlatCAMApp.py:5527 FlatCAMObj.py:6161 flatcamTools/ToolSolderPaste.py:1424 +msgid "No such file or directory" +msgstr "Keine solche Datei oder Ordner" -#: FlatCAMApp.py:5220 +#: FlatCAMApp.py:5539 #, python-format msgid "Saved to: %s" msgstr "Gespeichert in: %s" -#: FlatCAMApp.py:5283 FlatCAMApp.py:5316 FlatCAMApp.py:5327 FlatCAMApp.py:5338 -msgid "" -"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " -"format." +#: FlatCAMApp.py:5602 FlatCAMApp.py:5635 FlatCAMApp.py:5646 FlatCAMApp.py:5657 +#: flatcamTools/ToolNonCopperClear.py:915 flatcamTools/ToolSolderPaste.py:774 +msgid "Please enter a tool diameter with non-zero value, in Float format." msgstr "" -"[WARNING_NOTCL] Bitte geben Sie einen Werkzeugdurchmesser mit einem Wert " -"ungleich Null im Float-Format ein." +"Bitte geben Sie einen Werkzeugdurchmesser ungleich Null im Float-Format ein." -#: FlatCAMApp.py:5288 FlatCAMApp.py:5321 FlatCAMApp.py:5332 FlatCAMApp.py:5343 -#: flatcamGUI/FlatCAMGUI.py:3168 -msgid "[WARNING_NOTCL] Adding Tool cancelled ..." -msgstr "[WARNING_NOTCL] Addierwerkzeug abgebrochen ..." +#: FlatCAMApp.py:5607 FlatCAMApp.py:5640 FlatCAMApp.py:5662 +msgid "Adding Tool cancelled" +msgstr "Addierwerkzeug abgebrochen ..." -#: FlatCAMApp.py:5291 +#: FlatCAMApp.py:5610 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." @@ -433,11 +419,15 @@ msgstr "" "ist.\n" "Gehen Sie zu Einstellungen -> Allgemein - Erweiterte Optionen anzeigen." -#: FlatCAMApp.py:5395 +#: FlatCAMApp.py:5651 flatcamGUI/FlatCAMGUI.py:3168 +msgid "[WARNING_NOTCL] Adding Tool cancelled ..." +msgstr "[WARNING_NOTCL] Addierwerkzeug abgebrochen ..." + +#: FlatCAMApp.py:5714 msgid "Delete objects" msgstr "Objekte löschen" -#: FlatCAMApp.py:5398 +#: FlatCAMApp.py:5717 msgid "" "Are you sure you want to permanently delete\n" "the selected objects?" @@ -445,84 +435,78 @@ msgstr "" "Möchten Sie wirklich dauerhaft löschen?\n" "die ausgewählten Objekte?" -#: FlatCAMApp.py:5427 -msgid "Object(s) deleted ..." -msgstr "Objekt (e) gelöscht ..." +#: FlatCAMApp.py:5747 +msgid "Object(s) deleted" +msgstr "Objekt (e) gelöscht" -#: FlatCAMApp.py:5431 +#: FlatCAMApp.py:5751 msgid "Failed. No object(s) selected..." msgstr "Gescheitert. Kein Objekt ausgewählt ..." -#: FlatCAMApp.py:5433 +#: FlatCAMApp.py:5753 msgid "Save the work in Editor and try again ..." msgstr "Speichern Sie die Arbeit im Editor und versuchen Sie es erneut ..." -#: FlatCAMApp.py:5487 -msgid "Setting Origin..." -msgstr "Ursprung einstellen ..." +#: FlatCAMApp.py:5771 +msgid "Object deleted" +msgstr "Objekt (e) gelöscht" -#: FlatCAMApp.py:5498 -msgid "[success] Origin set ..." -msgstr "[success] Ursprung gesetzt ..." - -#: FlatCAMApp.py:5506 +#: FlatCAMApp.py:5795 msgid "Click to set the origin ..." msgstr "Klicken Sie hier, um den Ursprung festzulegen ..." -#: FlatCAMApp.py:5525 +#: FlatCAMApp.py:5819 +msgid "Setting Origin..." +msgstr "Ursprung einstellen ..." + +#: FlatCAMApp.py:5831 +msgid "Origin set" +msgstr "Ursprungssatz" + +#: FlatCAMApp.py:5846 msgid "Jump to ..." msgstr "Springen zu ..." -#: FlatCAMApp.py:5526 +#: FlatCAMApp.py:5847 msgid "Enter the coordinates in format X,Y:" msgstr "Geben Sie die Koordinaten im Format X, Y ein:" -#: FlatCAMApp.py:5533 +#: FlatCAMApp.py:5854 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "Falsche Koordinaten. Koordinaten im Format eingeben: X, Y" -#: FlatCAMApp.py:5551 flatcamEditors/FlatCAMExcEditor.py:3424 -#: flatcamEditors/FlatCAMExcEditor.py:3431 -#: flatcamEditors/FlatCAMGeoEditor.py:3741 -#: flatcamEditors/FlatCAMGeoEditor.py:3755 -#: flatcamEditors/FlatCAMGrbEditor.py:1057 -#: flatcamEditors/FlatCAMGrbEditor.py:1160 -#: flatcamEditors/FlatCAMGrbEditor.py:1433 -#: flatcamEditors/FlatCAMGrbEditor.py:1690 -#: flatcamEditors/FlatCAMGrbEditor.py:4156 -#: flatcamEditors/FlatCAMGrbEditor.py:4170 flatcamGUI/FlatCAMGUI.py:2560 -#: flatcamGUI/FlatCAMGUI.py:2572 -msgid "[success] Done." -msgstr "[success] Erledigt." +#: FlatCAMApp.py:5873 +msgid "Done." +msgstr "Gemacht." -#: FlatCAMApp.py:5684 FlatCAMApp.py:5751 -msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." +#: FlatCAMApp.py:6007 FlatCAMApp.py:6075 +msgid "No object is selected. Select an object and try again." msgstr "" -"[WARNING_NOTCL] Es ist kein Objekt ausgewählt. Wählen Sie ein Objekt und " -"versuchen Sie es erneut." +"Es ist kein Objekt ausgewählt. Wählen Sie ein Objekt und versuchen Sie es " +"erneut." -#: FlatCAMApp.py:5771 +#: FlatCAMApp.py:6095 msgid "" "Aborting. The current task will be gracefully closed as soon as possible..." msgstr "" "Abbrechen. Die aktuelle Aufgabe wird so schnell wie möglich ordnungsgemäß " "abgeschlossen ..." -#: FlatCAMApp.py:5777 +#: FlatCAMApp.py:6101 msgid "The current task was gracefully closed on user request..." msgstr "" "Die aktuelle Aufgabe wurde auf Benutzeranforderung ordnungsgemäß " "geschlossen ..." -#: FlatCAMApp.py:5794 flatcamGUI/GUIElements.py:1443 +#: FlatCAMApp.py:6118 flatcamGUI/GUIElements.py:1443 msgid "Preferences" msgstr "Einstellungen" -#: FlatCAMApp.py:5860 -msgid "[WARNING_NOTCL] Preferences edited but not saved." -msgstr "[WARNING_NOTCL] Einstellungen bearbeitet, aber nicht gespeichert." +#: FlatCAMApp.py:6185 +msgid "Preferences edited but not saved." +msgstr "Einstellungen bearbeitet, aber nicht gespeichert." -#: FlatCAMApp.py:5894 +#: FlatCAMApp.py:6219 msgid "" "One or more values are changed.\n" "Do you want to save the Preferences?" @@ -530,87 +514,73 @@ msgstr "" "Ein oder mehrere Werte werden geändert.\n" "Möchten Sie die Einstellungen speichern?" -#: FlatCAMApp.py:5896 flatcamGUI/FlatCAMGUI.py:198 flatcamGUI/FlatCAMGUI.py:989 +#: FlatCAMApp.py:6221 flatcamGUI/FlatCAMGUI.py:198 flatcamGUI/FlatCAMGUI.py:989 msgid "Save Preferences" msgstr "Einstellungen speichern" -#: FlatCAMApp.py:5908 -msgid "[success] Preferences saved." -msgstr "[success] Einstellungen gespeichert." +#: FlatCAMApp.py:6250 +msgid "No object selected to Flip on Y axis." +msgstr "Kein Objekt ausgewählt, um auf der Y-Achse zu kippen." -#: FlatCAMApp.py:5923 -msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." -msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt, um auf der Y-Achse zu kippen." +#: FlatCAMApp.py:6276 +msgid "Flip on Y axis done." +msgstr "Y-Achse spiegeln fertig." -#: FlatCAMApp.py:5948 -msgid "[success] Flip on Y axis done." -msgstr "[success] Y-Achse umdrehen fertig." +#: FlatCAMApp.py:6279 FlatCAMApp.py:6322 +msgid "Flip action was not executed." +msgstr "Flip-Aktion wurde nicht ausgeführt." -#: FlatCAMApp.py:5950 FlatCAMApp.py:5990 -#: flatcamEditors/FlatCAMGeoEditor.py:1357 -#: flatcamEditors/FlatCAMGrbEditor.py:5584 -#, python-format -msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." -msgstr "[ERROR_NOTCL] Aufgrund von %s wurde die Flip-Aktion nicht ausgeführt." +#: FlatCAMApp.py:6293 +msgid "No object selected to Flip on X axis." +msgstr "Es wurde kein Objekt zum Spiegeln auf der X-Achse ausgewählt." -#: FlatCAMApp.py:5963 -msgid "[WARNING_NOTCL] No object selected to Flip on X axis." -msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt, um auf der X-Achse zu kippen." +#: FlatCAMApp.py:6319 +msgid "Flip on X axis done." +msgstr "Flip on X axis done." -#: FlatCAMApp.py:5988 -msgid "[success] Flip on X axis done." -msgstr "[success] Dreh auf der X-Achse fertig." +#: FlatCAMApp.py:6336 +msgid "No object selected to Rotate." +msgstr "Es wurde kein Objekt zum Drehen ausgewählt." -#: FlatCAMApp.py:6003 -msgid "[WARNING_NOTCL] No object selected to Rotate." -msgstr "[WARNING_NOTCL] Kein Objekt zum Drehen ausgewählt." - -#: FlatCAMApp.py:6006 FlatCAMApp.py:6051 FlatCAMApp.py:6082 +#: FlatCAMApp.py:6339 FlatCAMApp.py:6387 FlatCAMApp.py:6420 msgid "Transform" msgstr "Verwandeln" -#: FlatCAMApp.py:6006 FlatCAMApp.py:6051 FlatCAMApp.py:6082 +#: FlatCAMApp.py:6339 FlatCAMApp.py:6387 FlatCAMApp.py:6420 msgid "Enter the Angle value:" msgstr "Geben Sie den Winkelwert ein:" -#: FlatCAMApp.py:6036 -msgid "[success] Rotation done." -msgstr "[success] Rotation erfolgt." +#: FlatCAMApp.py:6370 +msgid "Rotation done." +msgstr "Fertig drehen." -#: FlatCAMApp.py:6038 flatcamEditors/FlatCAMGeoEditor.py:1300 -#: flatcamEditors/FlatCAMGrbEditor.py:5513 -#, python-format -msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." -msgstr "" -"[ERROR_NOTCL] Aufgrund von %s wurde keine Rotationsbewegung ausgeführt." +#: FlatCAMApp.py:6373 +msgid "Rotation movement was not executed." +msgstr "Drehbewegung wurde nicht ausgeführt." -#: FlatCAMApp.py:6049 -msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." -msgstr "" -"[WARNING_NOTCL] Kein Objekt für Neigung / Scherung auf der X-Achse " -"ausgewählt." +#: FlatCAMApp.py:6385 +msgid "No object selected to Skew/Shear on X axis." +msgstr "Auf der X-Achse wurde kein Objekt zum Neigen / Scheren ausgewählt." -#: FlatCAMApp.py:6070 -msgid "[success] Skew on X axis done." -msgstr "[success] Neigung auf der X-Achse fertig." +#: FlatCAMApp.py:6407 +msgid "Skew on X axis done." +msgstr "Neigung auf der X-Achse" -#: FlatCAMApp.py:6080 -msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." -msgstr "" -"[WARNING_NOTCL] Kein Objekt für Neigung / Scherung auf der Y-Achse " -"ausgewählt." +#: FlatCAMApp.py:6418 +msgid "No object selected to Skew/Shear on Y axis." +msgstr "Kein Objekt für Neigung / Scherung auf der Y-Achse ausgewählt." -#: FlatCAMApp.py:6101 -msgid "[success] Skew on Y axis done." -msgstr "[success] Neigung auf der Y-Achse fertig." +#: FlatCAMApp.py:6440 +msgid "Skew on Y axis done." +msgstr "Neigung auf der Y-Achse" -#: FlatCAMApp.py:6152 +#: FlatCAMApp.py:6491 msgid "Grid On/Off" msgstr "Raster ein/aus" -#: FlatCAMApp.py:6165 flatcamEditors/FlatCAMGeoEditor.py:939 +#: FlatCAMApp.py:6504 flatcamEditors/FlatCAMGeoEditor.py:939 #: flatcamEditors/FlatCAMGrbEditor.py:2460 -#: flatcamEditors/FlatCAMGrbEditor.py:5102 flatcamGUI/ObjectUI.py:1044 +#: flatcamEditors/FlatCAMGrbEditor.py:5102 flatcamGUI/ObjectUI.py:1053 #: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:207 #: flatcamTools/ToolNonCopperClear.py:237 flatcamTools/ToolPaint.py:176 #: flatcamTools/ToolSolderPaste.py:115 flatcamTools/ToolSolderPaste.py:483 @@ -618,81 +588,79 @@ msgstr "Raster ein/aus" msgid "Add" msgstr "Hinzufügen" -#: FlatCAMApp.py:6166 FlatCAMObj.py:3528 +#: FlatCAMApp.py:6505 FlatCAMObj.py:3564 #: flatcamEditors/FlatCAMGrbEditor.py:2465 flatcamGUI/FlatCAMGUI.py:545 #: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1719 -#: flatcamGUI/FlatCAMGUI.py:2094 flatcamGUI/ObjectUI.py:1060 +#: flatcamGUI/FlatCAMGUI.py:2094 flatcamGUI/ObjectUI.py:1069 #: flatcamTools/ToolNonCopperClear.py:249 flatcamTools/ToolPaint.py:188 #: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:485 msgid "Delete" msgstr "Löschen" -#: FlatCAMApp.py:6179 +#: FlatCAMApp.py:6518 msgid "New Grid ..." msgstr "Neues Raster ..." -#: FlatCAMApp.py:6180 +#: FlatCAMApp.py:6519 msgid "Enter a Grid Value:" msgstr "Geben Sie einen Rasterwert ein:" -#: FlatCAMApp.py:6188 FlatCAMApp.py:6215 -msgid "" -"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " -"format." +#: FlatCAMApp.py:6527 FlatCAMApp.py:6554 +msgid "Please enter a grid value with non-zero value, in Float format." msgstr "" -"[WARNING_NOTCL] Bitte geben Sie im Float-Format einen Rasterwert mit einem " -"Wert ungleich Null ein." +"Bitte geben Sie im Float-Format einen Rasterwert mit einem Wert ungleich " +"Null ein." -#: FlatCAMApp.py:6194 -msgid "[success] New Grid added ..." -msgstr "[success] Neues Netz hinzugefügt ..." +#: FlatCAMApp.py:6533 +msgid "New Grid added" +msgstr "Neues Raster" -#: FlatCAMApp.py:6197 -msgid "[WARNING_NOTCL] Grid already exists ..." -msgstr "[WARNING_NOTCL] Netz existiert bereits ..." +#: FlatCAMApp.py:6536 +msgid "Grid already exists" +msgstr "Netz existiert bereits" -#: FlatCAMApp.py:6200 -msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." -msgstr "[WARNING_NOTCL] Neues Netz wurde abgebrochen ..." +#: FlatCAMApp.py:6539 +msgid "Adding New Grid cancelled" +msgstr "Neues Netz wurde abgebrochen" -#: FlatCAMApp.py:6222 -msgid "[ERROR_NOTCL] Grid Value does not exist ..." -msgstr "[ERROR_NOTCL] Rasterwert existiert nicht ..." +#: FlatCAMApp.py:6561 +msgid " Grid Value does not exist" +msgstr "Rasterwert existiert nicht" -#: FlatCAMApp.py:6225 -msgid "[success] Grid Value deleted ..." -msgstr "[success] Rasterwert gelöscht ..." +#: FlatCAMApp.py:6564 +msgid "Grid Value deleted" +msgstr "Rasterwert gelöscht" -#: FlatCAMApp.py:6228 -msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." -msgstr "[WARNING_NOTCL] Rasterwert löschen abgebrochen ..." +#: FlatCAMApp.py:6567 +msgid "Delete Grid value cancelled" +msgstr "Rasterwert löschen abgebrochen" -#: FlatCAMApp.py:6234 +#: FlatCAMApp.py:6573 msgid "Key Shortcut List" msgstr "Tastenkürzel Liste" -#: FlatCAMApp.py:6267 -msgid "[WARNING_NOTCL] No object selected to copy it's name" -msgstr "[WARNING_NOTCL] Kein Objekt zum Kopieren des Namens ausgewählt" +#: FlatCAMApp.py:6607 +msgid " No object selected to copy it's name" +msgstr "Kein Objekt zum Kopieren des Namens ausgewählt" -#: FlatCAMApp.py:6271 +#: FlatCAMApp.py:6611 msgid "Name copied on clipboard ..." msgstr "Name in Zwischenablage kopiert ..." -#: FlatCAMApp.py:6313 flatcamEditors/FlatCAMGrbEditor.py:4097 -msgid "[success] Coordinates copied to clipboard." -msgstr "[success] Koordinaten in die Zwischenablage kopiert." +#: FlatCAMApp.py:6654 +msgid "Coordinates copied to clipboard." +msgstr "Koordinaten in die Zwischenablage kopiert." -#: FlatCAMApp.py:6566 FlatCAMApp.py:6570 FlatCAMApp.py:6574 FlatCAMApp.py:6578 -#: FlatCAMApp.py:6594 FlatCAMApp.py:6598 FlatCAMApp.py:6602 FlatCAMApp.py:6606 -#: FlatCAMApp.py:6646 FlatCAMApp.py:6649 FlatCAMApp.py:6652 FlatCAMApp.py:6655 +#: FlatCAMApp.py:6907 FlatCAMApp.py:6911 FlatCAMApp.py:6915 FlatCAMApp.py:6919 +#: FlatCAMApp.py:6935 FlatCAMApp.py:6939 FlatCAMApp.py:6943 FlatCAMApp.py:6947 +#: FlatCAMApp.py:6987 FlatCAMApp.py:6990 FlatCAMApp.py:6993 FlatCAMApp.py:6996 #: ObjectCollection.py:725 ObjectCollection.py:728 ObjectCollection.py:731 #: ObjectCollection.py:734 #, python-brace-format msgid "[selected]{name} selected" msgstr "[selected]{name} ausgewählt" -#: FlatCAMApp.py:6782 +#: FlatCAMApp.py:7123 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" @@ -702,232 +670,215 @@ msgstr "" "Wenn Sie ein neues Projekt erstellen, werden diese gelöscht.\n" "Möchten Sie das Projekt speichern?" -#: FlatCAMApp.py:6803 -msgid "[success] New Project created..." -msgstr "[success] Neues Projekt erstellt ..." +#: FlatCAMApp.py:7145 +msgid "New Project created" +msgstr "Neues Projekt erstellt" -#: FlatCAMApp.py:6923 FlatCAMApp.py:6927 flatcamGUI/FlatCAMGUI.py:626 +#: FlatCAMApp.py:7265 FlatCAMApp.py:7269 flatcamGUI/FlatCAMGUI.py:626 #: flatcamGUI/FlatCAMGUI.py:1970 msgid "Open Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:6934 -msgid "[WARNING_NOTCL] Open Gerber cancelled." -msgstr "[WARNING_NOTCL] Offener Gerber abgebrochen." +#: FlatCAMApp.py:7277 +msgid "Open Gerber cancelled." +msgstr "Öffnen der Gerberdatei abgebrochen." -#: FlatCAMApp.py:6954 FlatCAMApp.py:6958 flatcamGUI/FlatCAMGUI.py:627 +#: FlatCAMApp.py:7297 FlatCAMApp.py:7301 flatcamGUI/FlatCAMGUI.py:627 #: flatcamGUI/FlatCAMGUI.py:1971 msgid "Open Excellon" msgstr "Excellon öffnen" -#: FlatCAMApp.py:6964 -msgid "[WARNING_NOTCL] Open Excellon cancelled." -msgstr "[WARNING_NOTCL] Offener Excellon abgebrochen." +#: FlatCAMApp.py:7308 +msgid " Open Excellon cancelled." +msgstr "Öffnen der Excellon-Datei abgebrochen." -#: FlatCAMApp.py:6987 FlatCAMApp.py:6991 +#: FlatCAMApp.py:7331 FlatCAMApp.py:7335 msgid "Open G-Code" msgstr "G-Code öffnen" -#: FlatCAMApp.py:6998 -msgid "[WARNING_NOTCL] Open G-Code cancelled." -msgstr "[WARNING_NOTCL] Geöffneter G-Code wurde abgebrochen." +#: FlatCAMApp.py:7343 +msgid "Open G-Code cancelled." +msgstr "Öffnen der G-Code-Datei abgebrochen." -#: FlatCAMApp.py:7015 FlatCAMApp.py:7018 +#: FlatCAMApp.py:7360 FlatCAMApp.py:7363 msgid "Open Project" msgstr "Offenes Projekt" -#: FlatCAMApp.py:7026 -msgid "[WARNING_NOTCL] Open Project cancelled." -msgstr "[WARNING_NOTCL] Projekt abbrechen abgebrochen." +#: FlatCAMApp.py:7372 +msgid "Open Project cancelled." +msgstr "Projektdatei öffnen abgebrochen." -#: FlatCAMApp.py:7045 FlatCAMApp.py:7048 +#: FlatCAMApp.py:7391 FlatCAMApp.py:7394 msgid "Open Configuration File" msgstr "Offene Einstellungsdatei" -#: FlatCAMApp.py:7052 -msgid "[WARNING_NOTCL] Open Config cancelled." -msgstr "[WARNING_NOTCL] Offene Konfiguration abgebrochen." +#: FlatCAMApp.py:7399 +msgid "Open Config cancelled." +msgstr "Öffnen der Konfigurationsdatei abgebrochen." -#: FlatCAMApp.py:7067 FlatCAMApp.py:7320 FlatCAMApp.py:9672 FlatCAMApp.py:9692 -#: FlatCAMApp.py:9713 FlatCAMApp.py:9735 -msgid "[WARNING_NOTCL] No object selected." -msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt." +#: FlatCAMApp.py:7415 FlatCAMApp.py:7684 FlatCAMApp.py:10117 +#: FlatCAMApp.py:10138 FlatCAMApp.py:10160 FlatCAMApp.py:10183 +msgid "No object selected." +msgstr "Kein Objekt ausgewählt." -#: FlatCAMApp.py:7068 FlatCAMApp.py:7321 +#: FlatCAMApp.py:7416 FlatCAMApp.py:7685 msgid "Please Select a Geometry object to export" msgstr "Bitte wählen Sie ein Geometrieobjekt zum Exportieren aus" -#: FlatCAMApp.py:7081 -msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." -msgstr "" -"[ERROR_NOTCL] Es können nur Geometrie-, Gerber- und CNCJob-Objekte verwendet " -"werden." +#: FlatCAMApp.py:7430 +msgid "Only Geometry, Gerber and CNCJob objects can be used." +msgstr "Es können nur Geometrie-, Gerber- und CNCJob-Objekte verwendet werden." -#: FlatCAMApp.py:7094 FlatCAMApp.py:7098 +#: FlatCAMApp.py:7443 FlatCAMApp.py:7447 msgid "Export SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:7103 -msgid "[WARNING_NOTCL] Export SVG cancelled." -msgstr "[WARNING_NOTCL] Export SVG abgebrochen." +#: FlatCAMApp.py:7453 +msgid " Export SVG cancelled." +msgstr " Export von SVG abgebrochen." -#: FlatCAMApp.py:7122 -msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" -msgstr "" -"[WARNING_NOTCL] Daten müssen ein 3D-Array mit der letzten Dimension 3 oder 4 " -"sein" +#: FlatCAMApp.py:7473 +msgid "Data must be a 3D array with last dimension 3 or 4" +msgstr "Daten müssen ein 3D-Array mit der letzten Dimension 3 oder 4 sein" -#: FlatCAMApp.py:7128 FlatCAMApp.py:7132 +#: FlatCAMApp.py:7479 FlatCAMApp.py:7483 msgid "Export PNG Image" msgstr "PNG-Bild exportieren" -#: FlatCAMApp.py:7137 +#: FlatCAMApp.py:7488 msgid "Export PNG cancelled." msgstr "Export PNG abgebrochen." -#: FlatCAMApp.py:7156 -msgid "" -"[WARNING_NOTCL] No object selected. Please select an Gerber object to export." +#: FlatCAMApp.py:7508 +msgid "No object selected. Please select an Gerber object to export." msgstr "" -"[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt " -"aus, das Sie exportieren möchten." +"Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt aus, das Sie " +"exportieren möchten." -#: FlatCAMApp.py:7161 FlatCAMApp.py:7284 -msgid "" -"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." +#: FlatCAMApp.py:7514 FlatCAMApp.py:7646 +msgid "Failed. Only Gerber objects can be saved as Gerber files..." msgstr "" -"[ERROR_NOTCL] Fehlgeschlagen. Nur Gerber-Objekte können als Gerber-Dateien " -"gespeichert werden ..." +"Fehlgeschlagen. Nur Gerber-Objekte können als Gerber-Dateien gespeichert " +"werden ..." -#: FlatCAMApp.py:7173 +#: FlatCAMApp.py:7526 msgid "Save Gerber source file" msgstr "Gerber-Quelldatei speichern" -#: FlatCAMApp.py:7178 -msgid "[WARNING_NOTCL] Save Gerber source file cancelled." -msgstr "[WARNING_NOTCL] Gerber Quelldatei speichern abgebrochen." +#: FlatCAMApp.py:7532 +msgid "Save Gerber source file cancelled." +msgstr "Gerber Quelldatei speichern abgebrochen." -#: FlatCAMApp.py:7197 -msgid "" -"[WARNING_NOTCL] No object selected. Please select an Excellon object to " -"export." +#: FlatCAMApp.py:7552 +msgid "No object selected. Please select an Excellon object to export." msgstr "" -"[WARNING_NOTCL] Kein Objekt ausgewählt Bitte wählen Sie ein Excellon-Objekt " -"zum Exportieren aus." +"Kein Objekt ausgewählt Bitte wählen Sie ein Excellon-Objekt zum Exportieren " +"aus." -#: FlatCAMApp.py:7202 FlatCAMApp.py:7243 -msgid "" -"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." +#: FlatCAMApp.py:7558 FlatCAMApp.py:7602 +msgid "Failed. Only Excellon objects can be saved as Excellon files..." msgstr "" -"[ERROR_NOTCL] Fehlgeschlagen. Nur Excellon-Objekte können als Excellon-" -"Dateien gespeichert werden ..." +"Fehlgeschlagen. Nur Excellon-Objekte können als Excellon-Dateien gespeichert " +"werden ..." -#: FlatCAMApp.py:7210 FlatCAMApp.py:7214 +#: FlatCAMApp.py:7566 FlatCAMApp.py:7570 msgid "Save Excellon source file" msgstr "Speichern Sie die Excellon-Quelldatei" -#: FlatCAMApp.py:7219 -msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." -msgstr "[WARNING_NOTCL] Speichern der Excellon-Quelldatei abgebrochen." +#: FlatCAMApp.py:7576 +msgid "Saving Excellon source file cancelled." +msgstr "Speichern der Excellon-Quelldatei abgebrochen." -#: FlatCAMApp.py:7238 -msgid "" -"[WARNING_NOTCL] No object selected. Please Select an Excellon object to " -"export." +#: FlatCAMApp.py:7596 +msgid "No object selected. Please Select an Excellon object to export." msgstr "" -"[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Excellon-Objekt " -"aus, das Sie exportieren möchten." +"Kein Objekt ausgewählt. Bitte wählen Sie ein Excellon-Objekt aus, das Sie " +"exportieren möchten." -#: FlatCAMApp.py:7251 FlatCAMApp.py:7255 +#: FlatCAMApp.py:7610 FlatCAMApp.py:7614 msgid "Export Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:7260 -msgid "[WARNING_NOTCL] Export Excellon cancelled." -msgstr "[WARNING_NOTCL] Export Excellon wurde abgebrochen." +#: FlatCAMApp.py:7620 +msgid "Export Excellon cancelled." +msgstr "Export der Excellon-Datei abgebrochen." -#: FlatCAMApp.py:7279 -msgid "" -"[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." +#: FlatCAMApp.py:7640 +msgid "No object selected. Please Select an Gerber object to export." msgstr "" -"[WARNING_NOTCL] Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt " -"aus, das Sie exportieren möchten." +"Kein Objekt ausgewählt. Bitte wählen Sie ein Gerber-Objekt aus, das Sie " +"exportieren möchten." -#: FlatCAMApp.py:7292 FlatCAMApp.py:7296 +#: FlatCAMApp.py:7654 FlatCAMApp.py:7658 msgid "Export Gerber" msgstr "Gerber exportieren" -#: FlatCAMApp.py:7301 -msgid "[WARNING_NOTCL] Export Gerber cancelled." -msgstr "[WARNING_NOTCL] Export Gerber abgebrochen." +#: FlatCAMApp.py:7664 +msgid "Export Gerber cancelled." +msgstr "Export der Gerberdatei abgebrochen." -#: FlatCAMApp.py:7331 -msgid "[ERROR_NOTCL] Only Geometry objects can be used." -msgstr "[ERROR_NOTCL] Es können nur Geometrieobjekte verwendet werden." +#: FlatCAMApp.py:7696 +msgid "Only Geometry objects can be used." +msgstr "Es können nur Geometrieobjekte verwendet werden." -#: FlatCAMApp.py:7345 FlatCAMApp.py:7349 +#: FlatCAMApp.py:7710 FlatCAMApp.py:7714 msgid "Export DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:7355 -msgid "[WARNING_NOTCL] Export DXF cancelled." -msgstr "[WARNING_NOTCL] Export DXF wurde abgebrochen." +#: FlatCAMApp.py:7721 +msgid "Export DXF cancelled." +msgstr "Export der DXF-Datei abgebrochen." -#: FlatCAMApp.py:7375 FlatCAMApp.py:7378 +#: FlatCAMApp.py:7741 FlatCAMApp.py:7744 msgid "Import SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:7387 -msgid "[WARNING_NOTCL] Open SVG cancelled." -msgstr "[WARNING_NOTCL] Open SVG abgebrochen." +#: FlatCAMApp.py:7754 +msgid "Open SVG cancelled." +msgstr "Öffnen der SVG-Datei abgebrochen." -#: FlatCAMApp.py:7406 FlatCAMApp.py:7410 +#: FlatCAMApp.py:7773 FlatCAMApp.py:7777 msgid "Import DXF" msgstr "Importieren Sie DXF" -#: FlatCAMApp.py:7419 -msgid "[WARNING_NOTCL] Open DXF cancelled." -msgstr "[WARNING_NOTCL] Open DXF cancelled." +#: FlatCAMApp.py:7787 +msgid "Open DXF cancelled." +msgstr "Öffnen der DXF-Datei abgebrochen." -#: FlatCAMApp.py:7437 +#: FlatCAMApp.py:7805 #, python-format msgid "%s" msgstr "%s" -#: FlatCAMApp.py:7457 -msgid "" -"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." +#: FlatCAMApp.py:7826 +msgid "Select an Gerber or Excellon file to view it's source file." msgstr "" -"[WARNING_NOTCL] Wählen Sie eine Gerber- oder Excellon-Datei aus, um die " -"Quelldatei anzuzeigen." +"Wählen Sie eine Gerber- oder Excellon-Datei aus, um die Quelldatei " +"anzuzeigen." -#: FlatCAMApp.py:7464 -msgid "" -"[WARNING_NOTCL] There is no selected object for which to see it's source " -"file code." +#: FlatCAMApp.py:7834 +msgid "There is no selected object for which to see it's source file code." msgstr "" -"[WARNING_NOTCL] Es gibt kein ausgewähltes Objekt, für das man seinen " -"Quelldateien sehen kann." +"Es gibt kein ausgewähltes Objekt, für das man seinen Quelldateien sehen kann." -#: FlatCAMApp.py:7472 +#: FlatCAMApp.py:7842 msgid "Source Editor" msgstr "Quelleditor" -#: FlatCAMApp.py:7482 -#, python-format -msgid "[ERROR]App.on_view_source() -->%s" -msgstr "[ERROR]App.on_view_source() -->%s" +#: FlatCAMApp.py:7853 +msgid "App.on_view_source() -->" +msgstr "App.on_view_source() -->" -#: FlatCAMApp.py:7494 FlatCAMApp.py:8695 FlatCAMObj.py:5884 +#: FlatCAMApp.py:7865 FlatCAMApp.py:9112 FlatCAMObj.py:5944 #: flatcamTools/ToolSolderPaste.py:1304 msgid "Code Editor" msgstr "Code-Editor" -#: FlatCAMApp.py:7506 +#: FlatCAMApp.py:7877 msgid "Script Editor" msgstr "Script Editor" -#: FlatCAMApp.py:7509 +#: FlatCAMApp.py:7880 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -971,235 +922,219 @@ msgstr "" "#\n" "\n" -#: FlatCAMApp.py:7532 FlatCAMApp.py:7535 +#: FlatCAMApp.py:7903 FlatCAMApp.py:7906 msgid "Open TCL script" msgstr "Öffnen Sie das TCL-Skript" -#: FlatCAMApp.py:7543 -msgid "[WARNING_NOTCL] Open TCL script cancelled." -msgstr "[WARNING_NOTCL] Open TCL-Skript wurde abgebrochen." +#: FlatCAMApp.py:7915 +msgid "Open TCL script cancelled." +msgstr "Öffnen der TCL-Skriptdatei abgebrochen." -#: FlatCAMApp.py:7555 -#, python-format -msgid "[ERROR]App.on_fileopenscript() -->%s" -msgstr "[ERROR]App.on_fileopenscript() -->%s" +#: FlatCAMApp.py:7928 +msgid "App.on_fileopenscript() -->" +msgstr "App.on_fileopenscript() -->" -#: FlatCAMApp.py:7581 FlatCAMApp.py:7584 +#: FlatCAMApp.py:7954 FlatCAMApp.py:7957 msgid "Run TCL script" msgstr "Führen Sie das TCL-Skript aus" -#: FlatCAMApp.py:7592 -msgid "[WARNING_NOTCL] Run TCL script cancelled." -msgstr "[WARNING_NOTCL] Das TCL-Skript wird abgebrochen." +#: FlatCAMApp.py:7966 +msgid "Run TCL script cancelled." +msgstr "Ausführen der TCL-Skriptdatei abgebrochen." -#: FlatCAMApp.py:7647 FlatCAMApp.py:7651 +#: FlatCAMApp.py:8021 FlatCAMApp.py:8025 msgid "Save Project As ..." msgstr "Projekt speichern als ..." -#: FlatCAMApp.py:7648 +#: FlatCAMApp.py:8022 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "{l_save}/Projekt_{date}" -#: FlatCAMApp.py:7656 -msgid "[WARNING_NOTCL] Save Project cancelled." -msgstr "[WARNING_NOTCL] Projekt speichern abgebrochen." +#: FlatCAMApp.py:8031 +msgid "Save Project cancelled." +msgstr "Projekt speichern abgebrochen." -#: FlatCAMApp.py:7704 +#: FlatCAMApp.py:8079 msgid "Exporting SVG" msgstr "SVG exportieren" -#: FlatCAMApp.py:7744 FlatCAMApp.py:7858 FlatCAMApp.py:7981 -#, python-format -msgid "[success] SVG file exported to %s" -msgstr "[success] SVG-Datei in exportiert %s" +#: FlatCAMApp.py:8121 FlatCAMApp.py:8238 FlatCAMApp.py:8364 +msgid "SVG file exported to" +msgstr "SVG-Datei exportiert nach" -#: FlatCAMApp.py:7778 FlatCAMApp.py:7906 -#, python-format -msgid "[WARNING_NOTCL] No object Box. Using instead %s" -msgstr "[WARNING_NOTCL] Kein Objektfeld. Stattdessen verwenden %s" +#: FlatCAMApp.py:8156 FlatCAMApp.py:8287 flatcamTools/ToolPanelize.py:381 +msgid "No object Box. Using instead" +msgstr "Keine Objektbox. Verwenden Sie stattdessen" -#: FlatCAMApp.py:7861 FlatCAMApp.py:7984 +#: FlatCAMApp.py:8241 FlatCAMApp.py:8367 msgid "Generating Film ... Please wait." msgstr "Film wird erstellt ... Bitte warten Sie." -#: FlatCAMApp.py:8150 -#, python-format -msgid "[success] Excellon file exported to %s" -msgstr "[success] Excellon-Datei nach exportiert %s" +#: FlatCAMApp.py:8536 +msgid "Excellon file exported to" +msgstr "Excellon-Datei exportiert nach" -#: FlatCAMApp.py:8157 +#: FlatCAMApp.py:8543 msgid "Exporting Excellon" msgstr "Excellon exportieren" -#: FlatCAMApp.py:8162 FlatCAMApp.py:8169 -msgid "[ERROR_NOTCL] Could not export Excellon file." -msgstr "[ERROR_NOTCL] Excellon-Datei konnte nicht exportiert werden." +#: FlatCAMApp.py:8549 FlatCAMApp.py:8557 +msgid "Could not export Excellon file." +msgstr "Excellon-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:8275 -#, python-format -msgid "[success] Gerber file exported to %s" -msgstr "[success] Gerber-Datei in exportiert %s" +#: FlatCAMApp.py:8665 +msgid "Gerber file exported to" +msgstr "Gerberdatei exportiert nach" -#: FlatCAMApp.py:8282 +#: FlatCAMApp.py:8672 msgid "Exporting Gerber" msgstr "Gerber exportieren" -#: FlatCAMApp.py:8287 FlatCAMApp.py:8294 -msgid "[ERROR_NOTCL] Could not export Gerber file." -msgstr "[ERROR_NOTCL] Gerber-Datei konnte nicht exportiert werden." +#: FlatCAMApp.py:8678 FlatCAMApp.py:8686 +msgid "Could not export Gerber file." +msgstr "Gerber-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:8336 -#, python-format -msgid "[success] DXF file exported to %s" -msgstr "[success] DXF-Datei in exportiert %s" +#: FlatCAMApp.py:8729 +msgid "DXF file exported to" +msgstr "DXF-Datei exportiert nach" -#: FlatCAMApp.py:8342 +#: FlatCAMApp.py:8735 msgid "Exporting DXF" msgstr "DXF exportieren" -#: FlatCAMApp.py:8347 FlatCAMApp.py:8354 -msgid "[[WARNING_NOTCL]] Could not export DXF file." -msgstr "[WARNING_NOTCL] DXF-Datei konnte nicht exportiert werden." +#: FlatCAMApp.py:8741 FlatCAMApp.py:8749 +msgid "Could not export DXF file." +msgstr "DXF-Datei konnte nicht exportiert werden." -#: FlatCAMApp.py:8374 FlatCAMApp.py:8416 FlatCAMApp.py:8460 +#: FlatCAMApp.py:8770 FlatCAMApp.py:8814 FlatCAMApp.py:8860 msgid "" -"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " -"Gerber are supported" +"Not supported type is picked as parameter. Only Geometry and Gerber are " +"supported" msgstr "" -"[ERROR_NOTCL] Nicht unterstützte Art wird als Parameter ausgewählt. Nur " -"Geometrie und Gerber werden unterstützt" +"Nicht unterstützte Art wird als Parameter ausgewählt. Nur Geometrie und " +"Gerber werden unterstützt" -#: FlatCAMApp.py:8384 +#: FlatCAMApp.py:8780 msgid "Importing SVG" msgstr "SVG importieren" -#: FlatCAMApp.py:8395 FlatCAMApp.py:8437 FlatCAMApp.py:8480 FlatCAMApp.py:8557 -#: FlatCAMApp.py:8618 FlatCAMApp.py:8681 flatcamTools/ToolPDF.py:220 -#, python-format -msgid "[success] Opened: %s" -msgstr "[success] Geöffnet: %s" +#: FlatCAMApp.py:8792 FlatCAMApp.py:8836 FlatCAMApp.py:8881 FlatCAMApp.py:8964 +#: FlatCAMApp.py:9031 FlatCAMApp.py:9098 +msgid "Opened" +msgstr "Geöffnet" -#: FlatCAMApp.py:8426 +#: FlatCAMApp.py:8824 msgid "Importing DXF" msgstr "DXF importieren" -#: FlatCAMApp.py:8468 +#: FlatCAMApp.py:8868 msgid "Importing Image" msgstr "Bild importieren" -#: FlatCAMApp.py:8509 FlatCAMApp.py:8511 -#, python-format -msgid "[ERROR_NOTCL] Failed to open file: %s" -msgstr "[ERROR_NOTCL] Datei konnte nicht geöffnet werden: %s" +#: FlatCAMApp.py:8911 +msgid "Failed to open file" +msgstr "Datei konnte nicht geöffnet werden" -#: FlatCAMApp.py:8514 +#: FlatCAMApp.py:8915 #, python-brace-format -msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" -msgstr "[ERROR_NOTCL] Fehler beim Parsen der Datei: {name}. {error}" +#| msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" +msgid "{e_code} Failed to parse file: {name}. {error}" +msgstr "{e_code} Datei konnte nicht analysiert werden: {name}. {error}" -#: FlatCAMApp.py:8521 FlatCAMObj.py:4474 -#: flatcamEditors/FlatCAMGrbEditor.py:3917 -msgid "[ERROR] An internal error has occurred. See shell.\n" -msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" +#: FlatCAMApp.py:8916 +msgid "[ERROR_NOTCL]" +msgstr "[ERROR_NOTCL]" -#: FlatCAMApp.py:8530 -msgid "" -"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." +#: FlatCAMApp.py:8925 FlatCAMApp.py:8999 FlatCAMObj.py:4521 +#: flatcamTools/ToolPcbWizard.py:437 +msgid "An internal error has occurred. See shell.\n" +msgstr "Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + +#: FlatCAMApp.py:8935 +msgid "Object is not Gerber file or empty. Aborting object creation." msgstr "" -"[ERROR_NOTCL] Objekt ist keine Gerberdatei oder leer. Objekterstellung wird " -"abgebrochen." +"Objekt ist keine Gerberdatei oder leer. Objekterstellung wird abgebrochen." -#: FlatCAMApp.py:8538 +#: FlatCAMApp.py:8943 msgid "Opening Gerber" msgstr "Gerber öffnen" -#: FlatCAMApp.py:8548 -msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." -msgstr "" -"[ERROR_NOTCL] Gerber öffnen ist fehlgeschlagen. Wahrscheinlich keine Gerber-" -"Datei." +#: FlatCAMApp.py:8954 +msgid " Open Gerber failed. Probable not a Gerber file." +msgstr "Gerber öffnen ist fehlgeschlagen. Wahrscheinlich keine Gerber-Datei." -#: FlatCAMApp.py:8581 -msgid "[ERROR_NOTCL] This is not Excellon file." -msgstr "[ERROR_NOTCL] Dies ist keine Excellon-Datei." +#: FlatCAMApp.py:8989 flatcamTools/ToolPcbWizard.py:427 +msgid "This is not Excellon file." +msgstr "Dies ist keine Excellon-Datei." -#: FlatCAMApp.py:8584 -#, python-format -msgid "[ERROR_NOTCL] Cannot open file: %s" -msgstr "[ERROR_NOTCL] Kann Datei nicht öffnen: %s" +#: FlatCAMApp.py:8993 +msgid "Cannot open file" +msgstr "Kann Datei nicht öffnen" -#: FlatCAMApp.py:8589 -msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" -msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" +#: FlatCAMApp.py:9013 flatcamTools/ToolPDF.py:270 +#: flatcamTools/ToolPcbWizard.py:451 +msgid "No geometry found in file" +msgstr "Keine Geometrie in der Datei gefunden" -#: FlatCAMApp.py:8602 -#, python-format -msgid "[ERROR_NOTCL] No geometry found in file: %s" -msgstr "[ERROR_NOTCL] Keine Geometrie in der Datei gefunden: %s" - -#: FlatCAMApp.py:8605 +#: FlatCAMApp.py:9016 msgid "Opening Excellon." msgstr "Eröffnung Excellon." -#: FlatCAMApp.py:8611 -msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." +#: FlatCAMApp.py:9023 +msgid "Open Excellon file failed. Probable not an Excellon file." msgstr "" -"[ERROR_NOTCL] Die Excellon-Datei konnte nicht geöffnet werden. " -"Wahrscheinlich keine Excellon-Datei." +"Die Excellon-Datei konnte nicht geöffnet werden. Wahrscheinlich keine " +"Excellon-Datei." -#: FlatCAMApp.py:8648 -#, python-format -msgid "[ERROR_NOTCL] Failed to open %s" -msgstr "[ERROR_NOTCL] Gescheitert zu öffnen %s" +#: FlatCAMApp.py:9062 +msgid "Failed to open" +msgstr "Gescheitert zu öffnen" -#: FlatCAMApp.py:8658 -msgid "[ERROR_NOTCL] This is not GCODE" -msgstr "[ERROR_NOTCL] Dies ist kein GCODE" +#: FlatCAMApp.py:9073 +msgid "This is not GCODE" +msgstr "Dies ist kein GCODE" -#: FlatCAMApp.py:8664 +#: FlatCAMApp.py:9079 msgid "Opening G-Code." msgstr "G-Code öffnen." -#: FlatCAMApp.py:8672 +#: FlatCAMApp.py:9088 msgid "" -"[ERROR_NOTCL] Failed to create CNCJob Object. Probable not a GCode file.\n" +"Failed to create CNCJob Object. Probable not a GCode file.\n" " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during " "processing" msgstr "" -"[ERROR_NOTCL] CNCJob-Objekt konnte nicht erstellt werden. Wahrscheinlich " -"keine GCode-Datei.\n" +"CNCJob-Objekt konnte nicht erstellt werden. Wahrscheinlich keine GCode-" +"Datei.\n" "Der Versuch, ein FlatCAM-CNCJob-Objekt aus einer G-Code-Datei zu erstellen, " "ist während der Verarbeitung fehlgeschlagen" -#: FlatCAMApp.py:8712 -#, python-format -msgid "[ERROR_NOTCL] Failed to open config file: %s" -msgstr "[ERROR_NOTCL] Fehler beim Öffnen der Konfigurationsdatei: %s" +#: FlatCAMApp.py:9130 +msgid "Failed to open config file" +msgstr "Fehler beim Öffnen der Konfigurationsdatei" -#: FlatCAMApp.py:8733 +#: FlatCAMApp.py:9151 msgid "Loading Project ... Please Wait ..." msgstr "Projekt wird geladen ... Bitte warten ..." -#: FlatCAMApp.py:8740 FlatCAMApp.py:8758 -#, python-format -msgid "[ERROR_NOTCL] Failed to open project file: %s" -msgstr "[ERROR_NOTCL] Projektdatei konnte nicht geöffnet werden: %s" +#: FlatCAMApp.py:9159 FlatCAMApp.py:9178 +msgid "Failed to open project file" +msgstr "Projektdatei konnte nicht geöffnet werden" -#: FlatCAMApp.py:8782 +#: FlatCAMApp.py:9202 msgid "Loading Project ... restoring" msgstr "Projekt wird geladen ... wird wiederhergestellt" -#: FlatCAMApp.py:8787 -#, python-format -msgid "[success] Project loaded from: %s" -msgstr "[success] Projekt geladen von: %s" +#: FlatCAMApp.py:9212 +msgid "Project loaded from" +msgstr "Projekt geladen von" -#: FlatCAMApp.py:8893 +#: FlatCAMApp.py:9318 msgid "Available commands:\n" msgstr "Verfügbare Befehle:\n" -#: FlatCAMApp.py:8895 +#: FlatCAMApp.py:9320 msgid "" "\n" "\n" @@ -1211,38 +1146,36 @@ msgstr "" "Geben Sie help für die Verwendung ein.\n" "Beispiel: help open_gerber" -#: FlatCAMApp.py:9045 +#: FlatCAMApp.py:9470 msgid "Shows list of commands." msgstr "Zeigt eine Liste von Befehlen an." -#: FlatCAMApp.py:9102 -msgid "[ERROR_NOTCL] Failed to load recent item list." -msgstr "[ERROR_NOTCL] Fehler beim Laden der letzten Elementliste." +#: FlatCAMApp.py:9528 +msgid "Failed to load recent item list." +msgstr "Fehler beim Laden der letzten Elementliste." -#: FlatCAMApp.py:9109 -msgid "[ERROR_NOTCL] Failed to parse recent item list." +#: FlatCAMApp.py:9536 +msgid "Failed to parse recent item list." +msgstr "Liste der letzten Artikel konnte nicht analysiert werden." + +#: FlatCAMApp.py:9547 +msgid "Failed to load recent projects item list." +msgstr "Fehler beim Laden der Artikelliste der letzten Projekte." + +#: FlatCAMApp.py:9555 +msgid "Failed to parse recent project item list." msgstr "" -"[ERROR_NOTCL] Liste der letzten Artikel konnte nicht analysiert werden." +"Fehler beim Analysieren der Liste der zuletzt verwendeten Projektelemente." -#: FlatCAMApp.py:9119 -msgid "[ERROR_NOTCL] Failed to load recent projects item list." -msgstr "[ERROR_NOTCL] Fehler beim Laden der Artikelliste der letzten Projekte." - -#: FlatCAMApp.py:9126 -msgid "[ERROR_NOTCL] Failed to parse recent project item list." -msgstr "" -"[ERROR_NOTCL] Fehler beim Analysieren der Liste der zuletzt verwendeten " -"Projektelemente." - -#: FlatCAMApp.py:9185 FlatCAMApp.py:9208 +#: FlatCAMApp.py:9614 FlatCAMApp.py:9637 msgid "Clear Recent files" msgstr "Letzte Dateien löschen" -#: FlatCAMApp.py:9225 flatcamGUI/FlatCAMGUI.py:1006 +#: FlatCAMApp.py:9654 flatcamGUI/FlatCAMGUI.py:1006 msgid "Shortcut Key List" msgstr " Liste der Tastenkombinationen " -#: FlatCAMApp.py:9237 +#: FlatCAMApp.py:9666 #, python-brace-format msgid "" "\n" @@ -1343,27 +1276,25 @@ msgstr "" "Verknüpfungsliste oder über eine eigene Tastenkombination: " "F3.

\n" -#: FlatCAMApp.py:9315 -msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." +#: FlatCAMApp.py:9745 +msgid "Failed checking for latest version. Could not connect." msgstr "" -"[WARNING_NOTCL] Fehler bei der Suche nach der neuesten Version. Konnte keine " -"Verbindung herstellen." +"Fehler bei der Suche nach der neuesten Version. Konnte keine Verbindung " +"herstellen." -#: FlatCAMApp.py:9322 -msgid "[ERROR_NOTCL] Could not parse information about latest version." -msgstr "" -"[ERROR_NOTCL] Informationen zur neuesten Version konnten nicht analysiert " -"werden." +#: FlatCAMApp.py:9753 +msgid "Could not parse information about latest version." +msgstr "Informationen zur neuesten Version konnten nicht analysiert werden." -#: FlatCAMApp.py:9332 -msgid "[success] FlatCAM is up to date!" -msgstr "[success] FlatCAM ist auf dem neuesten Version!" +#: FlatCAMApp.py:9764 +msgid "FlatCAM is up to date!" +msgstr "FlatCAM ist auf dem neuesten Version!" -#: FlatCAMApp.py:9337 +#: FlatCAMApp.py:9769 msgid "Newer Version Available" msgstr "Neuere Version verfügbar" -#: FlatCAMApp.py:9338 +#: FlatCAMApp.py:9770 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" @@ -1371,401 +1302,425 @@ msgstr "" "Es gibt eine neuere Version von FlatCAM zum Download:\n" "\n" -#: FlatCAMApp.py:9340 +#: FlatCAMApp.py:9772 msgid "info" msgstr "Info" -#: FlatCAMApp.py:9394 -msgid "[success] All plots disabled." -msgstr "[success] Alle Diagramme sind deaktiviert." +#: FlatCAMApp.py:9827 +msgid "All plots disabled." +msgstr "Alle Diagramme sind deaktiviert." -#: FlatCAMApp.py:9400 -msgid "[success] All non selected plots disabled." -msgstr "[success] Alle nicht ausgewählten Diagramme sind deaktiviert." +#: FlatCAMApp.py:9834 +msgid "All non selected plots disabled." +msgstr "Alle nicht ausgewählten Diagramme sind deaktiviert." -#: FlatCAMApp.py:9406 -msgid "[success] All plots enabled." -msgstr "[success] Alle Diagramme aktiviert." +#: FlatCAMApp.py:9841 +msgid "All plots enabled." +msgstr "Alle Diagramme aktiviert." -#: FlatCAMApp.py:9412 -msgid "[success] Selected plots enabled..." -msgstr "[success] Ausgewählte Grundstücke aktiviert ..." +#: FlatCAMApp.py:9848 +msgid "Selected plots enabled..." +msgstr "Ausgewählte Diagramme aktiviert ..." -#: FlatCAMApp.py:9420 -msgid "[success] Selected plots disabled..." -msgstr "[success] Ausgewählte Grundstücke deaktiviert ..." +#: FlatCAMApp.py:9857 +msgid "Selected plots disabled..." +msgstr "Ausgewählte Diagramme deaktiviert ..." -#: FlatCAMApp.py:9438 +#: FlatCAMApp.py:9875 msgid "Enabling plots ..." msgstr "Diagramm aktivieren..." -#: FlatCAMApp.py:9472 +#: FlatCAMApp.py:9909 msgid "Disabling plots ..." msgstr "Diagramm deaktivieren..." -#: FlatCAMApp.py:9494 +#: FlatCAMApp.py:9931 msgid "Working ..." msgstr "Arbeiten ..." -#: FlatCAMApp.py:9532 +#: FlatCAMApp.py:9969 msgid "Saving FlatCAM Project" msgstr "FlatCAM-Projekt speichern" -#: FlatCAMApp.py:9553 FlatCAMApp.py:9584 -#, python-format -msgid "[success] Project saved to: %s" -msgstr "[success] Projekt gespeichert in: %s" +#: FlatCAMApp.py:9991 FlatCAMApp.py:10026 +msgid "Project saved to" +msgstr "Projekt gespeichert in" -#: FlatCAMApp.py:9571 -#, python-format -msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." -msgstr "" -"[ERROR_NOTCL] Fehler beim Überprüfen der Projektdatei:%s. Versuchen Sie es " -"erneut zu speichern." +#: FlatCAMApp.py:10010 +msgid "Failed to verify project file" +msgstr "Fehler beim Überprüfen der Projektdatei" -#: FlatCAMApp.py:9578 -#, python-format -msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." -msgstr "" -"[ERROR_NOTCL] Die gespeicherte Projektdatei konnte nicht analysiert werden:" -"%s. Versuchen Sie es erneut zu speichern." +#: FlatCAMApp.py:10010 FlatCAMApp.py:10018 FlatCAMApp.py:10029 +msgid "Retry to save it." +msgstr "Versuchen Sie erneut, es zu speichern." -#: FlatCAMApp.py:9586 -#, python-format -msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." -msgstr "" -"[ERROR_NOTCL] Projektdatei konnte nicht gespeichert werden:%s. Versuchen Sie " -"es erneut zu speichern." +#: FlatCAMApp.py:10018 FlatCAMApp.py:10029 +msgid "Failed to parse saved project file" +msgstr "Fehler beim Parsen der Projektdatei" -#: FlatCAMApp.py:9792 +#: FlatCAMApp.py:10240 msgid "The user requested a graceful exit of the current task." msgstr "" "Der Benutzer hat einen ordnungsgemäßen Abschluss der aktuellen Aufgabe " "angefordert." -#: FlatCAMObj.py:208 +#: FlatCAMObj.py:213 #, python-brace-format msgid "[success] Name changed from {old} to {new}" msgstr "[success] Name geändert von {old} zu {new}" -#: FlatCAMObj.py:217 +#: FlatCAMObj.py:222 msgid "Offsetting..." msgstr "Aufrechnung ..." -#: FlatCAMObj.py:232 +#: FlatCAMObj.py:237 msgid "Scaling..." msgstr "Skalierung ..." -#: FlatCAMObj.py:248 +#: FlatCAMObj.py:253 msgid "Skewing..." msgstr "Verziehen..." -#: FlatCAMObj.py:587 FlatCAMObj.py:2251 FlatCAMObj.py:3533 FlatCAMObj.py:5776 +#: FlatCAMObj.py:600 FlatCAMObj.py:2291 FlatCAMObj.py:3569 FlatCAMObj.py:5835 msgid "Basic" msgstr "Basic" -#: FlatCAMObj.py:600 FlatCAMObj.py:2267 FlatCAMObj.py:3555 FlatCAMObj.py:5782 +#: FlatCAMObj.py:613 FlatCAMObj.py:2307 FlatCAMObj.py:3591 FlatCAMObj.py:5841 msgid "Advanced" msgstr "Erweitert" -#: FlatCAMObj.py:1032 FlatCAMObj.py:1138 -msgid "[ERROR_NOTCL] Isolation geometry could not be generated." -msgstr "[ERROR_NOTCL] Isolationsgeometrie konnte nicht generiert werden." +#: FlatCAMObj.py:802 +msgid "Buffering solid geometry" +msgstr "Festkörpergeometrie puffern" -#: FlatCAMObj.py:1069 FlatCAMObj.py:3223 FlatCAMObj.py:3490 FlatCAMObj.py:3767 +#: FlatCAMObj.py:805 flatcamGUI/FlatCAMGUI.py:4322 +#: flatcamTools/ToolNonCopperClear.py:1531 +#: flatcamTools/ToolNonCopperClear.py:1625 +#: flatcamTools/ToolNonCopperClear.py:1637 +#: flatcamTools/ToolNonCopperClear.py:1864 +#: flatcamTools/ToolNonCopperClear.py:1956 +#: flatcamTools/ToolNonCopperClear.py:1968 +msgid "Buffering" +msgstr "Pufferung" + +#: FlatCAMObj.py:811 +msgid "Done" +msgstr "Gemacht" + +#: FlatCAMObj.py:1071 FlatCAMObj.py:1178 +#: flatcamTools/ToolNonCopperClear.py:1560 +#: flatcamTools/ToolNonCopperClear.py:1888 +msgid "Isolation geometry could not be generated." +msgstr "Isolationsgeometrie konnte nicht generiert werden." + +#: FlatCAMObj.py:1108 FlatCAMObj.py:3259 FlatCAMObj.py:3526 FlatCAMObj.py:3802 msgid "Rough" msgstr "Rau" -#: FlatCAMObj.py:1094 FlatCAMObj.py:1161 +#: FlatCAMObj.py:1133 FlatCAMObj.py:1201 msgid "Isolation geometry created" msgstr "Isolationsgeometrie erstellt" -#: FlatCAMObj.py:1346 +#: FlatCAMObj.py:1386 msgid "Plotting Apertures" msgstr "Plotten Apertures" -#: FlatCAMObj.py:2079 flatcamEditors/FlatCAMExcEditor.py:2292 +#: FlatCAMObj.py:2119 flatcamEditors/FlatCAMExcEditor.py:2292 msgid "Total Drills" msgstr "Bohrungen insgesamt" -#: FlatCAMObj.py:2111 flatcamEditors/FlatCAMExcEditor.py:2324 +#: FlatCAMObj.py:2151 flatcamEditors/FlatCAMExcEditor.py:2324 msgid "Total Slots" msgstr "Schlitz insgesamt" -#: FlatCAMObj.py:2325 FlatCAMObj.py:3605 FlatCAMObj.py:3895 FlatCAMObj.py:4082 -#: FlatCAMObj.py:4093 FlatCAMObj.py:4211 FlatCAMObj.py:4616 FlatCAMObj.py:4852 -#: FlatCAMObj.py:5342 flatcamEditors/FlatCAMExcEditor.py:2398 -msgid "[ERROR_NOTCL] Wrong value format entered, use a number." -msgstr "[ERROR_NOTCL] Falsches Wertformat eingegeben, eine Zahl verwenden." +#: FlatCAMObj.py:2365 FlatCAMObj.py:3642 FlatCAMObj.py:3936 FlatCAMObj.py:4127 +#: FlatCAMObj.py:4138 FlatCAMObj.py:4256 FlatCAMObj.py:4459 FlatCAMObj.py:4666 +#: FlatCAMObj.py:4905 FlatCAMObj.py:5403 flatcamTools/ToolCalculators.py:311 +#: flatcamTools/ToolCalculators.py:322 flatcamTools/ToolCalculators.py:334 +#: flatcamTools/ToolCalculators.py:349 flatcamTools/ToolCalculators.py:362 +#: flatcamTools/ToolCalculators.py:376 flatcamTools/ToolCalculators.py:387 +#: flatcamTools/ToolCalculators.py:398 flatcamTools/ToolCalculators.py:409 +#: flatcamTools/ToolFilm.py:248 flatcamTools/ToolFilm.py:254 +#: flatcamTools/ToolNonCopperClear.py:862 +#: flatcamTools/ToolNonCopperClear.py:873 +#: flatcamTools/ToolNonCopperClear.py:883 +#: flatcamTools/ToolNonCopperClear.py:901 +#: flatcamTools/ToolNonCopperClear.py:980 +#: flatcamTools/ToolNonCopperClear.py:1062 +#: flatcamTools/ToolNonCopperClear.py:1341 +#: flatcamTools/ToolNonCopperClear.py:1371 flatcamTools/ToolPaint.py:697 +#: flatcamTools/ToolPaint.py:772 flatcamTools/ToolPaint.py:921 +#: flatcamTools/ToolPaint.py:975 flatcamTools/ToolPaint.py:1224 +#: flatcamTools/ToolPaint.py:1493 flatcamTools/ToolPaint.py:1963 +#: flatcamTools/ToolPanelize.py:397 flatcamTools/ToolPanelize.py:409 +#: flatcamTools/ToolPanelize.py:422 flatcamTools/ToolPanelize.py:435 +#: flatcamTools/ToolPanelize.py:447 flatcamTools/ToolPanelize.py:458 +#: flatcamTools/ToolSolderPaste.py:764 flatcamTools/ToolSolderPaste.py:839 +#: flatcamTools/ToolTransform.py:474 flatcamTools/ToolTransform.py:508 +#: flatcamTools/ToolTransform.py:526 flatcamTools/ToolTransform.py:544 +#: flatcamTools/ToolTransform.py:578 flatcamTools/ToolTransform.py:607 +#: flatcamTools/ToolTransform.py:625 +msgid "Wrong value format entered, use a number." +msgstr "Falsches Wertformat eingegeben, eine Zahl verwenden." -#: FlatCAMObj.py:2567 FlatCAMObj.py:2659 FlatCAMObj.py:2782 -msgid "" -"[ERROR_NOTCL] Please select one or more tools from the list and try again." +#: FlatCAMObj.py:2606 FlatCAMObj.py:2696 FlatCAMObj.py:2817 +msgid "Please select one or more tools from the list and try again." msgstr "" -"[ERROR_NOTCL] Bitte wählen Sie ein oder mehrere Werkzeuge aus der Liste aus " -"und versuchen Sie es erneut." +"Bitte wählen Sie ein oder mehrere Werkzeuge aus der Liste aus und versuchen " +"Sie es erneut." -#: FlatCAMObj.py:2574 -msgid "" -"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled." -msgstr "" -"[ERROR_NOTCL] Das Fräswerkzeug für BOHRER ist größer als die Lochgröße. " -"Abgebrochen." +#: FlatCAMObj.py:2612 +msgid "Milling tool for DRILLS is larger than hole size. Cancelled." +msgstr "Das Fräswerkzeug für BOHRER ist größer als die Lochgröße. Abgebrochen." -#: FlatCAMObj.py:2588 FlatCAMObj.py:2683 FlatCAMObj.py:2802 +#: FlatCAMObj.py:2625 FlatCAMObj.py:2718 FlatCAMObj.py:2836 msgid "Tool_nr" msgstr "Werkzeugnummer" -#: FlatCAMObj.py:2588 FlatCAMObj.py:2683 FlatCAMObj.py:2802 +#: FlatCAMObj.py:2625 FlatCAMObj.py:2718 FlatCAMObj.py:2836 #: flatcamEditors/FlatCAMExcEditor.py:1483 -#: flatcamEditors/FlatCAMExcEditor.py:3116 flatcamGUI/ObjectUI.py:604 +#: flatcamEditors/FlatCAMExcEditor.py:3116 flatcamGUI/ObjectUI.py:613 #: flatcamTools/ToolNonCopperClear.py:107 flatcamTools/ToolPaint.py:106 #: flatcamTools/ToolPcbWizard.py:76 flatcamTools/ToolSolderPaste.py:81 msgid "Diameter" msgstr "Durchmesser" -#: FlatCAMObj.py:2588 FlatCAMObj.py:2683 FlatCAMObj.py:2802 +#: FlatCAMObj.py:2625 FlatCAMObj.py:2718 FlatCAMObj.py:2836 msgid "Drills_Nr" msgstr "Bohrnummer" -#: FlatCAMObj.py:2588 FlatCAMObj.py:2683 FlatCAMObj.py:2802 +#: FlatCAMObj.py:2625 FlatCAMObj.py:2718 FlatCAMObj.py:2836 msgid "Slots_Nr" msgstr "Schlitznummer" -#: FlatCAMObj.py:2669 -msgid "" -"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled." +#: FlatCAMObj.py:2705 +msgid "Milling tool for SLOTS is larger than hole size. Cancelled." msgstr "" -"[ERROR_NOTCL] Das Fräswerkzeug für SCHLITZ ist größer als die Lochgröße. " -"Abgebrochen." +"Das Fräswerkzeug für SCHLITZ ist größer als die Lochgröße. Abgebrochen." -#: FlatCAMObj.py:2843 FlatCAMObj.py:4509 FlatCAMObj.py:4725 FlatCAMObj.py:5042 +#: FlatCAMObj.py:2877 FlatCAMObj.py:4557 FlatCAMObj.py:4775 FlatCAMObj.py:5098 msgid "" -"[ERROR_NOTCL] Wrong value format for self.defaults[\"z_pdepth\"] or self." -"options[\"z_pdepth\"]" +"Wrong value format for self.defaults[\"z_pdepth\"] or self.options[\"z_pdepth" +"\"]" msgstr "" -"[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"z_pdepth\"] oder self." -"options [\"z_pdepth\"]" +"Falsches Wertformat für self.defaults [\"z_pdepth\"] oder self.options " +"[\"z_pdepth\"]" -#: FlatCAMObj.py:2853 FlatCAMObj.py:4519 FlatCAMObj.py:4735 FlatCAMObj.py:5052 +#: FlatCAMObj.py:2888 FlatCAMObj.py:4568 FlatCAMObj.py:5109 msgid "" -"[ERROR_NOTCL] Wrong value format for self.defaults[\"feedrate_probe\"] or " -"self.options[\"feedrate_probe\"]" +"Wrong value format for self.defaults[\"feedrate_probe\"] or self." +"options[\"feedrate_probe\"]" msgstr "" -"[ERROR_NOTCL] Falsches Wertformat für self.defaults [\"feedrate_probe\"] " -"oder self.options [\"feedrate_probe\"]" +"Falsches Wertformat für self.defaults [\"feedrate_probe\"] oder self.options " +"[\"feedrate_probe\"]" -#: FlatCAMObj.py:2883 FlatCAMObj.py:4932 FlatCAMObj.py:4937 FlatCAMObj.py:5085 +#: FlatCAMObj.py:2918 FlatCAMObj.py:4985 FlatCAMObj.py:4991 FlatCAMObj.py:5143 msgid "Generating CNC Code" msgstr "CNC-Code generieren" -#: FlatCAMObj.py:2909 FlatCAMObj.py:5302 camlib.py:5548 camlib.py:6499 +#: FlatCAMObj.py:2944 camlib.py:5649 camlib.py:6623 msgid "" -"[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " -"format (x, y) \n" +"The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " +"y) \n" "but now there is only one value, not two. " msgstr "" -"[ERROR] Das Feld X, Y des Werkzeugwechsels in Bearbeiten -> Voreinstellungen " -"muss das Format (x, y) haben.\n" -"Aber jetzt gibt es nur einen Wert, nicht zwei. " +"Das Werkzeugwechsel X, Y Feld in Bearbeiten -> Einstellungen muss im Format " +"(x, y) sein\n" +"Aber jetzt gibt es nur einen Wert, nicht zwei." -#: FlatCAMObj.py:3223 FlatCAMObj.py:4134 FlatCAMObj.py:4135 FlatCAMObj.py:4144 +#: FlatCAMObj.py:3259 FlatCAMObj.py:4178 FlatCAMObj.py:4179 FlatCAMObj.py:4188 msgid "Iso" msgstr "Iso" -#: FlatCAMObj.py:3223 +#: FlatCAMObj.py:3259 msgid "Finish" msgstr "Oberfläche" -#: FlatCAMObj.py:3526 flatcamGUI/FlatCAMGUI.py:544 flatcamGUI/FlatCAMGUI.py:746 +#: FlatCAMObj.py:3562 flatcamGUI/FlatCAMGUI.py:544 flatcamGUI/FlatCAMGUI.py:746 #: flatcamGUI/FlatCAMGUI.py:1718 flatcamGUI/FlatCAMGUI.py:2092 -#: flatcamGUI/ObjectUI.py:1052 +#: flatcamGUI/ObjectUI.py:1061 msgid "Copy" msgstr "Kopieren" -#: FlatCAMObj.py:3737 -msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format." +#: FlatCAMObj.py:3773 +msgid "Please enter the desired tool diameter in Float format." msgstr "" -"[ERROR_NOTCL] Bitte geben Sie den gewünschten Werkzeugdurchmesser im Real-" -"Format ein." +"Bitte geben Sie den gewünschten Werkzeugdurchmesser im Real-Format ein." -#: FlatCAMObj.py:3811 -msgid "[success] Tool added in Tool Table." -msgstr "[success] Werkzeug in der Werkzeugtabelle hinzugefügt." +#: FlatCAMObj.py:3847 +msgid "Tool added in Tool Table." +msgstr "Werkzeug in der Werkzeugtabelle hinzugefügt." -#: FlatCAMObj.py:3814 -msgid "[WARNING_NOTCL] Default Tool added. Wrong value format entered." -msgstr "" -"[WARNING_NOTCL] Standardwerkzeug hinzugefügt Falsches Wertformat eingegeben." +#: FlatCAMObj.py:3851 +msgid "Default Tool added. Wrong value format entered." +msgstr "Standardwerkzeug hinzugefügt Falsches Wertformat eingegeben." -#: FlatCAMObj.py:3846 FlatCAMObj.py:3854 -msgid "[WARNING_NOTCL] Failed. Select a tool to copy." -msgstr "" -"[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Kopieren aus." +#: FlatCAMObj.py:3884 FlatCAMObj.py:3893 +msgid "Failed. Select a tool to copy." +msgstr "Fehlgeschlagen. Wählen Sie ein Werkzeug zum Kopieren aus." -#: FlatCAMObj.py:3881 -msgid "[success] Tool was copied in Tool Table." -msgstr "[success] Das Werkzeug wurde in die Werkzeugtabelle kopiert." +#: FlatCAMObj.py:3921 +msgid "Tool was copied in Tool Table." +msgstr "Das Werkzeug wurde in die Werkzeugtabelle kopiert." -#: FlatCAMObj.py:3910 -msgid "[success] Tool was edited in Tool Table." -msgstr "[success] Das Werkzeug wurde in der Werkzeugtabelle bearbeitet." +#: FlatCAMObj.py:3951 +msgid "Tool was edited in Tool Table." +msgstr "Das Werkzeug wurde in der Werkzeugtabelle bearbeitet." -#: FlatCAMObj.py:3938 FlatCAMObj.py:3946 -msgid "[WARNING_NOTCL] Failed. Select a tool to delete." -msgstr "" -"[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." +#: FlatCAMObj.py:3980 FlatCAMObj.py:3989 +msgid "Failed. Select a tool to delete." +msgstr "Gescheitert. Wählen Sie ein Werkzeug zum Löschen aus." -#: FlatCAMObj.py:3968 -msgid "[success] Tool was deleted in Tool Table." -msgstr "[success] Werkzeug wurde in der Werkzeugtabelle gelöscht." +#: FlatCAMObj.py:4012 +msgid "Tool was deleted in Tool Table." +msgstr "Werkzeug wurde in der Werkzeugtabelle gelöscht." -#: FlatCAMObj.py:4397 +#: FlatCAMObj.py:4442 #, python-format +msgid "This Geometry can't be processed because it is %s geometry." +msgstr "" +"Diese Geometrie kann nicht verarbeitet werden, da es sich um %s Geometrie " +"handelt." + +#: FlatCAMObj.py:4484 +msgid "Failed. No tool selected in the tool table ..." +msgstr "Gescheitert. Kein Werkzeug in der Werkzeugtabelle ausgewählt ..." + +#: FlatCAMObj.py:4522 +msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() -->" +msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() -->" + +#: FlatCAMObj.py:4671 FlatCAMObj.py:4911 msgid "" -"[WARNING_NOTCL] This Geometry can't be processed because it is %s geometry." -msgstr "" -"[WARNING_NOTCL] Diese Geometrie kann nicht verarbeitet werden, da es sich um " -"%s Geometrie handelt." - -#: FlatCAMObj.py:4413 -msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." -msgstr "" -"[ERROR_NOTCL] Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie " -"eine Zahl." - -#: FlatCAMObj.py:4438 -msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..." -msgstr "" -"[ERROR_NOTCL] Gescheitert. Kein Werkzeug in der Werkzeugtabelle " -"ausgewählt ..." - -#: FlatCAMObj.py:4475 -#, python-format -msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" -msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s" - -#: FlatCAMObj.py:4622 FlatCAMObj.py:4858 -msgid "" -"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n" +"Tool Offset is selected in Tool Table but no value is provided.\n" "Add a Tool Offset or change the Offset Type." msgstr "" -"[WARNING] Werkzeugversatz ist in der Werkzeugtabelle ausgewählt, es wird " -"jedoch kein Wert angegeben.\n" +"Werkzeugversatz ist in der Werkzeugtabelle ausgewählt, es wird jedoch kein " +"Wert angegeben.\n" "Fügen Sie einen Werkzeugversatz hinzu oder ändern Sie den Versatztyp." -#: FlatCAMObj.py:4673 FlatCAMObj.py:4899 +#: FlatCAMObj.py:4722 FlatCAMObj.py:4952 msgid "G-Code parsing in progress..." msgstr "G-Code-Analyse läuft ..." -#: FlatCAMObj.py:4675 FlatCAMObj.py:4901 +#: FlatCAMObj.py:4724 FlatCAMObj.py:4954 msgid "G-Code parsing finished..." msgstr "G-Code-Analyse beendet ..." -#: FlatCAMObj.py:4683 FlatCAMObj.py:4911 +#: FlatCAMObj.py:4732 FlatCAMObj.py:4964 FlatCAMObj.py:5136 msgid "Finished G-Code processing..." msgstr "Fertige G-Code Verarbeitung ..." -#: FlatCAMObj.py:4685 FlatCAMObj.py:4913 +#: FlatCAMObj.py:4734 FlatCAMObj.py:4966 #, python-format msgid "G-Code processing failed with error: %s" msgstr "G-Code-Verarbeitung fehlgeschlagen mit Fehler: %s" -#: FlatCAMObj.py:4745 -msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." -msgstr "[ERROR_NOTCL] Abgebrochen. Leere Datei, es hat keine Geometrie ..." - -#: FlatCAMObj.py:5078 -#| msgid "[success] Panel done..." -msgid "[success] Finished G-Code processing..." -msgstr "[success] Fertige G-Code Verarbeitung ..." - -#: FlatCAMObj.py:5119 FlatCAMObj.py:5128 -msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." +#: FlatCAMObj.py:4786 +msgid "" +" Wrong value format for self.defaults[\"feedrate_probe\"] or self." +"options[\"feedrate_probe\"]" msgstr "" -"[ERROR_NOTCL] Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder " -"Fließkommazahl." +"Falsches Wertformat für self.defaults [\"feedrate_probe\"] oder self.options " +"[\"feedrate_probe\"]" -#: FlatCAMObj.py:5202 +#: FlatCAMObj.py:4797 flatcamTools/ToolSolderPaste.py:1187 +msgid "Cancelled. Empty file, it has no geometry" +msgstr "Abgebrochen. Leere Datei hat keine Geometrie ..." + +#: FlatCAMObj.py:4988 FlatCAMObj.py:4994 FlatCAMObj.py:5146 +msgid "CNCjob created" +msgstr "CNCjob erstellt" + +#: FlatCAMObj.py:5178 FlatCAMObj.py:5188 camlib.py:3572 camlib.py:3582 +msgid "Scale factor has to be a number: integer or float." +msgstr "" +"Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder Fließkommazahl." + +#: FlatCAMObj.py:5262 msgid "Geometry Scale done." msgstr "Geometrie Skalierung fertig." -#: FlatCAMObj.py:5219 +#: FlatCAMObj.py:5279 camlib.py:3676 msgid "" -"[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered only " -"one value in the Offset field." +"An (x,y) pair of values are needed. Probable you entered only one value in " +"the Offset field." msgstr "" -"[ERROR_NOTCL] Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie " -"im Feld Offset nur einen Wert eingegeben." +"Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie im Feld Offset " +"nur einen Wert eingegeben." -#: FlatCAMObj.py:5273 +#: FlatCAMObj.py:5333 msgid "Geometry Offset done." msgstr "Geometrie Offset fertig." -#: FlatCAMObj.py:5844 FlatCAMObj.py:5849 flatcamTools/ToolSolderPaste.py:1393 +#: FlatCAMObj.py:5362 +msgid "" +"The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " +"y)\n" +"but now there is only one value, not two." +msgstr "" +"Das Werkzeugwechsel X, Y Feld in Bearbeiten -> Einstellungen muss im Format " +"(x, y) sein\n" +"Aber jetzt gibt es nur einen Wert, nicht zwei." + +#: FlatCAMObj.py:5903 FlatCAMObj.py:5908 flatcamTools/ToolSolderPaste.py:1393 msgid "Export Machine Code ..." msgstr "Maschinencode exportieren ..." -#: FlatCAMObj.py:5855 -msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." -msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." +#: FlatCAMObj.py:5914 flatcamTools/ToolSolderPaste.py:1397 +msgid "Export Machine Code cancelled ..." +msgstr "Maschinencode exportieren abgebrochen ..." -#: FlatCAMObj.py:5872 -#, python-format -msgid "[success] Machine Code file saved to: %s" -msgstr "[success] Maschinencode-Datei gespeichert in: %s" +#: FlatCAMObj.py:5932 +msgid "Machine Code file saved to" +msgstr "Maschinencode-Datei gespeichert in" -#: FlatCAMObj.py:5895 -#, python-format -msgid "[ERROR] FlatCAMCNNJob.on_edit_code_click() -->%s" -msgstr "[ERROR] FlatCAMCNNJob.on_edit_code_click() -->%s" +#: FlatCAMObj.py:5956 +msgid "FlatCAMCNNJob.on_edit_code_click() -->" +msgstr "[ERROR] FlatCAMCNNJob.on_edit_code_click() -->" -#: FlatCAMObj.py:5902 -msgid "[success] Loaded Machine Code into Code Editor ..." -msgstr "[success] Maschinencode in den Code-Editor geladen ..." +#: FlatCAMObj.py:5964 +msgid "Loaded Machine Code into Code Editor" +msgstr "Maschinencode in den Code-Editor geladen" -#: FlatCAMObj.py:6013 -#, python-format -msgid "" -"[WARNING_NOTCL] This CNCJob object can't be processed because it is a %s " -"CNCJob object." -msgstr "" -"[WARNING_NOTCL] Dieses CNC-Auftrag Objekt kann nicht verarbeitet werden, da " -"es sich um ein %s CNC-Auftrag Objekt handelt." +#: FlatCAMObj.py:6076 +msgid "This CNCJob object can't be processed because it is a" +msgstr "Dieses CNCJob-Objekt kann nicht verarbeitet werden, da es sich um ein" -#: FlatCAMObj.py:6066 -msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21" -msgstr "[ERROR_NOTCL] G-Code hat keinen Einheitencode: entweder G20 oder G21" +#: FlatCAMObj.py:6078 +msgid "CNCJob object" +msgstr "CNCJob-Objekt" -#: FlatCAMObj.py:6079 -msgid "" -"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's " -"empty." -msgstr "" -"[ERROR_NOTCL] Abgebrochen. Der benutzerdefinierte Code zum Ändern des " -"Werkzeugs ist aktiviert, aber er ist leer." - -#: FlatCAMObj.py:6086 -msgid "[success] Toolchange G-code was replaced by a custom code." -msgstr "" -"[success] Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten " -"Code ersetzt." - -#: FlatCAMObj.py:6100 -msgid "[WARNING_NOTCL] No such file or directory" -msgstr "[WARNING_NOTCL] Keine solche Datei oder Ordner" - -#: FlatCAMObj.py:6124 FlatCAMObj.py:6136 -msgid "" -"[WARNING_NOTCL] The used postprocessor file has to have in it's name: " -"'toolchange_custom'" -msgstr "" -"[WARNING_NOTCL] Die verwendete Postprozessor-Datei muss im Namen enthalten " -"sein: 'toolchange_custom'" +#: FlatCAMObj.py:6130 +msgid "G-code does not have a units code: either G20 or G21" +msgstr "G-Code hat keinen Einheitencode: entweder G20 oder G21" #: FlatCAMObj.py:6142 -msgid "[ERROR] There is no postprocessor file." -msgstr "[ERROR] Es gibt keine Postprozessor-Datei." +msgid "Cancelled. The Toolchange Custom code is enabled but it's empty." +msgstr "" +"Abgebrochen. Der benutzerdefinierte Code zum Ändern des Werkzeugs ist " +"aktiviert, aber er ist leer." + +#: FlatCAMObj.py:6148 +msgid "Toolchange G-code was replaced by a custom code." +msgstr "" +"Der Werkzeugwechsel-G-Code wurde durch einen benutzerdefinierten Code " +"ersetzt." + +#: FlatCAMObj.py:6175 +msgid "Saved to" +msgstr "Gespeichert in" + +#: FlatCAMObj.py:6185 FlatCAMObj.py:6195 +msgid "" +"The used postprocessor file has to have in it's name: 'toolchange_custom'" +msgstr "" +"Die verwendete Postprozessor-Datei muss im Namen enthalten sein: " +"'toolchange_custom'" + +#: FlatCAMObj.py:6199 +msgid "There is no postprocessor file." +msgstr "Es gibt keine Postprozessor-Datei." #: FlatCAMProcess.py:172 msgid "processes running." @@ -1789,202 +1744,204 @@ msgstr "Sprache anwenden ..." msgid "Object renamed from {old} to {new}" msgstr "Objekt umbenannt von {old} zu {new}" -#: ObjectCollection.py:765 -#, python-format -msgid "[ERROR] Cause of error: %s" -msgstr "[ERROR] Fehlerursache: %s" +#: ObjectCollection.py:766 +msgid "Cause of error" +msgstr "Fehlerursache" -#: camlib.py:202 -msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." -msgstr "" -"[ERROR_NOTCL] self.solid_geometry ist weder BaseGeometry noch eine Liste." +#: camlib.py:215 +msgid "self.solid_geometry is neither BaseGeometry or list." +msgstr "self.solid_geometry ist weder BaseGeometry noch eine Liste." -#: camlib.py:1456 -msgid "[success] Object was mirrored ..." -msgstr "[success] Objekt wurde gespiegelt ..." +#: camlib.py:1522 +msgid "Object was mirrored" +msgstr "Objekt wurde gespiegelt" -#: camlib.py:1458 -msgid "[ERROR_NOTCL] Failed to mirror. No object selected" -msgstr "[ERROR_NOTCL] Spiegelung fehlgeschlagen Kein Objekt ausgewählt" +#: camlib.py:1525 +msgid "Failed to mirror. No object selected" +msgstr "Spiegelung fehlgeschlagen Kein Objekt ausgewählt" -#: camlib.py:1526 -msgid "[success] Object was rotated ..." -msgstr "[success] Objekt wurde gedreht ..." - -#: camlib.py:1528 -msgid "[ERROR_NOTCL] Failed to rotate. No object selected" -msgstr "[ERROR_NOTCL] Fehler beim Drehen. Kein Objekt ausgewählt" - -#: camlib.py:1595 -msgid "[success] Object was skewed ..." -msgstr "[success] Objekt war schief ..." +#: camlib.py:1594 +msgid "Object was rotated" +msgstr "Objekt wurde gedreht" #: camlib.py:1597 -msgid "[ERROR_NOTCL] Failed to skew. No object selected" -msgstr "[ERROR_NOTCL] Fehler beim Neigen Kein Objekt ausgewählt" +msgid "Failed to rotate. No object selected" +msgstr " Fehler beim Drehen. Kein Objekt ausgewählt" -#: camlib.py:2868 camlib.py:2953 -#, python-format -msgid "[WARNING] Coordinates missing, line ignored: %s" -msgstr "[WARNING] Koordinaten fehlen, Zeile wird ignoriert: %s" +#: camlib.py:1665 +msgid "Object was skewed" +msgstr "Objekt war schief ..." -#: camlib.py:2869 camlib.py:2954 -msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" -msgstr "" -"[WARNING_NOTCL] Die GERBER-Datei könnte CORRUPT sein. Überprüfen Sie die " -"Datei !!!" +#: camlib.py:1668 +msgid "Failed to skew. No object selected" +msgstr "Fehler beim Neigen Kein Objekt ausgewählt" -#: camlib.py:2918 -#, python-format +#: camlib.py:2443 +msgid "Gerber processing. Parsing" +msgstr "Gerber-Verarbeitung. Parsing" + +#: camlib.py:2443 +msgid "lines" +msgstr "Linien" + +#: camlib.py:2942 camlib.py:3030 +msgid "Coordinates missing, line ignored" +msgstr "Koordinaten fehlen, Zeile wird ignoriert" + +#: camlib.py:2944 camlib.py:3032 +msgid "GERBER file might be CORRUPT. Check the file !!!" +msgstr "Die GERBER-Datei könnte CORRUPT sein. Überprüfen Sie die Datei !!!" + +#: camlib.py:2994 msgid "" -"[ERROR] Region does not have enough points. File will be processed but there " -"are parser errors. Line number: %s" +"Region does not have enough points. File will be processed but there are " +"parser errors. Line number" msgstr "" -"[ERROR] Region hat nicht genug Punkte. Die Datei wird verarbeitet, es treten " -"jedoch Parserfehler auf. Linien Nummer: %s" +"Region hat nicht genug Punkte. Die Datei wird verarbeitet, es treten jedoch " +"Parserfehler auf. Linien Nummer" -#: camlib.py:3310 -#, python-format -msgid "" -"[ERROR]Gerber Parser ERROR.\n" -"%s:" -msgstr "" -"[ERROR] Gerber Parser ERROR.\n" -"%s:" +#: camlib.py:3364 +msgid "Gerber processing. Joining" +msgstr "Gerber-Verarbeitung. Beitreten" -#: camlib.py:3490 camlib.py:3500 -msgid "Scale factor has to be a number: integer or float." -msgstr "" -"Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder Fließkommazahl." +#: camlib.py:3364 +msgid "polygons" +msgstr "Polygone" -#: camlib.py:3557 +#: camlib.py:3390 +msgid "Gerber Line" +msgstr "Gerber Linie" + +#: camlib.py:3390 +msgid "Gerber Line Content" +msgstr "Gerber-Zeileninhalt" + +#: camlib.py:3392 +msgid "Gerber Parser ERROR" +msgstr "Gerber-Parser FEHLER" + +#: camlib.py:3640 msgid "Gerber Scale done." msgstr "Gerber-Skalierung erfolgt." -#: camlib.py:3593 -msgid "" -"An (x,y) pair of values are needed. Probable you entered only one value in " -"the Offset field." -msgstr "" -"Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben Sie im Feld Offset " -"nur einen Wert eingegeben." - -#: camlib.py:3646 +#: camlib.py:3730 msgid "Gerber Offset done." msgstr "Gerber Offset fertig." -#: camlib.py:3722 +#: camlib.py:3807 msgid "Gerber Mirror done." msgstr "Gerber Spiegel fertig." -#: camlib.py:3790 +#: camlib.py:3876 msgid "Gerber Skew done." msgstr "Gerber-Versatz fertig." -#: camlib.py:3850 +#: camlib.py:3937 msgid "Gerber Rotate done." msgstr "Gerber drehen fertig." -#: camlib.py:4136 -#, python-format -msgid "[ERROR_NOTCL] This is GCODE mark: %s" -msgstr "[ERROR_NOTCL] Dies ist die GCODE-Marke: %s" +#: camlib.py:4224 +msgid "This is GCODE mark" +msgstr "Dies ist die GCODE-Marke" -#: camlib.py:4251 -#, python-format +#: camlib.py:4340 msgid "" -"[WARNING] No tool diameter info's. See shell.\n" -"A tool change event: T%s was found but the Excellon file have no " -"informations regarding the tool diameters therefore the application will try " -"to load it by using some 'fake' diameters.\n" +"No tool diameter info's. See shell.\n" +"A tool change event: T" +msgstr "" +"Keine Angaben zum Werkzeugdurchmesser. Siehe Shell.\n" +"Ein Werkzeugwechselereignis: T" + +#: camlib.py:4343 +msgid "" +"was found but the Excellon file have no informations regarding the tool " +"diameters therefore the application will try to load it by using some 'fake' " +"diameters.\n" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." msgstr "" -"[WARNING] Keine Informationen zum Werkzeugdurchmesser. Siehe Shell.\n" -"Ein Werkzeugwechselereignis: T% s wurde gefunden, die Excellon-Datei enthält " -"jedoch keine Informationen zu den Werkzeugdurchmessern. Daher versucht die " -"Anwendung, sie mithilfe einiger 'gefälschter' Durchmesser zu laden.\n" +"wurde gefunden, aber die Excellon-Datei enthält keine Informationen zu den " +"Werkzeugdurchmessern. Daher wird die Anwendung versuchen, diese mit Hilfe " +"einiger gefälschter Durchmesser zu laden.\n" "Der Benutzer muss das resultierende Excellon-Objekt bearbeiten und die " -"Durchmesser ändern, um die tatsächlichen Durchmesser widerzuspiegeln." +"Durchmesser so ändern, dass sie den tatsächlichen Durchmessern entsprechen." -#: camlib.py:4704 +#: camlib.py:4798 #, python-brace-format +#| msgid "" +#| "[ERROR] Excellon Parser error.\n" +#| "Parsing Failed. Line {l_nr}: {line}\n" msgid "" -"[ERROR] Excellon Parser error.\n" +"{e_code} Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" msgstr "" -"[ERROR] Fehler beim Excellon-Parser.\n" -"Parsing fehlgeschlagen. Zeile {l_nr}: {line}\n" +"{e_code} Excellon-Parser-Fehler.\n" +"Analyse fehlgeschlagen. Linie {l_nr}: {line}\n" -#: camlib.py:4784 +#: camlib.py:4881 msgid "" -"[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " -"not having a tool associated.\n" +"Excellon.create_geometry() -> a drill location was skipped due of not having " +"a tool associated.\n" "Check the resulting GCode." msgstr "" -"[WARNING] Excellon.create_geometry () -> Eine Bohrstelle wurde übersprungen, " -"da kein Werkzeug zugeordnet wurde.\n" +"Excellon.create_geometry () -> Eine Bohrposition wurde übersprungen, da kein " +"Werkzeug zugeordnet ist.\n" "Überprüfen Sie den resultierenden GCode." -#: camlib.py:5457 -#, python-format -msgid "[ERROR] There is no such parameter: %s" -msgstr "[ERROR] Es gibt keinen solchen Parameter: %s" +#: camlib.py:5555 +msgid "There is no such parameter" +msgstr "Es gibt keinen solchen Parameter" -#: camlib.py:5527 +#: camlib.py:5626 msgid "" -"[WARNING] The Cut Z parameter has positive value. It is the depth value to " -"drill into material.\n" +"The Cut Z parameter has positive value. It is the depth value to drill into " +"material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." msgstr "" -"[WARNING] Der Parameter Cut Z hat einen positiven Wert. Dies ist der " -"Tiefenwert zum Bohren in Material.\n" +"Der Parameter Cut Z hat einen positiven Wert. Dies ist der Tiefenwert zum " +"Bohren in Material.\n" "Der Parameter Cut Z muss einen negativen Wert haben, vorausgesetzt, es " "handelt sich um einen Tippfehler, daher konvertiert die App den Wert in " "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:5534 camlib.py:6195 camlib.py:6522 -#, python-format -msgid "" -"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" +#: camlib.py:5634 camlib.py:6307 camlib.py:6649 +msgid "The Cut Z parameter is zero. There will be no cut, skipping file" msgstr "" -"[WARNING] Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, da " -"die %s Datei übersprungen wird" +"Der Parameter Cut Z ist Null. Es wird kein Schnitt ausgeführt, und die Datei " +"wird übersprungen" -#: camlib.py:5585 +#: camlib.py:5686 msgid "Creating a list of points to drill..." msgstr "Erstellen einer Liste von Punkten zum Bohren ..." -#: camlib.py:5667 +#: camlib.py:5769 msgid "Starting G-Code" msgstr "G-Code starten" -#: camlib.py:5763 camlib.py:5907 camlib.py:6010 camlib.py:6301 camlib.py:6628 +#: camlib.py:5865 camlib.py:6011 camlib.py:6117 camlib.py:6416 camlib.py:6758 msgid "Starting G-Code for tool with diameter" msgstr "Start-G-Code für Werkzeug mit Durchmesser" -#: camlib.py:5819 camlib.py:5963 camlib.py:6067 camlib.py:7278 camlib.py:7555 -#: camlib.py:7657 camlib.py:7703 -#| msgid "[ERROR_NOTCL] Grid Value does not exist ..." -msgid "[ERROR_NOTCL] G91 coordinates not implemented ..." -msgstr "[ERROR_NOTCL] G91 Koordinaten nicht implementiert ..." +#: camlib.py:5922 camlib.py:6068 camlib.py:6175 +msgid "G91 coordinates not implemented" +msgstr "G91 Koordinaten nicht implementiert ..." -#: camlib.py:5824 camlib.py:5968 camlib.py:6072 -msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." -msgstr "[ERROR_NOTCL] Die geladene Excellon-Datei hat keine Bohrer ..." +#: camlib.py:5928 camlib.py:6074 camlib.py:6181 +msgid "The loaded Excellon file has no drills" +msgstr "Die geladene Excellon-Datei hat keine Bohrer ..." -#: camlib.py:5973 -msgid "[ERROR_NOTCL] Wrong optimization type selected." -msgstr "[ERROR_NOTCL] Falscher Optimierungstyp ausgewählt." +#: camlib.py:6080 +msgid "Wrong optimization type selected." +msgstr "Falscher Optimierungstyp ausgewählt." -#: camlib.py:6094 +#: camlib.py:6203 msgid "Finished G-Code generation..." msgstr "Fertige G-Code-Generierung ..." -#: camlib.py:6171 +#: camlib.py:6280 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y) \n" @@ -1994,101 +1951,104 @@ msgstr "" "das Format (x, y) haben.\n" "Aber jetzt gibt es nur einen Wert, nicht zwei." -#: camlib.py:6183 camlib.py:6510 +#: camlib.py:6293 camlib.py:6635 msgid "" -"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " -"combinations of other parameters." +"Cut_Z parameter is None or zero. Most likely a bad combinations of other " +"parameters." msgstr "" -"[ERROR_NOTCL] Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich " -"eine schlechte Kombination anderer Parameter." +"Der Parameter Cut_Z ist None oder Null. Höchstwahrscheinlich eine schlechte " +"Kombination anderer Parameter." -#: camlib.py:6188 camlib.py:6515 +#: camlib.py:6299 camlib.py:6641 msgid "" -"[WARNING] The Cut Z parameter has positive value. It is the depth value to " -"cut into material.\n" +"The Cut Z parameter has positive value. It is the depth value to cut into " +"material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." msgstr "" -"[WARNING] Der Parameter Cut Z hat einen positiven Wert. Es ist der " -"Tiefenwert zum Schneiden in Material.\n" +"Der Parameter Cut Z hat einen positiven Wert. Es ist der Tiefenwert zum " +"Schneiden in Material.\n" "Der Parameter Cut Z muss einen negativen Wert haben, vorausgesetzt es " "handelt sich um einen Tippfehler, daher konvertiert die App den Wert in " "einen negativen Wert. \n" "Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:6204 camlib.py:6527 -msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." -msgstr "[ERROR_NOTCL] Der Parameter für den Travel Z ist Kein oder Null." +#: camlib.py:6317 camlib.py:6655 +msgid "Travel Z parameter is None or zero." +msgstr "Der Parameter für den Travel Z ist Kein oder Null." -#: camlib.py:6208 camlib.py:6531 +#: camlib.py:6322 camlib.py:6660 msgid "" -"[WARNING] The Travel Z parameter has negative value. It is the height value " -"to travel between cuts.\n" +"The Travel Z parameter has negative value. It is the height value to travel " +"between cuts.\n" "The Z Travel parameter needs to have a positive value, assuming it is a typo " "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." msgstr "" -"[WARNING] Der Parameter Travel Z hat einen negativen Wert. Dies ist der " -"Höhenwert zwischen den Schnitten.\n" +"Der Parameter Travel Z hat einen negativen Wert. Dies ist der Höhenwert " +"zwischen den Schnitten.\n" "Der Parameter Z Travel muss einen positiven Wert haben. Wenn es sich um " "einen Tippfehler handelt, konvertiert die App den Wert in einen positiven " "Wert. Überprüfen Sie den resultierenden CNC-Code (Gcode usw.)." -#: camlib.py:6215 camlib.py:6538 -#, python-format -msgid "" -"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" +#: camlib.py:6330 camlib.py:6668 +msgid "The Z Travel parameter is zero. This is dangerous, skipping file" msgstr "" -"[WARNING] Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " +"Der Parameter Z-Weg ist Null. Dies ist gefährlich, da die %s Datei " "übersprungen wird" -#: camlib.py:6230 camlib.py:6557 +#: camlib.py:6345 camlib.py:6687 msgid "Indexing geometry before generating G-Code..." msgstr "Indizierung der Geometrie vor dem Generieren von G-Code ..." -#: camlib.py:6284 camlib.py:6614 +#: camlib.py:6399 camlib.py:6744 msgid "Starting G-Code..." msgstr "G-Code wird gestartet ..." -#: camlib.py:6370 camlib.py:6697 -#, python-format -msgid "Finished G-Code generation... %s paths traced." -msgstr "G-Code-Generierung abgeschlossen … %s Pfade verfolgt." +#: camlib.py:6486 camlib.py:6828 +msgid "Finished G-Code generation" +msgstr "Fertige G-Code-Generierung" -#: camlib.py:6402 -#, python-format -msgid "[ERROR]Expected a Geometry, got %s" -msgstr "[ERROR] Eine Geometrie erwartet,%s erhalten" +#: camlib.py:6488 +msgid "paths traced" +msgstr "Pfade verfolgt" -#: camlib.py:6408 +#: camlib.py:6523 +msgid "Expected a Geometry, got" +msgstr "Erwartet eine Geometrie, erhalten" + +#: camlib.py:6530 msgid "" -"[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " -"solid_geometry." +"Trying to generate a CNC Job from a Geometry object without solid_geometry." msgstr "" -"[ERROR_NOTCL] Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne " -"solid_geometry zu generieren." +"Der Versuch, einen CNC-Auftrag aus einem Geometrieobjekt ohne solid_geometry " +"zu generieren." -#: camlib.py:6447 -msgid "" -"[ERROR_NOTCL] The Tool Offset value is too negative to use for the " -"current_geometry.\n" -"Raise the value (in module) and try again." -msgstr "" -"[ERROR_NOTCL] Der Werkzeugkorrekturwert ist zu negativ, um ihn für " -"current_geometry zu verwenden.\n" -"Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." - -#: camlib.py:6723 -msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." -msgstr "" -"[ERROR_NOTCL] In der SolderPaste-Geometrie sind keine Werkzeugdaten " -"vorhanden." - -#: camlib.py:6809 +#: camlib.py:6569 #, python-format -msgid "Finished SolderPste G-Code generation... %s paths traced." -msgstr "Fertige SolderPste-G-Code-Generierung … %s Pfade verfolgt." +msgid "[ERROR_NOTCL] %s" +msgstr "[ERROR_NOTCL] %s" + +#: camlib.py:6830 +msgid " paths traced." +msgstr " Pfade verfolgt." + +#: camlib.py:6859 +msgid "There is no tool data in the SolderPaste geometry." +msgstr "In der SolderPaste-Geometrie sind keine Werkzeugdaten vorhanden." + +#: camlib.py:6946 +msgid "Finished SolderPste G-Code generation" +msgstr "Fertige G-Code-Generierung" + +#: camlib.py:6948 +msgid "paths traced." +msgstr "paths traced." + +#: camlib.py:7421 camlib.py:7699 camlib.py:7802 camlib.py:7849 +msgid "G91 coordinates not implemented ..." +msgstr "G91 Koordinaten nicht implementiert ..." #: flatcamEditors/FlatCAMExcEditor.py:45 flatcamEditors/FlatCAMExcEditor.py:69 #: flatcamEditors/FlatCAMExcEditor.py:150 @@ -2236,7 +2196,7 @@ msgstr "[success] Erledigt. Bohrer Bewegen abgeschlossen." msgid "[success] Done. Drill(s) copied." msgstr "[success] Erledigt. Bohrer kopiert." -#: flatcamEditors/FlatCAMExcEditor.py:1456 flatcamGUI/FlatCAMGUI.py:5496 +#: flatcamEditors/FlatCAMExcEditor.py:1456 flatcamGUI/FlatCAMGUI.py:5510 msgid "Excellon Editor" msgstr "Excellon Editor" @@ -2245,13 +2205,13 @@ msgstr "Excellon Editor" msgid "Name:" msgstr "Name:" -#: flatcamEditors/FlatCAMExcEditor.py:1469 flatcamGUI/ObjectUI.py:584 -#: flatcamGUI/ObjectUI.py:910 flatcamTools/ToolNonCopperClear.py:96 +#: flatcamEditors/FlatCAMExcEditor.py:1469 flatcamGUI/ObjectUI.py:593 +#: flatcamGUI/ObjectUI.py:919 flatcamTools/ToolNonCopperClear.py:96 #: flatcamTools/ToolPaint.py:95 flatcamTools/ToolSolderPaste.py:70 msgid "Tools Table" msgstr "Werkzeugtabelle" -#: flatcamEditors/FlatCAMExcEditor.py:1471 flatcamGUI/ObjectUI.py:586 +#: flatcamEditors/FlatCAMExcEditor.py:1471 flatcamGUI/ObjectUI.py:595 msgid "" "Tools in this Excellon object\n" "when are used for drilling." @@ -2271,13 +2231,13 @@ msgstr "" "Werkzeug zur Werkzeugliste hinzufügen / löschen\n" "für dieses Excellon-Objekt." -#: flatcamEditors/FlatCAMExcEditor.py:1501 flatcamGUI/ObjectUI.py:1028 +#: flatcamEditors/FlatCAMExcEditor.py:1501 flatcamGUI/ObjectUI.py:1037 #: flatcamTools/ToolNonCopperClear.py:212 flatcamTools/ToolPaint.py:162 msgid "Tool Dia" msgstr "Werkzeugdurchm" -#: flatcamEditors/FlatCAMExcEditor.py:1503 flatcamGUI/FlatCAMGUI.py:5525 -#: flatcamGUI/ObjectUI.py:1031 +#: flatcamEditors/FlatCAMExcEditor.py:1503 flatcamGUI/FlatCAMGUI.py:5539 +#: flatcamGUI/ObjectUI.py:1040 msgid "Diameter for the new tool" msgstr "Durchmesser für das neue Werkzeug" @@ -2354,16 +2314,16 @@ msgstr "Linear" #: flatcamEditors/FlatCAMExcEditor.py:1603 #: flatcamEditors/FlatCAMExcEditor.py:1805 -#: flatcamEditors/FlatCAMGrbEditor.py:2631 flatcamGUI/FlatCAMGUI.py:6446 +#: flatcamEditors/FlatCAMGrbEditor.py:2631 flatcamGUI/FlatCAMGUI.py:6460 #: flatcamTools/ToolNonCopperClear.py:203 msgid "Circular" msgstr "Kreisförmig" -#: flatcamEditors/FlatCAMExcEditor.py:1611 flatcamGUI/FlatCAMGUI.py:5535 +#: flatcamEditors/FlatCAMExcEditor.py:1611 flatcamGUI/FlatCAMGUI.py:5549 msgid "Nr of drills" msgstr "Anzahl der Bohrer" -#: flatcamEditors/FlatCAMExcEditor.py:1612 flatcamGUI/FlatCAMGUI.py:5537 +#: flatcamEditors/FlatCAMExcEditor.py:1612 flatcamGUI/FlatCAMGUI.py:5551 msgid "Specify how many drills to be in the array." msgstr "Geben Sie an, wie viele Drills im Array enthalten sein sollen." @@ -2373,14 +2333,14 @@ msgstr "Geben Sie an, wie viele Drills im Array enthalten sein sollen." #: flatcamEditors/FlatCAMExcEditor.py:1831 #: flatcamEditors/FlatCAMExcEditor.py:1878 #: flatcamEditors/FlatCAMGrbEditor.py:2657 -#: flatcamEditors/FlatCAMGrbEditor.py:2702 flatcamGUI/FlatCAMGUI.py:5629 +#: flatcamEditors/FlatCAMGrbEditor.py:2702 flatcamGUI/FlatCAMGUI.py:5643 msgid "Direction" msgstr "Richtung" #: flatcamEditors/FlatCAMExcEditor.py:1631 #: flatcamEditors/FlatCAMExcEditor.py:1833 -#: flatcamEditors/FlatCAMGrbEditor.py:2659 flatcamGUI/FlatCAMGUI.py:4703 -#: flatcamGUI/FlatCAMGUI.py:5552 flatcamGUI/FlatCAMGUI.py:5683 +#: flatcamEditors/FlatCAMGrbEditor.py:2659 flatcamGUI/FlatCAMGUI.py:4717 +#: flatcamGUI/FlatCAMGUI.py:5566 flatcamGUI/FlatCAMGUI.py:5697 msgid "" "Direction on which the linear array is oriented:\n" "- 'X' - horizontal axis \n" @@ -2395,18 +2355,18 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:1638 #: flatcamEditors/FlatCAMExcEditor.py:1749 #: flatcamEditors/FlatCAMExcEditor.py:1840 -#: flatcamEditors/FlatCAMGrbEditor.py:2666 flatcamGUI/FlatCAMGUI.py:4709 -#: flatcamGUI/FlatCAMGUI.py:5558 flatcamGUI/FlatCAMGUI.py:5638 -#: flatcamGUI/FlatCAMGUI.py:5689 +#: flatcamEditors/FlatCAMGrbEditor.py:2666 flatcamGUI/FlatCAMGUI.py:4723 +#: flatcamGUI/FlatCAMGUI.py:5572 flatcamGUI/FlatCAMGUI.py:5652 +#: flatcamGUI/FlatCAMGUI.py:5703 msgid "X" msgstr "X" #: flatcamEditors/FlatCAMExcEditor.py:1639 #: flatcamEditors/FlatCAMExcEditor.py:1750 #: flatcamEditors/FlatCAMExcEditor.py:1841 -#: flatcamEditors/FlatCAMGrbEditor.py:2667 flatcamGUI/FlatCAMGUI.py:4710 -#: flatcamGUI/FlatCAMGUI.py:5559 flatcamGUI/FlatCAMGUI.py:5639 -#: flatcamGUI/FlatCAMGUI.py:5690 +#: flatcamEditors/FlatCAMGrbEditor.py:2667 flatcamGUI/FlatCAMGUI.py:4724 +#: flatcamGUI/FlatCAMGUI.py:5573 flatcamGUI/FlatCAMGUI.py:5653 +#: flatcamGUI/FlatCAMGUI.py:5704 msgid "Y" msgstr "Y" @@ -2420,25 +2380,25 @@ msgstr "Y" #: flatcamEditors/FlatCAMExcEditor.py:1890 #: flatcamEditors/FlatCAMGrbEditor.py:2668 #: flatcamEditors/FlatCAMGrbEditor.py:2681 -#: flatcamEditors/FlatCAMGrbEditor.py:2717 flatcamGUI/FlatCAMGUI.py:4711 -#: flatcamGUI/FlatCAMGUI.py:4728 flatcamGUI/FlatCAMGUI.py:5560 -#: flatcamGUI/FlatCAMGUI.py:5577 flatcamGUI/FlatCAMGUI.py:5640 -#: flatcamGUI/FlatCAMGUI.py:5645 flatcamGUI/FlatCAMGUI.py:5691 -#: flatcamGUI/FlatCAMGUI.py:5708 flatcamTools/ToolTransform.py:68 +#: flatcamEditors/FlatCAMGrbEditor.py:2717 flatcamGUI/FlatCAMGUI.py:4725 +#: flatcamGUI/FlatCAMGUI.py:4742 flatcamGUI/FlatCAMGUI.py:5574 +#: flatcamGUI/FlatCAMGUI.py:5591 flatcamGUI/FlatCAMGUI.py:5654 +#: flatcamGUI/FlatCAMGUI.py:5659 flatcamGUI/FlatCAMGUI.py:5705 +#: flatcamGUI/FlatCAMGUI.py:5722 flatcamTools/ToolTransform.py:68 msgid "Angle" msgstr "Winkel" #: flatcamEditors/FlatCAMExcEditor.py:1644 #: flatcamEditors/FlatCAMExcEditor.py:1846 -#: flatcamEditors/FlatCAMGrbEditor.py:2672 flatcamGUI/FlatCAMGUI.py:4717 -#: flatcamGUI/FlatCAMGUI.py:5697 +#: flatcamEditors/FlatCAMGrbEditor.py:2672 flatcamGUI/FlatCAMGUI.py:4731 +#: flatcamGUI/FlatCAMGUI.py:5711 msgid "Pitch" msgstr "Abstand" #: flatcamEditors/FlatCAMExcEditor.py:1646 #: flatcamEditors/FlatCAMExcEditor.py:1848 -#: flatcamEditors/FlatCAMGrbEditor.py:2674 flatcamGUI/FlatCAMGUI.py:4719 -#: flatcamGUI/FlatCAMGUI.py:5568 flatcamGUI/FlatCAMGUI.py:5699 +#: flatcamEditors/FlatCAMGrbEditor.py:2674 flatcamGUI/FlatCAMGUI.py:4733 +#: flatcamGUI/FlatCAMGUI.py:5582 flatcamGUI/FlatCAMGUI.py:5713 msgid "Pitch = Distance between elements of the array." msgstr "Abstand = Abstand zwischen Elementen des Arrays." @@ -2468,26 +2428,26 @@ msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:1684 #: flatcamEditors/FlatCAMExcEditor.py:1886 -#: flatcamEditors/FlatCAMGrbEditor.py:2712 flatcamGUI/FlatCAMGUI.py:4747 -#: flatcamGUI/FlatCAMGUI.py:5138 flatcamGUI/FlatCAMGUI.py:5596 -#: flatcamGUI/FlatCAMGUI.py:5727 flatcamGUI/FlatCAMGUI.py:5929 +#: flatcamEditors/FlatCAMGrbEditor.py:2712 flatcamGUI/FlatCAMGUI.py:4761 +#: flatcamGUI/FlatCAMGUI.py:5152 flatcamGUI/FlatCAMGUI.py:5610 +#: flatcamGUI/FlatCAMGUI.py:5741 flatcamGUI/FlatCAMGUI.py:5943 msgid "CW" msgstr "CW" #: flatcamEditors/FlatCAMExcEditor.py:1685 #: flatcamEditors/FlatCAMExcEditor.py:1887 -#: flatcamEditors/FlatCAMGrbEditor.py:2713 flatcamGUI/FlatCAMGUI.py:4748 -#: flatcamGUI/FlatCAMGUI.py:5139 flatcamGUI/FlatCAMGUI.py:5597 -#: flatcamGUI/FlatCAMGUI.py:5728 flatcamGUI/FlatCAMGUI.py:5930 +#: flatcamEditors/FlatCAMGrbEditor.py:2713 flatcamGUI/FlatCAMGUI.py:4762 +#: flatcamGUI/FlatCAMGUI.py:5153 flatcamGUI/FlatCAMGUI.py:5611 +#: flatcamGUI/FlatCAMGUI.py:5742 flatcamGUI/FlatCAMGUI.py:5944 msgid "CCW" msgstr "CCW" #: flatcamEditors/FlatCAMExcEditor.py:1689 #: flatcamEditors/FlatCAMExcEditor.py:1891 -#: flatcamEditors/FlatCAMGrbEditor.py:2719 flatcamGUI/FlatCAMGUI.py:4730 -#: flatcamGUI/FlatCAMGUI.py:4756 flatcamGUI/FlatCAMGUI.py:5579 -#: flatcamGUI/FlatCAMGUI.py:5605 flatcamGUI/FlatCAMGUI.py:5710 -#: flatcamGUI/FlatCAMGUI.py:5736 +#: flatcamEditors/FlatCAMGrbEditor.py:2719 flatcamGUI/FlatCAMGUI.py:4744 +#: flatcamGUI/FlatCAMGUI.py:4770 flatcamGUI/FlatCAMGUI.py:5593 +#: flatcamGUI/FlatCAMGUI.py:5619 flatcamGUI/FlatCAMGUI.py:5724 +#: flatcamGUI/FlatCAMGUI.py:5750 msgid "Angle at which each element in circular array is placed." msgstr "" "Winkel, um den jedes Element in einer kreisförmigen Anordnung platziert wird." @@ -2504,16 +2464,16 @@ msgstr "" "Parameter zum Hinzufügen eines Schlitzes (Loch mit ovaler Form)\n" "entweder einzeln oder als Teil eines Arrays." -#: flatcamEditors/FlatCAMExcEditor.py:1730 flatcamGUI/FlatCAMGUI.py:5618 +#: flatcamEditors/FlatCAMExcEditor.py:1730 flatcamGUI/FlatCAMGUI.py:5632 #: flatcamTools/ToolProperties.py:350 msgid "Length" msgstr "Länge" -#: flatcamEditors/FlatCAMExcEditor.py:1732 flatcamGUI/FlatCAMGUI.py:5620 +#: flatcamEditors/FlatCAMExcEditor.py:1732 flatcamGUI/FlatCAMGUI.py:5634 msgid "Length = The length of the slot." msgstr "Länge = Die Länge des Schlitzes." -#: flatcamEditors/FlatCAMExcEditor.py:1742 flatcamGUI/FlatCAMGUI.py:5631 +#: flatcamEditors/FlatCAMExcEditor.py:1742 flatcamGUI/FlatCAMGUI.py:5645 msgid "" "Direction on which the slot is oriented:\n" "- 'X' - horizontal axis \n" @@ -2525,7 +2485,7 @@ msgstr "" "- 'Y' - vertikale Achse oder\n" "- 'Winkel' - Ein benutzerdefinierter Winkel für die Schlitzneigung" -#: flatcamEditors/FlatCAMExcEditor.py:1757 flatcamGUI/FlatCAMGUI.py:5647 +#: flatcamEditors/FlatCAMExcEditor.py:1757 flatcamGUI/FlatCAMGUI.py:5661 msgid "" "Angle at which the slot is placed.\n" "The precision is of max 2 decimals.\n" @@ -2554,14 +2514,18 @@ msgstr "" "Wählen Sie den Typ des zu erstellenden Slot-Arrays.\n" "Es kann ein lineares X (Y) oder ein kreisförmiges sein" -#: flatcamEditors/FlatCAMExcEditor.py:1813 flatcamGUI/FlatCAMGUI.py:5669 +#: flatcamEditors/FlatCAMExcEditor.py:1813 flatcamGUI/FlatCAMGUI.py:5683 msgid "Nr of slots" msgstr "Anzahl der Slots" -#: flatcamEditors/FlatCAMExcEditor.py:1814 flatcamGUI/FlatCAMGUI.py:5671 +#: flatcamEditors/FlatCAMExcEditor.py:1814 flatcamGUI/FlatCAMGUI.py:5685 msgid "Specify how many slots to be in the array." msgstr "Geben Sie an, wie viele Steckplätze sich im Array befinden sollen." +#: flatcamEditors/FlatCAMExcEditor.py:2398 +msgid "[ERROR_NOTCL] Wrong value format entered, use a number." +msgstr "[ERROR_NOTCL] Falsches Wertformat eingegeben, eine Zahl verwenden." + #: flatcamEditors/FlatCAMExcEditor.py:2411 msgid "" "[WARNING_NOTCL] Tool already in the original or actual tool list.\n" @@ -2614,6 +2578,20 @@ msgstr "[success] Excellon-Bearbeitung abgeschlossen." msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist kein Werkzeug / Bohrer ausgewählt" +#: flatcamEditors/FlatCAMExcEditor.py:3424 +#: flatcamEditors/FlatCAMExcEditor.py:3431 +#: flatcamEditors/FlatCAMGeoEditor.py:3741 +#: flatcamEditors/FlatCAMGeoEditor.py:3755 +#: flatcamEditors/FlatCAMGrbEditor.py:1057 +#: flatcamEditors/FlatCAMGrbEditor.py:1160 +#: flatcamEditors/FlatCAMGrbEditor.py:1433 +#: flatcamEditors/FlatCAMGrbEditor.py:1690 +#: flatcamEditors/FlatCAMGrbEditor.py:4156 +#: flatcamEditors/FlatCAMGrbEditor.py:4170 flatcamGUI/FlatCAMGUI.py:2560 +#: flatcamGUI/FlatCAMGUI.py:2572 +msgid "[success] Done." +msgstr "[success] Erledigt." + #: flatcamEditors/FlatCAMExcEditor.py:3787 msgid "[success] Done. Drill(s) deleted." msgstr "[success] Erledigt. Bohrer gelöscht." @@ -2675,7 +2653,7 @@ msgid "Full Buffer" msgstr "Voller Puffer" #: flatcamEditors/FlatCAMGeoEditor.py:129 -#: flatcamEditors/FlatCAMGeoEditor.py:2683 flatcamGUI/FlatCAMGUI.py:4763 +#: flatcamEditors/FlatCAMGeoEditor.py:2683 flatcamGUI/FlatCAMGUI.py:4777 msgid "Buffer Tool" msgstr "Pufferwerkzeug" @@ -2701,14 +2679,14 @@ msgstr "Textwerkzeug" msgid "Tool" msgstr "Werkzeug" -#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:4343 -#: flatcamGUI/FlatCAMGUI.py:5782 flatcamGUI/FlatCAMGUI.py:6674 -#: flatcamGUI/FlatCAMGUI.py:6834 flatcamGUI/ObjectUI.py:264 +#: flatcamEditors/FlatCAMGeoEditor.py:434 flatcamGUI/FlatCAMGUI.py:4356 +#: flatcamGUI/FlatCAMGUI.py:5796 flatcamGUI/FlatCAMGUI.py:6699 +#: flatcamGUI/FlatCAMGUI.py:6859 flatcamGUI/ObjectUI.py:264 #: flatcamTools/ToolCutOut.py:91 msgid "Tool dia" msgstr "Werkzeugdurchmesser" -#: flatcamEditors/FlatCAMGeoEditor.py:436 flatcamGUI/FlatCAMGUI.py:6836 +#: flatcamEditors/FlatCAMGeoEditor.py:436 flatcamGUI/FlatCAMGUI.py:6861 msgid "" "Diameter of the tool to\n" "be used in the operation." @@ -2716,13 +2694,13 @@ msgstr "" "Durchmesser des Werkzeugs bis\n" "in der Operation verwendet werden." -#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamGUI/FlatCAMGUI.py:6531 -#: flatcamGUI/FlatCAMGUI.py:6865 flatcamTools/ToolNonCopperClear.py:283 +#: flatcamEditors/FlatCAMGeoEditor.py:445 flatcamGUI/FlatCAMGUI.py:6545 +#: flatcamGUI/FlatCAMGUI.py:6890 flatcamTools/ToolNonCopperClear.py:283 #: flatcamTools/ToolPaint.py:205 msgid "Overlap Rate" msgstr "Überlappungsrate" -#: flatcamEditors/FlatCAMGeoEditor.py:447 flatcamGUI/FlatCAMGUI.py:6867 +#: flatcamEditors/FlatCAMGeoEditor.py:447 flatcamGUI/FlatCAMGUI.py:6892 #: flatcamTools/ToolPaint.py:207 #, python-format msgid "" @@ -2752,13 +2730,13 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf CNC\n" "wegen zu vieler Wege." -#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6548 -#: flatcamGUI/FlatCAMGUI.py:6698 flatcamGUI/FlatCAMGUI.py:6882 +#: flatcamEditors/FlatCAMGeoEditor.py:463 flatcamGUI/FlatCAMGUI.py:6562 +#: flatcamGUI/FlatCAMGUI.py:6723 flatcamGUI/FlatCAMGUI.py:6907 #: flatcamTools/ToolNonCopperClear.py:299 flatcamTools/ToolPaint.py:222 msgid "Margin" msgstr "Marge" -#: flatcamEditors/FlatCAMGeoEditor.py:465 flatcamGUI/FlatCAMGUI.py:6884 +#: flatcamEditors/FlatCAMGeoEditor.py:465 flatcamGUI/FlatCAMGUI.py:6909 #: flatcamTools/ToolPaint.py:224 msgid "" "Distance by which to avoid\n" @@ -2769,8 +2747,8 @@ msgstr "" "die Kanten des Polygons bis\n" "gemalt werden." -#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6557 -#: flatcamGUI/FlatCAMGUI.py:6893 flatcamTools/ToolNonCopperClear.py:308 +#: flatcamEditors/FlatCAMGeoEditor.py:474 flatcamGUI/FlatCAMGUI.py:6571 +#: flatcamGUI/FlatCAMGUI.py:6918 flatcamTools/ToolNonCopperClear.py:308 #: flatcamTools/ToolPaint.py:233 msgid "Method" msgstr "Methode" @@ -2783,20 +2761,20 @@ msgstr "" "Algorithmus zum Malen des Polygons:
Standard: Feststehender " "Schritt nach innen.
Samenbasiert: Aus dem Samen heraus." -#: flatcamEditors/FlatCAMGeoEditor.py:482 flatcamGUI/FlatCAMGUI.py:6566 -#: flatcamGUI/FlatCAMGUI.py:6902 flatcamTools/ToolNonCopperClear.py:317 +#: flatcamEditors/FlatCAMGeoEditor.py:482 flatcamGUI/FlatCAMGUI.py:6580 +#: flatcamGUI/FlatCAMGUI.py:6927 flatcamTools/ToolNonCopperClear.py:317 #: flatcamTools/ToolPaint.py:242 msgid "Standard" msgstr "Standard" -#: flatcamEditors/FlatCAMGeoEditor.py:483 flatcamGUI/FlatCAMGUI.py:6567 -#: flatcamGUI/FlatCAMGUI.py:6903 flatcamTools/ToolNonCopperClear.py:318 +#: flatcamEditors/FlatCAMGeoEditor.py:483 flatcamGUI/FlatCAMGUI.py:6581 +#: flatcamGUI/FlatCAMGUI.py:6928 flatcamTools/ToolNonCopperClear.py:318 #: flatcamTools/ToolPaint.py:243 msgid "Seed-based" msgstr "Samenbasiert" -#: flatcamEditors/FlatCAMGeoEditor.py:484 flatcamGUI/FlatCAMGUI.py:6568 -#: flatcamGUI/FlatCAMGUI.py:6904 flatcamTools/ToolNonCopperClear.py:319 +#: flatcamEditors/FlatCAMGeoEditor.py:484 flatcamGUI/FlatCAMGUI.py:6582 +#: flatcamGUI/FlatCAMGUI.py:6929 flatcamTools/ToolNonCopperClear.py:319 #: flatcamTools/ToolPaint.py:244 msgid "Straight lines" msgstr "Gerade Linien" @@ -2805,8 +2783,8 @@ msgstr "Gerade Linien" msgid "Connect:" msgstr "Verbinden:" -#: flatcamEditors/FlatCAMGeoEditor.py:491 flatcamGUI/FlatCAMGUI.py:6575 -#: flatcamGUI/FlatCAMGUI.py:6911 flatcamTools/ToolNonCopperClear.py:326 +#: flatcamEditors/FlatCAMGeoEditor.py:491 flatcamGUI/FlatCAMGUI.py:6589 +#: flatcamGUI/FlatCAMGUI.py:6936 flatcamTools/ToolNonCopperClear.py:326 #: flatcamTools/ToolPaint.py:251 msgid "" "Draw lines between resulting\n" @@ -2819,8 +2797,8 @@ msgstr "" msgid "Contour:" msgstr "Kontur:" -#: flatcamEditors/FlatCAMGeoEditor.py:500 flatcamGUI/FlatCAMGUI.py:6585 -#: flatcamGUI/FlatCAMGUI.py:6921 flatcamTools/ToolNonCopperClear.py:335 +#: flatcamEditors/FlatCAMGeoEditor.py:500 flatcamGUI/FlatCAMGUI.py:6599 +#: flatcamGUI/FlatCAMGUI.py:6946 flatcamTools/ToolNonCopperClear.py:335 #: flatcamTools/ToolPaint.py:260 msgid "" "Cut around the perimeter of the polygon\n" @@ -2834,7 +2812,7 @@ msgid "Paint" msgstr "Malen" #: flatcamEditors/FlatCAMGeoEditor.py:529 flatcamGUI/FlatCAMGUI.py:661 -#: flatcamGUI/FlatCAMGUI.py:2004 flatcamGUI/ObjectUI.py:1351 +#: flatcamGUI/FlatCAMGUI.py:2004 flatcamGUI/ObjectUI.py:1360 #: flatcamTools/ToolPaint.py:25 flatcamTools/ToolPaint.py:446 msgid "Paint Tool" msgstr "Werkzeug Malen" @@ -2869,7 +2847,7 @@ msgstr "" #: flatcamEditors/FlatCAMGeoEditor.py:608 #: flatcamEditors/FlatCAMGeoEditor.py:2708 #: flatcamEditors/FlatCAMGeoEditor.py:2736 -#: flatcamEditors/FlatCAMGeoEditor.py:2764 flatcamGUI/FlatCAMGUI.py:5778 +#: flatcamEditors/FlatCAMGeoEditor.py:2764 flatcamGUI/FlatCAMGUI.py:5792 #: flatcamTools/ToolProperties.py:113 flatcamTools/ToolProperties.py:139 msgid "Tools" msgstr "Werkzeuge" @@ -2910,9 +2888,9 @@ msgid "Mirror (Flip)" msgstr "Spiegeln (Flip)" #: flatcamEditors/FlatCAMGeoEditor.py:624 -#: flatcamEditors/FlatCAMGrbEditor.py:4785 flatcamGUI/FlatCAMGUI.py:6608 +#: flatcamEditors/FlatCAMGrbEditor.py:4785 flatcamGUI/FlatCAMGUI.py:6622 #: flatcamGUI/ObjectUI.py:108 flatcamGUI/ObjectUI.py:127 -#: flatcamGUI/ObjectUI.py:943 flatcamGUI/ObjectUI.py:1508 +#: flatcamGUI/ObjectUI.py:952 flatcamGUI/ObjectUI.py:1517 #: flatcamTools/ToolNonCopperClear.py:357 flatcamTools/ToolTransform.py:28 msgid "Offset" msgstr "Versatz" @@ -2929,7 +2907,7 @@ msgid "Angle:" msgstr "Winkel:" #: flatcamEditors/FlatCAMGeoEditor.py:669 -#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/FlatCAMGUI.py:7232 +#: flatcamEditors/FlatCAMGrbEditor.py:4831 flatcamGUI/FlatCAMGUI.py:7268 #: flatcamTools/ToolTransform.py:70 msgid "" "Angle for Rotation action, in degrees.\n" @@ -2961,8 +2939,8 @@ msgstr "Winkel X:" #: flatcamEditors/FlatCAMGeoEditor.py:708 #: flatcamEditors/FlatCAMGeoEditor.py:726 #: flatcamEditors/FlatCAMGrbEditor.py:4870 -#: flatcamEditors/FlatCAMGrbEditor.py:4888 flatcamGUI/FlatCAMGUI.py:7244 -#: flatcamGUI/FlatCAMGUI.py:7254 flatcamTools/ToolTransform.py:109 +#: flatcamEditors/FlatCAMGrbEditor.py:4888 flatcamGUI/FlatCAMGUI.py:7280 +#: flatcamGUI/FlatCAMGUI.py:7290 flatcamTools/ToolTransform.py:109 #: flatcamTools/ToolTransform.py:127 msgid "" "Angle for Skew action, in degrees.\n" @@ -3043,7 +3021,7 @@ msgid "Scale Y" msgstr "Maßstab Y" #: flatcamEditors/FlatCAMGeoEditor.py:799 -#: flatcamEditors/FlatCAMGrbEditor.py:4961 flatcamGUI/FlatCAMGUI.py:7279 +#: flatcamEditors/FlatCAMGrbEditor.py:4961 flatcamGUI/FlatCAMGUI.py:7315 #: flatcamTools/ToolTransform.py:200 msgid "Link" msgstr "Verknüpfung" @@ -3058,7 +3036,7 @@ msgstr "" "Verwenden des Skalierungsfaktors X für beide Achsen." #: flatcamEditors/FlatCAMGeoEditor.py:807 -#: flatcamEditors/FlatCAMGrbEditor.py:4969 flatcamGUI/FlatCAMGUI.py:7287 +#: flatcamEditors/FlatCAMGrbEditor.py:4969 flatcamGUI/FlatCAMGUI.py:7323 #: flatcamTools/ToolTransform.py:209 msgid "Scale Reference" msgstr "Skalenreferenz" @@ -3269,6 +3247,13 @@ msgstr "Anwenden Drehen" msgid "[success] Done. Rotate completed." msgstr "[success] Erledigt. Drehen abgeschlossen." +#: flatcamEditors/FlatCAMGeoEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 +#, python-format +msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." +msgstr "" +"[ERROR_NOTCL] Aufgrund von %s wurde keine Rotationsbewegung ausgeführt." + #: flatcamEditors/FlatCAMGeoEditor.py:1311 #: flatcamEditors/FlatCAMGrbEditor.py:5529 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" @@ -3290,6 +3275,12 @@ msgstr "[success] Flip auf der Y-Achse erledigt ..." msgid "[success] Flip on the X axis done ..." msgstr "[success] Flip auf der X-Achse erledigt ..." +#: flatcamEditors/FlatCAMGeoEditor.py:1357 +#: flatcamEditors/FlatCAMGrbEditor.py:5584 +#, python-format +msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." +msgstr "[ERROR_NOTCL] Aufgrund von %s wurde die Flip-Aktion nicht ausgeführt." + #: flatcamEditors/FlatCAMGeoEditor.py:1366 #: flatcamEditors/FlatCAMGrbEditor.py:5599 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" @@ -3920,7 +3911,7 @@ msgid "[success] Done. Apertures copied." msgstr "[success] Erledigt. Blende kopiert." #: flatcamEditors/FlatCAMGrbEditor.py:2337 flatcamGUI/FlatCAMGUI.py:1686 -#: flatcamGUI/FlatCAMGUI.py:4615 +#: flatcamGUI/FlatCAMGUI.py:4629 msgid "Gerber Editor" msgstr "Gerber-Editor" @@ -3940,7 +3931,7 @@ msgstr "Code" #: flatcamEditors/FlatCAMGrbEditor.py:2370 #: flatcamEditors/FlatCAMGrbEditor.py:3797 flatcamGUI/ObjectUI.py:227 -#: flatcamGUI/ObjectUI.py:943 flatcamGUI/ObjectUI.py:1508 +#: flatcamGUI/ObjectUI.py:952 flatcamGUI/ObjectUI.py:1517 msgid "Type" msgstr "Typ" @@ -3981,7 +3972,7 @@ msgstr "" "  - (Breite, Höhe) für R, O-Typ.\n" "  - (dia, nVertices) für P-Typ" -#: flatcamEditors/FlatCAMGrbEditor.py:2405 flatcamGUI/FlatCAMGUI.py:4644 +#: flatcamEditors/FlatCAMGrbEditor.py:2405 flatcamGUI/FlatCAMGUI.py:4658 msgid "Code for the new aperture" msgstr "Code für die neue Blende" @@ -4057,7 +4048,7 @@ msgstr "Pufferblende" msgid "Buffer a aperture in the aperture list" msgstr "Puffern Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2496 flatcamGUI/FlatCAMGUI.py:4767 +#: flatcamEditors/FlatCAMGrbEditor.py:2496 flatcamGUI/FlatCAMGUI.py:4781 msgid "Buffer distance" msgstr "Pufferabstand" @@ -4093,7 +4084,7 @@ msgstr "Skalenöffnung" msgid "Scale a aperture in the aperture list" msgstr "Skalieren Sie eine Blende in der Blendenliste" -#: flatcamEditors/FlatCAMGrbEditor.py:2539 flatcamGUI/FlatCAMGUI.py:4780 +#: flatcamEditors/FlatCAMGrbEditor.py:2539 flatcamGUI/FlatCAMGUI.py:4794 msgid "Scale factor" msgstr "Skalierungsfaktor" @@ -4159,11 +4150,11 @@ msgstr "" "Wählen Sie den zu erstellenden Pad-Array-Typ aus.\n" "Es kann lineares X (Y) oder rund sein" -#: flatcamEditors/FlatCAMGrbEditor.py:2638 flatcamGUI/FlatCAMGUI.py:4679 +#: flatcamEditors/FlatCAMGrbEditor.py:2638 flatcamGUI/FlatCAMGUI.py:4693 msgid "Nr of pads" msgstr "Anzahl der Pads" -#: flatcamEditors/FlatCAMGrbEditor.py:2640 flatcamGUI/FlatCAMGUI.py:4681 +#: flatcamEditors/FlatCAMGrbEditor.py:2640 flatcamGUI/FlatCAMGUI.py:4695 msgid "Specify how many pads to be in the array." msgstr "Geben Sie an, wie viele Pads sich im Array befinden sollen." @@ -4228,6 +4219,10 @@ msgstr "" "[ERROR_NOTCL] Die Datei enthält keine Aperture-Definitionen. Abbruch der " "Gerber-Erstellung." +#: flatcamEditors/FlatCAMGrbEditor.py:3917 +msgid "[ERROR] An internal error has occurred. See shell.\n" +msgstr "[ERROR] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + #: flatcamEditors/FlatCAMGrbEditor.py:3922 msgid "Creating Gerber." msgstr "Gerber erstellen." @@ -4240,6 +4235,10 @@ msgstr "[success] Gerber-Bearbeitung ist beendet." msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "[WARNING_NOTCL] Abgebrochen. Es ist keine Blende ausgewählt" +#: flatcamEditors/FlatCAMGrbEditor.py:4097 +msgid "[success] Coordinates copied to clipboard." +msgstr "[success] Koordinaten in die Zwischenablage kopiert." + #: flatcamEditors/FlatCAMGrbEditor.py:4477 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" @@ -5012,7 +5011,7 @@ msgid "&Cutout Tool" msgstr "Ausschnittwerkzeug" #: flatcamGUI/FlatCAMGUI.py:660 flatcamGUI/FlatCAMGUI.py:2003 -#: flatcamGUI/ObjectUI.py:443 flatcamTools/ToolNonCopperClear.py:531 +#: flatcamGUI/ObjectUI.py:452 flatcamTools/ToolNonCopperClear.py:531 msgid "NCC Tool" msgstr "NCC Werkzeug" @@ -5259,7 +5258,7 @@ msgstr "GEOMETRY" msgid "CNC-JOB" msgstr "CNC-Auftrag" -#: flatcamGUI/FlatCAMGUI.py:933 flatcamGUI/ObjectUI.py:432 +#: flatcamGUI/FlatCAMGUI.py:933 flatcamGUI/ObjectUI.py:441 msgid "TOOLS" msgstr "WERKZEUGE" @@ -6655,8 +6654,8 @@ msgstr "Überschneidung" msgid "Substraction" msgstr "Subtraktion" -#: flatcamGUI/FlatCAMGUI.py:1680 flatcamGUI/FlatCAMGUI.py:6161 -#: flatcamGUI/ObjectUI.py:1400 +#: flatcamGUI/FlatCAMGUI.py:1680 flatcamGUI/FlatCAMGUI.py:6175 +#: flatcamGUI/ObjectUI.py:1409 msgid "Cut" msgstr "Schnitt" @@ -6700,8 +6699,8 @@ msgstr "Im Code suchen" msgid "Replace With" msgstr "Ersetzen mit" -#: flatcamGUI/FlatCAMGUI.py:1756 flatcamGUI/FlatCAMGUI.py:6159 -#: flatcamGUI/FlatCAMGUI.py:6942 flatcamGUI/ObjectUI.py:1398 +#: flatcamGUI/FlatCAMGUI.py:1756 flatcamGUI/FlatCAMGUI.py:6173 +#: flatcamGUI/FlatCAMGUI.py:6966 flatcamGUI/ObjectUI.py:1407 msgid "All" msgstr "Alles" @@ -6828,6 +6827,10 @@ msgstr "Geben Sie einen Werkzeugdurchmesser ein" msgid "Measurement Tool exit..." msgstr "Messwerkzeug beenden ..." +#: flatcamGUI/FlatCAMGUI.py:3312 +msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." +msgstr "[WARNING_NOTCL] Anwendung speichert das Projekt. Warten Sie mal ..." + #: flatcamGUI/FlatCAMGUI.py:3554 msgid "GUI Preferences" msgstr "GUI-Einstellungen" @@ -7122,8 +7125,8 @@ msgstr "Möchten Sie die GUI-Einstellungen wirklich löschen?\n" msgid "App Preferences" msgstr "App-Einstellungen" -#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:4535 -#: flatcamGUI/FlatCAMGUI.py:5360 flatcamTools/ToolMeasurement.py:43 +#: flatcamGUI/FlatCAMGUI.py:4021 flatcamGUI/FlatCAMGUI.py:4549 +#: flatcamGUI/FlatCAMGUI.py:5374 flatcamTools/ToolMeasurement.py:43 #: flatcamTools/ToolPcbWizard.py:127 flatcamTools/ToolProperties.py:133 msgid "Units" msgstr "Einheiten" @@ -7142,8 +7145,8 @@ msgstr "" msgid "IN" msgstr "ZOLL" -#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:4541 -#: flatcamGUI/FlatCAMGUI.py:4973 flatcamGUI/FlatCAMGUI.py:5366 +#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:4555 +#: flatcamGUI/FlatCAMGUI.py:4987 flatcamGUI/FlatCAMGUI.py:5380 #: flatcamTools/ToolCalculators.py:61 flatcamTools/ToolPcbWizard.py:126 msgid "MM" msgstr "MM" @@ -7168,7 +7171,7 @@ msgstr "" "Die Auswahl hier beeinflusst die Parameter in\n" "Die Registerkarte Ausgewählt für alle Arten von FlatCAM-Objekten." -#: flatcamGUI/FlatCAMGUI.py:4035 flatcamGUI/FlatCAMGUI.py:5000 +#: flatcamGUI/FlatCAMGUI.py:4035 flatcamGUI/FlatCAMGUI.py:5014 msgid "Basic" msgstr "Basic" @@ -7453,15 +7456,15 @@ msgstr "" msgid "Gerber General" msgstr "Geometrie Allgemein" -#: flatcamGUI/FlatCAMGUI.py:4284 flatcamGUI/FlatCAMGUI.py:4824 -#: flatcamGUI/FlatCAMGUI.py:5754 flatcamGUI/FlatCAMGUI.py:6135 -#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:553 -#: flatcamGUI/ObjectUI.py:885 flatcamGUI/ObjectUI.py:1384 +#: flatcamGUI/FlatCAMGUI.py:4284 flatcamGUI/FlatCAMGUI.py:4838 +#: flatcamGUI/FlatCAMGUI.py:5768 flatcamGUI/FlatCAMGUI.py:6149 +#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:562 +#: flatcamGUI/ObjectUI.py:894 flatcamGUI/ObjectUI.py:1393 msgid "Plot Options" msgstr "Diagrammoptionen" -#: flatcamGUI/FlatCAMGUI.py:4291 flatcamGUI/FlatCAMGUI.py:4836 -#: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:554 +#: flatcamGUI/FlatCAMGUI.py:4291 flatcamGUI/FlatCAMGUI.py:4850 +#: flatcamGUI/ObjectUI.py:156 flatcamGUI/ObjectUI.py:563 msgid "Solid" msgstr "Solide" @@ -7477,21 +7480,21 @@ msgstr "M-farbig" msgid "Draw polygons in different colors." msgstr "Zeichnen Sie Polygone in verschiedenen Farben." -#: flatcamGUI/FlatCAMGUI.py:4305 flatcamGUI/FlatCAMGUI.py:4830 -#: flatcamGUI/FlatCAMGUI.py:5758 flatcamGUI/ObjectUI.py:172 -#: flatcamGUI/ObjectUI.py:592 +#: flatcamGUI/FlatCAMGUI.py:4305 flatcamGUI/FlatCAMGUI.py:4844 +#: flatcamGUI/FlatCAMGUI.py:5772 flatcamGUI/ObjectUI.py:172 +#: flatcamGUI/ObjectUI.py:601 msgid "Plot" msgstr "Zeichn" -#: flatcamGUI/FlatCAMGUI.py:4307 flatcamGUI/FlatCAMGUI.py:5760 -#: flatcamGUI/FlatCAMGUI.py:6146 flatcamGUI/ObjectUI.py:174 -#: flatcamGUI/ObjectUI.py:594 flatcamGUI/ObjectUI.py:931 -#: flatcamGUI/ObjectUI.py:1494 +#: flatcamGUI/FlatCAMGUI.py:4307 flatcamGUI/FlatCAMGUI.py:5774 +#: flatcamGUI/FlatCAMGUI.py:6160 flatcamGUI/ObjectUI.py:174 +#: flatcamGUI/ObjectUI.py:603 flatcamGUI/ObjectUI.py:940 +#: flatcamGUI/ObjectUI.py:1503 msgid "Plot (show) this object." msgstr "Plotten (zeigen) dieses Objekt." -#: flatcamGUI/FlatCAMGUI.py:4312 flatcamGUI/FlatCAMGUI.py:5768 -#: flatcamGUI/FlatCAMGUI.py:6216 +#: flatcamGUI/FlatCAMGUI.py:4312 flatcamGUI/FlatCAMGUI.py:5782 +#: flatcamGUI/FlatCAMGUI.py:6230 msgid "Circle Steps" msgstr "Kreisschritte" @@ -7503,15 +7506,39 @@ msgstr "" "Die Anzahl der Kreisschritte für Gerber\n" "lineare Approximation mit kreisförmiger Apertur." -#: flatcamGUI/FlatCAMGUI.py:4329 +#: flatcamGUI/FlatCAMGUI.py:4324 +msgid "" +"Buffering type:\n" +"- None --> best performance, fast file loading but no so good display\n" +"- Full --> slow file loading but good visuals. This is the default.\n" +"<>: Don't change this unless you know what you are doing !!!" +msgstr "" +"Puffertyp:\n" +"- Keine -> beste Leistung, schnelles Laden von Dateien, aber keine so gute " +"Anzeige\n" +"- Voll -> langsames Laden von Dateien, aber gute Grafik. Dies ist die " +"Standardeinstellung.\n" +"<< WARNUNG >>: Ändern Sie dies nur, wenn Sie wissen, was Sie tun !!!" + +#: flatcamGUI/FlatCAMGUI.py:4329 flatcamTools/ToolProperties.py:298 +#: flatcamTools/ToolProperties.py:312 flatcamTools/ToolProperties.py:315 +#: flatcamTools/ToolProperties.py:318 +msgid "None" +msgstr "Keiner" + +#: flatcamGUI/FlatCAMGUI.py:4330 +msgid "Full" +msgstr "Voll" + +#: flatcamGUI/FlatCAMGUI.py:4342 msgid "Gerber Options" msgstr "Gerber-Optionen" -#: flatcamGUI/FlatCAMGUI.py:4332 flatcamGUI/ObjectUI.py:250 +#: flatcamGUI/FlatCAMGUI.py:4345 flatcamGUI/ObjectUI.py:250 msgid "Isolation Routing" msgstr "Isolierungsrouting" -#: flatcamGUI/FlatCAMGUI.py:4334 flatcamGUI/ObjectUI.py:252 +#: flatcamGUI/FlatCAMGUI.py:4347 flatcamGUI/ObjectUI.py:252 msgid "" "Create a Geometry object with\n" "toolpaths to cut outside polygons." @@ -7520,16 +7547,16 @@ msgstr "" "Werkzeugwege zum Schneiden von \n" "äußeren Polygonen." -#: flatcamGUI/FlatCAMGUI.py:4345 flatcamGUI/FlatCAMGUI.py:5200 -#: flatcamGUI/ObjectUI.py:839 +#: flatcamGUI/FlatCAMGUI.py:4358 flatcamGUI/FlatCAMGUI.py:5214 +#: flatcamGUI/ObjectUI.py:848 msgid "Diameter of the cutting tool." msgstr "Durchmesser des Schneidewerkzeugs." -#: flatcamGUI/FlatCAMGUI.py:4352 flatcamGUI/ObjectUI.py:277 +#: flatcamGUI/FlatCAMGUI.py:4365 flatcamGUI/ObjectUI.py:277 msgid "# Passes" msgstr "Durchgang" -#: flatcamGUI/FlatCAMGUI.py:4354 flatcamGUI/ObjectUI.py:279 +#: flatcamGUI/FlatCAMGUI.py:4367 flatcamGUI/ObjectUI.py:279 msgid "" "Width of the isolation gap in\n" "number (integer) of tool widths." @@ -7537,11 +7564,11 @@ msgstr "" "Breite der Isolationslücke in\n" "Anzahl (Ganzzahl) der Werkzeugbreiten." -#: flatcamGUI/FlatCAMGUI.py:4363 flatcamGUI/ObjectUI.py:288 +#: flatcamGUI/FlatCAMGUI.py:4376 flatcamGUI/ObjectUI.py:288 msgid "Pass overlap" msgstr "Passüberlappung" -#: flatcamGUI/FlatCAMGUI.py:4365 flatcamGUI/ObjectUI.py:290 +#: flatcamGUI/FlatCAMGUI.py:4378 flatcamGUI/ObjectUI.py:290 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -7555,12 +7582,12 @@ msgstr "" "Ein Wert von 0,25 bedeutet hier eine Überlappung von 25% \n" "vom oben angegebenen Werkzeugdurchmesser." -#: flatcamGUI/FlatCAMGUI.py:4373 flatcamGUI/FlatCAMGUI.py:6476 +#: flatcamGUI/FlatCAMGUI.py:4387 flatcamGUI/FlatCAMGUI.py:6490 #: flatcamGUI/ObjectUI.py:300 flatcamTools/ToolNonCopperClear.py:147 msgid "Milling Type" msgstr "Fräsart" -#: flatcamGUI/FlatCAMGUI.py:4375 flatcamGUI/ObjectUI.py:302 +#: flatcamGUI/FlatCAMGUI.py:4389 flatcamGUI/ObjectUI.py:302 msgid "" "Milling type:\n" "- climb / best for precision milling and to reduce tool usage\n" @@ -7571,29 +7598,29 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorliegt" -#: flatcamGUI/FlatCAMGUI.py:4380 flatcamGUI/FlatCAMGUI.py:6483 +#: flatcamGUI/FlatCAMGUI.py:4394 flatcamGUI/FlatCAMGUI.py:6497 #: flatcamGUI/ObjectUI.py:306 flatcamTools/ToolNonCopperClear.py:154 msgid "Climb" msgstr "Steigen" -#: flatcamGUI/FlatCAMGUI.py:4381 flatcamGUI/FlatCAMGUI.py:6484 +#: flatcamGUI/FlatCAMGUI.py:4395 flatcamGUI/FlatCAMGUI.py:6498 #: flatcamGUI/ObjectUI.py:307 flatcamTools/ToolNonCopperClear.py:155 msgid "Conv." msgstr "Konv." -#: flatcamGUI/FlatCAMGUI.py:4385 flatcamGUI/ObjectUI.py:312 +#: flatcamGUI/FlatCAMGUI.py:4399 flatcamGUI/ObjectUI.py:312 msgid "Combine Passes" msgstr "Kombinieren Sie Pässe" -#: flatcamGUI/FlatCAMGUI.py:4387 flatcamGUI/ObjectUI.py:314 +#: flatcamGUI/FlatCAMGUI.py:4401 flatcamGUI/ObjectUI.py:314 msgid "Combine all passes into one object" msgstr "Kombinieren Sie alle Durchgänge in einem Objekt" -#: flatcamGUI/FlatCAMGUI.py:4392 flatcamGUI/ObjectUI.py:468 +#: flatcamGUI/FlatCAMGUI.py:4406 flatcamGUI/ObjectUI.py:477 msgid "Non-copper regions" msgstr "Regionen ohne Kupfer" -#: flatcamGUI/FlatCAMGUI.py:4394 flatcamGUI/ObjectUI.py:470 +#: flatcamGUI/FlatCAMGUI.py:4408 flatcamGUI/ObjectUI.py:479 msgid "" "Create polygons covering the\n" "areas without copper on the PCB.\n" @@ -7607,12 +7634,12 @@ msgstr "" "Objekt. Kann verwendet werden, um alle zu entfernen\n" "Kupfer aus einer bestimmten Region." -#: flatcamGUI/FlatCAMGUI.py:4406 flatcamGUI/FlatCAMGUI.py:4431 -#: flatcamGUI/ObjectUI.py:480 flatcamGUI/ObjectUI.py:512 +#: flatcamGUI/FlatCAMGUI.py:4420 flatcamGUI/FlatCAMGUI.py:4445 +#: flatcamGUI/ObjectUI.py:489 flatcamGUI/ObjectUI.py:521 msgid "Boundary Margin" msgstr "Grenzmarge" -#: flatcamGUI/FlatCAMGUI.py:4408 flatcamGUI/ObjectUI.py:482 +#: flatcamGUI/FlatCAMGUI.py:4422 flatcamGUI/ObjectUI.py:491 msgid "" "Specify the edge of the PCB\n" "by drawing a box around all\n" @@ -7624,21 +7651,21 @@ msgstr "" "Objekte mit diesem Minimum\n" "Entfernung." -#: flatcamGUI/FlatCAMGUI.py:4418 flatcamGUI/FlatCAMGUI.py:4440 -#: flatcamGUI/ObjectUI.py:493 flatcamGUI/ObjectUI.py:522 +#: flatcamGUI/FlatCAMGUI.py:4432 flatcamGUI/FlatCAMGUI.py:4454 +#: flatcamGUI/ObjectUI.py:502 flatcamGUI/ObjectUI.py:531 msgid "Rounded Geo" msgstr "Abgerundete Geo" -#: flatcamGUI/FlatCAMGUI.py:4420 flatcamGUI/ObjectUI.py:495 +#: flatcamGUI/FlatCAMGUI.py:4434 flatcamGUI/ObjectUI.py:504 msgid "Resulting geometry will have rounded corners." msgstr "Die resultierende Geometrie hat abgerundete Ecken." -#: flatcamGUI/FlatCAMGUI.py:4425 flatcamGUI/ObjectUI.py:504 +#: flatcamGUI/FlatCAMGUI.py:4439 flatcamGUI/ObjectUI.py:513 #: flatcamTools/ToolPanelize.py:85 msgid "Bounding Box" msgstr "Begrenzungsrahmen" -#: flatcamGUI/FlatCAMGUI.py:4433 flatcamGUI/ObjectUI.py:514 +#: flatcamGUI/FlatCAMGUI.py:4447 flatcamGUI/ObjectUI.py:523 msgid "" "Distance of the edges of the box\n" "to the nearest polygon." @@ -7646,7 +7673,7 @@ msgstr "" "Abstand der Kanten der Box\n" "zum nächsten Polygon." -#: flatcamGUI/FlatCAMGUI.py:4442 flatcamGUI/ObjectUI.py:524 +#: flatcamGUI/FlatCAMGUI.py:4456 flatcamGUI/ObjectUI.py:533 msgid "" "If the bounding box is \n" "to have rounded corners\n" @@ -7658,15 +7685,15 @@ msgstr "" "ihr Radius ist gleich\n" "der Abstand." -#: flatcamGUI/FlatCAMGUI.py:4456 +#: flatcamGUI/FlatCAMGUI.py:4470 msgid "Gerber Adv. Options" msgstr "Erweiterte Optionen von Gerber" -#: flatcamGUI/FlatCAMGUI.py:4459 +#: flatcamGUI/FlatCAMGUI.py:4473 msgid "Advanced Param." msgstr "Erweiterte Param." -#: flatcamGUI/FlatCAMGUI.py:4461 +#: flatcamGUI/FlatCAMGUI.py:4475 msgid "" "A list of Gerber advanced parameters.\n" "Those parameters are available only for\n" @@ -7676,11 +7703,11 @@ msgstr "" "Diese Parameter sind nur für verfügbar\n" "Fortgeschrittene Anwendungsebene." -#: flatcamGUI/FlatCAMGUI.py:4471 flatcamGUI/ObjectUI.py:318 +#: flatcamGUI/FlatCAMGUI.py:4485 flatcamGUI/ObjectUI.py:318 msgid "\"Follow\"" msgstr "\"Folgen\"" -#: flatcamGUI/FlatCAMGUI.py:4473 flatcamGUI/ObjectUI.py:319 +#: flatcamGUI/FlatCAMGUI.py:4487 flatcamGUI/ObjectUI.py:319 msgid "" "Generate a 'Follow' geometry.\n" "This means that it will cut through\n" @@ -7690,11 +7717,11 @@ msgstr "" "Dies bedeutet, dass es durchschneiden wird\n" "die Mitte der Spur." -#: flatcamGUI/FlatCAMGUI.py:4480 +#: flatcamGUI/FlatCAMGUI.py:4494 msgid "Table Show/Hide" msgstr "Tabelle anzeigen / ausblenden" -#: flatcamGUI/FlatCAMGUI.py:4482 +#: flatcamGUI/FlatCAMGUI.py:4496 msgid "" "Toggle the display of the Gerber Apertures Table.\n" "Also, on hide, it will delete all mark shapes\n" @@ -7704,15 +7731,15 @@ msgstr "" "Beim Ausblenden werden auch alle Markierungsformen gelöscht\n" "das sind auf leinwand gezeichnet." -#: flatcamGUI/FlatCAMGUI.py:4521 +#: flatcamGUI/FlatCAMGUI.py:4535 msgid "Gerber Export" msgstr "Gerber Export" -#: flatcamGUI/FlatCAMGUI.py:4524 flatcamGUI/FlatCAMGUI.py:5349 +#: flatcamGUI/FlatCAMGUI.py:4538 flatcamGUI/FlatCAMGUI.py:5363 msgid "Export Options" msgstr "Exportoptionen" -#: flatcamGUI/FlatCAMGUI.py:4526 +#: flatcamGUI/FlatCAMGUI.py:4540 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Gerber menu entry." @@ -7720,21 +7747,21 @@ msgstr "" "Die hier eingestellten Parameter werden in der exportierten Datei verwendet\n" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Gerber exportieren." -#: flatcamGUI/FlatCAMGUI.py:4537 flatcamGUI/FlatCAMGUI.py:4543 +#: flatcamGUI/FlatCAMGUI.py:4551 flatcamGUI/FlatCAMGUI.py:4557 msgid "The units used in the Gerber file." msgstr "Die in der Gerber-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:4540 flatcamGUI/FlatCAMGUI.py:4870 -#: flatcamGUI/FlatCAMGUI.py:4972 flatcamGUI/FlatCAMGUI.py:5365 +#: flatcamGUI/FlatCAMGUI.py:4554 flatcamGUI/FlatCAMGUI.py:4884 +#: flatcamGUI/FlatCAMGUI.py:4986 flatcamGUI/FlatCAMGUI.py:5379 #: flatcamTools/ToolCalculators.py:60 flatcamTools/ToolPcbWizard.py:125 msgid "INCH" msgstr "ZOLL" -#: flatcamGUI/FlatCAMGUI.py:4549 flatcamGUI/FlatCAMGUI.py:5374 +#: flatcamGUI/FlatCAMGUI.py:4563 flatcamGUI/FlatCAMGUI.py:5388 msgid "Int/Decimals" msgstr "Ganzzahl / Dezimalzahl" -#: flatcamGUI/FlatCAMGUI.py:4551 +#: flatcamGUI/FlatCAMGUI.py:4565 msgid "" "The number of digits in the whole part of the number\n" "and in the fractional part of the number." @@ -7742,7 +7769,7 @@ msgstr "" "Die Anzahl der Ziffern im gesamten Teil der Nummer\n" "und im Bruchteil der Zahl." -#: flatcamGUI/FlatCAMGUI.py:4562 +#: flatcamGUI/FlatCAMGUI.py:4576 msgid "" "This numbers signify the number of digits in\n" "the whole part of Gerber coordinates." @@ -7750,7 +7777,7 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der ganze Teil von Gerber koordiniert." -#: flatcamGUI/FlatCAMGUI.py:4576 +#: flatcamGUI/FlatCAMGUI.py:4590 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Gerber coordinates." @@ -7758,11 +7785,11 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "Der Dezimalteil der Gerber-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4585 flatcamGUI/FlatCAMGUI.py:5435 +#: flatcamGUI/FlatCAMGUI.py:4599 flatcamGUI/FlatCAMGUI.py:5449 msgid "Zeros" msgstr "Nullen" -#: flatcamGUI/FlatCAMGUI.py:4588 flatcamGUI/FlatCAMGUI.py:4598 +#: flatcamGUI/FlatCAMGUI.py:4602 flatcamGUI/FlatCAMGUI.py:4612 msgid "" "This sets the type of Gerber zeros.\n" "If LZ then Leading Zeros are removed and\n" @@ -7776,36 +7803,36 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen entfernt\n" "und führende Nullen werden beibehalten." -#: flatcamGUI/FlatCAMGUI.py:4595 flatcamGUI/FlatCAMGUI.py:4948 -#: flatcamGUI/FlatCAMGUI.py:5445 flatcamTools/ToolPcbWizard.py:111 +#: flatcamGUI/FlatCAMGUI.py:4609 flatcamGUI/FlatCAMGUI.py:4962 +#: flatcamGUI/FlatCAMGUI.py:5459 flatcamTools/ToolPcbWizard.py:111 msgid "LZ" msgstr "LZ" -#: flatcamGUI/FlatCAMGUI.py:4596 flatcamGUI/FlatCAMGUI.py:4949 -#: flatcamGUI/FlatCAMGUI.py:5446 flatcamTools/ToolPcbWizard.py:112 +#: flatcamGUI/FlatCAMGUI.py:4610 flatcamGUI/FlatCAMGUI.py:4963 +#: flatcamGUI/FlatCAMGUI.py:5460 flatcamTools/ToolPcbWizard.py:112 msgid "TZ" msgstr "TZ" -#: flatcamGUI/FlatCAMGUI.py:4618 flatcamGUI/FlatCAMGUI.py:5499 -#: flatcamGUI/FlatCAMGUI.py:6101 flatcamGUI/FlatCAMGUI.py:6380 -#: flatcamGUI/FlatCAMGUI.py:6419 flatcamGUI/FlatCAMGUI.py:6663 -#: flatcamGUI/FlatCAMGUI.py:6762 flatcamGUI/FlatCAMGUI.py:6958 -#: flatcamGUI/FlatCAMGUI.py:7019 flatcamGUI/FlatCAMGUI.py:7218 -#: flatcamGUI/FlatCAMGUI.py:7350 flatcamGUI/FlatCAMGUI.py:7523 -#: flatcamGUI/ObjectUI.py:1601 flatcamTools/ToolNonCopperClear.py:265 +#: flatcamGUI/FlatCAMGUI.py:4632 flatcamGUI/FlatCAMGUI.py:5513 +#: flatcamGUI/FlatCAMGUI.py:6115 flatcamGUI/FlatCAMGUI.py:6394 +#: flatcamGUI/FlatCAMGUI.py:6433 flatcamGUI/FlatCAMGUI.py:6688 +#: flatcamGUI/FlatCAMGUI.py:6787 flatcamGUI/FlatCAMGUI.py:6994 +#: flatcamGUI/FlatCAMGUI.py:7055 flatcamGUI/FlatCAMGUI.py:7254 +#: flatcamGUI/FlatCAMGUI.py:7386 flatcamGUI/FlatCAMGUI.py:7559 +#: flatcamGUI/ObjectUI.py:1610 flatcamTools/ToolNonCopperClear.py:265 msgid "Parameters" msgstr "Parameters" -#: flatcamGUI/FlatCAMGUI.py:4620 +#: flatcamGUI/FlatCAMGUI.py:4634 msgid "A list of Gerber Editor parameters." msgstr "Eine Liste der Gerber-Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:4628 flatcamGUI/FlatCAMGUI.py:5509 -#: flatcamGUI/FlatCAMGUI.py:6111 +#: flatcamGUI/FlatCAMGUI.py:4642 flatcamGUI/FlatCAMGUI.py:5523 +#: flatcamGUI/FlatCAMGUI.py:6125 msgid "Selection limit" msgstr "Auswahllimit" -#: flatcamGUI/FlatCAMGUI.py:4630 +#: flatcamGUI/FlatCAMGUI.py:4644 msgid "" "Set the number of selected Gerber geometry\n" "items above which the utility geometry\n" @@ -7819,23 +7846,23 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:4642 +#: flatcamGUI/FlatCAMGUI.py:4656 msgid "New Aperture code" msgstr "Neuer Blendencode" -#: flatcamGUI/FlatCAMGUI.py:4654 +#: flatcamGUI/FlatCAMGUI.py:4668 msgid "New Aperture size" msgstr "Neuer Öffnungsgröße" -#: flatcamGUI/FlatCAMGUI.py:4656 +#: flatcamGUI/FlatCAMGUI.py:4670 msgid "Size for the new aperture" msgstr "Größe für die neue Blende" -#: flatcamGUI/FlatCAMGUI.py:4666 +#: flatcamGUI/FlatCAMGUI.py:4680 msgid "New Aperture type" msgstr "Neuer Blendentyp" -#: flatcamGUI/FlatCAMGUI.py:4668 +#: flatcamGUI/FlatCAMGUI.py:4682 msgid "" "Type for the new aperture.\n" "Can be 'C', 'R' or 'O'." @@ -7843,36 +7870,36 @@ msgstr "" "Geben Sie für die neue Blende ein.\n" "Kann \"C\", \"R\" oder \"O\" sein." -#: flatcamGUI/FlatCAMGUI.py:4689 +#: flatcamGUI/FlatCAMGUI.py:4703 msgid "Aperture Dimensions" msgstr "Öffnungsmaße" -#: flatcamGUI/FlatCAMGUI.py:4691 flatcamGUI/FlatCAMGUI.py:5784 -#: flatcamGUI/FlatCAMGUI.py:6431 +#: flatcamGUI/FlatCAMGUI.py:4705 flatcamGUI/FlatCAMGUI.py:5798 +#: flatcamGUI/FlatCAMGUI.py:6445 msgid "Diameters of the cutting tools, separated by ','" msgstr "Durchmesser der Schneidwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:4697 +#: flatcamGUI/FlatCAMGUI.py:4711 #, python-format msgid "%s:" msgstr "%s:" -#: flatcamGUI/FlatCAMGUI.py:4701 flatcamGUI/FlatCAMGUI.py:5550 -#: flatcamGUI/FlatCAMGUI.py:5681 +#: flatcamGUI/FlatCAMGUI.py:4715 flatcamGUI/FlatCAMGUI.py:5564 +#: flatcamGUI/FlatCAMGUI.py:5695 msgid "Linear Dir." msgstr "Lineare Richt." -#: flatcamGUI/FlatCAMGUI.py:4737 +#: flatcamGUI/FlatCAMGUI.py:4751 msgid "Circular Pad Array" msgstr "Kreisschlitz-Array" -#: flatcamGUI/FlatCAMGUI.py:4741 flatcamGUI/FlatCAMGUI.py:5590 -#: flatcamGUI/FlatCAMGUI.py:5721 +#: flatcamGUI/FlatCAMGUI.py:4755 flatcamGUI/FlatCAMGUI.py:5604 +#: flatcamGUI/FlatCAMGUI.py:5735 msgid "Circular Dir." msgstr "Kreisricht." -#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/FlatCAMGUI.py:5592 -#: flatcamGUI/FlatCAMGUI.py:5723 +#: flatcamGUI/FlatCAMGUI.py:4757 flatcamGUI/FlatCAMGUI.py:5606 +#: flatcamGUI/FlatCAMGUI.py:5737 msgid "" "Direction for circular array.\n" "Can be CW = clockwise or CCW = counter clockwise." @@ -7880,48 +7907,48 @@ msgstr "" "Richtung für kreisförmige Anordnung. \n" "Kann CW = Uhrzeigersinn oder CCW = Gegenuhrzeigersinn sein." -#: flatcamGUI/FlatCAMGUI.py:4754 flatcamGUI/FlatCAMGUI.py:5603 -#: flatcamGUI/FlatCAMGUI.py:5734 +#: flatcamGUI/FlatCAMGUI.py:4768 flatcamGUI/FlatCAMGUI.py:5617 +#: flatcamGUI/FlatCAMGUI.py:5748 msgid "Circ. Angle" msgstr "Kreiswinkel" -#: flatcamGUI/FlatCAMGUI.py:4769 +#: flatcamGUI/FlatCAMGUI.py:4783 msgid "Distance at which to buffer the Gerber element." msgstr "Abstand, in dem das Gerber-Element gepuffert werden soll." -#: flatcamGUI/FlatCAMGUI.py:4776 +#: flatcamGUI/FlatCAMGUI.py:4790 msgid "Scale Tool" msgstr "Skalierungswerk." -#: flatcamGUI/FlatCAMGUI.py:4782 +#: flatcamGUI/FlatCAMGUI.py:4796 msgid "Factor to scale the Gerber element." msgstr "Faktor zum Skalieren des Gerber-Elements." -#: flatcamGUI/FlatCAMGUI.py:4789 +#: flatcamGUI/FlatCAMGUI.py:4803 msgid "Mark Area Tool" msgstr "Bereich markieren Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:4793 flatcamGUI/FlatCAMGUI.py:4803 +#: flatcamGUI/FlatCAMGUI.py:4807 flatcamGUI/FlatCAMGUI.py:4817 msgid "Threshold low" msgstr "Schwelle niedrig" -#: flatcamGUI/FlatCAMGUI.py:4795 +#: flatcamGUI/FlatCAMGUI.py:4809 msgid "Threshold value under which the apertures are not marked." msgstr "Schwellenwert, unter dem die Blenden nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:4805 +#: flatcamGUI/FlatCAMGUI.py:4819 msgid "Threshold value over which the apertures are not marked." msgstr "Schwellenwert, über dem die Blenden nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:4821 +#: flatcamGUI/FlatCAMGUI.py:4835 msgid "Excellon General" msgstr "Excellon Allgemeines" -#: flatcamGUI/FlatCAMGUI.py:4843 +#: flatcamGUI/FlatCAMGUI.py:4857 msgid "Excellon Format" msgstr "Excellon Format" -#: flatcamGUI/FlatCAMGUI.py:4845 +#: flatcamGUI/FlatCAMGUI.py:4859 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -7963,12 +7990,12 @@ msgstr "" "Sprint-Layout 2: 4 ZOLL LZ\n" "KiCAD 3: 5 ZOLL TZ" -#: flatcamGUI/FlatCAMGUI.py:4873 +#: flatcamGUI/FlatCAMGUI.py:4887 msgid "Default values for INCH are 2:4" msgstr "Die Standardwerte für ZOLL sind 2: 4" -#: flatcamGUI/FlatCAMGUI.py:4881 flatcamGUI/FlatCAMGUI.py:4914 -#: flatcamGUI/FlatCAMGUI.py:5389 +#: flatcamGUI/FlatCAMGUI.py:4895 flatcamGUI/FlatCAMGUI.py:4928 +#: flatcamGUI/FlatCAMGUI.py:5403 msgid "" "This numbers signify the number of digits in\n" "the whole part of Excellon coordinates." @@ -7976,8 +8003,8 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der gesamte Teil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4895 flatcamGUI/FlatCAMGUI.py:4928 -#: flatcamGUI/FlatCAMGUI.py:5403 +#: flatcamGUI/FlatCAMGUI.py:4909 flatcamGUI/FlatCAMGUI.py:4942 +#: flatcamGUI/FlatCAMGUI.py:5417 msgid "" "This numbers signify the number of digits in\n" "the decimal part of Excellon coordinates." @@ -7985,19 +8012,19 @@ msgstr "" "Diese Zahlen geben die Anzahl der Ziffern in an\n" "der Dezimalteil der Excellon-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:4903 +#: flatcamGUI/FlatCAMGUI.py:4917 msgid "METRIC" msgstr "METRISCH" -#: flatcamGUI/FlatCAMGUI.py:4906 +#: flatcamGUI/FlatCAMGUI.py:4920 msgid "Default values for METRIC are 3:3" msgstr "Die Standardwerte für METRISCH sind 3: 3" -#: flatcamGUI/FlatCAMGUI.py:4937 +#: flatcamGUI/FlatCAMGUI.py:4951 msgid "Default Zeros" msgstr "Standard Nullen" -#: flatcamGUI/FlatCAMGUI.py:4940 flatcamGUI/FlatCAMGUI.py:5438 +#: flatcamGUI/FlatCAMGUI.py:4954 flatcamGUI/FlatCAMGUI.py:5452 msgid "" "This sets the type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -8011,7 +8038,7 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4951 +#: flatcamGUI/FlatCAMGUI.py:4965 msgid "" "This sets the default type of Excellon zeros.\n" "If it is not detected in the parsed file the value here\n" @@ -8027,11 +8054,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:4961 +#: flatcamGUI/FlatCAMGUI.py:4975 msgid "Default Units" msgstr "Standard Einheiten" -#: flatcamGUI/FlatCAMGUI.py:4964 +#: flatcamGUI/FlatCAMGUI.py:4978 msgid "" "This sets the default units of Excellon files.\n" "If it is not detected in the parsed file the value here\n" @@ -8043,7 +8070,7 @@ msgstr "" "wird verwendet. Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4975 +#: flatcamGUI/FlatCAMGUI.py:4989 msgid "" "This sets the units of Excellon files.\n" "Some Excellon files don't have an header\n" @@ -8053,15 +8080,15 @@ msgstr "" "Einige Excellon-Dateien haben keinen Header\n" "Daher wird dieser Parameter verwendet." -#: flatcamGUI/FlatCAMGUI.py:4983 +#: flatcamGUI/FlatCAMGUI.py:4997 msgid "Excellon Optimization" msgstr "Optimierung der Excellons" -#: flatcamGUI/FlatCAMGUI.py:4986 +#: flatcamGUI/FlatCAMGUI.py:5000 msgid "Algorithm: " msgstr "Algorithmus: " -#: flatcamGUI/FlatCAMGUI.py:4988 flatcamGUI/FlatCAMGUI.py:5002 +#: flatcamGUI/FlatCAMGUI.py:5002 flatcamGUI/FlatCAMGUI.py:5016 msgid "" "This sets the optimization type for the Excellon drill path.\n" "If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n" @@ -8085,15 +8112,15 @@ msgstr "" "Wenn DEAKTIVIERT, arbeitet FlatCAM im 32-Bit-Modus und verwendet es\n" "Traveling Salesman-Algorithmus zur Pfadoptimierung." -#: flatcamGUI/FlatCAMGUI.py:4999 +#: flatcamGUI/FlatCAMGUI.py:5013 msgid "MH" msgstr "MH" -#: flatcamGUI/FlatCAMGUI.py:5013 +#: flatcamGUI/FlatCAMGUI.py:5027 msgid "Optimization Time" msgstr "Optimierungszeit" -#: flatcamGUI/FlatCAMGUI.py:5016 +#: flatcamGUI/FlatCAMGUI.py:5030 msgid "" "When OR-Tools Metaheuristic (MH) is enabled there is a\n" "maximum threshold for how much time is spent doing the\n" @@ -8105,16 +8132,16 @@ msgstr "" "Pfadoptimierung. Diese maximale Dauer wird hier eingestellt.\n" "In Sekunden." -#: flatcamGUI/FlatCAMGUI.py:5059 +#: flatcamGUI/FlatCAMGUI.py:5073 msgid "Excellon Options" msgstr "Excellon-Optionen" -#: flatcamGUI/FlatCAMGUI.py:5062 flatcamGUI/FlatCAMGUI.py:5803 -#: flatcamGUI/ObjectUI.py:634 +#: flatcamGUI/FlatCAMGUI.py:5076 flatcamGUI/FlatCAMGUI.py:5817 +#: flatcamGUI/ObjectUI.py:643 msgid "Create CNC Job" msgstr "CNC-Job erstellen" -#: flatcamGUI/FlatCAMGUI.py:5064 +#: flatcamGUI/FlatCAMGUI.py:5078 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object." @@ -8122,14 +8149,14 @@ msgstr "" "Parameter, die zum Erstellen eines CNC-Auftragsobjekts verwendet werden\n" "für dieses Bohrobjekt." -#: flatcamGUI/FlatCAMGUI.py:5072 flatcamGUI/FlatCAMGUI.py:5815 -#: flatcamGUI/FlatCAMGUI.py:6516 flatcamGUI/FlatCAMGUI.py:7154 -#: flatcamGUI/ObjectUI.py:645 flatcamGUI/ObjectUI.py:1123 +#: flatcamGUI/FlatCAMGUI.py:5086 flatcamGUI/FlatCAMGUI.py:5829 +#: flatcamGUI/FlatCAMGUI.py:6530 flatcamGUI/FlatCAMGUI.py:7190 +#: flatcamGUI/ObjectUI.py:654 flatcamGUI/ObjectUI.py:1132 #: flatcamTools/ToolCalculators.py:107 flatcamTools/ToolNonCopperClear.py:269 msgid "Cut Z" msgstr "Schnitt Z" -#: flatcamGUI/FlatCAMGUI.py:5074 flatcamGUI/ObjectUI.py:647 +#: flatcamGUI/FlatCAMGUI.py:5088 flatcamGUI/ObjectUI.py:656 msgid "" "Drill depth (negative)\n" "below the copper surface." @@ -8137,12 +8164,12 @@ msgstr "" "Bohrtiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:5081 flatcamGUI/FlatCAMGUI.py:5853 -#: flatcamGUI/ObjectUI.py:655 flatcamGUI/ObjectUI.py:1157 +#: flatcamGUI/FlatCAMGUI.py:5095 flatcamGUI/FlatCAMGUI.py:5867 +#: flatcamGUI/ObjectUI.py:664 flatcamGUI/ObjectUI.py:1166 msgid "Travel Z" msgstr "Reise Z" -#: flatcamGUI/FlatCAMGUI.py:5083 flatcamGUI/ObjectUI.py:657 +#: flatcamGUI/FlatCAMGUI.py:5097 flatcamGUI/ObjectUI.py:666 msgid "" "Tool height when travelling\n" "across the XY plane." @@ -8150,12 +8177,12 @@ msgstr "" "Werkzeughöhe auf Reisen\n" "über die XY-Ebene." -#: flatcamGUI/FlatCAMGUI.py:5091 flatcamGUI/FlatCAMGUI.py:5863 -#: flatcamGUI/ObjectUI.py:665 flatcamGUI/ObjectUI.py:1175 +#: flatcamGUI/FlatCAMGUI.py:5105 flatcamGUI/FlatCAMGUI.py:5877 +#: flatcamGUI/ObjectUI.py:674 flatcamGUI/ObjectUI.py:1184 msgid "Tool change" msgstr "Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:5093 flatcamGUI/ObjectUI.py:667 +#: flatcamGUI/FlatCAMGUI.py:5107 flatcamGUI/ObjectUI.py:676 msgid "" "Include tool-change sequence\n" "in G-Code (Pause for tool change)." @@ -8163,12 +8190,12 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im G-Code (Pause für Werkzeugwechsel)." -#: flatcamGUI/FlatCAMGUI.py:5100 flatcamGUI/FlatCAMGUI.py:5875 +#: flatcamGUI/FlatCAMGUI.py:5114 flatcamGUI/FlatCAMGUI.py:5889 msgid "Toolchange Z" msgstr "Werkzeugwechsel Z" -#: flatcamGUI/FlatCAMGUI.py:5102 flatcamGUI/FlatCAMGUI.py:5878 -#: flatcamGUI/ObjectUI.py:675 flatcamGUI/ObjectUI.py:1171 +#: flatcamGUI/FlatCAMGUI.py:5116 flatcamGUI/FlatCAMGUI.py:5892 +#: flatcamGUI/ObjectUI.py:684 flatcamGUI/ObjectUI.py:1180 msgid "" "Z-axis position (height) for\n" "tool change." @@ -8176,11 +8203,11 @@ msgstr "" "Z-Achsenposition (Höhe) für\n" "Werkzeugwechsel." -#: flatcamGUI/FlatCAMGUI.py:5109 flatcamGUI/ObjectUI.py:704 +#: flatcamGUI/FlatCAMGUI.py:5123 flatcamGUI/ObjectUI.py:713 msgid "Feedrate (Plunge)" msgstr "Vorschub (Tauchgang)" -#: flatcamGUI/FlatCAMGUI.py:5111 flatcamGUI/ObjectUI.py:706 +#: flatcamGUI/FlatCAMGUI.py:5125 flatcamGUI/ObjectUI.py:715 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -8190,11 +8217,11 @@ msgstr "" "(in Einheiten pro Minute).\n" "Dies ist für die lineare Bewegung G01." -#: flatcamGUI/FlatCAMGUI.py:5120 +#: flatcamGUI/FlatCAMGUI.py:5134 msgid "Spindle Speed" msgstr "Spulengeschwindigkeit" -#: flatcamGUI/FlatCAMGUI.py:5122 flatcamGUI/ObjectUI.py:733 +#: flatcamGUI/FlatCAMGUI.py:5136 flatcamGUI/ObjectUI.py:742 msgid "" "Speed of the spindle\n" "in RPM (optional)" @@ -8202,11 +8229,11 @@ msgstr "" "Geschwindigkeit der Spindel\n" "in RPM (optional)" -#: flatcamGUI/FlatCAMGUI.py:5130 flatcamGUI/FlatCAMGUI.py:5921 +#: flatcamGUI/FlatCAMGUI.py:5144 flatcamGUI/FlatCAMGUI.py:5935 msgid "Spindle dir." msgstr "Spindelrichtung" -#: flatcamGUI/FlatCAMGUI.py:5132 flatcamGUI/FlatCAMGUI.py:5923 +#: flatcamGUI/FlatCAMGUI.py:5146 flatcamGUI/FlatCAMGUI.py:5937 msgid "" "This sets the direction that the spindle is rotating.\n" "It can be either:\n" @@ -8218,13 +8245,13 @@ msgstr "" "- CW = im Uhrzeigersinn oder\n" "- CCW = gegen den Uhrzeigersinn" -#: flatcamGUI/FlatCAMGUI.py:5144 flatcamGUI/FlatCAMGUI.py:5935 -#: flatcamGUI/ObjectUI.py:741 flatcamGUI/ObjectUI.py:1271 +#: flatcamGUI/FlatCAMGUI.py:5158 flatcamGUI/FlatCAMGUI.py:5949 +#: flatcamGUI/ObjectUI.py:750 flatcamGUI/ObjectUI.py:1280 msgid "Dwell" msgstr "Wohnen" -#: flatcamGUI/FlatCAMGUI.py:5146 flatcamGUI/FlatCAMGUI.py:5937 -#: flatcamGUI/ObjectUI.py:743 flatcamGUI/ObjectUI.py:1274 +#: flatcamGUI/FlatCAMGUI.py:5160 flatcamGUI/FlatCAMGUI.py:5951 +#: flatcamGUI/ObjectUI.py:752 flatcamGUI/ObjectUI.py:1283 msgid "" "Pause to allow the spindle to reach its\n" "speed before cutting." @@ -8232,21 +8259,21 @@ msgstr "" "Pause, damit die Spindel ihre erreichen kann\n" "Geschwindigkeit vor dem Schneiden." -#: flatcamGUI/FlatCAMGUI.py:5149 flatcamGUI/FlatCAMGUI.py:5940 +#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/FlatCAMGUI.py:5954 msgid "Duration" msgstr "Dauer" -#: flatcamGUI/FlatCAMGUI.py:5151 flatcamGUI/FlatCAMGUI.py:5942 -#: flatcamGUI/ObjectUI.py:748 flatcamGUI/ObjectUI.py:1280 +#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/FlatCAMGUI.py:5956 +#: flatcamGUI/ObjectUI.py:757 flatcamGUI/ObjectUI.py:1289 msgid "Number of time units for spindle to dwell." msgstr "Anzahl der Zeiteinheiten, in denen die Spindel verweilen soll." -#: flatcamGUI/FlatCAMGUI.py:5163 flatcamGUI/FlatCAMGUI.py:5952 -#: flatcamGUI/ObjectUI.py:756 +#: flatcamGUI/FlatCAMGUI.py:5177 flatcamGUI/FlatCAMGUI.py:5966 +#: flatcamGUI/ObjectUI.py:765 msgid "Postprocessor" msgstr "Postprozessor" -#: flatcamGUI/FlatCAMGUI.py:5165 flatcamGUI/ObjectUI.py:758 +#: flatcamGUI/FlatCAMGUI.py:5179 flatcamGUI/ObjectUI.py:767 msgid "" "The postprocessor JSON file that dictates\n" "Gcode output." @@ -8254,11 +8281,11 @@ msgstr "" "Die Postprozessor-JSON-Datei, die diktiert\n" "Gcode-Ausgabe." -#: flatcamGUI/FlatCAMGUI.py:5174 flatcamGUI/ObjectUI.py:798 +#: flatcamGUI/FlatCAMGUI.py:5188 flatcamGUI/ObjectUI.py:807 msgid "Gcode" msgstr "Gcode" -#: flatcamGUI/FlatCAMGUI.py:5176 +#: flatcamGUI/FlatCAMGUI.py:5190 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -8271,23 +8298,23 @@ msgstr "" "angezeigt\n" "in Bohrer umgewandelt." -#: flatcamGUI/FlatCAMGUI.py:5192 flatcamGUI/ObjectUI.py:822 +#: flatcamGUI/FlatCAMGUI.py:5206 flatcamGUI/ObjectUI.py:831 msgid "Mill Holes" msgstr "Löcher bohren" -#: flatcamGUI/FlatCAMGUI.py:5194 flatcamGUI/ObjectUI.py:824 +#: flatcamGUI/FlatCAMGUI.py:5208 flatcamGUI/ObjectUI.py:833 msgid "Create Geometry for milling holes." msgstr "Erstellen Sie Geometrie zum Fräsen von Löchern." -#: flatcamGUI/FlatCAMGUI.py:5198 flatcamGUI/ObjectUI.py:837 +#: flatcamGUI/FlatCAMGUI.py:5212 flatcamGUI/ObjectUI.py:846 msgid "Drill Tool dia" msgstr "Bohrwerkzeugs Durchm." -#: flatcamGUI/FlatCAMGUI.py:5205 flatcamGUI/ObjectUI.py:853 +#: flatcamGUI/FlatCAMGUI.py:5219 flatcamGUI/ObjectUI.py:862 msgid "Slot Tool dia" msgstr "Schlitzwerkzeug Durchmesser" -#: flatcamGUI/FlatCAMGUI.py:5207 flatcamGUI/ObjectUI.py:855 +#: flatcamGUI/FlatCAMGUI.py:5221 flatcamGUI/ObjectUI.py:864 msgid "" "Diameter of the cutting tool\n" "when milling slots." @@ -8295,19 +8322,19 @@ msgstr "" "Durchmesser des Schneidewerkzeugs\n" "beim Fräsen von Schlitzen." -#: flatcamGUI/FlatCAMGUI.py:5219 +#: flatcamGUI/FlatCAMGUI.py:5233 msgid "Defaults" msgstr "Standardwerte" -#: flatcamGUI/FlatCAMGUI.py:5232 +#: flatcamGUI/FlatCAMGUI.py:5246 msgid "Excellon Adv. Options" msgstr "Excellon erweiterte Optionen" -#: flatcamGUI/FlatCAMGUI.py:5238 flatcamGUI/FlatCAMGUI.py:5975 +#: flatcamGUI/FlatCAMGUI.py:5252 flatcamGUI/FlatCAMGUI.py:5989 msgid "Advanced Options" msgstr "Erweiterte Optionen" -#: flatcamGUI/FlatCAMGUI.py:5240 +#: flatcamGUI/FlatCAMGUI.py:5254 msgid "" "Parameters used to create a CNC Job object\n" "for this drill object that are shown when App Level is Advanced." @@ -8316,11 +8343,11 @@ msgstr "" "für dieses Drill-Objekt, das angezeigt wird, wenn die App-Ebene Erweitert " "ist." -#: flatcamGUI/FlatCAMGUI.py:5248 flatcamGUI/ObjectUI.py:605 +#: flatcamGUI/FlatCAMGUI.py:5262 flatcamGUI/ObjectUI.py:614 msgid "Offset Z" msgstr "Versatz Z" -#: flatcamGUI/FlatCAMGUI.py:5250 flatcamGUI/ObjectUI.py:623 +#: flatcamGUI/FlatCAMGUI.py:5264 flatcamGUI/ObjectUI.py:632 msgid "" "Some drill bits (the larger ones) need to drill deeper\n" "to create the desired exit hole diameter due of the tip shape.\n" @@ -8331,20 +8358,20 @@ msgstr "" "erzeugen.\n" "Der Wert hier kann den Parameter Cut Z ausgleichen." -#: flatcamGUI/FlatCAMGUI.py:5257 +#: flatcamGUI/FlatCAMGUI.py:5271 msgid "Toolchange X,Y" msgstr "Werkzeugwechsel X, Y" -#: flatcamGUI/FlatCAMGUI.py:5259 flatcamGUI/FlatCAMGUI.py:5988 +#: flatcamGUI/FlatCAMGUI.py:5273 flatcamGUI/FlatCAMGUI.py:6002 msgid "Toolchange X,Y position." msgstr "Werkzeugwechsel X, Y Position." -#: flatcamGUI/FlatCAMGUI.py:5265 flatcamGUI/FlatCAMGUI.py:5995 -#: flatcamGUI/ObjectUI.py:684 +#: flatcamGUI/FlatCAMGUI.py:5279 flatcamGUI/FlatCAMGUI.py:6009 +#: flatcamGUI/ObjectUI.py:693 msgid "Start move Z" msgstr "Startbewegung Z" -#: flatcamGUI/FlatCAMGUI.py:5267 flatcamGUI/ObjectUI.py:686 +#: flatcamGUI/FlatCAMGUI.py:5281 flatcamGUI/ObjectUI.py:695 msgid "" "Height of the tool just after start.\n" "Delete the value if you don't need this feature." @@ -8352,13 +8379,13 @@ msgstr "" "Höhe des Werkzeugs gleich nach dem Start.\n" "Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." -#: flatcamGUI/FlatCAMGUI.py:5274 flatcamGUI/FlatCAMGUI.py:6005 -#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1201 +#: flatcamGUI/FlatCAMGUI.py:5288 flatcamGUI/FlatCAMGUI.py:6019 +#: flatcamGUI/ObjectUI.py:703 flatcamGUI/ObjectUI.py:1210 msgid "End move Z" msgstr "Bewegung beenden Z" -#: flatcamGUI/FlatCAMGUI.py:5276 flatcamGUI/FlatCAMGUI.py:6007 -#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1203 +#: flatcamGUI/FlatCAMGUI.py:5290 flatcamGUI/FlatCAMGUI.py:6021 +#: flatcamGUI/ObjectUI.py:705 flatcamGUI/ObjectUI.py:1212 msgid "" "Height of the tool after\n" "the last move at the end of the job." @@ -8366,11 +8393,11 @@ msgstr "" "Höhe des Werkzeugs nach\n" "die letzte Bewegung am Ende des Jobs." -#: flatcamGUI/FlatCAMGUI.py:5283 flatcamGUI/ObjectUI.py:715 +#: flatcamGUI/FlatCAMGUI.py:5297 flatcamGUI/ObjectUI.py:724 msgid "Feedrate Rapids" msgstr "Vorschubgeschwindigkeit" -#: flatcamGUI/FlatCAMGUI.py:5285 flatcamGUI/ObjectUI.py:717 +#: flatcamGUI/FlatCAMGUI.py:5299 flatcamGUI/ObjectUI.py:726 msgid "" "Tool speed while drilling\n" "(in units per minute).\n" @@ -8384,13 +8411,13 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:5296 flatcamGUI/FlatCAMGUI.py:6038 -#: flatcamGUI/ObjectUI.py:767 flatcamGUI/ObjectUI.py:1299 +#: flatcamGUI/FlatCAMGUI.py:5310 flatcamGUI/FlatCAMGUI.py:6052 +#: flatcamGUI/ObjectUI.py:776 flatcamGUI/ObjectUI.py:1308 msgid "Probe Z depth" msgstr "Sonde Z Tiefe" -#: flatcamGUI/FlatCAMGUI.py:5298 flatcamGUI/FlatCAMGUI.py:6040 -#: flatcamGUI/ObjectUI.py:769 flatcamGUI/ObjectUI.py:1301 +#: flatcamGUI/FlatCAMGUI.py:5312 flatcamGUI/FlatCAMGUI.py:6054 +#: flatcamGUI/ObjectUI.py:778 flatcamGUI/ObjectUI.py:1310 msgid "" "The maximum depth that the probe is allowed\n" "to probe. Negative value, in current units." @@ -8398,21 +8425,21 @@ msgstr "" "Die maximale Tiefe, in der die Sonde zulässig ist\n" "zu untersuchen. Negativer Wert in aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5306 flatcamGUI/FlatCAMGUI.py:6048 -#: flatcamGUI/ObjectUI.py:779 flatcamGUI/ObjectUI.py:1311 +#: flatcamGUI/FlatCAMGUI.py:5320 flatcamGUI/FlatCAMGUI.py:6062 +#: flatcamGUI/ObjectUI.py:788 flatcamGUI/ObjectUI.py:1320 msgid "Feedrate Probe" msgstr "Vorschubsonde" -#: flatcamGUI/FlatCAMGUI.py:5308 flatcamGUI/FlatCAMGUI.py:6050 -#: flatcamGUI/ObjectUI.py:781 flatcamGUI/ObjectUI.py:1313 +#: flatcamGUI/FlatCAMGUI.py:5322 flatcamGUI/FlatCAMGUI.py:6064 +#: flatcamGUI/ObjectUI.py:790 flatcamGUI/ObjectUI.py:1322 msgid "The feedrate used while the probe is probing." msgstr "Der Vorschub während der Sondenmessung." -#: flatcamGUI/FlatCAMGUI.py:5314 flatcamGUI/FlatCAMGUI.py:6057 +#: flatcamGUI/FlatCAMGUI.py:5328 flatcamGUI/FlatCAMGUI.py:6071 msgid "Fast Plunge" msgstr "Schneller Sprung" -#: flatcamGUI/FlatCAMGUI.py:5316 flatcamGUI/FlatCAMGUI.py:6059 +#: flatcamGUI/FlatCAMGUI.py:5330 flatcamGUI/FlatCAMGUI.py:6073 msgid "" "By checking this, the vertical move from\n" "Z_Toolchange to Z_move is done with G0,\n" @@ -8424,11 +8451,11 @@ msgstr "" "Das bedeutet die schnellste verfügbare Geschwindigkeit.\n" "WARNUNG: Die Verschiebung erfolgt bei Toolchange X, Y-Koordinaten." -#: flatcamGUI/FlatCAMGUI.py:5325 +#: flatcamGUI/FlatCAMGUI.py:5339 msgid "Fast Retract" msgstr "Schneller Rückzug" -#: flatcamGUI/FlatCAMGUI.py:5327 +#: flatcamGUI/FlatCAMGUI.py:5341 msgid "" "Exit hole strategy.\n" " - When uncheked, while exiting the drilled hole the drill bit\n" @@ -8444,11 +8471,11 @@ msgstr "" "  - Wenn Sie den Weg von Z-Schnitt (Schnitttiefe) nach Z_Move prüfen\n" "(Fahrhöhe) erfolgt so schnell wie möglich (G0) in einem Zug." -#: flatcamGUI/FlatCAMGUI.py:5346 +#: flatcamGUI/FlatCAMGUI.py:5360 msgid "Excellon Export" msgstr "Excellon Export" -#: flatcamGUI/FlatCAMGUI.py:5351 +#: flatcamGUI/FlatCAMGUI.py:5365 msgid "" "The parameters set here are used in the file exported\n" "when using the File -> Export -> Export Excellon menu entry." @@ -8457,11 +8484,11 @@ msgstr "" "bei Verwendung des Menüeintrags Datei -> Exportieren -> Exportieren von " "Excellon." -#: flatcamGUI/FlatCAMGUI.py:5362 flatcamGUI/FlatCAMGUI.py:5368 +#: flatcamGUI/FlatCAMGUI.py:5376 flatcamGUI/FlatCAMGUI.py:5382 msgid "The units used in the Excellon file." msgstr "Die in der Excellon-Datei verwendeten Einheiten." -#: flatcamGUI/FlatCAMGUI.py:5376 +#: flatcamGUI/FlatCAMGUI.py:5390 msgid "" "The NC drill files, usually named Excellon files\n" "are files that can be found in different formats.\n" @@ -8473,11 +8500,11 @@ msgstr "" "Hier legen wir das verwendete Format fest\n" "Koordinaten verwenden keine Periode." -#: flatcamGUI/FlatCAMGUI.py:5412 +#: flatcamGUI/FlatCAMGUI.py:5426 msgid "Format" msgstr "Format" -#: flatcamGUI/FlatCAMGUI.py:5414 flatcamGUI/FlatCAMGUI.py:5424 +#: flatcamGUI/FlatCAMGUI.py:5428 flatcamGUI/FlatCAMGUI.py:5438 msgid "" "Select the kind of coordinates format used.\n" "Coordinates can be saved with decimal point or without.\n" @@ -8494,15 +8521,15 @@ msgstr "" "Es muss auch angegeben werden, wenn LZ = führende Nullen beibehalten werden\n" "oder TZ = nachfolgende Nullen bleiben erhalten." -#: flatcamGUI/FlatCAMGUI.py:5421 +#: flatcamGUI/FlatCAMGUI.py:5435 msgid "Decimal" msgstr "Dezimal" -#: flatcamGUI/FlatCAMGUI.py:5422 +#: flatcamGUI/FlatCAMGUI.py:5436 msgid "No-Decimal" msgstr "Keine Dezimalzahl" -#: flatcamGUI/FlatCAMGUI.py:5448 +#: flatcamGUI/FlatCAMGUI.py:5462 msgid "" "This sets the default type of Excellon zeros.\n" "If LZ then Leading Zeros are kept and\n" @@ -8516,11 +8543,11 @@ msgstr "" "Wenn TZ aktiviert ist, werden nachfolgende Nullen beibehalten\n" "und führende Nullen werden entfernt." -#: flatcamGUI/FlatCAMGUI.py:5458 +#: flatcamGUI/FlatCAMGUI.py:5472 msgid "Slot type" msgstr "Schlitze-Typ" -#: flatcamGUI/FlatCAMGUI.py:5461 flatcamGUI/FlatCAMGUI.py:5471 +#: flatcamGUI/FlatCAMGUI.py:5475 flatcamGUI/FlatCAMGUI.py:5485 msgid "" "This sets how the slots will be exported.\n" "If ROUTED then the slots will be routed\n" @@ -8534,19 +8561,19 @@ msgstr "" "Beim Bohren (G85) werden die Steckplätze exportiert\n" "Verwenden Sie den Befehl Bohrschlitz (G85)." -#: flatcamGUI/FlatCAMGUI.py:5468 +#: flatcamGUI/FlatCAMGUI.py:5482 msgid "Routed" msgstr "Geroutet" -#: flatcamGUI/FlatCAMGUI.py:5469 +#: flatcamGUI/FlatCAMGUI.py:5483 msgid "Drilled(G85)" msgstr "Gebohrt (G85)" -#: flatcamGUI/FlatCAMGUI.py:5501 +#: flatcamGUI/FlatCAMGUI.py:5515 msgid "A list of Excellon Editor parameters." msgstr "Eine Liste der Excellon Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:5511 +#: flatcamGUI/FlatCAMGUI.py:5525 msgid "" "Set the number of selected Excellon geometry\n" "items above which the utility geometry\n" @@ -8560,40 +8587,40 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:5523 +#: flatcamGUI/FlatCAMGUI.py:5537 msgid "New Tool Dia" msgstr "Neuer Werkzeugdurchm." -#: flatcamGUI/FlatCAMGUI.py:5546 +#: flatcamGUI/FlatCAMGUI.py:5560 msgid "Linear Drill Array" msgstr "Linearbohrer-Array" -#: flatcamGUI/FlatCAMGUI.py:5566 flatcamGUI/FlatCAMGUI.py:5986 +#: flatcamGUI/FlatCAMGUI.py:5580 flatcamGUI/FlatCAMGUI.py:6000 #, python-format msgid "%s:" msgstr "%s:" -#: flatcamGUI/FlatCAMGUI.py:5586 +#: flatcamGUI/FlatCAMGUI.py:5600 msgid "Circular Drill Array" msgstr "Rundbohrer-Array" -#: flatcamGUI/FlatCAMGUI.py:5614 flatcamGUI/ObjectUI.py:604 +#: flatcamGUI/FlatCAMGUI.py:5628 flatcamGUI/ObjectUI.py:613 msgid "Slots" msgstr "Schlüssel" -#: flatcamGUI/FlatCAMGUI.py:5665 +#: flatcamGUI/FlatCAMGUI.py:5679 msgid "Linear Slot Array" msgstr "Lineare Schlitzanordnung" -#: flatcamGUI/FlatCAMGUI.py:5717 +#: flatcamGUI/FlatCAMGUI.py:5731 msgid "Circular Slot Array" msgstr "Kreisschlitz-Array" -#: flatcamGUI/FlatCAMGUI.py:5751 +#: flatcamGUI/FlatCAMGUI.py:5765 msgid "Geometry General" msgstr "Geometrie Allgemein" -#: flatcamGUI/FlatCAMGUI.py:5770 +#: flatcamGUI/FlatCAMGUI.py:5784 msgid "" "The number of circle steps for Geometry \n" "circle and arc shapes linear approximation." @@ -8601,11 +8628,11 @@ msgstr "" "Die Anzahl der Kreisschritte für die Geometrie\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:5798 +#: flatcamGUI/FlatCAMGUI.py:5812 msgid "Geometry Options" msgstr "Geometrieoptionen" -#: flatcamGUI/FlatCAMGUI.py:5805 +#: flatcamGUI/FlatCAMGUI.py:5819 msgid "" "Create a CNC Job object\n" "tracing the contours of this\n" @@ -8615,7 +8642,7 @@ msgstr "" "die Konturen davon nachzeichnen\n" "Geometrieobjekt." -#: flatcamGUI/FlatCAMGUI.py:5817 flatcamGUI/ObjectUI.py:1126 +#: flatcamGUI/FlatCAMGUI.py:5831 flatcamGUI/ObjectUI.py:1135 msgid "" "Cutting depth (negative)\n" "below the copper surface." @@ -8623,11 +8650,11 @@ msgstr "" "Schnitttiefe (negativ)\n" "unter der Kupferoberfläche." -#: flatcamGUI/FlatCAMGUI.py:5825 flatcamGUI/ObjectUI.py:1135 +#: flatcamGUI/FlatCAMGUI.py:5839 flatcamGUI/ObjectUI.py:1144 msgid "Multi-Depth" msgstr "Mehrfache Tiefe" -#: flatcamGUI/FlatCAMGUI.py:5828 flatcamGUI/ObjectUI.py:1138 +#: flatcamGUI/FlatCAMGUI.py:5842 flatcamGUI/ObjectUI.py:1147 msgid "" "Use multiple passes to limit\n" "the cut depth in each pass. Will\n" @@ -8639,11 +8666,11 @@ msgstr "" "mehrmals schneiden, bis Schnitt Z ist\n" "erreicht." -#: flatcamGUI/FlatCAMGUI.py:5837 +#: flatcamGUI/FlatCAMGUI.py:5851 msgid "Depth/Pass" msgstr "Tiefe / Pass" -#: flatcamGUI/FlatCAMGUI.py:5839 +#: flatcamGUI/FlatCAMGUI.py:5853 msgid "" "The depth to cut on each pass,\n" "when multidepth is enabled.\n" @@ -8657,7 +8684,7 @@ msgstr "" "es ist ein Bruch aus der Tiefe\n" "was einen negativen Wert hat." -#: flatcamGUI/FlatCAMGUI.py:5855 flatcamGUI/ObjectUI.py:1159 +#: flatcamGUI/FlatCAMGUI.py:5869 flatcamGUI/ObjectUI.py:1168 msgid "" "Height of the tool when\n" "moving without cutting." @@ -8665,7 +8692,7 @@ msgstr "" "Höhe des Werkzeugs bei\n" "Bewegen ohne zu schneiden." -#: flatcamGUI/FlatCAMGUI.py:5866 flatcamGUI/ObjectUI.py:1178 +#: flatcamGUI/FlatCAMGUI.py:5880 flatcamGUI/ObjectUI.py:1187 msgid "" "Include tool-change sequence\n" "in the Machine Code (Pause for tool change)." @@ -8673,11 +8700,11 @@ msgstr "" "Werkzeugwechselfolge einbeziehen\n" "im Maschinencode (Pause für Werkzeugwechsel)." -#: flatcamGUI/FlatCAMGUI.py:5887 flatcamGUI/ObjectUI.py:1211 +#: flatcamGUI/FlatCAMGUI.py:5901 flatcamGUI/ObjectUI.py:1220 msgid "Feed Rate X-Y" msgstr "Vorschubrate X-Y" -#: flatcamGUI/FlatCAMGUI.py:5889 flatcamGUI/ObjectUI.py:1213 +#: flatcamGUI/FlatCAMGUI.py:5903 flatcamGUI/ObjectUI.py:1222 msgid "" "Cutting speed in the XY\n" "plane in units per minute" @@ -8685,11 +8712,11 @@ msgstr "" "Schnittgeschwindigkeit im XY\n" "Flugzeug in Einheiten pro Minute" -#: flatcamGUI/FlatCAMGUI.py:5897 flatcamGUI/ObjectUI.py:1221 +#: flatcamGUI/FlatCAMGUI.py:5911 flatcamGUI/ObjectUI.py:1230 msgid "Feed Rate Z" msgstr "Vorschubrate Z" -#: flatcamGUI/FlatCAMGUI.py:5899 flatcamGUI/ObjectUI.py:1223 +#: flatcamGUI/FlatCAMGUI.py:5913 flatcamGUI/ObjectUI.py:1232 msgid "" "Cutting speed in the XY\n" "plane in units per minute.\n" @@ -8699,12 +8726,12 @@ msgstr "" "Flugzeug in Einheiten pro Minute.\n" "Es heißt auch Sturz." -#: flatcamGUI/FlatCAMGUI.py:5908 flatcamGUI/ObjectUI.py:731 -#: flatcamGUI/ObjectUI.py:1258 +#: flatcamGUI/FlatCAMGUI.py:5922 flatcamGUI/ObjectUI.py:740 +#: flatcamGUI/ObjectUI.py:1267 msgid "Spindle speed" msgstr "Spulengeschwindigkeit" -#: flatcamGUI/FlatCAMGUI.py:5911 flatcamGUI/ObjectUI.py:1261 +#: flatcamGUI/FlatCAMGUI.py:5925 flatcamGUI/ObjectUI.py:1270 msgid "" "Speed of the spindle in RPM (optional).\n" "If LASER postprocessor is used,\n" @@ -8714,7 +8741,7 @@ msgstr "" "Wenn LASER-Postprozessor verwendet wird,\n" "Dieser Wert ist die Leistung des Lasers." -#: flatcamGUI/FlatCAMGUI.py:5954 flatcamGUI/ObjectUI.py:1290 +#: flatcamGUI/FlatCAMGUI.py:5968 flatcamGUI/ObjectUI.py:1299 msgid "" "The Postprocessor file that dictates\n" "the Machine Code (like GCode, RML, HPGL) output." @@ -8722,11 +8749,11 @@ msgstr "" "Die Postprozessor-Datei, die diktiert\n" "den Maschinencode (wie GCode, RML, HPGL)." -#: flatcamGUI/FlatCAMGUI.py:5970 +#: flatcamGUI/FlatCAMGUI.py:5984 msgid "Geometry Adv. Options" msgstr "Geometrie Erw. Optionen" -#: flatcamGUI/FlatCAMGUI.py:5977 +#: flatcamGUI/FlatCAMGUI.py:5991 msgid "" "Parameters to create a CNC Job object\n" "tracing the contours of a Geometry object." @@ -8734,7 +8761,7 @@ msgstr "" "Parameter zum Erstellen eines CNC-Auftragsobjekts\n" "Verfolgung der Konturen eines Geometrieobjekts." -#: flatcamGUI/FlatCAMGUI.py:5997 +#: flatcamGUI/FlatCAMGUI.py:6011 msgid "" "Height of the tool just after starting the work.\n" "Delete the value if you don't need this feature." @@ -8742,11 +8769,11 @@ msgstr "" "Höhe des Werkzeugs unmittelbar nach Beginn der Arbeit.\n" "Löschen Sie den Wert, wenn Sie diese Funktion nicht benötigen." -#: flatcamGUI/FlatCAMGUI.py:6015 flatcamGUI/ObjectUI.py:1232 +#: flatcamGUI/FlatCAMGUI.py:6029 flatcamGUI/ObjectUI.py:1241 msgid "Feed Rate Rapids" msgstr "Vorschubgeschwindigkeit" -#: flatcamGUI/FlatCAMGUI.py:6017 flatcamGUI/ObjectUI.py:1234 +#: flatcamGUI/FlatCAMGUI.py:6031 flatcamGUI/ObjectUI.py:1243 msgid "" "Cutting speed in the XY plane\n" "(in units per minute).\n" @@ -8760,11 +8787,11 @@ msgstr "" "Es ist nur für Marlin nützlich,\n" "für andere Fälle ignorieren." -#: flatcamGUI/FlatCAMGUI.py:6028 flatcamGUI/ObjectUI.py:1248 +#: flatcamGUI/FlatCAMGUI.py:6042 flatcamGUI/ObjectUI.py:1257 msgid "Re-cut 1st pt." msgstr "1. Punkt erneut schneiden" -#: flatcamGUI/FlatCAMGUI.py:6030 flatcamGUI/ObjectUI.py:1250 +#: flatcamGUI/FlatCAMGUI.py:6044 flatcamGUI/ObjectUI.py:1259 msgid "" "In order to remove possible\n" "copper leftovers where first cut\n" @@ -8776,11 +8803,11 @@ msgstr "" "Beim letzten Schnitt treffen wir einen\n" "verlängerter Schnitt über dem ersten Schnittabschnitt." -#: flatcamGUI/FlatCAMGUI.py:6069 +#: flatcamGUI/FlatCAMGUI.py:6083 msgid "Seg. X size" msgstr "Seg. X Größe" -#: flatcamGUI/FlatCAMGUI.py:6071 +#: flatcamGUI/FlatCAMGUI.py:6085 msgid "" "The size of the trace segment on the X axis.\n" "Useful for auto-leveling.\n" @@ -8790,11 +8817,11 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:6080 +#: flatcamGUI/FlatCAMGUI.py:6094 msgid "Seg. Y size" msgstr "Seg. Y Größe" -#: flatcamGUI/FlatCAMGUI.py:6082 +#: flatcamGUI/FlatCAMGUI.py:6096 msgid "" "The size of the trace segment on the Y axis.\n" "Useful for auto-leveling.\n" @@ -8804,15 +8831,15 @@ msgstr "" "Nützlich für die automatische Nivellierung.\n" "Ein Wert von 0 bedeutet keine Segmentierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:6098 +#: flatcamGUI/FlatCAMGUI.py:6112 msgid "Geometry Editor" msgstr "Geo-Editor" -#: flatcamGUI/FlatCAMGUI.py:6103 +#: flatcamGUI/FlatCAMGUI.py:6117 msgid "A list of Geometry Editor parameters." msgstr "Eine Liste der Geometry Editor-Parameter." -#: flatcamGUI/FlatCAMGUI.py:6113 +#: flatcamGUI/FlatCAMGUI.py:6127 msgid "" "Set the number of selected geometry\n" "items above which the utility geometry\n" @@ -8826,20 +8853,20 @@ msgstr "" "Erhöht die Leistung beim Bewegen von a\n" "große Anzahl von geometrischen Elementen." -#: flatcamGUI/FlatCAMGUI.py:6132 +#: flatcamGUI/FlatCAMGUI.py:6146 msgid "CNC Job General" msgstr "CNC-Job Allgemein" -#: flatcamGUI/FlatCAMGUI.py:6145 flatcamGUI/ObjectUI.py:929 -#: flatcamGUI/ObjectUI.py:1492 +#: flatcamGUI/FlatCAMGUI.py:6159 flatcamGUI/ObjectUI.py:938 +#: flatcamGUI/ObjectUI.py:1501 msgid "Plot Object" msgstr "Plotobjekt" -#: flatcamGUI/FlatCAMGUI.py:6150 flatcamGUI/ObjectUI.py:1387 +#: flatcamGUI/FlatCAMGUI.py:6164 flatcamGUI/ObjectUI.py:1396 msgid "Plot kind" msgstr "Darstellungsart" -#: flatcamGUI/FlatCAMGUI.py:6152 flatcamGUI/ObjectUI.py:1390 +#: flatcamGUI/FlatCAMGUI.py:6166 flatcamGUI/ObjectUI.py:1399 msgid "" "This selects the kind of geometries on the canvas to plot.\n" "Those can be either of type 'Travel' which means the moves\n" @@ -8852,15 +8879,15 @@ msgstr "" "über dem Werkstück oder es kann vom Typ 'Ausschneiden' sein,\n" "was bedeutet, dass die Bewegungen, die in das Material geschnitten werden." -#: flatcamGUI/FlatCAMGUI.py:6160 flatcamGUI/ObjectUI.py:1399 +#: flatcamGUI/FlatCAMGUI.py:6174 flatcamGUI/ObjectUI.py:1408 msgid "Travel" msgstr "Reise" -#: flatcamGUI/FlatCAMGUI.py:6169 flatcamGUI/ObjectUI.py:1403 +#: flatcamGUI/FlatCAMGUI.py:6183 flatcamGUI/ObjectUI.py:1412 msgid "Display Annotation" msgstr "Anmerkung anzeigen" -#: flatcamGUI/FlatCAMGUI.py:6171 flatcamGUI/ObjectUI.py:1405 +#: flatcamGUI/FlatCAMGUI.py:6185 flatcamGUI/ObjectUI.py:1414 msgid "" "This selects if to display text annotation on the plot.\n" "When checked it will display numbers in order for each end\n" @@ -8872,23 +8899,23 @@ msgstr "" "richtigen Reihenfolge angezeigt\n" "einer Reiseleitung." -#: flatcamGUI/FlatCAMGUI.py:6183 +#: flatcamGUI/FlatCAMGUI.py:6197 msgid "Annotation Size" msgstr "Anmerkungsgröße" -#: flatcamGUI/FlatCAMGUI.py:6185 +#: flatcamGUI/FlatCAMGUI.py:6199 msgid "The font size of the annotation text. In pixels." msgstr "Die Schriftgröße des Anmerkungstextes. In Pixeln." -#: flatcamGUI/FlatCAMGUI.py:6193 +#: flatcamGUI/FlatCAMGUI.py:6207 msgid "Annotation Color" msgstr "Anmerkungsfarbe" -#: flatcamGUI/FlatCAMGUI.py:6195 +#: flatcamGUI/FlatCAMGUI.py:6209 msgid "Set the font color for the annotation texts." msgstr "Legen Sie die Schriftfarbe für die Anmerkungstexte fest." -#: flatcamGUI/FlatCAMGUI.py:6218 +#: flatcamGUI/FlatCAMGUI.py:6232 msgid "" "The number of circle steps for GCode \n" "circle and arc shapes linear approximation." @@ -8896,11 +8923,11 @@ msgstr "" "Die Anzahl der Kreisschritte für GCode\n" "Kreis- und Bogenformen lineare Annäherung." -#: flatcamGUI/FlatCAMGUI.py:6226 +#: flatcamGUI/FlatCAMGUI.py:6240 msgid "Travel dia" msgstr "Verfahrdurchm." -#: flatcamGUI/FlatCAMGUI.py:6228 +#: flatcamGUI/FlatCAMGUI.py:6242 msgid "" "The width of the travel lines to be\n" "rendered in the plot." @@ -8908,11 +8935,11 @@ msgstr "" "Die Breite der Fahrlinien soll sein\n" "in der Handlung gerendert." -#: flatcamGUI/FlatCAMGUI.py:6239 +#: flatcamGUI/FlatCAMGUI.py:6253 msgid "Coordinates decimals" msgstr "Koordinate Dezimalzahlen" -#: flatcamGUI/FlatCAMGUI.py:6241 +#: flatcamGUI/FlatCAMGUI.py:6255 msgid "" "The number of decimals to be used for \n" "the X, Y, Z coordinates in CNC code (GCODE, etc.)" @@ -8920,11 +8947,11 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "die X-, Y-, Z-Koordinaten im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:6249 +#: flatcamGUI/FlatCAMGUI.py:6263 msgid "Feedrate decimals" msgstr "Vorschub-Dezimalstellen" -#: flatcamGUI/FlatCAMGUI.py:6251 +#: flatcamGUI/FlatCAMGUI.py:6265 msgid "" "The number of decimals to be used for \n" "the Feedrate parameter in CNC code (GCODE, etc.)" @@ -8932,11 +8959,11 @@ msgstr "" "Die Anzahl der Dezimalstellen, für die verwendet werden soll\n" "der Vorschubparameter im CNC-Code (GCODE usw.)" -#: flatcamGUI/FlatCAMGUI.py:6259 +#: flatcamGUI/FlatCAMGUI.py:6273 msgid "Coordinates type" msgstr "Koordinaten eingeben" -#: flatcamGUI/FlatCAMGUI.py:6261 +#: flatcamGUI/FlatCAMGUI.py:6275 msgid "" "The type of coordinates to be used in Gcode.\n" "Can be:\n" @@ -8948,24 +8975,24 @@ msgstr "" "- Absolut G90 -> die Referenz ist der Ursprung x = 0, y = 0\n" "- Inkrementell G91 -> Die Referenz ist die vorherige Position" -#: flatcamGUI/FlatCAMGUI.py:6267 +#: flatcamGUI/FlatCAMGUI.py:6281 msgid "Absolute G90" msgstr "Absolut G90" -#: flatcamGUI/FlatCAMGUI.py:6268 +#: flatcamGUI/FlatCAMGUI.py:6282 msgid "Incremental G91" msgstr "Inkrementelles G91" -#: flatcamGUI/FlatCAMGUI.py:6285 +#: flatcamGUI/FlatCAMGUI.py:6299 msgid "CNC Job Options" msgstr "CNC-Auftragsoptionen" -#: flatcamGUI/FlatCAMGUI.py:6288 +#: flatcamGUI/FlatCAMGUI.py:6302 msgid "Export G-Code" msgstr "G-Code exportieren" -#: flatcamGUI/FlatCAMGUI.py:6290 flatcamGUI/FlatCAMGUI.py:6331 -#: flatcamGUI/ObjectUI.py:1526 +#: flatcamGUI/FlatCAMGUI.py:6304 flatcamGUI/FlatCAMGUI.py:6345 +#: flatcamGUI/ObjectUI.py:1535 msgid "" "Export and save G-Code to\n" "make this object to a file." @@ -8973,11 +9000,11 @@ msgstr "" "Exportieren und speichern Sie den G-Code nach\n" "Machen Sie dieses Objekt in eine Datei." -#: flatcamGUI/FlatCAMGUI.py:6296 +#: flatcamGUI/FlatCAMGUI.py:6310 msgid "Prepend to G-Code" msgstr "Voranstellen an G-Code" -#: flatcamGUI/FlatCAMGUI.py:6298 flatcamGUI/ObjectUI.py:1534 +#: flatcamGUI/FlatCAMGUI.py:6312 flatcamGUI/ObjectUI.py:1543 msgid "" "Type here any G-Code commands you would\n" "like to add at the beginning of the G-Code file." @@ -8985,11 +9012,11 @@ msgstr "" "Geben Sie hier alle G-Code-Befehle ein\n" "gerne am Anfang der G-Code-Datei hinzufügen." -#: flatcamGUI/FlatCAMGUI.py:6307 +#: flatcamGUI/FlatCAMGUI.py:6321 msgid "Append to G-Code" msgstr "An G-Code anhängen" -#: flatcamGUI/FlatCAMGUI.py:6309 flatcamGUI/ObjectUI.py:1545 +#: flatcamGUI/FlatCAMGUI.py:6323 flatcamGUI/ObjectUI.py:1554 msgid "" "Type here any G-Code commands you would\n" "like to append to the generated file.\n" @@ -8999,19 +9026,19 @@ msgstr "" "gerne an die generierte Datei anhängen.\n" "I.e .: M2 (Programmende)" -#: flatcamGUI/FlatCAMGUI.py:6326 +#: flatcamGUI/FlatCAMGUI.py:6340 msgid "CNC Job Adv. Options" msgstr "Erw. CNC-Joboptionen" -#: flatcamGUI/FlatCAMGUI.py:6329 flatcamGUI/ObjectUI.py:1524 +#: flatcamGUI/FlatCAMGUI.py:6343 flatcamGUI/ObjectUI.py:1533 msgid "Export CNC Code" msgstr "CNC-Code exportieren" -#: flatcamGUI/FlatCAMGUI.py:6337 flatcamGUI/ObjectUI.py:1562 +#: flatcamGUI/FlatCAMGUI.py:6351 flatcamGUI/ObjectUI.py:1571 msgid "Toolchange G-Code" msgstr "Werkzeugwechsel G-Code" -#: flatcamGUI/FlatCAMGUI.py:6340 flatcamGUI/ObjectUI.py:1565 +#: flatcamGUI/FlatCAMGUI.py:6354 flatcamGUI/ObjectUI.py:1574 msgid "" "Type here any G-Code commands you would\n" "like to be executed when Toolchange event is encountered.\n" @@ -9033,11 +9060,11 @@ msgstr "" "das hat \"toolchange_custom\" im Namen und das ist gebaut\n" "mit der \"Toolchange Custom\" -Prozessordatei als Vorlage." -#: flatcamGUI/FlatCAMGUI.py:6359 flatcamGUI/ObjectUI.py:1584 +#: flatcamGUI/FlatCAMGUI.py:6373 flatcamGUI/ObjectUI.py:1593 msgid "Use Toolchange Macro" msgstr "Benutze das Werkzeugwechselmakro" -#: flatcamGUI/FlatCAMGUI.py:6361 flatcamGUI/ObjectUI.py:1586 +#: flatcamGUI/FlatCAMGUI.py:6375 flatcamGUI/ObjectUI.py:1595 msgid "" "Check this box if you want to use\n" "a Custom Toolchange GCode (macro)." @@ -9045,7 +9072,7 @@ msgstr "" "Aktivieren Sie dieses Kontrollkästchen, wenn Sie verwenden möchten\n" "ein benutzerdefiniertes Werkzeug ändert GCode (Makro)." -#: flatcamGUI/FlatCAMGUI.py:6373 flatcamGUI/ObjectUI.py:1594 +#: flatcamGUI/FlatCAMGUI.py:6387 flatcamGUI/ObjectUI.py:1603 msgid "" "A list of the FlatCAM variables that can be used\n" "in the Toolchange event.\n" @@ -9055,61 +9082,61 @@ msgstr "" "im Werkzeugwechselereignis.\n" "Sie müssen mit dem \"%\" -Symbol umgeben sein" -#: flatcamGUI/FlatCAMGUI.py:6383 flatcamGUI/ObjectUI.py:1604 +#: flatcamGUI/FlatCAMGUI.py:6397 flatcamGUI/ObjectUI.py:1613 msgid "FlatCAM CNC parameters" msgstr "FlatCAM CNC-Parameter" -#: flatcamGUI/FlatCAMGUI.py:6384 flatcamGUI/ObjectUI.py:1605 +#: flatcamGUI/FlatCAMGUI.py:6398 flatcamGUI/ObjectUI.py:1614 msgid "tool = tool number" msgstr "tool = Werkzeugnummer" -#: flatcamGUI/FlatCAMGUI.py:6385 flatcamGUI/ObjectUI.py:1606 +#: flatcamGUI/FlatCAMGUI.py:6399 flatcamGUI/ObjectUI.py:1615 msgid "tooldia = tool diameter" msgstr "tooldia = Werkzeugdurchmesser" -#: flatcamGUI/FlatCAMGUI.py:6386 flatcamGUI/ObjectUI.py:1607 +#: flatcamGUI/FlatCAMGUI.py:6400 flatcamGUI/ObjectUI.py:1616 msgid "t_drills = for Excellon, total number of drills" msgstr "t_drills = für Excellon die Gesamtzahl der Bohrer" -#: flatcamGUI/FlatCAMGUI.py:6387 flatcamGUI/ObjectUI.py:1608 +#: flatcamGUI/FlatCAMGUI.py:6401 flatcamGUI/ObjectUI.py:1617 msgid "x_toolchange = X coord for Toolchange" msgstr "x_toolchange = X-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:6388 flatcamGUI/ObjectUI.py:1609 +#: flatcamGUI/FlatCAMGUI.py:6402 flatcamGUI/ObjectUI.py:1618 msgid "y_toolchange = Y coord for Toolchange" msgstr "y_toolchange = Y-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:6389 flatcamGUI/ObjectUI.py:1610 +#: flatcamGUI/FlatCAMGUI.py:6403 flatcamGUI/ObjectUI.py:1619 msgid "z_toolchange = Z coord for Toolchange" msgstr "z_toolchange = Z-Koord für Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:6390 +#: flatcamGUI/FlatCAMGUI.py:6404 msgid "z_cut = Z depth for the cut" msgstr "z_cut = Z Tiefe für den Schnitt" -#: flatcamGUI/FlatCAMGUI.py:6391 +#: flatcamGUI/FlatCAMGUI.py:6405 msgid "z_move = Z height for travel" msgstr "z_move = Z Höhe für die Reise" -#: flatcamGUI/FlatCAMGUI.py:6392 flatcamGUI/ObjectUI.py:1613 +#: flatcamGUI/FlatCAMGUI.py:6406 flatcamGUI/ObjectUI.py:1622 msgid "z_depthpercut = the step value for multidepth cut" msgstr "z_depthpercut =der Schrittwert für den mehrstufigen Schnitt" -#: flatcamGUI/FlatCAMGUI.py:6393 flatcamGUI/ObjectUI.py:1614 +#: flatcamGUI/FlatCAMGUI.py:6407 flatcamGUI/ObjectUI.py:1623 msgid "spindlesspeed = the value for the spindle speed" msgstr "spindlesspeed =der Wert für die Spindeldrehzahl" -#: flatcamGUI/FlatCAMGUI.py:6395 flatcamGUI/ObjectUI.py:1615 +#: flatcamGUI/FlatCAMGUI.py:6409 flatcamGUI/ObjectUI.py:1624 msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM" msgstr "" "dwelltime = Zeit zum Verweilen, damit die Spindel ihre eingestellte Drehzahl " "erreicht" -#: flatcamGUI/FlatCAMGUI.py:6416 +#: flatcamGUI/FlatCAMGUI.py:6430 msgid "NCC Tool Options" msgstr "NCC-Tooloptionen" -#: flatcamGUI/FlatCAMGUI.py:6421 flatcamGUI/ObjectUI.py:438 +#: flatcamGUI/FlatCAMGUI.py:6435 flatcamGUI/ObjectUI.py:447 msgid "" "Create a Geometry object with\n" "toolpaths to cut all non-copper regions." @@ -9117,15 +9144,15 @@ msgstr "" "Erstellen Sie ein Geometrieobjekt mit\n" "Werkzeugwege, um alle Nicht-Kupfer-Bereiche zu schneiden." -#: flatcamGUI/FlatCAMGUI.py:6429 flatcamGUI/FlatCAMGUI.py:7361 +#: flatcamGUI/FlatCAMGUI.py:6443 flatcamGUI/FlatCAMGUI.py:7397 msgid "Tools dia" msgstr "Werkzeug durchmesser" -#: flatcamGUI/FlatCAMGUI.py:6438 flatcamTools/ToolNonCopperClear.py:195 +#: flatcamGUI/FlatCAMGUI.py:6452 flatcamTools/ToolNonCopperClear.py:195 msgid "Tool Type" msgstr "Werkzeugtyp" -#: flatcamGUI/FlatCAMGUI.py:6440 flatcamGUI/FlatCAMGUI.py:6448 +#: flatcamGUI/FlatCAMGUI.py:6454 flatcamGUI/FlatCAMGUI.py:6462 #: flatcamTools/ToolNonCopperClear.py:197 #: flatcamTools/ToolNonCopperClear.py:205 msgid "" @@ -9137,26 +9164,26 @@ msgstr "" "- \"V-Form\"\n" "- Rundschreiben" -#: flatcamGUI/FlatCAMGUI.py:6445 flatcamTools/ToolNonCopperClear.py:202 +#: flatcamGUI/FlatCAMGUI.py:6459 flatcamTools/ToolNonCopperClear.py:202 msgid "V-shape" msgstr "V-Form" -#: flatcamGUI/FlatCAMGUI.py:6457 flatcamGUI/ObjectUI.py:1100 +#: flatcamGUI/FlatCAMGUI.py:6471 flatcamGUI/ObjectUI.py:1109 #: flatcamTools/ToolNonCopperClear.py:220 msgid "V-Tip Dia" msgstr "V-Tip-Durchm" -#: flatcamGUI/FlatCAMGUI.py:6459 flatcamGUI/ObjectUI.py:1103 +#: flatcamGUI/FlatCAMGUI.py:6473 flatcamGUI/ObjectUI.py:1112 #: flatcamTools/ToolNonCopperClear.py:222 msgid "The tip diameter for V-Shape Tool" msgstr "Der Spitzendurchmesser für das V-Shape-Werkzeug" -#: flatcamGUI/FlatCAMGUI.py:6466 flatcamGUI/ObjectUI.py:1111 +#: flatcamGUI/FlatCAMGUI.py:6480 flatcamGUI/ObjectUI.py:1120 #: flatcamTools/ToolNonCopperClear.py:227 msgid "V-Tip Angle" msgstr "V-Tip-Winkel" -#: flatcamGUI/FlatCAMGUI.py:6468 flatcamGUI/ObjectUI.py:1114 +#: flatcamGUI/FlatCAMGUI.py:6482 flatcamGUI/ObjectUI.py:1123 #: flatcamTools/ToolNonCopperClear.py:229 msgid "" "The tip angle for V-Shape Tool.\n" @@ -9165,7 +9192,7 @@ msgstr "" "Der Spitzenwinkel für das V-Shape-Werkzeug.\n" "In grad." -#: flatcamGUI/FlatCAMGUI.py:6478 flatcamGUI/FlatCAMGUI.py:6486 +#: flatcamGUI/FlatCAMGUI.py:6492 flatcamGUI/FlatCAMGUI.py:6500 #: flatcamTools/ToolNonCopperClear.py:149 #: flatcamTools/ToolNonCopperClear.py:157 msgid "" @@ -9178,13 +9205,13 @@ msgstr "" "Werkzeugverbrauchs\n" "- konventionell / nützlich, wenn kein Spielausgleich vorhanden ist" -#: flatcamGUI/FlatCAMGUI.py:6495 flatcamGUI/FlatCAMGUI.py:6844 +#: flatcamGUI/FlatCAMGUI.py:6509 flatcamGUI/FlatCAMGUI.py:6869 #: flatcamTools/ToolNonCopperClear.py:163 flatcamTools/ToolPaint.py:136 msgid "Tool order" msgstr "Werkzeugbestellung" -#: flatcamGUI/FlatCAMGUI.py:6496 flatcamGUI/FlatCAMGUI.py:6506 -#: flatcamGUI/FlatCAMGUI.py:6845 flatcamGUI/FlatCAMGUI.py:6855 +#: flatcamGUI/FlatCAMGUI.py:6510 flatcamGUI/FlatCAMGUI.py:6520 +#: flatcamGUI/FlatCAMGUI.py:6870 flatcamGUI/FlatCAMGUI.py:6880 #: flatcamTools/ToolNonCopperClear.py:164 #: flatcamTools/ToolNonCopperClear.py:174 flatcamTools/ToolPaint.py:137 #: flatcamTools/ToolPaint.py:147 @@ -9209,17 +9236,17 @@ msgstr "" "festgelegt\n" "in umgekehrter Richtung und deaktivieren Sie diese Steuerung." -#: flatcamGUI/FlatCAMGUI.py:6504 flatcamGUI/FlatCAMGUI.py:6853 +#: flatcamGUI/FlatCAMGUI.py:6518 flatcamGUI/FlatCAMGUI.py:6878 #: flatcamTools/ToolNonCopperClear.py:172 flatcamTools/ToolPaint.py:145 msgid "Forward" msgstr "Vorwärts" -#: flatcamGUI/FlatCAMGUI.py:6505 flatcamGUI/FlatCAMGUI.py:6854 +#: flatcamGUI/FlatCAMGUI.py:6519 flatcamGUI/FlatCAMGUI.py:6879 #: flatcamTools/ToolNonCopperClear.py:173 flatcamTools/ToolPaint.py:146 msgid "Reverse" msgstr "Rückwärts" -#: flatcamGUI/FlatCAMGUI.py:6518 flatcamGUI/FlatCAMGUI.py:6523 +#: flatcamGUI/FlatCAMGUI.py:6532 flatcamGUI/FlatCAMGUI.py:6537 #: flatcamTools/ToolNonCopperClear.py:271 #: flatcamTools/ToolNonCopperClear.py:276 msgid "" @@ -9229,7 +9256,7 @@ msgstr "" "Schnitttiefe in Material. Negativer Wert.\n" "In FlatCAM-Einheiten." -#: flatcamGUI/FlatCAMGUI.py:6533 flatcamTools/ToolNonCopperClear.py:285 +#: flatcamGUI/FlatCAMGUI.py:6547 flatcamTools/ToolNonCopperClear.py:285 #, python-format msgid "" "How much (fraction) of the tool width to overlap each tool pass.\n" @@ -9258,11 +9285,11 @@ msgstr "" "Höhere Werte = langsame Bearbeitung und langsame Ausführung auf der CNC\n" "wegen zu vieler Wege." -#: flatcamGUI/FlatCAMGUI.py:6550 flatcamTools/ToolNonCopperClear.py:301 +#: flatcamGUI/FlatCAMGUI.py:6564 flatcamTools/ToolNonCopperClear.py:301 msgid "Bounding box margin." msgstr "Begrenzungsrahmenrand." -#: flatcamGUI/FlatCAMGUI.py:6559 flatcamGUI/FlatCAMGUI.py:6895 +#: flatcamGUI/FlatCAMGUI.py:6573 flatcamGUI/FlatCAMGUI.py:6920 #: flatcamTools/ToolNonCopperClear.py:310 msgid "" "Algorithm for non-copper clearing:
Standard: Fixed step inwards." @@ -9273,22 +9300,22 @@ msgstr "" "Schritt nach innen. Seed-based : Ausgehend vom Saatgut.
" "Line-based: Parallele Linien." -#: flatcamGUI/FlatCAMGUI.py:6573 flatcamGUI/FlatCAMGUI.py:6909 +#: flatcamGUI/FlatCAMGUI.py:6587 flatcamGUI/FlatCAMGUI.py:6934 #: flatcamTools/ToolNonCopperClear.py:324 flatcamTools/ToolPaint.py:249 msgid "Connect" msgstr "Verbinden" -#: flatcamGUI/FlatCAMGUI.py:6583 flatcamGUI/FlatCAMGUI.py:6919 +#: flatcamGUI/FlatCAMGUI.py:6597 flatcamGUI/FlatCAMGUI.py:6944 #: flatcamTools/ToolNonCopperClear.py:333 flatcamTools/ToolPaint.py:258 msgid "Contour" msgstr "Kontur" -#: flatcamGUI/FlatCAMGUI.py:6593 flatcamTools/ToolNonCopperClear.py:342 +#: flatcamGUI/FlatCAMGUI.py:6607 flatcamTools/ToolNonCopperClear.py:342 #: flatcamTools/ToolPaint.py:267 msgid "Rest M." msgstr "Rest M." -#: flatcamGUI/FlatCAMGUI.py:6595 flatcamTools/ToolNonCopperClear.py:344 +#: flatcamGUI/FlatCAMGUI.py:6609 flatcamTools/ToolNonCopperClear.py:344 msgid "" "If checked, use 'rest machining'.\n" "Basically it will clear copper outside PCB features,\n" @@ -9306,7 +9333,7 @@ msgstr "" "kein kupfer mehr zum löschen oder es gibt keine werkzeuge mehr.\n" "Wenn nicht aktiviert, verwenden Sie den Standardalgorithmus." -#: flatcamGUI/FlatCAMGUI.py:6610 flatcamGUI/FlatCAMGUI.py:6622 +#: flatcamGUI/FlatCAMGUI.py:6624 flatcamGUI/FlatCAMGUI.py:6636 #: flatcamTools/ToolNonCopperClear.py:359 #: flatcamTools/ToolNonCopperClear.py:371 msgid "" @@ -9320,27 +9347,27 @@ msgstr "" "von den Kupfermerkmalen.\n" "Der Wert kann zwischen 0 und 10 FlatCAM-Einheiten liegen." -#: flatcamGUI/FlatCAMGUI.py:6620 flatcamTools/ToolNonCopperClear.py:369 +#: flatcamGUI/FlatCAMGUI.py:6634 flatcamTools/ToolNonCopperClear.py:369 msgid "Offset value" msgstr "Offsetwert" -#: flatcamGUI/FlatCAMGUI.py:6637 flatcamTools/ToolNonCopperClear.py:395 +#: flatcamGUI/FlatCAMGUI.py:6651 flatcamTools/ToolNonCopperClear.py:395 msgid "Itself" msgstr "Selbst" -#: flatcamGUI/FlatCAMGUI.py:6638 flatcamGUI/FlatCAMGUI.py:6941 +#: flatcamGUI/FlatCAMGUI.py:6652 flatcamGUI/FlatCAMGUI.py:6965 msgid "Area" msgstr "Bereich" -#: flatcamGUI/FlatCAMGUI.py:6639 +#: flatcamGUI/FlatCAMGUI.py:6653 msgid "Ref" msgstr "Ref" -#: flatcamGUI/FlatCAMGUI.py:6640 +#: flatcamGUI/FlatCAMGUI.py:6654 msgid "Reference" msgstr "Referenz" -#: flatcamGUI/FlatCAMGUI.py:6642 flatcamTools/ToolNonCopperClear.py:401 +#: flatcamGUI/FlatCAMGUI.py:6656 flatcamTools/ToolNonCopperClear.py:401 msgid "" "- 'Itself' - the non copper clearing extent\n" "is based on the object that is copper cleared.\n" @@ -9360,11 +9387,31 @@ msgstr "" "- 'Referenzobjekt' - löscht nicht kupferne Objekte innerhalb des Bereichs\n" "von einem anderen Objekt angegeben." -#: flatcamGUI/FlatCAMGUI.py:6660 +#: flatcamGUI/FlatCAMGUI.py:6667 flatcamGUI/FlatCAMGUI.py:6973 +msgid "Normal" +msgstr "NormalFormat" + +#: flatcamGUI/FlatCAMGUI.py:6668 flatcamGUI/FlatCAMGUI.py:6974 +msgid "progressive" +msgstr "fortschrittlich" + +#: flatcamGUI/FlatCAMGUI.py:6669 +msgid "NCC Plotting" +msgstr "NCC-Plotten" + +#: flatcamGUI/FlatCAMGUI.py:6671 +msgid "" +"- 'Normal' - normal plotting, done at the end of the NCC job\n" +"- 'Progressive' - after each shape is generated it will be plotted." +msgstr "" +"- 'Normal' - normales Plotten am Ende des NCC-Jobs\n" +"- 'Progressiv' - Nachdem jede Form generiert wurde, wird sie geplottet." + +#: flatcamGUI/FlatCAMGUI.py:6685 msgid "Cutout Tool Options" msgstr "Ausschnittwerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6665 flatcamGUI/ObjectUI.py:454 +#: flatcamGUI/FlatCAMGUI.py:6690 flatcamGUI/ObjectUI.py:463 msgid "" "Create toolpaths to cut around\n" "the PCB and separate it from\n" @@ -9374,7 +9421,7 @@ msgstr "" "die PCB und trennen Sie es von\n" "das ursprüngliche Brett." -#: flatcamGUI/FlatCAMGUI.py:6676 flatcamTools/ToolCutOut.py:93 +#: flatcamGUI/FlatCAMGUI.py:6701 flatcamTools/ToolCutOut.py:93 msgid "" "Diameter of the tool used to cutout\n" "the PCB shape out of the surrounding material." @@ -9382,11 +9429,11 @@ msgstr "" "Durchmesser des zum Ausschneiden verwendeten Werkzeugs\n" "die PCB-Form aus dem umgebenden Material." -#: flatcamGUI/FlatCAMGUI.py:6684 flatcamTools/ToolCutOut.py:76 +#: flatcamGUI/FlatCAMGUI.py:6709 flatcamTools/ToolCutOut.py:76 msgid "Obj kind" msgstr "Obj Art" -#: flatcamGUI/FlatCAMGUI.py:6686 flatcamTools/ToolCutOut.py:78 +#: flatcamGUI/FlatCAMGUI.py:6711 flatcamTools/ToolCutOut.py:78 msgid "" "Choice of what kind the object we want to cutout is.
- Single: " "contain a single PCB Gerber outline object.
- Panel: a panel PCB " @@ -9398,16 +9445,16 @@ msgstr "" "Ein Panel-PCB-Gerber Objekt, das gemacht wird\n" "aus vielen einzelnen PCB-Konturen." -#: flatcamGUI/FlatCAMGUI.py:6693 flatcamGUI/FlatCAMGUI.py:6940 +#: flatcamGUI/FlatCAMGUI.py:6718 flatcamGUI/FlatCAMGUI.py:6964 #: flatcamTools/ToolCutOut.py:84 msgid "Single" msgstr "Einzehln" -#: flatcamGUI/FlatCAMGUI.py:6694 flatcamTools/ToolCutOut.py:85 +#: flatcamGUI/FlatCAMGUI.py:6719 flatcamTools/ToolCutOut.py:85 msgid "Panel" msgstr "Platte" -#: flatcamGUI/FlatCAMGUI.py:6700 flatcamTools/ToolCutOut.py:102 +#: flatcamGUI/FlatCAMGUI.py:6725 flatcamTools/ToolCutOut.py:102 msgid "" "Margin over bounds. A positive value here\n" "will make the cutout of the PCB further from\n" @@ -9417,11 +9464,11 @@ msgstr "" "macht den Ausschnitt der Leiterplatte weiter aus\n" "die tatsächliche PCB-Grenze" -#: flatcamGUI/FlatCAMGUI.py:6708 +#: flatcamGUI/FlatCAMGUI.py:6733 msgid "Gap size" msgstr "Spaltgröße" -#: flatcamGUI/FlatCAMGUI.py:6710 flatcamTools/ToolCutOut.py:112 +#: flatcamGUI/FlatCAMGUI.py:6735 flatcamTools/ToolCutOut.py:112 msgid "" "The size of the bridge gaps in the cutout\n" "used to keep the board connected to\n" @@ -9433,11 +9480,11 @@ msgstr "" "das umgebende Material (das eine\n" "von denen die Leiterplatte ausgeschnitten ist)." -#: flatcamGUI/FlatCAMGUI.py:6719 flatcamTools/ToolCutOut.py:148 +#: flatcamGUI/FlatCAMGUI.py:6744 flatcamTools/ToolCutOut.py:148 msgid "Gaps" msgstr "Spalt" -#: flatcamGUI/FlatCAMGUI.py:6721 +#: flatcamGUI/FlatCAMGUI.py:6746 msgid "" "Number of gaps used for the cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -9461,11 +9508,11 @@ msgstr "" "- 2 tb \t- 2 * oben + 2 * unten\n" "- 8 \t- 2 * links + 2 * rechts + 2 * oben + 2 * unten" -#: flatcamGUI/FlatCAMGUI.py:6743 flatcamTools/ToolCutOut.py:129 +#: flatcamGUI/FlatCAMGUI.py:6768 flatcamTools/ToolCutOut.py:129 msgid "Convex Sh." msgstr "Konvexe Form" -#: flatcamGUI/FlatCAMGUI.py:6745 flatcamTools/ToolCutOut.py:131 +#: flatcamGUI/FlatCAMGUI.py:6770 flatcamTools/ToolCutOut.py:131 msgid "" "Create a convex shape surrounding the entire PCB.\n" "Used only if the source object type is Gerber." @@ -9473,11 +9520,11 @@ msgstr "" "Erstellen Sie eine konvexe Form, die die gesamte Leiterplatte umgibt.\n" "Wird nur verwendet, wenn der Quellobjekttyp Gerber ist." -#: flatcamGUI/FlatCAMGUI.py:6759 +#: flatcamGUI/FlatCAMGUI.py:6784 msgid "2Sided Tool Options" msgstr "2Seitige Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:6764 +#: flatcamGUI/FlatCAMGUI.py:6789 msgid "" "A tool to help in creating a double sided\n" "PCB using alignment holes." @@ -9485,36 +9532,36 @@ msgstr "" "Ein Werkzeug, das beim Erstellen eines doppelseitigen Dokuments hilft\n" "PCB mit Ausrichtungslöchern." -#: flatcamGUI/FlatCAMGUI.py:6774 flatcamTools/ToolDblSided.py:234 +#: flatcamGUI/FlatCAMGUI.py:6799 flatcamTools/ToolDblSided.py:234 msgid "Drill dia" msgstr "Bohrdurchmesser" -#: flatcamGUI/FlatCAMGUI.py:6776 flatcamTools/ToolDblSided.py:225 +#: flatcamGUI/FlatCAMGUI.py:6801 flatcamTools/ToolDblSided.py:225 #: flatcamTools/ToolDblSided.py:236 msgid "Diameter of the drill for the alignment holes." msgstr "Durchmesser des Bohrers für die Ausrichtungslöcher." -#: flatcamGUI/FlatCAMGUI.py:6785 flatcamTools/ToolDblSided.py:120 +#: flatcamGUI/FlatCAMGUI.py:6810 flatcamTools/ToolDblSided.py:120 msgid "Mirror Axis:" msgstr "Spiegelachse:" -#: flatcamGUI/FlatCAMGUI.py:6787 flatcamTools/ToolDblSided.py:122 +#: flatcamGUI/FlatCAMGUI.py:6812 flatcamTools/ToolDblSided.py:122 msgid "Mirror vertically (X) or horizontally (Y)." msgstr "Vertikal spiegeln (X) oder horizontal (Y)." -#: flatcamGUI/FlatCAMGUI.py:6796 flatcamTools/ToolDblSided.py:131 +#: flatcamGUI/FlatCAMGUI.py:6821 flatcamTools/ToolDblSided.py:131 msgid "Point" msgstr "Punkt" -#: flatcamGUI/FlatCAMGUI.py:6797 flatcamTools/ToolDblSided.py:132 +#: flatcamGUI/FlatCAMGUI.py:6822 flatcamTools/ToolDblSided.py:132 msgid "Box" msgstr "Box" -#: flatcamGUI/FlatCAMGUI.py:6798 +#: flatcamGUI/FlatCAMGUI.py:6823 msgid "Axis Ref" msgstr "Achsenreferenz" -#: flatcamGUI/FlatCAMGUI.py:6800 flatcamTools/ToolDblSided.py:135 +#: flatcamGUI/FlatCAMGUI.py:6825 flatcamTools/ToolDblSided.py:135 msgid "" "The axis should pass through a point or cut\n" " a specified box (in a FlatCAM object) through \n" @@ -9524,15 +9571,15 @@ msgstr "" "eine angegebene Box (in einem FlatCAM-Objekt) durch\n" "das Zentrum." -#: flatcamGUI/FlatCAMGUI.py:6816 +#: flatcamGUI/FlatCAMGUI.py:6841 msgid "Paint Tool Options" msgstr "Paint werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:6821 +#: flatcamGUI/FlatCAMGUI.py:6846 msgid "Parameters:" msgstr "Parameter:" -#: flatcamGUI/FlatCAMGUI.py:6823 flatcamGUI/ObjectUI.py:1342 +#: flatcamGUI/FlatCAMGUI.py:6848 flatcamGUI/ObjectUI.py:1351 msgid "" "Creates tool paths to cover the\n" "whole area of a polygon (remove\n" @@ -9544,11 +9591,11 @@ msgstr "" "alles Kupfer). Du wirst gefragt\n" "Klicken Sie auf das gewünschte Polygon." -#: flatcamGUI/FlatCAMGUI.py:6929 flatcamTools/ToolPaint.py:282 +#: flatcamGUI/FlatCAMGUI.py:6954 flatcamTools/ToolPaint.py:282 msgid "Selection" msgstr "Auswahl" -#: flatcamGUI/FlatCAMGUI.py:6931 flatcamTools/ToolPaint.py:284 +#: flatcamGUI/FlatCAMGUI.py:6956 flatcamTools/ToolPaint.py:284 #: flatcamTools/ToolPaint.py:300 msgid "" "How to select Polygons to be painted.\n" @@ -9571,15 +9618,27 @@ msgstr "" "- 'Referenzobjekt' - löscht nicht kupferne Objekte innerhalb des Bereichs\n" "von einem anderen Objekt angegeben." -#: flatcamGUI/FlatCAMGUI.py:6943 +#: flatcamGUI/FlatCAMGUI.py:6967 msgid "Ref." msgstr "Ref." -#: flatcamGUI/FlatCAMGUI.py:6955 +#: flatcamGUI/FlatCAMGUI.py:6975 +msgid "Paint Plotting" +msgstr "Malen Sie Plotten" + +#: flatcamGUI/FlatCAMGUI.py:6977 +msgid "" +"- 'Normal' - normal plotting, done at the end of the Paint job\n" +"- 'Progressive' - after each shape is generated it will be plotted." +msgstr "" +"- 'Normal' - normales Plotten am Ende des Malvorgangs\n" +"- 'Progressiv' - Nachdem jede Form generiert wurde, wird sie geplottet." + +#: flatcamGUI/FlatCAMGUI.py:6991 msgid "Film Tool Options" msgstr "Filmwerkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:6960 +#: flatcamGUI/FlatCAMGUI.py:6996 msgid "" "Create a PCB film from a Gerber or Geometry\n" "FlatCAM object.\n" @@ -9589,11 +9648,11 @@ msgstr "" "FlatCAM-Objekt\n" "Die Datei wird im SVG-Format gespeichert." -#: flatcamGUI/FlatCAMGUI.py:6971 +#: flatcamGUI/FlatCAMGUI.py:7007 msgid "Film Type" msgstr "Filmtyp" -#: flatcamGUI/FlatCAMGUI.py:6973 flatcamTools/ToolFilm.py:118 +#: flatcamGUI/FlatCAMGUI.py:7009 flatcamTools/ToolFilm.py:118 msgid "" "Generate a Positive black film or a Negative film.\n" "Positive means that it will print the features\n" @@ -9609,11 +9668,11 @@ msgstr "" "mit weiß auf einer schwarzen leinwand.\n" "Das Filmformat ist SVG." -#: flatcamGUI/FlatCAMGUI.py:6984 flatcamTools/ToolFilm.py:130 +#: flatcamGUI/FlatCAMGUI.py:7020 flatcamTools/ToolFilm.py:130 msgid "Border" msgstr "Rand" -#: flatcamGUI/FlatCAMGUI.py:6986 flatcamTools/ToolFilm.py:132 +#: flatcamGUI/FlatCAMGUI.py:7022 flatcamTools/ToolFilm.py:132 msgid "" "Specify a border around the object.\n" "Only for negative film.\n" @@ -9633,11 +9692,11 @@ msgstr "" "weiße Farbe wie der Rest und die mit der verwechseln kann\n" "Umgebung, wenn nicht für diese Grenze." -#: flatcamGUI/FlatCAMGUI.py:6999 flatcamTools/ToolFilm.py:144 +#: flatcamGUI/FlatCAMGUI.py:7035 flatcamTools/ToolFilm.py:144 msgid "Scale Stroke" msgstr "Skalierungshub" -#: flatcamGUI/FlatCAMGUI.py:7001 flatcamTools/ToolFilm.py:146 +#: flatcamGUI/FlatCAMGUI.py:7037 flatcamTools/ToolFilm.py:146 msgid "" "Scale the line stroke thickness of each feature in the SVG file.\n" "It means that the line that envelope each SVG feature will be thicker or " @@ -9649,11 +9708,11 @@ msgstr "" "dünner ist.\n" "Daher können die Feinheiten von diesem Parameter stärker beeinflusst werden." -#: flatcamGUI/FlatCAMGUI.py:7016 +#: flatcamGUI/FlatCAMGUI.py:7052 msgid "Panelize Tool Options" msgstr "Panelize Werkzeugoptionen" -#: flatcamGUI/FlatCAMGUI.py:7021 +#: flatcamGUI/FlatCAMGUI.py:7057 msgid "" "Create an object that contains an array of (x, y) elements,\n" "each element is a copy of the source object spaced\n" @@ -9663,11 +9722,11 @@ msgstr "" "Jedes Element ist eine Kopie des Quellobjekts\n" "in einem X-Abstand, Y-Abstand voneinander." -#: flatcamGUI/FlatCAMGUI.py:7032 flatcamTools/ToolPanelize.py:147 +#: flatcamGUI/FlatCAMGUI.py:7068 flatcamTools/ToolPanelize.py:147 msgid "Spacing cols" msgstr "Abstandspalten" -#: flatcamGUI/FlatCAMGUI.py:7034 flatcamTools/ToolPanelize.py:149 +#: flatcamGUI/FlatCAMGUI.py:7070 flatcamTools/ToolPanelize.py:149 msgid "" "Spacing between columns of the desired panel.\n" "In current units." @@ -9675,11 +9734,11 @@ msgstr "" "Abstand zwischen den Spalten des gewünschten Bereichs.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7042 flatcamTools/ToolPanelize.py:156 +#: flatcamGUI/FlatCAMGUI.py:7078 flatcamTools/ToolPanelize.py:156 msgid "Spacing rows" msgstr "Abstand Reihen" -#: flatcamGUI/FlatCAMGUI.py:7044 flatcamTools/ToolPanelize.py:158 +#: flatcamGUI/FlatCAMGUI.py:7080 flatcamTools/ToolPanelize.py:158 msgid "" "Spacing between rows of the desired panel.\n" "In current units." @@ -9687,35 +9746,35 @@ msgstr "" "Abstand zwischen den Reihen des gewünschten Feldes.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7052 flatcamTools/ToolPanelize.py:165 +#: flatcamGUI/FlatCAMGUI.py:7088 flatcamTools/ToolPanelize.py:165 msgid "Columns" msgstr "Säulen" -#: flatcamGUI/FlatCAMGUI.py:7054 flatcamTools/ToolPanelize.py:167 +#: flatcamGUI/FlatCAMGUI.py:7090 flatcamTools/ToolPanelize.py:167 msgid "Number of columns of the desired panel" msgstr "Anzahl der Spalten des gewünschten Bereichs" -#: flatcamGUI/FlatCAMGUI.py:7061 flatcamTools/ToolPanelize.py:173 +#: flatcamGUI/FlatCAMGUI.py:7097 flatcamTools/ToolPanelize.py:173 msgid "Rows" msgstr "Reihen" -#: flatcamGUI/FlatCAMGUI.py:7063 flatcamTools/ToolPanelize.py:175 +#: flatcamGUI/FlatCAMGUI.py:7099 flatcamTools/ToolPanelize.py:175 msgid "Number of rows of the desired panel" msgstr "Anzahl der Zeilen des gewünschten Panels" -#: flatcamGUI/FlatCAMGUI.py:7069 flatcamTools/ToolPanelize.py:181 +#: flatcamGUI/FlatCAMGUI.py:7105 flatcamTools/ToolPanelize.py:181 msgid "Gerber" msgstr "Gerber" -#: flatcamGUI/FlatCAMGUI.py:7070 flatcamTools/ToolPanelize.py:182 +#: flatcamGUI/FlatCAMGUI.py:7106 flatcamTools/ToolPanelize.py:182 msgid "Geo" msgstr "Geo" -#: flatcamGUI/FlatCAMGUI.py:7071 flatcamTools/ToolPanelize.py:183 +#: flatcamGUI/FlatCAMGUI.py:7107 flatcamTools/ToolPanelize.py:183 msgid "Panel Type" msgstr "Panel-Typ" -#: flatcamGUI/FlatCAMGUI.py:7073 +#: flatcamGUI/FlatCAMGUI.py:7109 msgid "" "Choose the type of object for the panel object:\n" "- Gerber\n" @@ -9725,11 +9784,11 @@ msgstr "" "- Gerber\n" "- Geometrie" -#: flatcamGUI/FlatCAMGUI.py:7082 +#: flatcamGUI/FlatCAMGUI.py:7118 msgid "Constrain within" msgstr "Beschränkung innerhalb" -#: flatcamGUI/FlatCAMGUI.py:7084 flatcamTools/ToolPanelize.py:195 +#: flatcamGUI/FlatCAMGUI.py:7120 flatcamTools/ToolPanelize.py:195 msgid "" "Area define by DX and DY within to constrain the panel.\n" "DX and DY values are in current units.\n" @@ -9743,11 +9802,11 @@ msgstr "" "Das letzte Panel enthält so viele Spalten und Zeilen wie\n" "Sie passen vollständig in den ausgewählten Bereich." -#: flatcamGUI/FlatCAMGUI.py:7093 flatcamTools/ToolPanelize.py:204 +#: flatcamGUI/FlatCAMGUI.py:7129 flatcamTools/ToolPanelize.py:204 msgid "Width (DX)" msgstr "Breite (DX)" -#: flatcamGUI/FlatCAMGUI.py:7095 flatcamTools/ToolPanelize.py:206 +#: flatcamGUI/FlatCAMGUI.py:7131 flatcamTools/ToolPanelize.py:206 msgid "" "The width (DX) within which the panel must fit.\n" "In current units." @@ -9755,11 +9814,11 @@ msgstr "" "Die Breite (DX), in die das Panel passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7102 flatcamTools/ToolPanelize.py:212 +#: flatcamGUI/FlatCAMGUI.py:7138 flatcamTools/ToolPanelize.py:212 msgid "Height (DY)" msgstr "Höhe (DY)" -#: flatcamGUI/FlatCAMGUI.py:7104 flatcamTools/ToolPanelize.py:214 +#: flatcamGUI/FlatCAMGUI.py:7140 flatcamTools/ToolPanelize.py:214 msgid "" "The height (DY)within which the panel must fit.\n" "In current units." @@ -9767,15 +9826,15 @@ msgstr "" "Die Höhe (DY), in die die Platte passen muss.\n" "In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7118 +#: flatcamGUI/FlatCAMGUI.py:7154 msgid "Calculators Tool Options" msgstr "Rechner-Tool-Optionen" -#: flatcamGUI/FlatCAMGUI.py:7121 flatcamTools/ToolCalculators.py:25 +#: flatcamGUI/FlatCAMGUI.py:7157 flatcamTools/ToolCalculators.py:25 msgid "V-Shape Tool Calculator" msgstr "V-Shape-Werkzeugrechner" -#: flatcamGUI/FlatCAMGUI.py:7123 +#: flatcamGUI/FlatCAMGUI.py:7159 msgid "" "Calculate the tool diameter for a given V-shape tool,\n" "having the tip diameter, tip angle and\n" @@ -9786,11 +9845,11 @@ msgstr "" "mit dem Spitzendurchmesser, Spitzenwinkel und\n" "Schnitttiefe als Parameter." -#: flatcamGUI/FlatCAMGUI.py:7134 flatcamTools/ToolCalculators.py:92 +#: flatcamGUI/FlatCAMGUI.py:7170 flatcamTools/ToolCalculators.py:92 msgid "Tip Diameter" msgstr "Spitzendurchmesser" -#: flatcamGUI/FlatCAMGUI.py:7136 flatcamTools/ToolCalculators.py:97 +#: flatcamGUI/FlatCAMGUI.py:7172 flatcamTools/ToolCalculators.py:97 msgid "" "This is the tool tip diameter.\n" "It is specified by manufacturer." @@ -9798,11 +9857,11 @@ msgstr "" "Dies ist der Werkzeugspitzendurchmesser.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:7144 flatcamTools/ToolCalculators.py:100 +#: flatcamGUI/FlatCAMGUI.py:7180 flatcamTools/ToolCalculators.py:100 msgid "Tip Angle" msgstr "Spitzenwinkel" -#: flatcamGUI/FlatCAMGUI.py:7146 +#: flatcamGUI/FlatCAMGUI.py:7182 msgid "" "This is the angle on the tip of the tool.\n" "It is specified by manufacturer." @@ -9810,7 +9869,7 @@ msgstr "" "Dies ist der Winkel an der Spitze des Werkzeugs.\n" "Es wird vom Hersteller angegeben." -#: flatcamGUI/FlatCAMGUI.py:7156 +#: flatcamGUI/FlatCAMGUI.py:7192 msgid "" "This is depth to cut into material.\n" "In the CNCJob object it is the CutZ parameter." @@ -9818,11 +9877,11 @@ msgstr "" "Dies ist die Tiefe zum Schneiden in Material.\n" "Im CNCJob-Objekt ist dies der Parameter CutZ." -#: flatcamGUI/FlatCAMGUI.py:7163 flatcamTools/ToolCalculators.py:27 +#: flatcamGUI/FlatCAMGUI.py:7199 flatcamTools/ToolCalculators.py:27 msgid "ElectroPlating Calculator" msgstr "Galvanikrechner" -#: flatcamGUI/FlatCAMGUI.py:7165 flatcamTools/ToolCalculators.py:149 +#: flatcamGUI/FlatCAMGUI.py:7201 flatcamTools/ToolCalculators.py:149 msgid "" "This calculator is useful for those who plate the via/pad/drill holes,\n" "using a method like grahite ink or calcium hypophosphite ink or palladium " @@ -9833,27 +9892,27 @@ msgstr "" "unter Verwendung einer Methode wie Grahit-Tinte oder Calcium-Hypophosphit-" "Tinte oder Palladiumchlorid." -#: flatcamGUI/FlatCAMGUI.py:7175 flatcamTools/ToolCalculators.py:158 +#: flatcamGUI/FlatCAMGUI.py:7211 flatcamTools/ToolCalculators.py:158 msgid "Board Length" msgstr "PCB Länge" -#: flatcamGUI/FlatCAMGUI.py:7177 flatcamTools/ToolCalculators.py:162 +#: flatcamGUI/FlatCAMGUI.py:7213 flatcamTools/ToolCalculators.py:162 msgid "This is the board length. In centimeters." msgstr "Dies ist die Boardlänge. In Zentimeter" -#: flatcamGUI/FlatCAMGUI.py:7183 flatcamTools/ToolCalculators.py:164 +#: flatcamGUI/FlatCAMGUI.py:7219 flatcamTools/ToolCalculators.py:164 msgid "Board Width" msgstr "PCB Breite" -#: flatcamGUI/FlatCAMGUI.py:7185 flatcamTools/ToolCalculators.py:168 +#: flatcamGUI/FlatCAMGUI.py:7221 flatcamTools/ToolCalculators.py:168 msgid "This is the board width.In centimeters." msgstr "Dies ist die Breite der Platte in Zentimetern." -#: flatcamGUI/FlatCAMGUI.py:7190 flatcamTools/ToolCalculators.py:170 +#: flatcamGUI/FlatCAMGUI.py:7226 flatcamTools/ToolCalculators.py:170 msgid "Current Density" msgstr "Stromdichte" -#: flatcamGUI/FlatCAMGUI.py:7193 flatcamTools/ToolCalculators.py:174 +#: flatcamGUI/FlatCAMGUI.py:7229 flatcamTools/ToolCalculators.py:174 msgid "" "Current density to pass through the board. \n" "In Amps per Square Feet ASF." @@ -9861,11 +9920,11 @@ msgstr "" "Stromdichte durch die Platine.\n" "In Ampere pro Quadratfuß ASF." -#: flatcamGUI/FlatCAMGUI.py:7199 flatcamTools/ToolCalculators.py:177 +#: flatcamGUI/FlatCAMGUI.py:7235 flatcamTools/ToolCalculators.py:177 msgid "Copper Growth" msgstr "Kupferwachstum" -#: flatcamGUI/FlatCAMGUI.py:7202 flatcamTools/ToolCalculators.py:181 +#: flatcamGUI/FlatCAMGUI.py:7238 flatcamTools/ToolCalculators.py:181 msgid "" "How thick the copper growth is intended to be.\n" "In microns." @@ -9873,11 +9932,11 @@ msgstr "" "Wie dick soll das Kupferwachstum sein.\n" "In Mikrometern" -#: flatcamGUI/FlatCAMGUI.py:7215 +#: flatcamGUI/FlatCAMGUI.py:7251 msgid "Transform Tool Options" msgstr "Umwandlungswerkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:7220 +#: flatcamGUI/FlatCAMGUI.py:7256 msgid "" "Various transformations that can be applied\n" "on a FlatCAM object." @@ -9885,35 +9944,35 @@ msgstr "" "Verschiedene Transformationen, die angewendet werden können\n" "auf einem FlatCAM-Objekt." -#: flatcamGUI/FlatCAMGUI.py:7230 +#: flatcamGUI/FlatCAMGUI.py:7266 msgid "Rotate Angle" msgstr "Winkel drehen" -#: flatcamGUI/FlatCAMGUI.py:7242 flatcamTools/ToolTransform.py:107 +#: flatcamGUI/FlatCAMGUI.py:7278 flatcamTools/ToolTransform.py:107 msgid "Skew_X angle" msgstr "Neigungswinkel X" -#: flatcamGUI/FlatCAMGUI.py:7252 flatcamTools/ToolTransform.py:125 +#: flatcamGUI/FlatCAMGUI.py:7288 flatcamTools/ToolTransform.py:125 msgid "Skew_Y angle" msgstr "Neigungswinkel Y" -#: flatcamGUI/FlatCAMGUI.py:7262 flatcamTools/ToolTransform.py:164 +#: flatcamGUI/FlatCAMGUI.py:7298 flatcamTools/ToolTransform.py:164 msgid "Scale_X factor" msgstr "Skalierung des X-Faktors" -#: flatcamGUI/FlatCAMGUI.py:7264 flatcamTools/ToolTransform.py:166 +#: flatcamGUI/FlatCAMGUI.py:7300 flatcamTools/ToolTransform.py:166 msgid "Factor for scaling on X axis." msgstr "Faktor für die Skalierung auf der X-Achse." -#: flatcamGUI/FlatCAMGUI.py:7271 flatcamTools/ToolTransform.py:181 +#: flatcamGUI/FlatCAMGUI.py:7307 flatcamTools/ToolTransform.py:181 msgid "Scale_Y factor" msgstr "Skalierung des Y-Faktors" -#: flatcamGUI/FlatCAMGUI.py:7273 flatcamTools/ToolTransform.py:183 +#: flatcamGUI/FlatCAMGUI.py:7309 flatcamTools/ToolTransform.py:183 msgid "Factor for scaling on Y axis." msgstr "Faktor für die Skalierung auf der Y-Achse." -#: flatcamGUI/FlatCAMGUI.py:7281 flatcamTools/ToolTransform.py:202 +#: flatcamGUI/FlatCAMGUI.py:7317 flatcamTools/ToolTransform.py:202 msgid "" "Scale the selected object(s)\n" "using the Scale_X factor for both axis." @@ -9921,7 +9980,7 @@ msgstr "" "Skalieren Sie die ausgewählten Objekte\n" "Verwenden des Skalierungsfaktors X für beide Achsen." -#: flatcamGUI/FlatCAMGUI.py:7289 flatcamTools/ToolTransform.py:211 +#: flatcamGUI/FlatCAMGUI.py:7325 flatcamTools/ToolTransform.py:211 msgid "" "Scale the selected object(s)\n" "using the origin reference when checked,\n" @@ -9933,27 +9992,27 @@ msgstr "" "und die Mitte der größten Begrenzungsbox\n" "der ausgewählten Objekte, wenn sie nicht markiert sind." -#: flatcamGUI/FlatCAMGUI.py:7298 flatcamTools/ToolTransform.py:239 +#: flatcamGUI/FlatCAMGUI.py:7334 flatcamTools/ToolTransform.py:239 msgid "Offset_X val" msgstr "Offset X Wert" -#: flatcamGUI/FlatCAMGUI.py:7300 flatcamTools/ToolTransform.py:241 +#: flatcamGUI/FlatCAMGUI.py:7336 flatcamTools/ToolTransform.py:241 msgid "Distance to offset on X axis. In current units." msgstr "Abstand zum Offset auf der X-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7307 flatcamTools/ToolTransform.py:256 +#: flatcamGUI/FlatCAMGUI.py:7343 flatcamTools/ToolTransform.py:256 msgid "Offset_Y val" msgstr "Offset Y-Wert" -#: flatcamGUI/FlatCAMGUI.py:7309 flatcamTools/ToolTransform.py:258 +#: flatcamGUI/FlatCAMGUI.py:7345 flatcamTools/ToolTransform.py:258 msgid "Distance to offset on Y axis. In current units." msgstr "Abstand zum Offset auf der Y-Achse. In aktuellen Einheiten." -#: flatcamGUI/FlatCAMGUI.py:7315 flatcamTools/ToolTransform.py:313 +#: flatcamGUI/FlatCAMGUI.py:7351 flatcamTools/ToolTransform.py:313 msgid "Mirror Reference" msgstr "Spiegelreferenz" -#: flatcamGUI/FlatCAMGUI.py:7317 flatcamTools/ToolTransform.py:315 +#: flatcamGUI/FlatCAMGUI.py:7353 flatcamTools/ToolTransform.py:315 msgid "" "Flip the selected object(s)\n" "around the point in Point Entry Field.\n" @@ -9976,11 +10035,11 @@ msgstr "" "Oder geben Sie die Koordinaten im Format (x, y) in ein\n" "Punkt-Eingabefeld und klicken Sie auf X (Y) drehen" -#: flatcamGUI/FlatCAMGUI.py:7328 flatcamTools/ToolTransform.py:326 +#: flatcamGUI/FlatCAMGUI.py:7364 flatcamTools/ToolTransform.py:326 msgid " Mirror Ref. Point" msgstr "Spiegelref. Punkt" -#: flatcamGUI/FlatCAMGUI.py:7330 flatcamTools/ToolTransform.py:328 +#: flatcamGUI/FlatCAMGUI.py:7366 flatcamTools/ToolTransform.py:328 msgid "" "Coordinates in format (x, y) used as reference for mirroring.\n" "The 'x' in (x, y) will be used when using Flip on X and\n" @@ -9991,11 +10050,11 @@ msgstr "" "Das 'x' in (x, y) wird verwendet, wenn Sie bei X und\n" "Das 'y' in (x, y) wird verwendet, wenn Flip auf Y und verwendet wird" -#: flatcamGUI/FlatCAMGUI.py:7347 +#: flatcamGUI/FlatCAMGUI.py:7383 msgid "SolderPaste Tool Options" msgstr "Lötpaste-Werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:7352 +#: flatcamGUI/FlatCAMGUI.py:7388 msgid "" "A tool to create GCode for dispensing\n" "solder paste onto a PCB." @@ -10003,49 +10062,49 @@ msgstr "" "Ein Werkzeug zum Erstellen von GCode für die Ausgabe\n" "Lotpaste auf eine Leiterplatte." -#: flatcamGUI/FlatCAMGUI.py:7363 +#: flatcamGUI/FlatCAMGUI.py:7399 msgid "Diameters of nozzle tools, separated by ','" msgstr "Durchmesser der Düsenwerkzeuge, getrennt durch ','" -#: flatcamGUI/FlatCAMGUI.py:7370 +#: flatcamGUI/FlatCAMGUI.py:7406 msgid "New Nozzle Dia" msgstr "Neuer Düsendurchmesser:" -#: flatcamGUI/FlatCAMGUI.py:7372 flatcamTools/ToolSolderPaste.py:103 +#: flatcamGUI/FlatCAMGUI.py:7408 flatcamTools/ToolSolderPaste.py:103 msgid "Diameter for the new Nozzle tool to add in the Tool Table" msgstr "" "Durchmesser für das neue Düsenwerkzeug, das in die Werkzeugtabelle eingefügt " "werden soll" -#: flatcamGUI/FlatCAMGUI.py:7380 flatcamTools/ToolSolderPaste.py:166 +#: flatcamGUI/FlatCAMGUI.py:7416 flatcamTools/ToolSolderPaste.py:166 msgid "Z Dispense Start" msgstr "Z Dosierbeginn" -#: flatcamGUI/FlatCAMGUI.py:7382 flatcamTools/ToolSolderPaste.py:168 +#: flatcamGUI/FlatCAMGUI.py:7418 flatcamTools/ToolSolderPaste.py:168 msgid "The height (Z) when solder paste dispensing starts." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:7389 flatcamTools/ToolSolderPaste.py:174 +#: flatcamGUI/FlatCAMGUI.py:7425 flatcamTools/ToolSolderPaste.py:174 msgid "Z Dispense" msgstr "Z-Abgabe" -#: flatcamGUI/FlatCAMGUI.py:7391 flatcamTools/ToolSolderPaste.py:176 +#: flatcamGUI/FlatCAMGUI.py:7427 flatcamTools/ToolSolderPaste.py:176 msgid "The height (Z) when doing solder paste dispensing." msgstr "Die Höhe (Z) bei der Lotpastendosierung." -#: flatcamGUI/FlatCAMGUI.py:7398 flatcamTools/ToolSolderPaste.py:182 +#: flatcamGUI/FlatCAMGUI.py:7434 flatcamTools/ToolSolderPaste.py:182 msgid "Z Dispense Stop" msgstr "Z Abgabestopp" -#: flatcamGUI/FlatCAMGUI.py:7400 flatcamTools/ToolSolderPaste.py:184 +#: flatcamGUI/FlatCAMGUI.py:7436 flatcamTools/ToolSolderPaste.py:184 msgid "The height (Z) when solder paste dispensing stops." msgstr "Die Höhe (Z) bei der Lotpastendosierung stoppt." -#: flatcamGUI/FlatCAMGUI.py:7407 flatcamTools/ToolSolderPaste.py:190 +#: flatcamGUI/FlatCAMGUI.py:7443 flatcamTools/ToolSolderPaste.py:190 msgid "Z Travel" msgstr "Z Reise" -#: flatcamGUI/FlatCAMGUI.py:7409 flatcamTools/ToolSolderPaste.py:192 +#: flatcamGUI/FlatCAMGUI.py:7445 flatcamTools/ToolSolderPaste.py:192 msgid "" "The height (Z) for travel between pads\n" "(without dispensing solder paste)." @@ -10053,19 +10112,19 @@ msgstr "" "Die Höhe (Z) für den Weg zwischen Pads\n" "(ohne Lotpaste zu dosieren)." -#: flatcamGUI/FlatCAMGUI.py:7417 flatcamTools/ToolSolderPaste.py:199 +#: flatcamGUI/FlatCAMGUI.py:7453 flatcamTools/ToolSolderPaste.py:199 msgid "Z Toolchange" msgstr "Z Werkzeugwechsel" -#: flatcamGUI/FlatCAMGUI.py:7419 flatcamTools/ToolSolderPaste.py:201 +#: flatcamGUI/FlatCAMGUI.py:7455 flatcamTools/ToolSolderPaste.py:201 msgid "The height (Z) for tool (nozzle) change." msgstr "Die Höhe (Z) für Werkzeug (Düse) ändert sich." -#: flatcamGUI/FlatCAMGUI.py:7426 flatcamTools/ToolSolderPaste.py:207 +#: flatcamGUI/FlatCAMGUI.py:7462 flatcamTools/ToolSolderPaste.py:207 msgid "Toolchange X-Y" msgstr "Werkzeugwechsel X, Y" -#: flatcamGUI/FlatCAMGUI.py:7428 flatcamTools/ToolSolderPaste.py:209 +#: flatcamGUI/FlatCAMGUI.py:7464 flatcamTools/ToolSolderPaste.py:209 msgid "" "The X,Y location for tool (nozzle) change.\n" "The format is (x, y) where x and y are real numbers." @@ -10073,19 +10132,19 @@ msgstr "" "Die X, Y-Position für Werkzeug (Düse) ändert sich.\n" "Das Format ist (x, y), wobei x und y reelle Zahlen sind." -#: flatcamGUI/FlatCAMGUI.py:7436 flatcamTools/ToolSolderPaste.py:216 +#: flatcamGUI/FlatCAMGUI.py:7472 flatcamTools/ToolSolderPaste.py:216 msgid "Feedrate X-Y" msgstr "Vorschub X-Y" -#: flatcamGUI/FlatCAMGUI.py:7438 flatcamTools/ToolSolderPaste.py:218 +#: flatcamGUI/FlatCAMGUI.py:7474 flatcamTools/ToolSolderPaste.py:218 msgid "Feedrate (speed) while moving on the X-Y plane." msgstr "Vorschub (Geschwindigkeit) während der Bewegung auf der X-Y-Ebene." -#: flatcamGUI/FlatCAMGUI.py:7445 flatcamTools/ToolSolderPaste.py:224 +#: flatcamGUI/FlatCAMGUI.py:7481 flatcamTools/ToolSolderPaste.py:224 msgid "Feedrate Z" msgstr "Vorschub Z" -#: flatcamGUI/FlatCAMGUI.py:7447 flatcamTools/ToolSolderPaste.py:226 +#: flatcamGUI/FlatCAMGUI.py:7483 flatcamTools/ToolSolderPaste.py:226 msgid "" "Feedrate (speed) while moving vertically\n" "(on Z plane)." @@ -10093,11 +10152,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Bewegung\n" "(auf der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:7455 flatcamTools/ToolSolderPaste.py:233 +#: flatcamGUI/FlatCAMGUI.py:7491 flatcamTools/ToolSolderPaste.py:233 msgid "Feedrate Z Dispense" msgstr "Vorschub Z Dosierung" -#: flatcamGUI/FlatCAMGUI.py:7457 +#: flatcamGUI/FlatCAMGUI.py:7493 msgid "" "Feedrate (speed) while moving up vertically\n" "to Dispense position (on Z plane)." @@ -10105,11 +10164,11 @@ msgstr "" "Vorschub (Geschwindigkeit) bei vertikaler Aufwärtsbewegung\n" "in Ausgabeposition (in der Z-Ebene)." -#: flatcamGUI/FlatCAMGUI.py:7465 flatcamTools/ToolSolderPaste.py:242 +#: flatcamGUI/FlatCAMGUI.py:7501 flatcamTools/ToolSolderPaste.py:242 msgid "Spindle Speed FWD" msgstr "Spindeldrehzahl FWD" -#: flatcamGUI/FlatCAMGUI.py:7467 flatcamTools/ToolSolderPaste.py:244 +#: flatcamGUI/FlatCAMGUI.py:7503 flatcamTools/ToolSolderPaste.py:244 msgid "" "The dispenser speed while pushing solder paste\n" "through the dispenser nozzle." @@ -10117,19 +10176,19 @@ msgstr "" "Die Spendergeschwindigkeit beim Schieben der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:7475 flatcamTools/ToolSolderPaste.py:251 +#: flatcamGUI/FlatCAMGUI.py:7511 flatcamTools/ToolSolderPaste.py:251 msgid "Dwell FWD" msgstr "Verweilzeit FWD" -#: flatcamGUI/FlatCAMGUI.py:7477 flatcamTools/ToolSolderPaste.py:253 +#: flatcamGUI/FlatCAMGUI.py:7513 flatcamTools/ToolSolderPaste.py:253 msgid "Pause after solder dispensing." msgstr "Pause nach dem Löten." -#: flatcamGUI/FlatCAMGUI.py:7484 flatcamTools/ToolSolderPaste.py:259 +#: flatcamGUI/FlatCAMGUI.py:7520 flatcamTools/ToolSolderPaste.py:259 msgid "Spindle Speed REV" msgstr "Spindeldrehzahl REV" -#: flatcamGUI/FlatCAMGUI.py:7486 flatcamTools/ToolSolderPaste.py:261 +#: flatcamGUI/FlatCAMGUI.py:7522 flatcamTools/ToolSolderPaste.py:261 msgid "" "The dispenser speed while retracting solder paste\n" "through the dispenser nozzle." @@ -10137,11 +10196,11 @@ msgstr "" "Die Spendergeschwindigkeit beim Einfahren der Lötpaste\n" "durch die Spenderdüse." -#: flatcamGUI/FlatCAMGUI.py:7494 flatcamTools/ToolSolderPaste.py:268 +#: flatcamGUI/FlatCAMGUI.py:7530 flatcamTools/ToolSolderPaste.py:268 msgid "Dwell REV" msgstr "Verweilen REV" -#: flatcamGUI/FlatCAMGUI.py:7496 flatcamTools/ToolSolderPaste.py:270 +#: flatcamGUI/FlatCAMGUI.py:7532 flatcamTools/ToolSolderPaste.py:270 msgid "" "Pause after solder paste dispenser retracted,\n" "to allow pressure equilibrium." @@ -10149,20 +10208,20 @@ msgstr "" "Pause nachdem Lotpastendispenser eingefahren wurde,\n" "das Druckgleichgewicht zu ermöglichen." -#: flatcamGUI/FlatCAMGUI.py:7503 flatcamGUI/ObjectUI.py:1288 +#: flatcamGUI/FlatCAMGUI.py:7539 flatcamGUI/ObjectUI.py:1297 #: flatcamTools/ToolSolderPaste.py:276 msgid "PostProcessor" msgstr "Postprozessor" -#: flatcamGUI/FlatCAMGUI.py:7505 flatcamTools/ToolSolderPaste.py:278 +#: flatcamGUI/FlatCAMGUI.py:7541 flatcamTools/ToolSolderPaste.py:278 msgid "Files that control the GCode generation." msgstr "Dateien, die die GCode-Generierung steuern." -#: flatcamGUI/FlatCAMGUI.py:7520 +#: flatcamGUI/FlatCAMGUI.py:7556 msgid "Substractor Tool Options" msgstr "Substractor-Werkzeug-Optionen" -#: flatcamGUI/FlatCAMGUI.py:7525 +#: flatcamGUI/FlatCAMGUI.py:7561 msgid "" "A tool to substract one Gerber or Geometry object\n" "from another of the same type." @@ -10170,28 +10229,28 @@ msgstr "" "Ein Werkzeug zum Subtrahieren eines Gerber- oder Geometrieobjekts\n" "von einem anderen des gleichen Typs." -#: flatcamGUI/FlatCAMGUI.py:7530 flatcamTools/ToolSub.py:135 +#: flatcamGUI/FlatCAMGUI.py:7566 flatcamTools/ToolSub.py:135 msgid "Close paths" msgstr "Wege schließen" -#: flatcamGUI/FlatCAMGUI.py:7531 flatcamTools/ToolSub.py:136 +#: flatcamGUI/FlatCAMGUI.py:7567 flatcamTools/ToolSub.py:136 msgid "" "Checking this will close the paths cut by the Geometry substractor object." msgstr "" "Wenn Sie dies aktivieren, werden die vom Geometry-Substractor-Objekt " "geschnittenen Pfade geschlossen." -#: flatcamGUI/FlatCAMGUI.py:7542 +#: flatcamGUI/FlatCAMGUI.py:7578 msgid "Excellon File associations" msgstr "Excellon-Dateizuordnungen" -#: flatcamGUI/FlatCAMGUI.py:7545 flatcamGUI/FlatCAMGUI.py:7578 -#: flatcamGUI/FlatCAMGUI.py:7611 +#: flatcamGUI/FlatCAMGUI.py:7581 flatcamGUI/FlatCAMGUI.py:7614 +#: flatcamGUI/FlatCAMGUI.py:7647 msgid "Extensions list" msgstr "Erweiterungsliste" -#: flatcamGUI/FlatCAMGUI.py:7547 flatcamGUI/FlatCAMGUI.py:7580 -#: flatcamGUI/FlatCAMGUI.py:7613 +#: flatcamGUI/FlatCAMGUI.py:7583 flatcamGUI/FlatCAMGUI.py:7616 +#: flatcamGUI/FlatCAMGUI.py:7649 msgid "" "List of file extensions to be\n" "associated with FlatCAM." @@ -10199,8 +10258,8 @@ msgstr "" "Liste der zu verwendenden Dateierweiterungen\n" "im Zusammenhang mit FlatCAM." -#: flatcamGUI/FlatCAMGUI.py:7561 flatcamGUI/FlatCAMGUI.py:7594 -#: flatcamGUI/FlatCAMGUI.py:7626 +#: flatcamGUI/FlatCAMGUI.py:7597 flatcamGUI/FlatCAMGUI.py:7630 +#: flatcamGUI/FlatCAMGUI.py:7662 msgid "" "Apply the file associations between\n" "FlatCAM and the files with above extensions.\n" @@ -10212,23 +10271,23 @@ msgstr "" "Sie sind nach der nächsten Anmeldung aktiv.\n" "Dies funktioniert nur unter Windows." -#: flatcamGUI/FlatCAMGUI.py:7575 +#: flatcamGUI/FlatCAMGUI.py:7611 msgid "GCode File associations" msgstr "GCode-Dateizuordnungen" -#: flatcamGUI/FlatCAMGUI.py:7608 +#: flatcamGUI/FlatCAMGUI.py:7644 msgid "Gerber File associations" msgstr "Gerber Dateizuordnungen" -#: flatcamGUI/FlatCAMGUI.py:7655 flatcamGUI/FlatCAMGUI.py:7661 +#: flatcamGUI/FlatCAMGUI.py:7691 flatcamGUI/FlatCAMGUI.py:7697 msgid "Idle." msgstr "Untätig." -#: flatcamGUI/FlatCAMGUI.py:7686 +#: flatcamGUI/FlatCAMGUI.py:7722 msgid "Application started ..." msgstr "Bewerbung gestartet ..." -#: flatcamGUI/FlatCAMGUI.py:7687 +#: flatcamGUI/FlatCAMGUI.py:7723 msgid "Hello!" msgstr "Hello!" @@ -10298,8 +10357,8 @@ msgstr "Führen Sie den Versatzvorgang aus." msgid "Gerber Object" msgstr "Gerber-Objekt" -#: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:565 -#: flatcamGUI/ObjectUI.py:891 flatcamGUI/ObjectUI.py:1414 +#: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:574 +#: flatcamGUI/ObjectUI.py:900 flatcamGUI/ObjectUI.py:1423 msgid "Name" msgstr "Name" @@ -10415,10 +10474,26 @@ msgstr "" "Durchmesser oben." #: flatcamGUI/ObjectUI.py:384 +msgid "Buffer Solid Geometry" +msgstr "Festkörpergeometrie puffern" + +#: flatcamGUI/ObjectUI.py:386 +msgid "" +"This button is shown only when the Gerber file\n" +"is loaded without buffering.\n" +"Clicking this will create the buffered geometry\n" +"required for isolation." +msgstr "" +"Diese Schaltfläche wird nur bei der Gerber-Datei angezeigt\n" +"wird ohne Pufferung geladen.\n" +"Durch Klicken auf diese Schaltfläche wird die gepufferte Geometrie erstellt\n" +"für die Isolierung erforderlich." + +#: flatcamGUI/ObjectUI.py:393 msgid "FULL Geo" msgstr "Volle Geo" -#: flatcamGUI/ObjectUI.py:386 +#: flatcamGUI/ObjectUI.py:395 msgid "" "Create the Geometry Object\n" "for isolation routing. It contains both\n" @@ -10428,11 +10503,11 @@ msgstr "" "für Isolationsrouting. Es enthält beides\n" "die Innen- und Außengeometrie." -#: flatcamGUI/ObjectUI.py:395 +#: flatcamGUI/ObjectUI.py:404 msgid "Ext Geo" msgstr "Äußere Geo" -#: flatcamGUI/ObjectUI.py:397 +#: flatcamGUI/ObjectUI.py:406 msgid "" "Create the Geometry Object\n" "for isolation routing containing\n" @@ -10442,11 +10517,11 @@ msgstr "" "für Isolationsrouting enthalten\n" "nur die äußere Geometrie." -#: flatcamGUI/ObjectUI.py:404 +#: flatcamGUI/ObjectUI.py:413 msgid "Int Geo" msgstr "Innengeo" -#: flatcamGUI/ObjectUI.py:406 +#: flatcamGUI/ObjectUI.py:415 msgid "" "Create the Geometry Object\n" "for isolation routing containing\n" @@ -10456,11 +10531,11 @@ msgstr "" "für Isolationsrouting enthalten\n" "nur die Innengeometrie." -#: flatcamGUI/ObjectUI.py:436 +#: flatcamGUI/ObjectUI.py:445 msgid "Clear N-copper" msgstr "N-Kupfer löschen" -#: flatcamGUI/ObjectUI.py:445 flatcamTools/ToolNonCopperClear.py:442 +#: flatcamGUI/ObjectUI.py:454 flatcamTools/ToolNonCopperClear.py:442 msgid "" "Create the Geometry Object\n" "for non-copper routing." @@ -10468,15 +10543,15 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "für kupferfreies Routing." -#: flatcamGUI/ObjectUI.py:452 +#: flatcamGUI/ObjectUI.py:461 msgid "Board cutout" msgstr "Kartenausschnitt" -#: flatcamGUI/ObjectUI.py:459 flatcamTools/ToolCutOut.py:343 +#: flatcamGUI/ObjectUI.py:468 flatcamTools/ToolCutOut.py:343 msgid "Cutout Tool" msgstr "Ausschnittwerkzeug" -#: flatcamGUI/ObjectUI.py:461 +#: flatcamGUI/ObjectUI.py:470 msgid "" "Generate the geometry for\n" "the board cutout." @@ -10484,13 +10559,13 @@ msgstr "" "Generieren Sie die Geometrie für\n" "der Brettausschnitt." -#: flatcamGUI/ObjectUI.py:499 flatcamGUI/ObjectUI.py:531 +#: flatcamGUI/ObjectUI.py:508 flatcamGUI/ObjectUI.py:540 #: flatcamTools/ToolCutOut.py:183 flatcamTools/ToolCutOut.py:203 #: flatcamTools/ToolCutOut.py:254 flatcamTools/ToolSolderPaste.py:127 msgid "Generate Geo" msgstr "Geo erzeugen" -#: flatcamGUI/ObjectUI.py:506 +#: flatcamGUI/ObjectUI.py:515 msgid "" "Create a geometry surrounding the Gerber object.\n" "Square shape." @@ -10498,23 +10573,23 @@ msgstr "" "Erstellen Sie eine Geometrie, die das Gerber-Objekt umgibt.\n" "Quadratische Form." -#: flatcamGUI/ObjectUI.py:533 +#: flatcamGUI/ObjectUI.py:542 msgid "Generate the Geometry object." msgstr "Generieren Sie das Geometrieobjekt." -#: flatcamGUI/ObjectUI.py:545 +#: flatcamGUI/ObjectUI.py:554 msgid "Excellon Object" msgstr "Excellon-Objekt" -#: flatcamGUI/ObjectUI.py:556 +#: flatcamGUI/ObjectUI.py:565 msgid "Solid circles." msgstr "Feste Kreise." -#: flatcamGUI/ObjectUI.py:604 +#: flatcamGUI/ObjectUI.py:613 msgid "Drills" msgstr "Bohrer" -#: flatcamGUI/ObjectUI.py:609 +#: flatcamGUI/ObjectUI.py:618 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -10529,7 +10604,7 @@ msgstr "" "\n" "Hier werden die Werkzeuge zur G-Code-Generierung ausgewählt." -#: flatcamGUI/ObjectUI.py:614 flatcamGUI/ObjectUI.py:956 +#: flatcamGUI/ObjectUI.py:623 flatcamGUI/ObjectUI.py:965 #: flatcamTools/ToolPaint.py:120 msgid "" "Tool Diameter. It's value (in current FlatCAM units) \n" @@ -10538,7 +10613,7 @@ msgstr "" "Werkzeugdurchmesser Der Wert (in aktuellen FlatCAM-Einheiten)\n" "ist die Schnittbreite in das Material." -#: flatcamGUI/ObjectUI.py:617 +#: flatcamGUI/ObjectUI.py:626 msgid "" "The number of Drill holes. Holes that are drilled with\n" "a drill bit." @@ -10546,7 +10621,7 @@ msgstr "" "Die Anzahl der Bohrlöcher. Löcher, mit denen gebohrt wird\n" "ein Bohrer." -#: flatcamGUI/ObjectUI.py:620 +#: flatcamGUI/ObjectUI.py:629 msgid "" "The number of Slot holes. Holes that are created by\n" "milling them with an endmill bit." @@ -10554,7 +10629,7 @@ msgstr "" "Die Anzahl der Langlöcher. Löcher, die von erstellt werden\n" "Fräsen mit einem Schaftfräser." -#: flatcamGUI/ObjectUI.py:627 +#: flatcamGUI/ObjectUI.py:636 msgid "" "Toggle display of the drills for the current tool.\n" "This does not select the tools for G-code generation." @@ -10562,7 +10637,7 @@ msgstr "" "Anzeige der Bohrer für das aktuelle Werkzeug umschalten.\n" "Hiermit werden die Tools für die G-Code-Generierung nicht ausgewählt." -#: flatcamGUI/ObjectUI.py:636 +#: flatcamGUI/ObjectUI.py:645 msgid "" "Create a CNC Job object\n" "for this drill object." @@ -10570,11 +10645,11 @@ msgstr "" "Erstellen Sie ein CNC-Auftragsobjekt\n" "für dieses Bohrobjekt." -#: flatcamGUI/ObjectUI.py:673 flatcamGUI/ObjectUI.py:1168 +#: flatcamGUI/ObjectUI.py:682 flatcamGUI/ObjectUI.py:1177 msgid "Tool change Z" msgstr "Werkzeugwechsel Z" -#: flatcamGUI/ObjectUI.py:790 +#: flatcamGUI/ObjectUI.py:799 msgid "" "Select from the Tools Table above\n" "the hole dias that are to be drilled.\n" @@ -10584,7 +10659,7 @@ msgstr "" "das loch dias das gebohrt werden soll.\n" "Verwenden Sie die Spalte #, um die Auswahl zu treffen." -#: flatcamGUI/ObjectUI.py:800 +#: flatcamGUI/ObjectUI.py:809 msgid "" "Choose what to use for GCode generation:\n" "'Drills', 'Slots' or 'Both'.\n" @@ -10596,15 +10671,15 @@ msgstr "" "Wenn Sie \"Slots\" oder \"Both\" wählen, werden die Slots angezeigt\n" "in eine Reihe von Bohrern umgewandelt." -#: flatcamGUI/ObjectUI.py:815 +#: flatcamGUI/ObjectUI.py:824 msgid "Create Drills GCode" msgstr "Erstellen Sie einen Drill-GCode" -#: flatcamGUI/ObjectUI.py:817 +#: flatcamGUI/ObjectUI.py:826 msgid "Generate the CNC Job." msgstr "Generieren Sie den CNC-Job." -#: flatcamGUI/ObjectUI.py:829 +#: flatcamGUI/ObjectUI.py:838 msgid "" "Select from the Tools Table above\n" "the hole dias that are to be milled.\n" @@ -10614,11 +10689,11 @@ msgstr "" "das loch dias das gefräst werden soll.\n" "Verwenden Sie die Spalte #, um die Auswahl zu treffen." -#: flatcamGUI/ObjectUI.py:844 +#: flatcamGUI/ObjectUI.py:853 msgid "Mill Drills Geo" msgstr "Mühle bohrt Geo" -#: flatcamGUI/ObjectUI.py:846 +#: flatcamGUI/ObjectUI.py:855 msgid "" "Create the Geometry Object\n" "for milling DRILLS toolpaths." @@ -10626,11 +10701,11 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von BOHRER-Werkzeugwegen." -#: flatcamGUI/ObjectUI.py:861 +#: flatcamGUI/ObjectUI.py:870 msgid "Mill Slots Geo" msgstr "Fräsen der Schlitze" -#: flatcamGUI/ObjectUI.py:863 +#: flatcamGUI/ObjectUI.py:872 msgid "" "Create the Geometry Object\n" "for milling SLOTS toolpaths." @@ -10638,11 +10713,11 @@ msgstr "" "Erstellen Sie das Geometrieobjekt\n" "zum Fräsen von Werkzeugwegen." -#: flatcamGUI/ObjectUI.py:881 +#: flatcamGUI/ObjectUI.py:890 msgid "Geometry Object" msgstr "Geometrieobjekt" -#: flatcamGUI/ObjectUI.py:912 +#: flatcamGUI/ObjectUI.py:921 msgid "" "Tools in this Geometry object used for cutting.\n" "The 'Offset' entry will set an offset for the cut.\n" @@ -10671,16 +10746,16 @@ msgstr "" "ausgegraut und Cut Z wird automatisch aus dem neuen berechnet\n" "Zeigt UI-Formulareinträge mit den Namen V-Tip Dia und V-Tip Angle an." -#: flatcamGUI/ObjectUI.py:943 flatcamGUI/ObjectUI.py:1508 +#: flatcamGUI/ObjectUI.py:952 flatcamGUI/ObjectUI.py:1517 msgid "Dia" msgstr "Durchm" -#: flatcamGUI/ObjectUI.py:943 flatcamGUI/ObjectUI.py:1508 +#: flatcamGUI/ObjectUI.py:952 flatcamGUI/ObjectUI.py:1517 #: flatcamTools/ToolNonCopperClear.py:107 flatcamTools/ToolPaint.py:106 msgid "TT" msgstr "TT" -#: flatcamGUI/ObjectUI.py:950 +#: flatcamGUI/ObjectUI.py:959 msgid "" "This is the Tool Number.\n" "When ToolChange is checked, on toolchange event this value\n" @@ -10691,7 +10766,7 @@ msgstr "" "Werkzeugwechselereignis angezeigt\n" "wird als T1, T2 ... Tn angezeigt" -#: flatcamGUI/ObjectUI.py:961 +#: flatcamGUI/ObjectUI.py:970 msgid "" "The value for the Offset can be:\n" "- Path -> There is no offset, the tool cut will be done through the geometry " @@ -10708,7 +10783,7 @@ msgstr "" "- Out (Seite) -> Der Werkzeugschnitt folgt der Geometrielinie an der " "Außenseite." -#: flatcamGUI/ObjectUI.py:968 +#: flatcamGUI/ObjectUI.py:977 msgid "" "The (Operation) Type has only informative value. Usually the UI form " "values \n" @@ -10731,7 +10806,7 @@ msgstr "" "Für die Isolierung benötigen wir einen niedrigeren Vorschub, da ein Fräser " "mit einer feinen Spitze verwendet wird." -#: flatcamGUI/ObjectUI.py:977 +#: flatcamGUI/ObjectUI.py:986 msgid "" "The Tool Type (TT) can be:\n" "- Circular with 1 ... 4 teeth -> it is informative only. Being circular the " @@ -10762,7 +10837,7 @@ msgstr "" "Durch die Auswahl des V-Shape-Werkzeugtyps wird der Operationstyp " "automatisch als Isolation ausgewählt." -#: flatcamGUI/ObjectUI.py:989 +#: flatcamGUI/ObjectUI.py:998 msgid "" "Plot column. It is visible only for MultiGeo geometries, meaning geometries " "that holds the geometry\n" @@ -10780,11 +10855,11 @@ msgstr "" "der Leinwand aktiviert / deaktiviert werden\n" "für das entsprechende Werkzeug." -#: flatcamGUI/ObjectUI.py:1002 +#: flatcamGUI/ObjectUI.py:1011 msgid "Tool Offset" msgstr "Werkzeugversatz" -#: flatcamGUI/ObjectUI.py:1005 +#: flatcamGUI/ObjectUI.py:1014 msgid "" "The value to offset the cut when \n" "the Offset type selected is 'Offset'.\n" @@ -10796,7 +10871,7 @@ msgstr "" "Der Wert kann für \"außerhalb\" positiv sein\n" "Cut und Negativ für \"Inside\" Cut." -#: flatcamGUI/ObjectUI.py:1047 flatcamTools/ToolNonCopperClear.py:239 +#: flatcamGUI/ObjectUI.py:1056 flatcamTools/ToolNonCopperClear.py:239 #: flatcamTools/ToolPaint.py:178 msgid "" "Add a new tool to the Tool Table\n" @@ -10805,7 +10880,7 @@ msgstr "" "Fügen Sie der Werkzeugtabelle ein neues Werkzeug hinzu\n" "mit dem oben angegebenen Durchmesser." -#: flatcamGUI/ObjectUI.py:1055 +#: flatcamGUI/ObjectUI.py:1064 msgid "" "Copy a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -10813,7 +10888,7 @@ msgstr "" "Kopieren Sie eine Auswahl von Werkzeugen in die Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamGUI/ObjectUI.py:1063 +#: flatcamGUI/ObjectUI.py:1072 msgid "" "Delete a selection of tools in the Tool Table\n" "by first selecting a row in the Tool Table." @@ -10821,11 +10896,11 @@ msgstr "" "Löschen Sie eine Auswahl von Werkzeugen in der Werkzeugtabelle\n" "indem Sie zuerst eine Zeile in der Werkzeugtabelle auswählen." -#: flatcamGUI/ObjectUI.py:1079 +#: flatcamGUI/ObjectUI.py:1088 msgid "Tool Data" msgstr "Werkzeugdaten" -#: flatcamGUI/ObjectUI.py:1082 +#: flatcamGUI/ObjectUI.py:1091 msgid "" "The data used for creating GCode.\n" "Each tool store it's own set of such data." @@ -10833,11 +10908,11 @@ msgstr "" "Die Daten, die zum Erstellen von GCode verwendet werden.\n" "Jedes Werkzeug speichert seinen eigenen Satz solcher Daten." -#: flatcamGUI/ObjectUI.py:1149 +#: flatcamGUI/ObjectUI.py:1158 msgid "Depth of each pass (positive)." msgstr "Tiefe jedes Durchgangs (positiv)." -#: flatcamGUI/ObjectUI.py:1323 +#: flatcamGUI/ObjectUI.py:1332 msgid "" "Add at least one tool in the tool-table.\n" "Click the header to select all, or Ctrl + LMB\n" @@ -10849,31 +10924,31 @@ msgstr "" "oder drücken Sie Strg + LMB\n" "zur benutzerdefinierten Auswahl von Werkzeugen." -#: flatcamGUI/ObjectUI.py:1330 +#: flatcamGUI/ObjectUI.py:1339 msgid "Generate" msgstr "Generieren" -#: flatcamGUI/ObjectUI.py:1332 +#: flatcamGUI/ObjectUI.py:1341 msgid "Generate the CNC Job object." msgstr "Generieren Sie das CNC-Job-Objekt." -#: flatcamGUI/ObjectUI.py:1339 +#: flatcamGUI/ObjectUI.py:1348 msgid "Paint Area" msgstr "Paint Bereich" -#: flatcamGUI/ObjectUI.py:1353 +#: flatcamGUI/ObjectUI.py:1362 msgid "Launch Paint Tool in Tools Tab." msgstr "Starten Sie das Paint Werkzeug in der Registerkarte \"Tools\"." -#: flatcamGUI/ObjectUI.py:1369 +#: flatcamGUI/ObjectUI.py:1378 msgid "CNC Job Object" msgstr "CNC-Auftragsobjekt" -#: flatcamGUI/ObjectUI.py:1420 +#: flatcamGUI/ObjectUI.py:1429 msgid "Travelled dist." msgstr "Zurückgelegte Strecke" -#: flatcamGUI/ObjectUI.py:1422 flatcamGUI/ObjectUI.py:1427 +#: flatcamGUI/ObjectUI.py:1431 flatcamGUI/ObjectUI.py:1436 msgid "" "This is the total travelled distance on X-Y plane.\n" "In current units." @@ -10881,11 +10956,11 @@ msgstr "" "Dies ist die Gesamtstrecke auf der X-Y-Ebene.\n" "In aktuellen Einheiten." -#: flatcamGUI/ObjectUI.py:1432 +#: flatcamGUI/ObjectUI.py:1441 msgid "Estimated time" msgstr "Geschätzte Zeit" -#: flatcamGUI/ObjectUI.py:1434 flatcamGUI/ObjectUI.py:1439 +#: flatcamGUI/ObjectUI.py:1443 flatcamGUI/ObjectUI.py:1448 msgid "" "This is the estimated time to do the routing/drilling,\n" "without the time spent in ToolChange events." @@ -10893,11 +10968,11 @@ msgstr "" "Dies ist die geschätzte Zeit für das Fräsen / Bohren.\n" "ohne die Zeit, die in Werkzeugwechselereignissen verbracht wird." -#: flatcamGUI/ObjectUI.py:1474 +#: flatcamGUI/ObjectUI.py:1483 msgid "CNC Tools Table" msgstr "CNC Werkzeugtabelle" -#: flatcamGUI/ObjectUI.py:1477 +#: flatcamGUI/ObjectUI.py:1486 msgid "" "Tools in this CNCJob object used for cutting.\n" "The tool diameter is used for plotting on canvas.\n" @@ -10919,39 +10994,39 @@ msgstr "" "Der 'Werkzeugtyp' (TT) kann kreisförmig mit 1 bis 4 Zähnen (C1..C4) sein.\n" "Kugel (B) oder V-Form (V)." -#: flatcamGUI/ObjectUI.py:1509 +#: flatcamGUI/ObjectUI.py:1518 msgid "P" msgstr "P" -#: flatcamGUI/ObjectUI.py:1515 +#: flatcamGUI/ObjectUI.py:1524 msgid "Update Plot" msgstr "Plot aktualisieren" -#: flatcamGUI/ObjectUI.py:1517 +#: flatcamGUI/ObjectUI.py:1526 msgid "Update the plot." msgstr "Aktualisieren Sie die Darstellung." -#: flatcamGUI/ObjectUI.py:1532 +#: flatcamGUI/ObjectUI.py:1541 msgid "Prepend to CNC Code" msgstr "CNC-Code voranstellen" -#: flatcamGUI/ObjectUI.py:1543 +#: flatcamGUI/ObjectUI.py:1552 msgid "Append to CNC Code" msgstr "An CNC Code anhängen" -#: flatcamGUI/ObjectUI.py:1611 +#: flatcamGUI/ObjectUI.py:1620 msgid "z_cut = depth where to cut" msgstr "z_cut = Tiefe, wo geschnitten werden soll" -#: flatcamGUI/ObjectUI.py:1612 +#: flatcamGUI/ObjectUI.py:1621 msgid "z_move = height where to travel" msgstr "z_move = Höhe wo zu reisen" -#: flatcamGUI/ObjectUI.py:1631 +#: flatcamGUI/ObjectUI.py:1640 msgid "View CNC Code" msgstr "CNC-Code anzeigen" -#: flatcamGUI/ObjectUI.py:1633 +#: flatcamGUI/ObjectUI.py:1642 msgid "" "Opens TAB to view/modify/print G-Code\n" "file." @@ -10959,11 +11034,11 @@ msgstr "" "Öffnet die Registerkarte zum Anzeigen / Ändern / Drucken von G-Code\n" "Datei." -#: flatcamGUI/ObjectUI.py:1638 +#: flatcamGUI/ObjectUI.py:1647 msgid "Save CNC Code" msgstr "CNC-Code speichern" -#: flatcamGUI/ObjectUI.py:1640 +#: flatcamGUI/ObjectUI.py:1649 msgid "" "Opens dialog to save G-Code\n" "file." @@ -11068,33 +11143,6 @@ msgstr "" msgid "Calc. Tool" msgstr "Rechner-Tool" -#: flatcamTools/ToolCalculators.py:311 flatcamTools/ToolCalculators.py:322 -#: flatcamTools/ToolCalculators.py:334 flatcamTools/ToolCalculators.py:349 -#: flatcamTools/ToolCalculators.py:362 flatcamTools/ToolCalculators.py:376 -#: flatcamTools/ToolCalculators.py:387 flatcamTools/ToolCalculators.py:398 -#: flatcamTools/ToolCalculators.py:409 flatcamTools/ToolFilm.py:248 -#: flatcamTools/ToolFilm.py:254 flatcamTools/ToolNonCopperClear.py:862 -#: flatcamTools/ToolNonCopperClear.py:873 -#: flatcamTools/ToolNonCopperClear.py:883 -#: flatcamTools/ToolNonCopperClear.py:901 -#: flatcamTools/ToolNonCopperClear.py:980 -#: flatcamTools/ToolNonCopperClear.py:1062 -#: flatcamTools/ToolNonCopperClear.py:1341 -#: flatcamTools/ToolNonCopperClear.py:1367 flatcamTools/ToolPaint.py:695 -#: flatcamTools/ToolPaint.py:770 flatcamTools/ToolPaint.py:919 -#: flatcamTools/ToolPaint.py:973 flatcamTools/ToolPaint.py:1205 -#: flatcamTools/ToolPaint.py:1462 flatcamTools/ToolPaint.py:1882 -#: flatcamTools/ToolPanelize.py:397 flatcamTools/ToolPanelize.py:409 -#: flatcamTools/ToolPanelize.py:422 flatcamTools/ToolPanelize.py:435 -#: flatcamTools/ToolPanelize.py:447 flatcamTools/ToolPanelize.py:458 -#: flatcamTools/ToolSolderPaste.py:764 flatcamTools/ToolSolderPaste.py:839 -#: flatcamTools/ToolTransform.py:474 flatcamTools/ToolTransform.py:508 -#: flatcamTools/ToolTransform.py:526 flatcamTools/ToolTransform.py:544 -#: flatcamTools/ToolTransform.py:578 flatcamTools/ToolTransform.py:607 -#: flatcamTools/ToolTransform.py:625 -msgid "Wrong value format entered, use a number." -msgstr "Falsches Wertformat eingegeben, eine Zahl verwenden." - #: flatcamTools/ToolCutOut.py:18 msgid "Cutout PCB" msgstr "Ausschnitt PCB" @@ -11275,7 +11323,7 @@ msgstr "" #: flatcamTools/ToolCutOut.py:371 flatcamTools/ToolCutOut.py:571 #: flatcamTools/ToolNonCopperClear.py:1124 -#: flatcamTools/ToolNonCopperClear.py:1265 flatcamTools/ToolPaint.py:1146 +#: flatcamTools/ToolNonCopperClear.py:1265 flatcamTools/ToolPaint.py:1148 #: flatcamTools/ToolPanelize.py:359 flatcamTools/ToolPanelize.py:376 #: flatcamTools/ToolSub.py:254 flatcamTools/ToolSub.py:269 #: flatcamTools/ToolSub.py:456 flatcamTools/ToolSub.py:471 @@ -11969,13 +12017,10 @@ msgid "No object(s) selected." msgstr "Keine Objekte ausgewählt." #: flatcamTools/ToolMove.py:162 -#| msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> %s" msgid "ToolMove.on_left_click()" msgstr "ToolMove.on_left_click()" #: flatcamTools/ToolMove.py:179 -#| msgid "" -#| "[ERROR_NOTCL] ToolMove.on_left_click() --> Error when mouse left click." msgid "ToolMove.on_left_click() --> Error when mouse left click." msgstr "" "ToolMove.on_left_click() --> Fehler beim Klicken mit der linken Maustaste." @@ -12153,48 +12198,43 @@ msgstr "" msgid "Generate Geometry" msgstr "Geometrie erzeugen" -#: flatcamTools/ToolNonCopperClear.py:906 flatcamTools/ToolPaint.py:701 +#: flatcamTools/ToolNonCopperClear.py:906 flatcamTools/ToolPaint.py:703 #: flatcamTools/ToolSolderPaste.py:769 msgid "Please enter a tool diameter to add, in Float format." msgstr "" "Bitte geben Sie einen hinzuzufügenden Werkzeugdurchmesser im Float-Format " "ein." -#: flatcamTools/ToolNonCopperClear.py:915 flatcamTools/ToolSolderPaste.py:774 -msgid "Please enter a tool diameter with non-zero value, in Float format." -msgstr "" -"Bitte geben Sie einen Werkzeugdurchmesser ungleich Null im Float-Format ein." - -#: flatcamTools/ToolNonCopperClear.py:940 flatcamTools/ToolPaint.py:726 +#: flatcamTools/ToolNonCopperClear.py:940 flatcamTools/ToolPaint.py:728 msgid "Adding tool cancelled. Tool already in Tool Table." msgstr "" "Hinzufügen des Werkzeugs abgebrochen. Werkzeug bereits in der " "Werkzeugtabelle." -#: flatcamTools/ToolNonCopperClear.py:945 flatcamTools/ToolPaint.py:732 +#: flatcamTools/ToolNonCopperClear.py:945 flatcamTools/ToolPaint.py:734 msgid "New tool added to Tool Table." msgstr "Neues Werkzeug zur Werkzeugtabelle hinzugefügt." -#: flatcamTools/ToolNonCopperClear.py:989 flatcamTools/ToolPaint.py:778 +#: flatcamTools/ToolNonCopperClear.py:989 flatcamTools/ToolPaint.py:780 msgid "Tool from Tool Table was edited." msgstr "Werkzeug aus Werkzeugtabelle wurde bearbeitet." -#: flatcamTools/ToolNonCopperClear.py:1000 flatcamTools/ToolPaint.py:790 +#: flatcamTools/ToolNonCopperClear.py:1000 flatcamTools/ToolPaint.py:792 #: flatcamTools/ToolSolderPaste.py:860 msgid "Edit cancelled. New diameter value is already in the Tool Table." msgstr "" "Bearbeitung abgebrochen. Neuer Durchmesserwert befindet sich bereits in der " "Werkzeugtabelle." -#: flatcamTools/ToolNonCopperClear.py:1040 flatcamTools/ToolPaint.py:889 +#: flatcamTools/ToolNonCopperClear.py:1040 flatcamTools/ToolPaint.py:891 msgid "Delete failed. Select a tool to delete." msgstr "Löschen fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." -#: flatcamTools/ToolNonCopperClear.py:1045 flatcamTools/ToolPaint.py:895 +#: flatcamTools/ToolNonCopperClear.py:1045 flatcamTools/ToolPaint.py:897 msgid "Tool(s) deleted from Tool Table." msgstr "Werkzeug(e) aus der Werkzeugtabelle gelöscht." -#: flatcamTools/ToolNonCopperClear.py:1053 flatcamTools/ToolPaint.py:903 +#: flatcamTools/ToolNonCopperClear.py:1053 flatcamTools/ToolPaint.py:905 msgid "on_paint_button_click" msgstr "auf den Farbknopf klicken" @@ -12204,7 +12244,7 @@ msgstr "" "Der Überlappungswert muss zwischen 0 (einschließlich) und 1 (ausschließlich) " "liegen." -#: flatcamTools/ToolNonCopperClear.py:1083 flatcamTools/ToolPaint.py:942 +#: flatcamTools/ToolNonCopperClear.py:1083 flatcamTools/ToolPaint.py:944 #, python-format msgid "Could not retrieve object: %s" msgstr "Objekt konnte nicht abgerufen werden: %s" @@ -12213,7 +12253,7 @@ msgstr "Objekt konnte nicht abgerufen werden: %s" msgid "Wrong Tool Dia value format entered, use a number." msgstr "Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie eine Zahl." -#: flatcamTools/ToolNonCopperClear.py:1112 flatcamTools/ToolPaint.py:978 +#: flatcamTools/ToolNonCopperClear.py:1112 flatcamTools/ToolPaint.py:980 msgid "No selected tools in Tool Table." msgstr "Keine ausgewählten Werkzeuge in der Werkzeugtabelle." @@ -12221,11 +12261,11 @@ msgstr "Keine ausgewählten Werkzeuge in der Werkzeugtabelle." msgid "Click the start point of the area." msgstr "Klicken Sie auf den Startpunkt des Bereichs." -#: flatcamTools/ToolNonCopperClear.py:1148 flatcamTools/ToolPaint.py:1034 +#: flatcamTools/ToolNonCopperClear.py:1148 flatcamTools/ToolPaint.py:1036 msgid "Click the end point of the paint area." msgstr "Klicken Sie auf den Endpunkt des Malbereichs." -#: flatcamTools/ToolNonCopperClear.py:1154 flatcamTools/ToolPaint.py:1040 +#: flatcamTools/ToolNonCopperClear.py:1154 flatcamTools/ToolPaint.py:1042 msgid "Zone added. Click to start adding next zone or right click to finish." msgstr "" "Zone hinzugefügt. Klicken Sie, um die nächste Zone hinzuzufügen, oder " @@ -12239,81 +12279,67 @@ msgstr "Nicht-Kupfer-Clearing ..." msgid "NCC Tool started. Reading parameters." msgstr "NCC Tool gestartet. Parameter lesen." -#: flatcamTools/ToolNonCopperClear.py:1391 +#: flatcamTools/ToolNonCopperClear.py:1395 msgid "NCC Tool. Preparing non-copper polygons." msgstr "NCC-Tool. Vorbereitung von kupferfreien Polygonen." -#: flatcamTools/ToolNonCopperClear.py:1419 flatcamTools/ToolPaint.py:2299 +#: flatcamTools/ToolNonCopperClear.py:1423 flatcamTools/ToolPaint.py:2431 msgid "No object available." msgstr "Kein Objekt vorhanden." -#: flatcamTools/ToolNonCopperClear.py:1461 +#: flatcamTools/ToolNonCopperClear.py:1465 msgid "The reference object type is not supported." msgstr "Der Referenzobjekttyp wird nicht unterstützt." -#: flatcamTools/ToolNonCopperClear.py:1483 +#: flatcamTools/ToolNonCopperClear.py:1487 msgid "" "NCC Tool. Finished non-copper polygons. Normal copper clearing task started." msgstr "" "NCC-Tool. Fertige kupferfreie Polygone. Normale Kupferentfernungsaufgabe " "gestartet." -#: flatcamTools/ToolNonCopperClear.py:1515 +#: flatcamTools/ToolNonCopperClear.py:1519 msgid "NCC Tool. Calculate 'empty' area." msgstr "NCC-Tool. Berechnen Sie die \"leere\" Fläche." -#: flatcamTools/ToolNonCopperClear.py:1521 -#: flatcamTools/ToolNonCopperClear.py:1607 -#: flatcamTools/ToolNonCopperClear.py:1616 -#: flatcamTools/ToolNonCopperClear.py:1830 -#: flatcamTools/ToolNonCopperClear.py:1920 -#: flatcamTools/ToolNonCopperClear.py:1930 -msgid "Buffering" -msgstr "Pufferung" - -#: flatcamTools/ToolNonCopperClear.py:1524 -#: flatcamTools/ToolNonCopperClear.py:1610 -#: flatcamTools/ToolNonCopperClear.py:1619 -#: flatcamTools/ToolNonCopperClear.py:1833 -#: flatcamTools/ToolNonCopperClear.py:1923 -#: flatcamTools/ToolNonCopperClear.py:1933 +#: flatcamTools/ToolNonCopperClear.py:1534 +#: flatcamTools/ToolNonCopperClear.py:1628 +#: flatcamTools/ToolNonCopperClear.py:1640 +#: flatcamTools/ToolNonCopperClear.py:1867 +#: flatcamTools/ToolNonCopperClear.py:1959 +#: flatcamTools/ToolNonCopperClear.py:1971 msgid "Buffering finished" msgstr "Pufferung beendet" -#: flatcamTools/ToolNonCopperClear.py:1542 -#: flatcamTools/ToolNonCopperClear.py:1852 -msgid "Isolation geometry could not be generated." -msgstr "Isolationsgeometrie konnte nicht generiert werden." - -#: flatcamTools/ToolNonCopperClear.py:1623 -#: flatcamTools/ToolNonCopperClear.py:1938 +#: flatcamTools/ToolNonCopperClear.py:1647 +#: flatcamTools/ToolNonCopperClear.py:1977 msgid "The selected object is not suitable for copper clearing." msgstr "Das ausgewählte Objekt ist nicht zum Löschen von Kupfer geeignet." -#: flatcamTools/ToolNonCopperClear.py:1628 -#: flatcamTools/ToolNonCopperClear.py:1943 +#: flatcamTools/ToolNonCopperClear.py:1652 +#: flatcamTools/ToolNonCopperClear.py:1982 msgid "Could not get the extent of the area to be non copper cleared." msgstr "" "Die Ausdehnung des nicht kupferhaltigen Bereichs konnte nicht gelöscht " "werden." -#: flatcamTools/ToolNonCopperClear.py:1635 +#: flatcamTools/ToolNonCopperClear.py:1659 msgid "NCC Tool. Finished calculation of 'empty' area." msgstr "NCC-Tool. Berechnung der 'leeren' Fläche beendet." -#: flatcamTools/ToolNonCopperClear.py:1645 -#: flatcamTools/ToolNonCopperClear.py:1968 +#: flatcamTools/ToolNonCopperClear.py:1669 +#: flatcamTools/ToolNonCopperClear.py:2007 msgid "NCC Tool clearing with tool diameter = " msgstr "NCC Werkzeugreinigung mit Werkzeugdurchmesser = " -#: flatcamTools/ToolNonCopperClear.py:1648 -#: flatcamTools/ToolNonCopperClear.py:1971 +#: flatcamTools/ToolNonCopperClear.py:1672 +#: flatcamTools/ToolNonCopperClear.py:2010 msgid "started." msgstr "gestartet." -#: flatcamTools/ToolNonCopperClear.py:1776 flatcamTools/ToolPaint.py:1378 -#: flatcamTools/ToolPaint.py:1680 flatcamTools/ToolPaint.py:1806 -#: flatcamTools/ToolPaint.py:2098 flatcamTools/ToolPaint.py:2223 +#: flatcamTools/ToolNonCopperClear.py:1810 flatcamTools/ToolPaint.py:1409 +#: flatcamTools/ToolPaint.py:1739 flatcamTools/ToolPaint.py:1887 +#: flatcamTools/ToolPaint.py:2202 flatcamTools/ToolPaint.py:2355 msgid "" "There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -12325,26 +12351,26 @@ msgstr "" "Geometrie zu groß ist.\n" "Ändern Sie die Malparameter und versuchen Sie es erneut." -#: flatcamTools/ToolNonCopperClear.py:1786 +#: flatcamTools/ToolNonCopperClear.py:1820 msgid "NCC Tool clear all done." msgstr "NCC Tool löschen alles erledigt." -#: flatcamTools/ToolNonCopperClear.py:1788 +#: flatcamTools/ToolNonCopperClear.py:1822 msgid "NCC Tool clear all done but the copper features isolation is broken for" msgstr "" "Das NCC-Tool löscht alles, aber die Isolierung der Kupfermerkmale ist " "unterbrochen" -#: flatcamTools/ToolNonCopperClear.py:1791 -#: flatcamTools/ToolNonCopperClear.py:2124 +#: flatcamTools/ToolNonCopperClear.py:1825 +#: flatcamTools/ToolNonCopperClear.py:2173 msgid "tools" msgstr "Werkzeuge" -#: flatcamTools/ToolNonCopperClear.py:2120 +#: flatcamTools/ToolNonCopperClear.py:2169 msgid "NCC Tool Rest Machining clear all done." msgstr "Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen." -#: flatcamTools/ToolNonCopperClear.py:2123 +#: flatcamTools/ToolNonCopperClear.py:2172 msgid "" "NCC Tool Rest Machining clear all done but the copper features isolation is " "broken for" @@ -12352,6 +12378,14 @@ msgstr "" "Die Bearbeitung der NCC-Werkzeugablagen ist abgeschlossen, die Isolierung " "der Kupferelemente ist jedoch unterbrochen" +#: flatcamTools/ToolNonCopperClear.py:2593 +msgid "" +"Try to use the Buffering Type = Full in Preferences -> Gerber General. " +"Reload the Gerber file after this change." +msgstr "" +"Versuchen Sie, den Puffertyp = Voll in Einstellungen -> Allgemein zu " +"verwenden. Laden Sie die Gerber-Datei nach dieser Änderung neu." + #: flatcamTools/ToolPDF.py:38 msgid "PDF Import Tool" msgstr "PDF-Importwerkzeug" @@ -12368,9 +12402,10 @@ msgstr "PDF öffnen abgebrochen" msgid "Parsing PDF file ..." msgstr "PDF-Datei wird analysiert ..." -#: flatcamTools/ToolPDF.py:270 flatcamTools/ToolPcbWizard.py:451 -msgid "No geometry found in file" -msgstr "Keine Geometrie in der Datei gefunden" +#: flatcamTools/ToolPDF.py:220 +#, python-format +msgid "[success] Opened: %s" +msgstr "[success] Geöffnet: %s" #: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:348 #, python-format @@ -12525,51 +12560,62 @@ msgstr "" "- 'Referenzobjekt' - löscht nicht kupferne Objekte innerhalb des Bereichs\n" "von einem anderen Objekt angegeben." -#: flatcamTools/ToolPaint.py:909 +#: flatcamTools/ToolPaint.py:911 msgid "Paint Tool. Reading parameters." msgstr "Malwerkzeug. Parameter lesen." -#: flatcamTools/ToolPaint.py:924 +#: flatcamTools/ToolPaint.py:926 msgid "Overlap value must be between 0 (inclusive) and 1 (exclusive)" msgstr "" "Der Überlappungswert muss zwischen 0 (einschließlich) und 1 (exklusiv) " "liegen." -#: flatcamTools/ToolPaint.py:928 flatcamTools/ToolPaint.py:991 +#: flatcamTools/ToolPaint.py:930 flatcamTools/ToolPaint.py:993 msgid "Click inside the desired polygon." msgstr "Klicken Sie in das gewünschte Polygon." -#: flatcamTools/ToolPaint.py:948 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolPaint.py:950 flatcamTools/ToolPanelize.py:366 #: tclCommands/TclCommandBbox.py:66 tclCommands/TclCommandNregions.py:65 msgid "Object not found" msgstr "Objekt nicht gefunden" -#: flatcamTools/ToolPaint.py:956 +#: flatcamTools/ToolPaint.py:958 msgid "Can't do Paint on MultiGeo geometries" msgstr "Auf MultiGeo-Geometrien kann nicht gemalt werden" -#: flatcamTools/ToolPaint.py:1000 flatcamTools/ToolPaint.py:1214 +#: flatcamTools/ToolPaint.py:1002 flatcamTools/ToolPaint.py:1238 msgid "Painting polygon..." msgstr "Polygon malen ..." -#: flatcamTools/ToolPaint.py:1022 +#: flatcamTools/ToolPaint.py:1024 msgid "Click the start point of the paint area." msgstr "Klicken Sie auf den Startpunkt des Malbereichs." -#: flatcamTools/ToolPaint.py:1211 +#: flatcamTools/ToolPaint.py:1196 flatcamTools/ToolPaint.py:1199 +#: flatcamTools/ToolPaint.py:1201 +msgid "Paint Tool. Normal painting polygon task started." +msgstr "Malwerkzeug. Normale Zeichenpolygonaufgabe gestartet." + +#: flatcamTools/ToolPaint.py:1197 flatcamTools/ToolPaint.py:1585 +#: flatcamTools/ToolPaint.py:1760 flatcamTools/ToolPaint.py:2042 +#: flatcamTools/ToolPaint.py:2223 +msgid "Buffering geometry..." +msgstr "Geometrie puffern..." + +#: flatcamTools/ToolPaint.py:1235 msgid "[WARNING] No polygon found." msgstr "[WARNING] Kein Polygon gefunden." -#: flatcamTools/ToolPaint.py:1215 +#: flatcamTools/ToolPaint.py:1239 #, python-format msgid "Paint Tool. Painting polygon at location: %s" msgstr "Malwerkzeug. Zeichenpolygon am Standort: %s" -#: flatcamTools/ToolPaint.py:1295 +#: flatcamTools/ToolPaint.py:1322 msgid "Geometry could not be painted completely" msgstr "Geometrie konnte nicht vollständig gemalt werden" -#: flatcamTools/ToolPaint.py:1340 +#: flatcamTools/ToolPaint.py:1367 msgid "" "Could not do Paint. Try a different combination of parameters. Or a " "different strategy of paint" @@ -12577,40 +12623,39 @@ msgstr "" "Konnte nicht malen. Probieren Sie eine andere Kombination von Parametern " "aus. Oder eine andere Strategie der Farbe" -#: flatcamTools/ToolPaint.py:1383 +#: flatcamTools/ToolPaint.py:1414 msgid "Paint Single Done." msgstr "Malen Sie Single Done." -#: flatcamTools/ToolPaint.py:1408 -#| msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s" +#: flatcamTools/ToolPaint.py:1439 msgid "PaintTool.paint_poly()" msgstr "PaintTool.paint_poly()" -#: flatcamTools/ToolPaint.py:1415 flatcamTools/ToolPaint.py:1834 -#: flatcamTools/ToolPaint.py:2251 +#: flatcamTools/ToolPaint.py:1446 flatcamTools/ToolPaint.py:1915 +#: flatcamTools/ToolPaint.py:2383 msgid "Polygon Paint started ..." msgstr "Polygonfarbe gestartet ..." -#: flatcamTools/ToolPaint.py:1465 flatcamTools/ToolPaint.py:1885 -#| msgid "Painting polygon..." +#: flatcamTools/ToolPaint.py:1502 flatcamTools/ToolPaint.py:1972 msgid "Painting polygons..." msgstr "Polygone malen ..." -#: flatcamTools/ToolPaint.py:1544 +#: flatcamTools/ToolPaint.py:1584 flatcamTools/ToolPaint.py:1587 +#: flatcamTools/ToolPaint.py:1589 msgid "Paint Tool. Normal painting all task started." msgstr "Malwerkzeug. Normales Malen alle Aufgabe gestartet." -#: flatcamTools/ToolPaint.py:1571 flatcamTools/ToolPaint.py:1719 -#: flatcamTools/ToolPaint.py:1989 flatcamTools/ToolPaint.py:2137 +#: flatcamTools/ToolPaint.py:1623 flatcamTools/ToolPaint.py:1793 +#: flatcamTools/ToolPaint.py:2087 flatcamTools/ToolPaint.py:2263 msgid "Painting with tool diameter = " msgstr "Lackieren mit Werkzeugdurchmesser =" -#: flatcamTools/ToolPaint.py:1574 flatcamTools/ToolPaint.py:1722 -#: flatcamTools/ToolPaint.py:1992 flatcamTools/ToolPaint.py:2140 +#: flatcamTools/ToolPaint.py:1626 flatcamTools/ToolPaint.py:1796 +#: flatcamTools/ToolPaint.py:2090 flatcamTools/ToolPaint.py:2266 msgid "started" msgstr "gestartet" -#: flatcamTools/ToolPaint.py:1633 flatcamTools/ToolPaint.py:1765 +#: flatcamTools/ToolPaint.py:1688 flatcamTools/ToolPaint.py:1842 msgid "" "Could not do Paint All. Try a different combination of parameters. Or a " "different Method of paint" @@ -12618,23 +12663,25 @@ msgstr "" "Paint All konnte nicht ausgeführt werden. Probieren Sie eine andere " "Kombination von Parametern aus. Oder eine andere Farbmethode" -#: flatcamTools/ToolPaint.py:1689 +#: flatcamTools/ToolPaint.py:1748 msgid "[success] Paint All Done." msgstr "[success] Malen Sie alles fertig." -#: flatcamTools/ToolPaint.py:1697 +#: flatcamTools/ToolPaint.py:1759 flatcamTools/ToolPaint.py:1762 +#: flatcamTools/ToolPaint.py:1764 msgid "Paint Tool. Rest machining painting all task started." msgstr "Malwerkzeug. Restbearbeitung Lackieren alle Aufgabe gestartet." -#: flatcamTools/ToolPaint.py:1815 flatcamTools/ToolPaint.py:2232 +#: flatcamTools/ToolPaint.py:1896 flatcamTools/ToolPaint.py:2364 msgid "Paint All with Rest-Machining done." msgstr "Malen Sie alles mit Restbearbeitung." -#: flatcamTools/ToolPaint.py:1951 +#: flatcamTools/ToolPaint.py:2041 flatcamTools/ToolPaint.py:2044 +#: flatcamTools/ToolPaint.py:2046 msgid "Paint Tool. Normal painting area task started." msgstr "Malwerkzeug. Normale Malbereichsaufgabe gestartet." -#: flatcamTools/ToolPaint.py:2052 flatcamTools/ToolPaint.py:2183 +#: flatcamTools/ToolPaint.py:2152 flatcamTools/ToolPaint.py:2311 #, python-format msgid "" "Could not do Paint All. Try a different combination of parameters. Or a " @@ -12645,11 +12692,12 @@ msgstr "" "Kombination von Parametern aus. Oder eine andere Farbmethode\n" " %s" -#: flatcamTools/ToolPaint.py:2107 +#: flatcamTools/ToolPaint.py:2211 msgid "[success] Paint Area Done." msgstr "[success] Lackierbereich fertig." -#: flatcamTools/ToolPaint.py:2115 +#: flatcamTools/ToolPaint.py:2222 flatcamTools/ToolPaint.py:2225 +#: flatcamTools/ToolPaint.py:2227 msgid "Paint Tool. Rest machining painting area task started." msgstr "Malwerkzeug. Restbearbeitung Lackierbereich Aufgabe gestartet." @@ -12777,10 +12825,6 @@ msgstr "" msgid "Panel. Tool" msgstr "Platte Werkzeug" -#: flatcamTools/ToolPanelize.py:381 -msgid "No object Box. Using instead" -msgstr "Keine Objektbox. Verwenden Sie stattdessen" - #: flatcamTools/ToolPanelize.py:465 msgid "Columns or Rows are zero value. Change them to a positive integer." msgstr "" @@ -12955,18 +12999,10 @@ msgstr "PcbWizard-INF-Datei wurde geladen." msgid "Main PcbWizard Excellon file loaded." msgstr "Haupt-PcbWizard Excellon-Datei geladen." -#: flatcamTools/ToolPcbWizard.py:427 -msgid "This is not Excellon file." -msgstr "Dies ist keine Excellon-Datei." - #: flatcamTools/ToolPcbWizard.py:431 msgid "Cannot parse file" msgstr "Datei kann nicht analysiert werden" -#: flatcamTools/ToolPcbWizard.py:437 -msgid "An internal error has occurred. See shell.\n" -msgstr "Ein interner Fehler ist aufgetreten. Siehe Shell.\n" - #: flatcamTools/ToolPcbWizard.py:456 msgid "Importing Excellon." msgstr "Excellon importieren." @@ -13044,11 +13080,6 @@ msgstr "Metrisch" msgid "Present" msgstr "Vorhanden" -#: flatcamTools/ToolProperties.py:298 flatcamTools/ToolProperties.py:312 -#: flatcamTools/ToolProperties.py:315 flatcamTools/ToolProperties.py:318 -msgid "None" -msgstr "Keiner" - #: flatcamTools/ToolProperties.py:352 msgid "Width" msgstr "Breite" @@ -13329,14 +13360,6 @@ msgstr "" "Diese Geometrie kann nicht verarbeitet werden. KEINE Geometrie " "\"Lötpaste_Tool\"." -#: flatcamTools/ToolSolderPaste.py:1187 -msgid "Cancelled. Empty file, it has no geometry" -msgstr "Abgebrochen. Leere Datei hat keine Geometrie ..." - -#: flatcamTools/ToolSolderPaste.py:1214 -msgid "An internal error has ocurred. See shell.\n" -msgstr "Ein interner Fehler ist aufgetreten. Siehe Shell.\n" - #: flatcamTools/ToolSolderPaste.py:1285 msgid "ToolSolderPaste CNCjob created" msgstr "Werkzeuglötpaste CNC-Auftrag erstellt" @@ -13354,7 +13377,6 @@ msgid "No Gcode in the object" msgstr "Kein Gcode im Objekt ..." #: flatcamTools/ToolSolderPaste.py:1358 -#| msgid "[ERROR] ToolSolderPaste.on_view_gcode() -->%s" msgid "ToolSolderPaste.on_view_gcode()" msgstr "ToolSolderPaste.on_view_gcode()" @@ -13362,22 +13384,6 @@ msgstr "ToolSolderPaste.on_view_gcode()" msgid "Export GCode ..." msgstr "GCode exportieren ..." -#: flatcamTools/ToolSolderPaste.py:1397 -msgid "Export Machine Code cancelled ..." -msgstr "Maschinencode exportieren abgebrochen ..." - -#: flatcamTools/ToolSolderPaste.py:1424 -msgid "No such file or directory" -msgstr "Keine solche Datei oder Ordner" - -#: flatcamTools/ToolSolderPaste.py:1428 -msgid "" -"Permission denied, saving not possible.\n" -"Most likely another app is holding the file open and not accessible." -msgstr "" -"Berechtigung verweigert, Speichern nicht möglich.\n" -"Wahrscheinlich hält eine andere App die Datei offen und ist nicht zugänglich." - #: flatcamTools/ToolSolderPaste.py:1436 msgid "Solder paste dispenser GCode file saved to" msgstr "Lotpastenspender GCode-Datei gespeichert in" @@ -13680,6 +13686,191 @@ msgstr "" "Kein Geometriename in args. Geben Sie einen Namen ein und versuchen Sie es " "erneut." +#~ msgid "[ERROR_NOTCL] Could not load defaults file." +#~ msgstr "[ERROR_NOTCL] Standarddatei konnte nicht geladen werden." + +#~ msgid "[ERROR_NOTCL] Failed to parse defaults file." +#~ msgstr "[ERROR_NOTCL] Fehler beim Parsen der Standarddatei." + +#~ msgid "" +#~ "[WARNING] Permission denied, saving not possible.\n" +#~ "Most likely another app is holding the file open and not accessible." +#~ msgstr "" +#~ "[WARNING] Berechtigung verweigert, Speichern nicht möglich.\n" +#~ "Wahrscheinlich hält eine andere App die Datei offen und ist nicht " +#~ "zugänglich." + +#~ msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" +#~ msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + +#~ msgid "[success] Defaults saved." +#~ msgstr "[success] Standardeinstellungen gespeichert." + +#~ msgid "[success] Converted units to %s" +#~ msgstr "[success] Einheiten in umgerechnet %s" + +#~ msgid "[WARNING_NOTCL] Export Code cancelled." +#~ msgstr "[WARNING_NOTCL] Exportcode wurde abgebrochen." + +#~ msgid "[WARNING] No such file or directory" +#~ msgstr "[WARNING] Keine solche Datei oder Ordner" + +#~ msgid "" +#~ "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in " +#~ "Float format." +#~ msgstr "" +#~ "[WARNING_NOTCL] Bitte geben Sie einen Werkzeugdurchmesser mit einem Wert " +#~ "ungleich Null im Float-Format ein." + +#~ msgid "[success] Origin set ..." +#~ msgstr "[success] Ursprung gesetzt ..." + +#~ msgid "[success] Flip on Y axis done." +#~ msgstr "[success] Y-Achse umdrehen fertig." + +#~ msgid "[success] Flip on X axis done." +#~ msgstr "[success] Dreh auf der X-Achse fertig." + +#~ msgid "[success] Rotation done." +#~ msgstr "[success] Rotation erfolgt." + +#~ msgid "[success] Skew on X axis done." +#~ msgstr "[success] Neigung auf der X-Achse fertig." + +#~ msgid "[success] Skew on Y axis done." +#~ msgstr "[success] Neigung auf der Y-Achse fertig." + +#~ msgid "[success] New Grid added ..." +#~ msgstr "[success] Neues Netz hinzugefügt ..." + +#~ msgid "[WARNING_NOTCL] Open Gerber cancelled." +#~ msgstr "[WARNING_NOTCL] Offener Gerber abgebrochen." + +#~ msgid "[WARNING_NOTCL] Open G-Code cancelled." +#~ msgstr "[WARNING_NOTCL] Geöffneter G-Code wurde abgebrochen." + +#~ msgid "[WARNING_NOTCL] Open Project cancelled." +#~ msgstr "[WARNING_NOTCL] Projekt abbrechen abgebrochen." + +#~ msgid "[WARNING_NOTCL] Open Config cancelled." +#~ msgstr "[WARNING_NOTCL] Offene Konfiguration abgebrochen." + +#~ msgid "[WARNING_NOTCL] No object selected." +#~ msgstr "[WARNING_NOTCL] Kein Objekt ausgewählt." + +#~ msgid "[WARNING_NOTCL] Export SVG cancelled." +#~ msgstr "[WARNING_NOTCL] Export SVG abgebrochen." + +#~ msgid "[WARNING_NOTCL] Export Excellon cancelled." +#~ msgstr "[WARNING_NOTCL] Export Excellon wurde abgebrochen." + +#~ msgid "[WARNING_NOTCL] Export Gerber cancelled." +#~ msgstr "[WARNING_NOTCL] Export Gerber abgebrochen." + +#~ msgid "[WARNING_NOTCL] Export DXF cancelled." +#~ msgstr "[WARNING_NOTCL] Export DXF wurde abgebrochen." + +#~ msgid "[WARNING_NOTCL] Open SVG cancelled." +#~ msgstr "[WARNING_NOTCL] Open SVG abgebrochen." + +#~ msgid "[WARNING_NOTCL] Open DXF cancelled." +#~ msgstr "[WARNING_NOTCL] Open DXF cancelled." + +#~ msgid "[WARNING_NOTCL] No object Box. Using instead %s" +#~ msgstr "[WARNING_NOTCL] Kein Objektfeld. Stattdessen verwenden %s" + +#~ msgid "[ERROR_NOTCL] This is not Excellon file." +#~ msgstr "[ERROR_NOTCL] Dies ist keine Excellon-Datei." + +#~ msgid "[ERROR_NOTCL] Cannot open file: %s" +#~ msgstr "[ERROR_NOTCL] Kann Datei nicht öffnen: %s" + +#~ msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" +#~ msgstr "[ERROR_NOTCL] Ein interner Fehler ist aufgetreten. Siehe Shell.\n" + +#~ msgid "[ERROR_NOTCL] No geometry found in file: %s" +#~ msgstr "[ERROR_NOTCL] Keine Geometrie in der Datei gefunden: %s" + +#~ msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." +#~ msgstr "" +#~ "[ERROR_NOTCL] Fehler beim Überprüfen der Projektdatei:%s. Versuchen Sie " +#~ "es erneut zu speichern." + +#~ msgid "" +#~ "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." +#~ msgstr "" +#~ "[ERROR_NOTCL] Die gespeicherte Projektdatei konnte nicht analysiert " +#~ "werden:%s. Versuchen Sie es erneut zu speichern." + +#~ msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." +#~ msgstr "" +#~ "[ERROR_NOTCL] Projektdatei konnte nicht gespeichert werden:%s. Versuchen " +#~ "Sie es erneut zu speichern." + +#~ msgid "[ERROR_NOTCL] Isolation geometry could not be generated." +#~ msgstr "[ERROR_NOTCL] Isolationsgeometrie konnte nicht generiert werden." + +#~ msgid "" +#~ "[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " +#~ "format (x, y) \n" +#~ "but now there is only one value, not two. " +#~ msgstr "" +#~ "[ERROR] Das Feld X, Y des Werkzeugwechsels in Bearbeiten -> " +#~ "Voreinstellungen muss das Format (x, y) haben.\n" +#~ "Aber jetzt gibt es nur einen Wert, nicht zwei. " + +#~ msgid "[WARNING_NOTCL] Failed. Select a tool to delete." +#~ msgstr "" +#~ "[WARNING_NOTCL] Fehlgeschlagen. Wählen Sie ein Werkzeug zum Löschen aus." + +#~ msgid "[ERROR_NOTCL] Wrong Tool Dia value format entered, use a number." +#~ msgstr "" +#~ "[ERROR_NOTCL] Falsches Werkzeug Dia-Wertformat eingegeben, verwenden Sie " +#~ "eine Zahl." + +#~ msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..." +#~ msgstr "[ERROR_NOTCL] Abgebrochen. Leere Datei, es hat keine Geometrie ..." + +#~| msgid "[success] Panel done..." +#~ msgid "[success] Finished G-Code processing..." +#~ msgstr "[success] Fertige G-Code Verarbeitung ..." + +#~ msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float." +#~ msgstr "" +#~ "[ERROR_NOTCL] Der Skalierungsfaktor muss eine Zahl sein: Ganzzahl oder " +#~ "Fließkommazahl." + +#~ msgid "" +#~ "[ERROR_NOTCL] An (x,y) pair of values are needed. Probable you entered " +#~ "only one value in the Offset field." +#~ msgstr "" +#~ "[ERROR_NOTCL] Ein (x, y) Wertepaar wird benötigt. Wahrscheinlich haben " +#~ "Sie im Feld Offset nur einen Wert eingegeben." + +#~ msgid "[WARNING_NOTCL] Export Machine Code cancelled ..." +#~ msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..." + +#~ msgid "[WARNING_NOTCL] No such file or directory" +#~ msgstr "[WARNING_NOTCL] Keine solche Datei oder Ordner" + +#~ msgid "[success] Object was mirrored ..." +#~ msgstr "[success] Objekt wurde gespiegelt ..." + +#~ msgid "Finished G-Code generation... %s paths traced." +#~ msgstr "G-Code-Generierung abgeschlossen … %s Pfade verfolgt." + +#~ msgid "" +#~ "[ERROR_NOTCL] The Tool Offset value is too negative to use for the " +#~ "current_geometry.\n" +#~ "Raise the value (in module) and try again." +#~ msgstr "" +#~ "[ERROR_NOTCL] Der Werkzeugkorrekturwert ist zu negativ, um ihn für " +#~ "current_geometry zu verwenden.\n" +#~ "Erhöhen Sie den Wert (im Modul) und versuchen Sie es erneut." + +#~ msgid "Finished SolderPste G-Code generation... %s paths traced." +#~ msgstr "Fertige SolderPste-G-Code-Generierung … %s Pfade verfolgt." + #, fuzzy #~| msgid "Plot Options" #~ msgid "Plotting..." @@ -13912,9 +14103,6 @@ msgstr "" #~ "durch ein ausgewähltes Objekt beschrieben.
Ein neues Geometrieobjekt " #~ "mit den Werkzeugpfaden wird erstellt." -#~ msgid "Done." -#~ msgstr "Gemacht." - #~ msgid "Apertures:" #~ msgstr " Blenden: " @@ -14824,9 +15012,6 @@ msgstr "" #~ msgid "[ERROR_NOTCL]Could not load defaults file." #~ msgstr "[ERROR_NOTCL] Standarddatei konnte nicht geladen werden." -#~ msgid "[ERROR_NOTCL] Failed to parse project file: %s" -#~ msgstr "[ERROR_NOTCL] Fehler beim Parsen der Projektdatei: %s" - #~ msgid "[WARNING_NOTCL]Export Machine Code cancelled ..." #~ msgstr "[WARNING_NOTCL] Maschinencode wurde abgebrochen ..." diff --git a/locale_template/strings.pot b/locale_template/strings.pot index 92b97488..184600c0 100644 --- a/locale_template/strings.pot +++ b/locale_template/strings.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-09-09 17:24+0300\n" +"POT-Creation-Date: 2019-09-09 18:59+0300\n" "PO-Revision-Date: 2019-03-25 15:08+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -23,79 +23,79 @@ msgstr "" "X-Poedit-SearchPathExcluded-1: doc\n" "X-Poedit-SearchPathExcluded-2: tests\n" -#: FlatCAMApp.py:1112 -msgid "[ERROR] Could not find the Language files. The App strings are missing." +#: FlatCAMApp.py:1113 +msgid "Could not find the Language files. The App strings are missing." msgstr "" -#: FlatCAMApp.py:1654 +#: FlatCAMApp.py:1655 msgid "Detachable Tabs" msgstr "" -#: FlatCAMApp.py:2066 +#: FlatCAMApp.py:2067 msgid "" "Open Source Software - Type help to get started\n" "\n" msgstr "" -#: FlatCAMApp.py:2269 FlatCAMApp.py:7147 +#: FlatCAMApp.py:2270 FlatCAMApp.py:7220 msgid "New Project - Not saved" msgstr "" -#: FlatCAMApp.py:2319 ObjectCollection.py:80 flatcamTools/ToolImage.py:218 +#: FlatCAMApp.py:2320 ObjectCollection.py:80 flatcamTools/ToolImage.py:218 #: flatcamTools/ToolPcbWizard.py:301 flatcamTools/ToolPcbWizard.py:324 msgid "Open cancelled." msgstr "" -#: FlatCAMApp.py:2334 +#: FlatCAMApp.py:2335 msgid "Open Config file failed." msgstr "" -#: FlatCAMApp.py:2348 +#: FlatCAMApp.py:2349 msgid "Open Script file failed." msgstr "" -#: FlatCAMApp.py:2365 +#: FlatCAMApp.py:2366 msgid "Open Excellon file failed." msgstr "" -#: FlatCAMApp.py:2376 +#: FlatCAMApp.py:2377 msgid "Open GCode file failed." msgstr "" -#: FlatCAMApp.py:2387 +#: FlatCAMApp.py:2388 msgid "Open Gerber file failed." msgstr "" -#: FlatCAMApp.py:2650 -msgid "[WARNING_NOTCL] Select a Geometry, Gerber or Excellon Object to edit." +#: FlatCAMApp.py:2652 +msgid "Select a Geometry, Gerber or Excellon Object to edit." msgstr "" -#: FlatCAMApp.py:2663 +#: FlatCAMApp.py:2666 msgid "" -"[WARNING_NOTCL] Simultanoeus editing of tools geometry in a MultiGeo " -"Geometry is not possible.\n" +"Simultanoeus editing of tools geometry in a MultiGeo Geometry is not " +"possible.\n" "Edit only one geometry at a time." msgstr "" -#: FlatCAMApp.py:2717 -msgid "[WARNING_NOTCL] Editor is activated ..." +#: FlatCAMApp.py:2721 +msgid "Editor is activated ..." msgstr "" -#: FlatCAMApp.py:2735 +#: FlatCAMApp.py:2739 msgid "Do you want to save the edited object?" msgstr "" -#: FlatCAMApp.py:2736 flatcamGUI/FlatCAMGUI.py:1721 +#: FlatCAMApp.py:2740 flatcamGUI/FlatCAMGUI.py:1721 msgid "Close Editor" msgstr "" -#: FlatCAMApp.py:2739 FlatCAMApp.py:3995 FlatCAMApp.py:6168 FlatCAMApp.py:7056 +#: FlatCAMApp.py:2743 FlatCAMApp.py:4028 FlatCAMApp.py:6224 FlatCAMApp.py:7128 #: FlatCAMTranslation.py:96 FlatCAMTranslation.py:169 #: flatcamGUI/FlatCAMGUI.py:3996 msgid "Yes" msgstr "" -#: FlatCAMApp.py:2740 FlatCAMApp.py:3996 FlatCAMApp.py:6169 FlatCAMApp.py:7057 +#: FlatCAMApp.py:2744 FlatCAMApp.py:4029 FlatCAMApp.py:6225 FlatCAMApp.py:7129 #: FlatCAMTranslation.py:97 FlatCAMTranslation.py:170 #: flatcamGUI/FlatCAMGUI.py:3997 flatcamGUI/FlatCAMGUI.py:6517 #: flatcamGUI/FlatCAMGUI.py:6877 flatcamTools/ToolNonCopperClear.py:171 @@ -103,108 +103,111 @@ msgstr "" msgid "No" msgstr "" -#: FlatCAMApp.py:2741 FlatCAMApp.py:3997 FlatCAMApp.py:4675 FlatCAMApp.py:5671 -#: FlatCAMApp.py:7058 +#: FlatCAMApp.py:2745 FlatCAMApp.py:4030 FlatCAMApp.py:4719 FlatCAMApp.py:5720 +#: FlatCAMApp.py:7130 msgid "Cancel" msgstr "" -#: FlatCAMApp.py:2768 -msgid "[WARNING] Object empty after edit." +#: FlatCAMApp.py:2773 +msgid "Object empty after edit." msgstr "" -#: FlatCAMApp.py:2790 FlatCAMApp.py:2809 FlatCAMApp.py:2821 -msgid "[WARNING_NOTCL] Select a Gerber, Geometry or Excellon Object to update." +#: FlatCAMApp.py:2796 FlatCAMApp.py:2817 FlatCAMApp.py:2830 +msgid "Select a Gerber, Geometry or Excellon Object to update." msgstr "" -#: FlatCAMApp.py:2793 -#, python-format -msgid "[selected] %s is updated, returning to App..." +#: FlatCAMApp.py:2800 +msgid "is updated, returning to App..." msgstr "" -#: FlatCAMApp.py:3176 -msgid "[ERROR] Could not load defaults file." +#: FlatCAMApp.py:3186 FlatCAMApp.py:3240 FlatCAMApp.py:3889 +msgid "Could not load defaults file." msgstr "" -#: FlatCAMApp.py:3188 -msgid "[ERROR] Failed to parse defaults file." +#: FlatCAMApp.py:3199 FlatCAMApp.py:3249 FlatCAMApp.py:3899 +msgid "Failed to parse defaults file." msgstr "" -#: FlatCAMApp.py:3209 FlatCAMApp.py:3213 +#: FlatCAMApp.py:3220 FlatCAMApp.py:3224 msgid "Import FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:3219 -msgid "[WARNING_NOTCL] FlatCAM preferences import cancelled." +#: FlatCAMApp.py:3231 +msgid "FlatCAM preferences import cancelled." msgstr "" -#: FlatCAMApp.py:3227 FlatCAMApp.py:3291 FlatCAMApp.py:3863 -msgid "[ERROR_NOTCL] Could not load defaults file." +#: FlatCAMApp.py:3254 +msgid "Imported Defaults from" msgstr "" -#: FlatCAMApp.py:3235 FlatCAMApp.py:3872 -msgid "[ERROR_NOTCL] Failed to parse defaults file." -msgstr "" - -#: FlatCAMApp.py:3239 -#, python-format -msgid "[success] Imported Defaults from %s" -msgstr "" - -#: FlatCAMApp.py:3259 FlatCAMApp.py:3264 +#: FlatCAMApp.py:3274 FlatCAMApp.py:3279 msgid "Export FlatCAM Preferences" msgstr "" -#: FlatCAMApp.py:3271 -msgid "[WARNING_NOTCL] FlatCAM preferences export cancelled." +#: FlatCAMApp.py:3287 +msgid "FlatCAM preferences export cancelled." msgstr "" -#: FlatCAMApp.py:3279 FlatCAMApp.py:5482 FlatCAMApp.py:8006 FlatCAMApp.py:8119 -#: FlatCAMApp.py:8242 FlatCAMApp.py:8299 FlatCAMApp.py:8412 FlatCAMApp.py:8537 +#: FlatCAMApp.py:3296 FlatCAMApp.py:5531 FlatCAMApp.py:8113 FlatCAMApp.py:8229 +#: FlatCAMApp.py:8355 FlatCAMApp.py:8414 FlatCAMApp.py:8528 FlatCAMApp.py:8657 +#: FlatCAMObj.py:6165 flatcamTools/ToolSolderPaste.py:1428 msgid "" -"[WARNING] Permission denied, saving not possible.\n" +"Permission denied, saving not possible.\n" "Most likely another app is holding the file open and not accessible." msgstr "" -#: FlatCAMApp.py:3310 FlatCAMApp.py:3917 -msgid "[ERROR_NOTCL] Failed to write defaults to file." +#: FlatCAMApp.py:3309 +msgid "Could not load preferences file." msgstr "" -#: FlatCAMApp.py:3403 -msgid "[ERROR_NOTCL] Failed to open recent files file for writing." +#: FlatCAMApp.py:3329 FlatCAMApp.py:3945 +msgid "Failed to write defaults to file." msgstr "" -#: FlatCAMApp.py:3413 -msgid "[ERROR_NOTCL] Failed to open recent projects file for writing." +#: FlatCAMApp.py:3335 +msgid "Exported preferences to" msgstr "" -#: FlatCAMApp.py:3495 camlib.py:4772 -msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n" +#: FlatCAMApp.py:3352 +msgid "FlatCAM Preferences Folder opened." msgstr "" -#: FlatCAMApp.py:3496 +#: FlatCAMApp.py:3425 +msgid "Failed to open recent files file for writing." +msgstr "" + +#: FlatCAMApp.py:3436 +msgid "Failed to open recent projects file for writing." +msgstr "" + +#: FlatCAMApp.py:3519 camlib.py:4797 flatcamTools/ToolSolderPaste.py:1214 +msgid "An internal error has ocurred. See shell.\n" +msgstr "" + +#: FlatCAMApp.py:3520 #, python-brace-format msgid "" "Object ({kind}) failed because: {error} \n" "\n" msgstr "" -#: FlatCAMApp.py:3516 +#: FlatCAMApp.py:3541 msgid "Converting units to " msgstr "" -#: FlatCAMApp.py:3612 FlatCAMApp.py:3615 FlatCAMApp.py:3618 FlatCAMApp.py:3621 +#: FlatCAMApp.py:3637 FlatCAMApp.py:3640 FlatCAMApp.py:3643 FlatCAMApp.py:3646 #, python-brace-format msgid "" "[selected] {kind} created/selected: {name}" msgstr "" -#: FlatCAMApp.py:3638 FlatCAMApp.py:5736 FlatCAMObj.py:225 FlatCAMObj.py:240 +#: FlatCAMApp.py:3663 FlatCAMApp.py:5787 FlatCAMObj.py:225 FlatCAMObj.py:240 #: FlatCAMObj.py:256 FlatCAMObj.py:336 flatcamTools/ToolMove.py:187 msgid "Plotting" msgstr "" -#: FlatCAMApp.py:3757 +#: FlatCAMApp.py:3782 #, python-brace-format msgid "" "FlatCAM
Version {version} {beta} ({date}) - " @@ -218,59 +221,59 @@ msgid "" "\"https://bitbucket.org/jpcgt/flatcam/downloads/\">here.
" msgstr "" -#: FlatCAMApp.py:3793 +#: FlatCAMApp.py:3818 msgid "Close" msgstr "" -#: FlatCAMApp.py:3921 -msgid "[success] Defaults saved." +#: FlatCAMApp.py:3950 FlatCAMApp.py:6234 +msgid "Preferences saved." msgstr "" -#: FlatCAMApp.py:3948 -msgid "[ERROR_NOTCL] Could not load factory defaults file." +#: FlatCAMApp.py:3978 +msgid "Could not load factory defaults file." msgstr "" -#: FlatCAMApp.py:3957 -msgid "[ERROR_NOTCL] Failed to parse factory defaults file." +#: FlatCAMApp.py:3988 +msgid "Failed to parse factory defaults file." msgstr "" -#: FlatCAMApp.py:3971 -msgid "[ERROR_NOTCL] Failed to write factory defaults to file." +#: FlatCAMApp.py:4003 +msgid "Failed to write factory defaults to file." msgstr "" -#: FlatCAMApp.py:3975 +#: FlatCAMApp.py:4007 msgid "Factory defaults saved." msgstr "" -#: FlatCAMApp.py:3985 flatcamGUI/FlatCAMGUI.py:3312 -msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." +#: FlatCAMApp.py:4018 +msgid "Application is saving the project. Please wait ..." msgstr "" -#: FlatCAMApp.py:3990 FlatCAMTranslation.py:164 +#: FlatCAMApp.py:4023 FlatCAMTranslation.py:164 msgid "" "There are files/objects modified in FlatCAM. \n" "Do you want to Save the project?" msgstr "" -#: FlatCAMApp.py:3993 FlatCAMApp.py:7054 FlatCAMTranslation.py:167 +#: FlatCAMApp.py:4026 FlatCAMApp.py:7126 FlatCAMTranslation.py:167 msgid "Save changes" msgstr "" -#: FlatCAMApp.py:4204 +#: FlatCAMApp.py:4237 msgid "[success] Selected Excellon file extensions registered with FlatCAM." msgstr "" -#: FlatCAMApp.py:4225 -msgid "[success] Selected GCode file extensions registered with FlatCAM." +#: FlatCAMApp.py:4259 +msgid "Selected GCode file extensions registered with FlatCAM." msgstr "" -#: FlatCAMApp.py:4246 -msgid "[success] Selected Gerber file extensions registered with FlatCAM." +#: FlatCAMApp.py:4281 +msgid "Selected Gerber file extensions registered with FlatCAM." msgstr "" -#: FlatCAMApp.py:4269 +#: FlatCAMApp.py:4305 msgid "" -"[ERROR] Failed join. The Geometry objects are of different types.\n" +"Failed join. The Geometry objects are of different types.\n" "At least one is MultiGeo type and the other is SingleGeo type. A possibility " "is to convert from one to another and retry joining \n" "but in the case of converting from MultiGeo to SingleGeo, informations may " @@ -278,259 +281,250 @@ msgid "" "Check the generated GCODE." msgstr "" -#: FlatCAMApp.py:4310 -msgid "[ERROR_NOTCL] Failed. Excellon joining works only on Excellon objects." +#: FlatCAMApp.py:4347 +msgid "Failed. Excellon joining works only on Excellon objects." msgstr "" -#: FlatCAMApp.py:4332 -msgid "[ERROR_NOTCL] Failed. Gerber joining works only on Gerber objects." +#: FlatCAMApp.py:4370 +msgid "Failed. Gerber joining works only on Gerber objects." msgstr "" -#: FlatCAMApp.py:4356 FlatCAMApp.py:4390 -msgid "[ERROR_NOTCL] Failed. Select a Geometry Object and try again." +#: FlatCAMApp.py:4395 FlatCAMApp.py:4432 +msgid "Failed. Select a Geometry Object and try again." msgstr "" -#: FlatCAMApp.py:4360 FlatCAMApp.py:4394 +#: FlatCAMApp.py:4400 +msgid "Expected a FlatCAMGeometry, got" +msgstr "" + +#: FlatCAMApp.py:4414 +msgid "A Geometry object was converted to MultiGeo type." +msgstr "" + +#: FlatCAMApp.py:4437 #, python-format -msgid "[ERROR_NOTCL] Expected a FlatCAMGeometry, got %s" +msgid "Expected a FlatCAMGeometry, got %s" msgstr "" -#: FlatCAMApp.py:4373 -msgid "[success] A Geometry object was converted to MultiGeo type." +#: FlatCAMApp.py:4452 +msgid "A Geometry object was converted to SingleGeo type." msgstr "" -#: FlatCAMApp.py:4408 -msgid "[success] A Geometry object was converted to SingleGeo type." -msgstr "" - -#: FlatCAMApp.py:4669 +#: FlatCAMApp.py:4713 msgid "Toggle Units" msgstr "" -#: FlatCAMApp.py:4671 +#: FlatCAMApp.py:4715 msgid "Change project units ..." msgstr "" -#: FlatCAMApp.py:4672 +#: FlatCAMApp.py:4716 msgid "" "Changing the units of the project causes all geometrical properties of all " "objects to be scaled accordingly.\n" "Continue?" msgstr "" -#: FlatCAMApp.py:4674 FlatCAMApp.py:5565 FlatCAMApp.py:5670 FlatCAMApp.py:7340 -#: FlatCAMApp.py:7353 FlatCAMApp.py:7593 FlatCAMApp.py:7603 +#: FlatCAMApp.py:4718 FlatCAMApp.py:5614 FlatCAMApp.py:5719 FlatCAMApp.py:7419 +#: FlatCAMApp.py:7433 FlatCAMApp.py:7688 FlatCAMApp.py:7699 msgid "Ok" msgstr "" -#: FlatCAMApp.py:4722 +#: FlatCAMApp.py:4767 #, python-format -msgid "[success] Converted units to %s" +msgid "Converted units to %s" msgstr "" -#: FlatCAMApp.py:4733 -msgid "[WARNING_NOTCL] Units conversion cancelled." +#: FlatCAMApp.py:4779 +msgid " Units conversion cancelled." msgstr "" -#: FlatCAMApp.py:5431 +#: FlatCAMApp.py:5477 msgid "Open file" msgstr "" -#: FlatCAMApp.py:5462 FlatCAMApp.py:5467 +#: FlatCAMApp.py:5508 FlatCAMApp.py:5513 msgid "Export G-Code ..." msgstr "" -#: FlatCAMApp.py:5470 -msgid "[WARNING_NOTCL] Export Code cancelled." +#: FlatCAMApp.py:5517 +msgid "Export Code cancelled." msgstr "" -#: FlatCAMApp.py:5479 -msgid "[WARNING] No such file or directory" +#: FlatCAMApp.py:5527 FlatCAMObj.py:6161 flatcamTools/ToolSolderPaste.py:1424 +msgid "No such file or directory" msgstr "" -#: FlatCAMApp.py:5490 +#: FlatCAMApp.py:5539 #, python-format msgid "Saved to: %s" msgstr "" -#: FlatCAMApp.py:5553 FlatCAMApp.py:5586 FlatCAMApp.py:5597 FlatCAMApp.py:5608 -msgid "" -"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float " -"format." +#: FlatCAMApp.py:5602 FlatCAMApp.py:5635 FlatCAMApp.py:5646 FlatCAMApp.py:5657 +#: flatcamTools/ToolNonCopperClear.py:915 flatcamTools/ToolSolderPaste.py:774 +msgid "Please enter a tool diameter with non-zero value, in Float format." msgstr "" -#: FlatCAMApp.py:5558 FlatCAMApp.py:5591 FlatCAMApp.py:5602 FlatCAMApp.py:5613 -#: flatcamGUI/FlatCAMGUI.py:3168 -msgid "[WARNING_NOTCL] Adding Tool cancelled ..." +#: FlatCAMApp.py:5607 FlatCAMApp.py:5640 FlatCAMApp.py:5662 +msgid "Adding Tool cancelled" msgstr "" -#: FlatCAMApp.py:5561 +#: FlatCAMApp.py:5610 msgid "" "Adding Tool works only when Advanced is checked.\n" "Go to Preferences -> General - Show Advanced Options." msgstr "" -#: FlatCAMApp.py:5665 +#: FlatCAMApp.py:5651 flatcamGUI/FlatCAMGUI.py:3168 +msgid "[WARNING_NOTCL] Adding Tool cancelled ..." +msgstr "" + +#: FlatCAMApp.py:5714 msgid "Delete objects" msgstr "" -#: FlatCAMApp.py:5668 +#: FlatCAMApp.py:5717 msgid "" "Are you sure you want to permanently delete\n" "the selected objects?" msgstr "" -#: FlatCAMApp.py:5697 -msgid "Object(s) deleted ..." +#: FlatCAMApp.py:5747 +msgid "Object(s) deleted" msgstr "" -#: FlatCAMApp.py:5701 +#: FlatCAMApp.py:5751 msgid "Failed. No object(s) selected..." msgstr "" -#: FlatCAMApp.py:5703 +#: FlatCAMApp.py:5753 msgid "Save the work in Editor and try again ..." msgstr "" -#: FlatCAMApp.py:5744 -msgid "Click to set the origin ..." -msgstr "" - -#: FlatCAMApp.py:5768 -msgid "Setting Origin..." -msgstr "" - -#: FlatCAMApp.py:5779 -msgid "[success] Origin set ..." -msgstr "" - -#: FlatCAMApp.py:5794 -msgid "Jump to ..." +#: FlatCAMApp.py:5771 +msgid "Object deleted" msgstr "" #: FlatCAMApp.py:5795 +msgid "Click to set the origin ..." +msgstr "" + +#: FlatCAMApp.py:5819 +msgid "Setting Origin..." +msgstr "" + +#: FlatCAMApp.py:5831 +msgid "Origin set" +msgstr "" + +#: FlatCAMApp.py:5846 +msgid "Jump to ..." +msgstr "" + +#: FlatCAMApp.py:5847 msgid "Enter the coordinates in format X,Y:" msgstr "" -#: FlatCAMApp.py:5802 +#: FlatCAMApp.py:5854 msgid "Wrong coordinates. Enter coordinates in format: X,Y" msgstr "" -#: FlatCAMApp.py:5820 flatcamEditors/FlatCAMExcEditor.py:3424 -#: flatcamEditors/FlatCAMExcEditor.py:3431 -#: flatcamEditors/FlatCAMGeoEditor.py:3741 -#: flatcamEditors/FlatCAMGeoEditor.py:3755 -#: flatcamEditors/FlatCAMGrbEditor.py:1057 -#: flatcamEditors/FlatCAMGrbEditor.py:1160 -#: flatcamEditors/FlatCAMGrbEditor.py:1433 -#: flatcamEditors/FlatCAMGrbEditor.py:1690 -#: flatcamEditors/FlatCAMGrbEditor.py:4156 -#: flatcamEditors/FlatCAMGrbEditor.py:4170 flatcamGUI/FlatCAMGUI.py:2560 -#: flatcamGUI/FlatCAMGUI.py:2572 -msgid "[success] Done." +#: FlatCAMApp.py:5873 +msgid "Done." msgstr "" -#: FlatCAMApp.py:5953 FlatCAMApp.py:6020 -msgid "[WARNING_NOTCL] No object is selected. Select an object and try again." +#: FlatCAMApp.py:6007 FlatCAMApp.py:6075 +msgid "No object is selected. Select an object and try again." msgstr "" -#: FlatCAMApp.py:6040 +#: FlatCAMApp.py:6095 msgid "" "Aborting. The current task will be gracefully closed as soon as possible..." msgstr "" -#: FlatCAMApp.py:6046 +#: FlatCAMApp.py:6101 msgid "The current task was gracefully closed on user request..." msgstr "" -#: FlatCAMApp.py:6063 flatcamGUI/GUIElements.py:1443 +#: FlatCAMApp.py:6118 flatcamGUI/GUIElements.py:1443 msgid "Preferences" msgstr "" -#: FlatCAMApp.py:6129 -msgid "[WARNING_NOTCL] Preferences edited but not saved." +#: FlatCAMApp.py:6185 +msgid "Preferences edited but not saved." msgstr "" -#: FlatCAMApp.py:6163 +#: FlatCAMApp.py:6219 msgid "" "One or more values are changed.\n" "Do you want to save the Preferences?" msgstr "" -#: FlatCAMApp.py:6165 flatcamGUI/FlatCAMGUI.py:198 flatcamGUI/FlatCAMGUI.py:989 +#: FlatCAMApp.py:6221 flatcamGUI/FlatCAMGUI.py:198 flatcamGUI/FlatCAMGUI.py:989 msgid "Save Preferences" msgstr "" -#: FlatCAMApp.py:6177 -msgid "[success] Preferences saved." +#: FlatCAMApp.py:6250 +msgid "No object selected to Flip on Y axis." msgstr "" -#: FlatCAMApp.py:6192 -msgid "[WARNING_NOTCL] No object selected to Flip on Y axis." +#: FlatCAMApp.py:6276 +msgid "Flip on Y axis done." msgstr "" -#: FlatCAMApp.py:6217 -msgid "[success] Flip on Y axis done." +#: FlatCAMApp.py:6279 FlatCAMApp.py:6322 +msgid "Flip action was not executed." msgstr "" -#: FlatCAMApp.py:6219 FlatCAMApp.py:6259 -#: flatcamEditors/FlatCAMGeoEditor.py:1357 -#: flatcamEditors/FlatCAMGrbEditor.py:5584 -#, python-format -msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." +#: FlatCAMApp.py:6293 +msgid "No object selected to Flip on X axis." msgstr "" -#: FlatCAMApp.py:6232 -msgid "[WARNING_NOTCL] No object selected to Flip on X axis." +#: FlatCAMApp.py:6319 +msgid "Flip on X axis done." msgstr "" -#: FlatCAMApp.py:6257 -msgid "[success] Flip on X axis done." +#: FlatCAMApp.py:6336 +msgid "No object selected to Rotate." msgstr "" -#: FlatCAMApp.py:6272 -msgid "[WARNING_NOTCL] No object selected to Rotate." -msgstr "" - -#: FlatCAMApp.py:6275 FlatCAMApp.py:6320 FlatCAMApp.py:6351 +#: FlatCAMApp.py:6339 FlatCAMApp.py:6387 FlatCAMApp.py:6420 msgid "Transform" msgstr "" -#: FlatCAMApp.py:6275 FlatCAMApp.py:6320 FlatCAMApp.py:6351 +#: FlatCAMApp.py:6339 FlatCAMApp.py:6387 FlatCAMApp.py:6420 msgid "Enter the Angle value:" msgstr "" -#: FlatCAMApp.py:6305 -msgid "[success] Rotation done." -msgstr "" - -#: FlatCAMApp.py:6307 flatcamEditors/FlatCAMGeoEditor.py:1300 -#: flatcamEditors/FlatCAMGrbEditor.py:5513 -#, python-format -msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." -msgstr "" - -#: FlatCAMApp.py:6318 -msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis." -msgstr "" - -#: FlatCAMApp.py:6339 -msgid "[success] Skew on X axis done." -msgstr "" - -#: FlatCAMApp.py:6349 -msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis." -msgstr "" - #: FlatCAMApp.py:6370 -msgid "[success] Skew on Y axis done." +msgid "Rotation done." msgstr "" -#: FlatCAMApp.py:6421 +#: FlatCAMApp.py:6373 +msgid "Rotation movement was not executed." +msgstr "" + +#: FlatCAMApp.py:6385 +msgid "No object selected to Skew/Shear on X axis." +msgstr "" + +#: FlatCAMApp.py:6407 +msgid "Skew on X axis done." +msgstr "" + +#: FlatCAMApp.py:6418 +msgid "No object selected to Skew/Shear on Y axis." +msgstr "" + +#: FlatCAMApp.py:6440 +msgid "Skew on Y axis done." +msgstr "" + +#: FlatCAMApp.py:6491 msgid "Grid On/Off" msgstr "" -#: FlatCAMApp.py:6434 flatcamEditors/FlatCAMGeoEditor.py:939 +#: FlatCAMApp.py:6504 flatcamEditors/FlatCAMGeoEditor.py:939 #: flatcamEditors/FlatCAMGrbEditor.py:2460 #: flatcamEditors/FlatCAMGrbEditor.py:5102 flatcamGUI/ObjectUI.py:1053 #: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:207 @@ -540,7 +534,7 @@ msgstr "" msgid "Add" msgstr "" -#: FlatCAMApp.py:6435 FlatCAMObj.py:3564 +#: FlatCAMApp.py:6505 FlatCAMObj.py:3564 #: flatcamEditors/FlatCAMGrbEditor.py:2465 flatcamGUI/FlatCAMGUI.py:545 #: flatcamGUI/FlatCAMGUI.py:748 flatcamGUI/FlatCAMGUI.py:1719 #: flatcamGUI/FlatCAMGUI.py:2094 flatcamGUI/ObjectUI.py:1069 @@ -549,282 +543,268 @@ msgstr "" msgid "Delete" msgstr "" -#: FlatCAMApp.py:6448 +#: FlatCAMApp.py:6518 msgid "New Grid ..." msgstr "" -#: FlatCAMApp.py:6449 +#: FlatCAMApp.py:6519 msgid "Enter a Grid Value:" msgstr "" -#: FlatCAMApp.py:6457 FlatCAMApp.py:6484 -msgid "" -"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float " -"format." +#: FlatCAMApp.py:6527 FlatCAMApp.py:6554 +msgid "Please enter a grid value with non-zero value, in Float format." msgstr "" -#: FlatCAMApp.py:6463 -msgid "[success] New Grid added ..." -msgstr "" - -#: FlatCAMApp.py:6466 -msgid "[WARNING_NOTCL] Grid already exists ..." -msgstr "" - -#: FlatCAMApp.py:6469 -msgid "[WARNING_NOTCL] Adding New Grid cancelled ..." -msgstr "" - -#: FlatCAMApp.py:6491 -msgid "[ERROR_NOTCL] Grid Value does not exist ..." -msgstr "" - -#: FlatCAMApp.py:6494 -msgid "[success] Grid Value deleted ..." -msgstr "" - -#: FlatCAMApp.py:6497 -msgid "[WARNING_NOTCL] Delete Grid value cancelled ..." -msgstr "" - -#: FlatCAMApp.py:6503 -msgid "Key Shortcut List" +#: FlatCAMApp.py:6533 +msgid "New Grid added" msgstr "" #: FlatCAMApp.py:6536 -msgid "[WARNING_NOTCL] No object selected to copy it's name" +msgid "Grid already exists" msgstr "" -#: FlatCAMApp.py:6540 +#: FlatCAMApp.py:6539 +msgid "Adding New Grid cancelled" +msgstr "" + +#: FlatCAMApp.py:6561 +msgid " Grid Value does not exist" +msgstr "" + +#: FlatCAMApp.py:6564 +msgid "Grid Value deleted" +msgstr "" + +#: FlatCAMApp.py:6567 +msgid "Delete Grid value cancelled" +msgstr "" + +#: FlatCAMApp.py:6573 +msgid "Key Shortcut List" +msgstr "" + +#: FlatCAMApp.py:6607 +msgid " No object selected to copy it's name" +msgstr "" + +#: FlatCAMApp.py:6611 msgid "Name copied on clipboard ..." msgstr "" -#: FlatCAMApp.py:6582 flatcamEditors/FlatCAMGrbEditor.py:4097 -msgid "[success] Coordinates copied to clipboard." +#: FlatCAMApp.py:6654 +msgid "Coordinates copied to clipboard." msgstr "" -#: FlatCAMApp.py:6835 FlatCAMApp.py:6839 FlatCAMApp.py:6843 FlatCAMApp.py:6847 -#: FlatCAMApp.py:6863 FlatCAMApp.py:6867 FlatCAMApp.py:6871 FlatCAMApp.py:6875 -#: FlatCAMApp.py:6915 FlatCAMApp.py:6918 FlatCAMApp.py:6921 FlatCAMApp.py:6924 +#: FlatCAMApp.py:6907 FlatCAMApp.py:6911 FlatCAMApp.py:6915 FlatCAMApp.py:6919 +#: FlatCAMApp.py:6935 FlatCAMApp.py:6939 FlatCAMApp.py:6943 FlatCAMApp.py:6947 +#: FlatCAMApp.py:6987 FlatCAMApp.py:6990 FlatCAMApp.py:6993 FlatCAMApp.py:6996 #: ObjectCollection.py:725 ObjectCollection.py:728 ObjectCollection.py:731 #: ObjectCollection.py:734 #, python-brace-format msgid "[selected]{name} selected" msgstr "" -#: FlatCAMApp.py:7051 +#: FlatCAMApp.py:7123 msgid "" "There are files/objects opened in FlatCAM.\n" "Creating a New project will delete them.\n" "Do you want to Save the project?" msgstr "" -#: FlatCAMApp.py:7072 -msgid "[success] New Project created..." +#: FlatCAMApp.py:7145 +msgid "New Project created" msgstr "" -#: FlatCAMApp.py:7192 FlatCAMApp.py:7196 flatcamGUI/FlatCAMGUI.py:626 +#: FlatCAMApp.py:7265 FlatCAMApp.py:7269 flatcamGUI/FlatCAMGUI.py:626 #: flatcamGUI/FlatCAMGUI.py:1970 msgid "Open Gerber" msgstr "" -#: FlatCAMApp.py:7203 -msgid "[WARNING_NOTCL] Open Gerber cancelled." +#: FlatCAMApp.py:7277 +msgid "Open Gerber cancelled." msgstr "" -#: FlatCAMApp.py:7223 FlatCAMApp.py:7227 flatcamGUI/FlatCAMGUI.py:627 +#: FlatCAMApp.py:7297 FlatCAMApp.py:7301 flatcamGUI/FlatCAMGUI.py:627 #: flatcamGUI/FlatCAMGUI.py:1971 msgid "Open Excellon" msgstr "" -#: FlatCAMApp.py:7233 -msgid "[WARNING_NOTCL] Open Excellon cancelled." +#: FlatCAMApp.py:7308 +msgid " Open Excellon cancelled." msgstr "" -#: FlatCAMApp.py:7256 FlatCAMApp.py:7260 +#: FlatCAMApp.py:7331 FlatCAMApp.py:7335 msgid "Open G-Code" msgstr "" -#: FlatCAMApp.py:7267 -msgid "[WARNING_NOTCL] Open G-Code cancelled." +#: FlatCAMApp.py:7343 +msgid "Open G-Code cancelled." msgstr "" -#: FlatCAMApp.py:7284 FlatCAMApp.py:7287 +#: FlatCAMApp.py:7360 FlatCAMApp.py:7363 msgid "Open Project" msgstr "" -#: FlatCAMApp.py:7295 -msgid "[WARNING_NOTCL] Open Project cancelled." +#: FlatCAMApp.py:7372 +msgid "Open Project cancelled." msgstr "" -#: FlatCAMApp.py:7314 FlatCAMApp.py:7317 +#: FlatCAMApp.py:7391 FlatCAMApp.py:7394 msgid "Open Configuration File" msgstr "" -#: FlatCAMApp.py:7321 -msgid "[WARNING_NOTCL] Open Config cancelled." +#: FlatCAMApp.py:7399 +msgid "Open Config cancelled." msgstr "" -#: FlatCAMApp.py:7336 FlatCAMApp.py:7589 FlatCAMApp.py:9941 FlatCAMApp.py:9961 -#: FlatCAMApp.py:9982 FlatCAMApp.py:10004 -msgid "[WARNING_NOTCL] No object selected." +#: FlatCAMApp.py:7415 FlatCAMApp.py:7684 FlatCAMApp.py:10117 +#: FlatCAMApp.py:10138 FlatCAMApp.py:10160 FlatCAMApp.py:10183 +msgid "No object selected." msgstr "" -#: FlatCAMApp.py:7337 FlatCAMApp.py:7590 +#: FlatCAMApp.py:7416 FlatCAMApp.py:7685 msgid "Please Select a Geometry object to export" msgstr "" -#: FlatCAMApp.py:7350 -msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used." +#: FlatCAMApp.py:7430 +msgid "Only Geometry, Gerber and CNCJob objects can be used." msgstr "" -#: FlatCAMApp.py:7363 FlatCAMApp.py:7367 +#: FlatCAMApp.py:7443 FlatCAMApp.py:7447 msgid "Export SVG" msgstr "" -#: FlatCAMApp.py:7372 -msgid "[WARNING_NOTCL] Export SVG cancelled." +#: FlatCAMApp.py:7453 +msgid " Export SVG cancelled." msgstr "" -#: FlatCAMApp.py:7391 -msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4" -msgstr "" - -#: FlatCAMApp.py:7397 FlatCAMApp.py:7401 -msgid "Export PNG Image" -msgstr "" - -#: FlatCAMApp.py:7406 -msgid "Export PNG cancelled." -msgstr "" - -#: FlatCAMApp.py:7425 -msgid "" -"[WARNING_NOTCL] No object selected. Please select an Gerber object to export." -msgstr "" - -#: FlatCAMApp.py:7430 FlatCAMApp.py:7553 -msgid "" -"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..." -msgstr "" - -#: FlatCAMApp.py:7442 -msgid "Save Gerber source file" -msgstr "" - -#: FlatCAMApp.py:7447 -msgid "[WARNING_NOTCL] Save Gerber source file cancelled." -msgstr "" - -#: FlatCAMApp.py:7466 -msgid "" -"[WARNING_NOTCL] No object selected. Please select an Excellon object to " -"export." -msgstr "" - -#: FlatCAMApp.py:7471 FlatCAMApp.py:7512 -msgid "" -"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..." +#: FlatCAMApp.py:7473 +msgid "Data must be a 3D array with last dimension 3 or 4" msgstr "" #: FlatCAMApp.py:7479 FlatCAMApp.py:7483 -msgid "Save Excellon source file" +msgid "Export PNG Image" msgstr "" #: FlatCAMApp.py:7488 -msgid "[WARNING_NOTCL] Saving Excellon source file cancelled." +msgid "Export PNG cancelled." msgstr "" -#: FlatCAMApp.py:7507 -msgid "" -"[WARNING_NOTCL] No object selected. Please Select an Excellon object to " -"export." +#: FlatCAMApp.py:7508 +msgid "No object selected. Please select an Gerber object to export." msgstr "" -#: FlatCAMApp.py:7520 FlatCAMApp.py:7524 +#: FlatCAMApp.py:7514 FlatCAMApp.py:7646 +msgid "Failed. Only Gerber objects can be saved as Gerber files..." +msgstr "" + +#: FlatCAMApp.py:7526 +msgid "Save Gerber source file" +msgstr "" + +#: FlatCAMApp.py:7532 +msgid "Save Gerber source file cancelled." +msgstr "" + +#: FlatCAMApp.py:7552 +msgid "No object selected. Please select an Excellon object to export." +msgstr "" + +#: FlatCAMApp.py:7558 FlatCAMApp.py:7602 +msgid "Failed. Only Excellon objects can be saved as Excellon files..." +msgstr "" + +#: FlatCAMApp.py:7566 FlatCAMApp.py:7570 +msgid "Save Excellon source file" +msgstr "" + +#: FlatCAMApp.py:7576 +msgid "Saving Excellon source file cancelled." +msgstr "" + +#: FlatCAMApp.py:7596 +msgid "No object selected. Please Select an Excellon object to export." +msgstr "" + +#: FlatCAMApp.py:7610 FlatCAMApp.py:7614 msgid "Export Excellon" msgstr "" -#: FlatCAMApp.py:7529 -msgid "[WARNING_NOTCL] Export Excellon cancelled." +#: FlatCAMApp.py:7620 +msgid "Export Excellon cancelled." msgstr "" -#: FlatCAMApp.py:7548 -msgid "" -"[WARNING_NOTCL] No object selected. Please Select an Gerber object to export." +#: FlatCAMApp.py:7640 +msgid "No object selected. Please Select an Gerber object to export." msgstr "" -#: FlatCAMApp.py:7561 FlatCAMApp.py:7565 +#: FlatCAMApp.py:7654 FlatCAMApp.py:7658 msgid "Export Gerber" msgstr "" -#: FlatCAMApp.py:7570 -msgid "[WARNING_NOTCL] Export Gerber cancelled." +#: FlatCAMApp.py:7664 +msgid "Export Gerber cancelled." msgstr "" -#: FlatCAMApp.py:7600 -msgid "[ERROR_NOTCL] Only Geometry objects can be used." +#: FlatCAMApp.py:7696 +msgid "Only Geometry objects can be used." msgstr "" -#: FlatCAMApp.py:7614 FlatCAMApp.py:7618 +#: FlatCAMApp.py:7710 FlatCAMApp.py:7714 msgid "Export DXF" msgstr "" -#: FlatCAMApp.py:7624 -msgid "[WARNING_NOTCL] Export DXF cancelled." +#: FlatCAMApp.py:7721 +msgid "Export DXF cancelled." msgstr "" -#: FlatCAMApp.py:7644 FlatCAMApp.py:7647 +#: FlatCAMApp.py:7741 FlatCAMApp.py:7744 msgid "Import SVG" msgstr "" -#: FlatCAMApp.py:7656 -msgid "[WARNING_NOTCL] Open SVG cancelled." +#: FlatCAMApp.py:7754 +msgid "Open SVG cancelled." msgstr "" -#: FlatCAMApp.py:7675 FlatCAMApp.py:7679 +#: FlatCAMApp.py:7773 FlatCAMApp.py:7777 msgid "Import DXF" msgstr "" -#: FlatCAMApp.py:7688 -msgid "[WARNING_NOTCL] Open DXF cancelled." +#: FlatCAMApp.py:7787 +msgid "Open DXF cancelled." msgstr "" -#: FlatCAMApp.py:7706 +#: FlatCAMApp.py:7805 #, python-format msgid "%s" msgstr "" -#: FlatCAMApp.py:7726 -msgid "" -"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file." +#: FlatCAMApp.py:7826 +msgid "Select an Gerber or Excellon file to view it's source file." msgstr "" -#: FlatCAMApp.py:7733 -msgid "" -"[WARNING_NOTCL] There is no selected object for which to see it's source " -"file code." +#: FlatCAMApp.py:7834 +msgid "There is no selected object for which to see it's source file code." msgstr "" -#: FlatCAMApp.py:7741 +#: FlatCAMApp.py:7842 msgid "Source Editor" msgstr "" -#: FlatCAMApp.py:7751 -#, python-format -msgid "[ERROR]App.on_view_source() -->%s" +#: FlatCAMApp.py:7853 +msgid "App.on_view_source() -->" msgstr "" -#: FlatCAMApp.py:7763 FlatCAMApp.py:8964 FlatCAMObj.py:5944 +#: FlatCAMApp.py:7865 FlatCAMApp.py:9112 FlatCAMObj.py:5944 #: flatcamTools/ToolSolderPaste.py:1304 msgid "Code Editor" msgstr "" -#: FlatCAMApp.py:7775 +#: FlatCAMApp.py:7877 msgid "Script Editor" msgstr "" -#: FlatCAMApp.py:7778 +#: FlatCAMApp.py:7880 msgid "" "#\n" "# CREATE A NEW FLATCAM TCL SCRIPT\n" @@ -848,222 +828,209 @@ msgid "" "\n" msgstr "" -#: FlatCAMApp.py:7801 FlatCAMApp.py:7804 +#: FlatCAMApp.py:7903 FlatCAMApp.py:7906 msgid "Open TCL script" msgstr "" -#: FlatCAMApp.py:7812 -msgid "[WARNING_NOTCL] Open TCL script cancelled." +#: FlatCAMApp.py:7915 +msgid "Open TCL script cancelled." msgstr "" -#: FlatCAMApp.py:7824 -#, python-format -msgid "[ERROR]App.on_fileopenscript() -->%s" +#: FlatCAMApp.py:7928 +msgid "App.on_fileopenscript() -->" msgstr "" -#: FlatCAMApp.py:7850 FlatCAMApp.py:7853 +#: FlatCAMApp.py:7954 FlatCAMApp.py:7957 msgid "Run TCL script" msgstr "" -#: FlatCAMApp.py:7861 -msgid "[WARNING_NOTCL] Run TCL script cancelled." +#: FlatCAMApp.py:7966 +msgid "Run TCL script cancelled." msgstr "" -#: FlatCAMApp.py:7916 FlatCAMApp.py:7920 +#: FlatCAMApp.py:8021 FlatCAMApp.py:8025 msgid "Save Project As ..." msgstr "" -#: FlatCAMApp.py:7917 +#: FlatCAMApp.py:8022 #, python-brace-format msgid "{l_save}/Project_{date}" msgstr "" -#: FlatCAMApp.py:7925 -msgid "[WARNING_NOTCL] Save Project cancelled." +#: FlatCAMApp.py:8031 +msgid "Save Project cancelled." msgstr "" -#: FlatCAMApp.py:7973 +#: FlatCAMApp.py:8079 msgid "Exporting SVG" msgstr "" -#: FlatCAMApp.py:8013 FlatCAMApp.py:8127 FlatCAMApp.py:8250 -#, python-format -msgid "[success] SVG file exported to %s" +#: FlatCAMApp.py:8121 FlatCAMApp.py:8238 FlatCAMApp.py:8364 +msgid "SVG file exported to" msgstr "" -#: FlatCAMApp.py:8047 FlatCAMApp.py:8175 -#, python-format -msgid "[WARNING_NOTCL] No object Box. Using instead %s" +#: FlatCAMApp.py:8156 FlatCAMApp.py:8287 flatcamTools/ToolPanelize.py:381 +msgid "No object Box. Using instead" msgstr "" -#: FlatCAMApp.py:8130 FlatCAMApp.py:8253 +#: FlatCAMApp.py:8241 FlatCAMApp.py:8367 msgid "Generating Film ... Please wait." msgstr "" -#: FlatCAMApp.py:8419 -#, python-format -msgid "[success] Excellon file exported to %s" +#: FlatCAMApp.py:8536 +msgid "Excellon file exported to" msgstr "" -#: FlatCAMApp.py:8426 +#: FlatCAMApp.py:8543 msgid "Exporting Excellon" msgstr "" -#: FlatCAMApp.py:8431 FlatCAMApp.py:8438 -msgid "[ERROR_NOTCL] Could not export Excellon file." +#: FlatCAMApp.py:8549 FlatCAMApp.py:8557 +msgid "Could not export Excellon file." msgstr "" -#: FlatCAMApp.py:8544 -#, python-format -msgid "[success] Gerber file exported to %s" +#: FlatCAMApp.py:8665 +msgid "Gerber file exported to" msgstr "" -#: FlatCAMApp.py:8551 +#: FlatCAMApp.py:8672 msgid "Exporting Gerber" msgstr "" -#: FlatCAMApp.py:8556 FlatCAMApp.py:8563 -msgid "[ERROR_NOTCL] Could not export Gerber file." +#: FlatCAMApp.py:8678 FlatCAMApp.py:8686 +msgid "Could not export Gerber file." msgstr "" -#: FlatCAMApp.py:8605 -#, python-format -msgid "[success] DXF file exported to %s" +#: FlatCAMApp.py:8729 +msgid "DXF file exported to" msgstr "" -#: FlatCAMApp.py:8611 +#: FlatCAMApp.py:8735 msgid "Exporting DXF" msgstr "" -#: FlatCAMApp.py:8616 FlatCAMApp.py:8623 -msgid "[[WARNING_NOTCL]] Could not export DXF file." +#: FlatCAMApp.py:8741 FlatCAMApp.py:8749 +msgid "Could not export DXF file." msgstr "" -#: FlatCAMApp.py:8643 FlatCAMApp.py:8685 FlatCAMApp.py:8729 +#: FlatCAMApp.py:8770 FlatCAMApp.py:8814 FlatCAMApp.py:8860 msgid "" -"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and " -"Gerber are supported" +"Not supported type is picked as parameter. Only Geometry and Gerber are " +"supported" msgstr "" -#: FlatCAMApp.py:8653 +#: FlatCAMApp.py:8780 msgid "Importing SVG" msgstr "" -#: FlatCAMApp.py:8664 FlatCAMApp.py:8706 FlatCAMApp.py:8749 FlatCAMApp.py:8826 -#: FlatCAMApp.py:8887 FlatCAMApp.py:8950 flatcamTools/ToolPDF.py:220 -#, python-format -msgid "[success] Opened: %s" +#: FlatCAMApp.py:8792 FlatCAMApp.py:8836 FlatCAMApp.py:8881 FlatCAMApp.py:8964 +#: FlatCAMApp.py:9031 FlatCAMApp.py:9098 +msgid "Opened" msgstr "" -#: FlatCAMApp.py:8695 +#: FlatCAMApp.py:8824 msgid "Importing DXF" msgstr "" -#: FlatCAMApp.py:8737 +#: FlatCAMApp.py:8868 msgid "Importing Image" msgstr "" -#: FlatCAMApp.py:8778 FlatCAMApp.py:8780 -#, python-format -msgid "[ERROR_NOTCL] Failed to open file: %s" +#: FlatCAMApp.py:8911 +msgid "Failed to open file" msgstr "" -#: FlatCAMApp.py:8783 +#: FlatCAMApp.py:8915 #, python-brace-format -msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}" +msgid "{e_code} Failed to parse file: {name}. {error}" msgstr "" -#: FlatCAMApp.py:8790 flatcamEditors/FlatCAMGrbEditor.py:3917 -msgid "[ERROR] An internal error has occurred. See shell.\n" +#: FlatCAMApp.py:8916 +msgid "[ERROR_NOTCL]" msgstr "" -#: FlatCAMApp.py:8799 -msgid "" -"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation." +#: FlatCAMApp.py:8925 FlatCAMApp.py:8999 FlatCAMObj.py:4521 +#: flatcamTools/ToolPcbWizard.py:437 +msgid "An internal error has occurred. See shell.\n" msgstr "" -#: FlatCAMApp.py:8807 +#: FlatCAMApp.py:8935 +msgid "Object is not Gerber file or empty. Aborting object creation." +msgstr "" + +#: FlatCAMApp.py:8943 msgid "Opening Gerber" msgstr "" -#: FlatCAMApp.py:8817 -msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file." +#: FlatCAMApp.py:8954 +msgid " Open Gerber failed. Probable not a Gerber file." msgstr "" -#: FlatCAMApp.py:8850 -msgid "[ERROR_NOTCL] This is not Excellon file." +#: FlatCAMApp.py:8989 flatcamTools/ToolPcbWizard.py:427 +msgid "This is not Excellon file." msgstr "" -#: FlatCAMApp.py:8853 -#, python-format -msgid "[ERROR_NOTCL] Cannot open file: %s" +#: FlatCAMApp.py:8993 +msgid "Cannot open file" msgstr "" -#: FlatCAMApp.py:8858 -msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n" +#: FlatCAMApp.py:9013 flatcamTools/ToolPDF.py:270 +#: flatcamTools/ToolPcbWizard.py:451 +msgid "No geometry found in file" msgstr "" -#: FlatCAMApp.py:8871 -#, python-format -msgid "[ERROR_NOTCL] No geometry found in file: %s" -msgstr "" - -#: FlatCAMApp.py:8874 +#: FlatCAMApp.py:9016 msgid "Opening Excellon." msgstr "" -#: FlatCAMApp.py:8880 -msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file." +#: FlatCAMApp.py:9023 +msgid "Open Excellon file failed. Probable not an Excellon file." msgstr "" -#: FlatCAMApp.py:8917 -#, python-format -msgid "[ERROR_NOTCL] Failed to open %s" +#: FlatCAMApp.py:9062 +msgid "Failed to open" msgstr "" -#: FlatCAMApp.py:8927 -msgid "[ERROR_NOTCL] This is not GCODE" +#: FlatCAMApp.py:9073 +msgid "This is not GCODE" msgstr "" -#: FlatCAMApp.py:8933 +#: FlatCAMApp.py:9079 msgid "Opening G-Code." msgstr "" -#: FlatCAMApp.py:8941 +#: FlatCAMApp.py:9088 msgid "" -"[ERROR_NOTCL] Failed to create CNCJob Object. Probable not a GCode file.\n" +"Failed to create CNCJob Object. Probable not a GCode file.\n" " Attempting to create a FlatCAM CNCJob Object from G-Code file failed during " "processing" msgstr "" -#: FlatCAMApp.py:8981 -#, python-format -msgid "[ERROR_NOTCL] Failed to open config file: %s" +#: FlatCAMApp.py:9130 +msgid "Failed to open config file" msgstr "" -#: FlatCAMApp.py:9002 +#: FlatCAMApp.py:9151 msgid "Loading Project ... Please Wait ..." msgstr "" -#: FlatCAMApp.py:9009 FlatCAMApp.py:9027 -#, python-format -msgid "[ERROR_NOTCL] Failed to open project file: %s" +#: FlatCAMApp.py:9159 FlatCAMApp.py:9178 +msgid "Failed to open project file" msgstr "" -#: FlatCAMApp.py:9051 +#: FlatCAMApp.py:9202 msgid "Loading Project ... restoring" msgstr "" -#: FlatCAMApp.py:9056 -#, python-format -msgid "[success] Project loaded from: %s" +#: FlatCAMApp.py:9212 +msgid "Project loaded from" msgstr "" -#: FlatCAMApp.py:9162 +#: FlatCAMApp.py:9318 msgid "Available commands:\n" msgstr "" -#: FlatCAMApp.py:9164 +#: FlatCAMApp.py:9320 msgid "" "\n" "\n" @@ -1071,35 +1038,35 @@ msgid "" " Example: help open_gerber" msgstr "" -#: FlatCAMApp.py:9314 +#: FlatCAMApp.py:9470 msgid "Shows list of commands." msgstr "" -#: FlatCAMApp.py:9371 -msgid "[ERROR_NOTCL] Failed to load recent item list." +#: FlatCAMApp.py:9528 +msgid "Failed to load recent item list." msgstr "" -#: FlatCAMApp.py:9378 -msgid "[ERROR_NOTCL] Failed to parse recent item list." +#: FlatCAMApp.py:9536 +msgid "Failed to parse recent item list." msgstr "" -#: FlatCAMApp.py:9388 -msgid "[ERROR_NOTCL] Failed to load recent projects item list." +#: FlatCAMApp.py:9547 +msgid "Failed to load recent projects item list." msgstr "" -#: FlatCAMApp.py:9395 -msgid "[ERROR_NOTCL] Failed to parse recent project item list." +#: FlatCAMApp.py:9555 +msgid "Failed to parse recent project item list." msgstr "" -#: FlatCAMApp.py:9454 FlatCAMApp.py:9477 +#: FlatCAMApp.py:9614 FlatCAMApp.py:9637 msgid "Clear Recent files" msgstr "" -#: FlatCAMApp.py:9494 flatcamGUI/FlatCAMGUI.py:1006 +#: FlatCAMApp.py:9654 flatcamGUI/FlatCAMGUI.py:1006 msgid "Shortcut Key List" msgstr "" -#: FlatCAMApp.py:9506 +#: FlatCAMApp.py:9666 #, python-brace-format msgid "" "\n" @@ -1150,89 +1117,85 @@ msgid "" " " msgstr "" -#: FlatCAMApp.py:9584 -msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect." +#: FlatCAMApp.py:9745 +msgid "Failed checking for latest version. Could not connect." msgstr "" -#: FlatCAMApp.py:9591 -msgid "[ERROR_NOTCL] Could not parse information about latest version." +#: FlatCAMApp.py:9753 +msgid "Could not parse information about latest version." msgstr "" -#: FlatCAMApp.py:9601 -msgid "[success] FlatCAM is up to date!" +#: FlatCAMApp.py:9764 +msgid "FlatCAM is up to date!" msgstr "" -#: FlatCAMApp.py:9606 +#: FlatCAMApp.py:9769 msgid "Newer Version Available" msgstr "" -#: FlatCAMApp.py:9607 +#: FlatCAMApp.py:9770 msgid "" "There is a newer version of FlatCAM available for download:\n" "\n" msgstr "" -#: FlatCAMApp.py:9609 +#: FlatCAMApp.py:9772 msgid "info" msgstr "" -#: FlatCAMApp.py:9663 -msgid "[success] All plots disabled." +#: FlatCAMApp.py:9827 +msgid "All plots disabled." msgstr "" -#: FlatCAMApp.py:9669 -msgid "[success] All non selected plots disabled." +#: FlatCAMApp.py:9834 +msgid "All non selected plots disabled." msgstr "" -#: FlatCAMApp.py:9675 -msgid "[success] All plots enabled." +#: FlatCAMApp.py:9841 +msgid "All plots enabled." msgstr "" -#: FlatCAMApp.py:9681 -msgid "[success] Selected plots enabled..." +#: FlatCAMApp.py:9848 +msgid "Selected plots enabled..." msgstr "" -#: FlatCAMApp.py:9689 -msgid "[success] Selected plots disabled..." +#: FlatCAMApp.py:9857 +msgid "Selected plots disabled..." msgstr "" -#: FlatCAMApp.py:9707 +#: FlatCAMApp.py:9875 msgid "Enabling plots ..." msgstr "" -#: FlatCAMApp.py:9741 +#: FlatCAMApp.py:9909 msgid "Disabling plots ..." msgstr "" -#: FlatCAMApp.py:9763 +#: FlatCAMApp.py:9931 msgid "Working ..." msgstr "" -#: FlatCAMApp.py:9801 +#: FlatCAMApp.py:9969 msgid "Saving FlatCAM Project" msgstr "" -#: FlatCAMApp.py:9822 FlatCAMApp.py:9853 -#, python-format -msgid "[success] Project saved to: %s" +#: FlatCAMApp.py:9991 FlatCAMApp.py:10026 +msgid "Project saved to" msgstr "" -#: FlatCAMApp.py:9840 -#, python-format -msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it." +#: FlatCAMApp.py:10010 +msgid "Failed to verify project file" msgstr "" -#: FlatCAMApp.py:9847 -#, python-format -msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it." +#: FlatCAMApp.py:10010 FlatCAMApp.py:10018 FlatCAMApp.py:10029 +msgid "Retry to save it." msgstr "" -#: FlatCAMApp.py:9855 -#, python-format -msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it." +#: FlatCAMApp.py:10018 FlatCAMApp.py:10029 +msgid "Failed to parse saved project file" msgstr "" -#: FlatCAMApp.py:10061 +#: FlatCAMApp.py:10240 msgid "The user requested a graceful exit of the current task." msgstr "" @@ -1383,7 +1346,7 @@ msgstr "" msgid "Generating CNC Code" msgstr "" -#: FlatCAMObj.py:2944 +#: FlatCAMObj.py:2944 camlib.py:5649 camlib.py:6623 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y) \n" @@ -1445,10 +1408,6 @@ msgstr "" msgid "Failed. No tool selected in the tool table ..." msgstr "" -#: FlatCAMObj.py:4521 flatcamTools/ToolPcbWizard.py:437 -msgid "An internal error has occurred. See shell.\n" -msgstr "" - #: FlatCAMObj.py:4522 msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() -->" msgstr "" @@ -1490,7 +1449,7 @@ msgstr "" msgid "CNCjob created" msgstr "" -#: FlatCAMObj.py:5178 FlatCAMObj.py:5188 camlib.py:3559 camlib.py:3569 +#: FlatCAMObj.py:5178 FlatCAMObj.py:5188 camlib.py:3572 camlib.py:3582 msgid "Scale factor has to be a number: integer or float." msgstr "" @@ -1498,7 +1457,7 @@ msgstr "" msgid "Geometry Scale done." msgstr "" -#: FlatCAMObj.py:5279 camlib.py:3662 +#: FlatCAMObj.py:5279 camlib.py:3676 msgid "" "An (x,y) pair of values are needed. Probable you entered only one value in " "the Offset field." @@ -1555,16 +1514,6 @@ msgstr "" msgid "Toolchange G-code was replaced by a custom code." msgstr "" -#: FlatCAMObj.py:6161 flatcamTools/ToolSolderPaste.py:1424 -msgid "No such file or directory" -msgstr "" - -#: FlatCAMObj.py:6165 flatcamTools/ToolSolderPaste.py:1428 -msgid "" -"Permission denied, saving not possible.\n" -"Most likely another app is holding the file open and not accessible." -msgstr "" - #: FlatCAMObj.py:6175 msgid "Saved to" msgstr "" @@ -1600,268 +1549,265 @@ msgstr "" msgid "Object renamed from {old} to {new}" msgstr "" -#: ObjectCollection.py:765 -#, python-format -msgid "[ERROR] Cause of error: %s" +#: ObjectCollection.py:766 +msgid "Cause of error" msgstr "" -#: camlib.py:214 -msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list." -msgstr "" - -#: camlib.py:1520 -msgid "[success] Object was mirrored ..." +#: camlib.py:215 +msgid "self.solid_geometry is neither BaseGeometry or list." msgstr "" #: camlib.py:1522 -msgid "[ERROR_NOTCL] Failed to mirror. No object selected" +msgid "Object was mirrored" msgstr "" -#: camlib.py:1590 -msgid "[success] Object was rotated ..." +#: camlib.py:1525 +msgid "Failed to mirror. No object selected" msgstr "" -#: camlib.py:1592 -msgid "[ERROR_NOTCL] Failed to rotate. No object selected" +#: camlib.py:1594 +msgid "Object was rotated" msgstr "" -#: camlib.py:1659 -msgid "[success] Object was skewed ..." +#: camlib.py:1597 +msgid "Failed to rotate. No object selected" msgstr "" -#: camlib.py:1661 -msgid "[ERROR_NOTCL] Failed to skew. No object selected" +#: camlib.py:1665 +msgid "Object was skewed" msgstr "" -#: camlib.py:2436 +#: camlib.py:1668 +msgid "Failed to skew. No object selected" +msgstr "" + +#: camlib.py:2443 msgid "Gerber processing. Parsing" msgstr "" -#: camlib.py:2436 +#: camlib.py:2443 msgid "lines" msgstr "" -#: camlib.py:2934 camlib.py:3019 -#, python-format -msgid "[WARNING] Coordinates missing, line ignored: %s" +#: camlib.py:2942 camlib.py:3030 +msgid "Coordinates missing, line ignored" msgstr "" -#: camlib.py:2935 camlib.py:3020 -msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!" +#: camlib.py:2944 camlib.py:3032 +msgid "GERBER file might be CORRUPT. Check the file !!!" msgstr "" -#: camlib.py:2984 -#, python-format +#: camlib.py:2994 msgid "" -"[ERROR] Region does not have enough points. File will be processed but there " -"are parser errors. Line number: %s" +"Region does not have enough points. File will be processed but there are " +"parser errors. Line number" msgstr "" -#: camlib.py:3352 +#: camlib.py:3364 msgid "Gerber processing. Joining" msgstr "" -#: camlib.py:3352 +#: camlib.py:3364 msgid "polygons" msgstr "" -#: camlib.py:3378 +#: camlib.py:3390 msgid "Gerber Line" msgstr "" -#: camlib.py:3378 +#: camlib.py:3390 msgid "Gerber Line Content" msgstr "" -#: camlib.py:3379 +#: camlib.py:3392 msgid "Gerber Parser ERROR" msgstr "" -#: camlib.py:3626 +#: camlib.py:3640 msgid "Gerber Scale done." msgstr "" -#: camlib.py:3715 +#: camlib.py:3730 msgid "Gerber Offset done." msgstr "" -#: camlib.py:3791 +#: camlib.py:3807 msgid "Gerber Mirror done." msgstr "" -#: camlib.py:3859 +#: camlib.py:3876 msgid "Gerber Skew done." msgstr "" -#: camlib.py:3919 +#: camlib.py:3937 msgid "Gerber Rotate done." msgstr "" -#: camlib.py:4205 -#, python-format -msgid "[ERROR_NOTCL] This is GCODE mark: %s" +#: camlib.py:4224 +msgid "This is GCODE mark" msgstr "" -#: camlib.py:4320 -#, python-format +#: camlib.py:4340 msgid "" -"[WARNING] No tool diameter info's. See shell.\n" -"A tool change event: T%s was found but the Excellon file have no " -"informations regarding the tool diameters therefore the application will try " -"to load it by using some 'fake' diameters.\n" +"No tool diameter info's. See shell.\n" +"A tool change event: T" +msgstr "" + +#: camlib.py:4343 +msgid "" +"was found but the Excellon file have no informations regarding the tool " +"diameters therefore the application will try to load it by using some 'fake' " +"diameters.\n" "The user needs to edit the resulting Excellon object and change the " "diameters to reflect the real diameters." msgstr "" -#: camlib.py:4773 +#: camlib.py:4798 #, python-brace-format msgid "" -"[ERROR] Excellon Parser error.\n" +"{e_code} Excellon Parser error.\n" "Parsing Failed. Line {l_nr}: {line}\n" msgstr "" -#: camlib.py:4853 +#: camlib.py:4881 msgid "" -"[WARNING] Excellon.create_geometry() -> a drill location was skipped due of " -"not having a tool associated.\n" +"Excellon.create_geometry() -> a drill location was skipped due of not having " +"a tool associated.\n" "Check the resulting GCode." msgstr "" -#: camlib.py:5526 -#, python-format -msgid "[ERROR] There is no such parameter: %s" +#: camlib.py:5555 +msgid "There is no such parameter" msgstr "" -#: camlib.py:5596 +#: camlib.py:5626 msgid "" -"[WARNING] The Cut Z parameter has positive value. It is the depth value to " -"drill into material.\n" +"The Cut Z parameter has positive value. It is the depth value to drill into " +"material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative. Check the resulting " "CNC code (Gcode etc)." msgstr "" -#: camlib.py:5603 camlib.py:6264 camlib.py:6591 -#, python-format -msgid "" -"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file" +#: camlib.py:5634 camlib.py:6307 camlib.py:6649 +msgid "The Cut Z parameter is zero. There will be no cut, skipping file" msgstr "" -#: camlib.py:5617 camlib.py:6568 -msgid "" -"[ERROR]The Toolchange X,Y field in Edit -> Preferences has to be in the " -"format (x, y) \n" -"but now there is only one value, not two. " -msgstr "" - -#: camlib.py:5654 +#: camlib.py:5686 msgid "Creating a list of points to drill..." msgstr "" -#: camlib.py:5736 +#: camlib.py:5769 msgid "Starting G-Code" msgstr "" -#: camlib.py:5832 camlib.py:5976 camlib.py:6079 camlib.py:6370 camlib.py:6697 +#: camlib.py:5865 camlib.py:6011 camlib.py:6117 camlib.py:6416 camlib.py:6758 msgid "Starting G-Code for tool with diameter" msgstr "" -#: camlib.py:5888 camlib.py:6032 camlib.py:6136 camlib.py:7347 camlib.py:7624 -#: camlib.py:7726 camlib.py:7772 -msgid "[ERROR_NOTCL] G91 coordinates not implemented ..." +#: camlib.py:5922 camlib.py:6068 camlib.py:6175 +msgid "G91 coordinates not implemented" msgstr "" -#: camlib.py:5893 camlib.py:6037 camlib.py:6141 -msgid "[ERROR_NOTCL] The loaded Excellon file has no drills ..." +#: camlib.py:5928 camlib.py:6074 camlib.py:6181 +msgid "The loaded Excellon file has no drills" msgstr "" -#: camlib.py:6042 -msgid "[ERROR_NOTCL] Wrong optimization type selected." +#: camlib.py:6080 +msgid "Wrong optimization type selected." msgstr "" -#: camlib.py:6163 +#: camlib.py:6203 msgid "Finished G-Code generation..." msgstr "" -#: camlib.py:6240 +#: camlib.py:6280 msgid "" "The Toolchange X,Y field in Edit -> Preferences has to be in the format (x, " "y) \n" "but now there is only one value, not two." msgstr "" -#: camlib.py:6252 camlib.py:6579 +#: camlib.py:6293 camlib.py:6635 msgid "" -"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad " -"combinations of other parameters." +"Cut_Z parameter is None or zero. Most likely a bad combinations of other " +"parameters." msgstr "" -#: camlib.py:6257 camlib.py:6584 +#: camlib.py:6299 camlib.py:6641 msgid "" -"[WARNING] The Cut Z parameter has positive value. It is the depth value to " -"cut into material.\n" +"The Cut Z parameter has positive value. It is the depth value to cut into " +"material.\n" "The Cut Z parameter needs to have a negative value, assuming it is a typo " "therefore the app will convert the value to negative.Check the resulting CNC " "code (Gcode etc)." msgstr "" -#: camlib.py:6273 camlib.py:6596 -msgid "[ERROR_NOTCL] Travel Z parameter is None or zero." +#: camlib.py:6317 camlib.py:6655 +msgid "Travel Z parameter is None or zero." msgstr "" -#: camlib.py:6277 camlib.py:6600 +#: camlib.py:6322 camlib.py:6660 msgid "" -"[WARNING] The Travel Z parameter has negative value. It is the height value " -"to travel between cuts.\n" +"The Travel Z parameter has negative value. It is the height value to travel " +"between cuts.\n" "The Z Travel parameter needs to have a positive value, assuming it is a typo " "therefore the app will convert the value to positive.Check the resulting CNC " "code (Gcode etc)." msgstr "" -#: camlib.py:6284 camlib.py:6607 -#, python-format -msgid "" -"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file" +#: camlib.py:6330 camlib.py:6668 +msgid "The Z Travel parameter is zero. This is dangerous, skipping file" msgstr "" -#: camlib.py:6299 camlib.py:6626 +#: camlib.py:6345 camlib.py:6687 msgid "Indexing geometry before generating G-Code..." msgstr "" -#: camlib.py:6353 camlib.py:6683 +#: camlib.py:6399 camlib.py:6744 msgid "Starting G-Code..." msgstr "" -#: camlib.py:6439 camlib.py:6766 -#, python-format -msgid "Finished G-Code generation... %s paths traced." +#: camlib.py:6486 camlib.py:6828 +msgid "Finished G-Code generation" msgstr "" -#: camlib.py:6471 -#, python-format -msgid "[ERROR]Expected a Geometry, got %s" +#: camlib.py:6488 +msgid "paths traced" msgstr "" -#: camlib.py:6477 +#: camlib.py:6523 +msgid "Expected a Geometry, got" +msgstr "" + +#: camlib.py:6530 msgid "" -"[ERROR_NOTCL] Trying to generate a CNC Job from a Geometry object without " -"solid_geometry." +"Trying to generate a CNC Job from a Geometry object without solid_geometry." msgstr "" -#: camlib.py:6516 -msgid "" -"[ERROR_NOTCL] The Tool Offset value is too negative to use for the " -"current_geometry.\n" -"Raise the value (in module) and try again." -msgstr "" - -#: camlib.py:6792 -msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." -msgstr "" - -#: camlib.py:6878 +#: camlib.py:6569 #, python-format -msgid "Finished SolderPste G-Code generation... %s paths traced." +msgid "[ERROR_NOTCL] %s" +msgstr "" + +#: camlib.py:6830 +msgid " paths traced." +msgstr "" + +#: camlib.py:6859 +msgid "There is no tool data in the SolderPaste geometry." +msgstr "" + +#: camlib.py:6946 +msgid "Finished SolderPste G-Code generation" +msgstr "" + +#: camlib.py:6948 +msgid "paths traced." +msgstr "" + +#: camlib.py:7421 camlib.py:7699 camlib.py:7802 camlib.py:7849 +msgid "G91 coordinates not implemented ..." msgstr "" #: flatcamEditors/FlatCAMExcEditor.py:45 flatcamEditors/FlatCAMExcEditor.py:69 @@ -2333,6 +2279,20 @@ msgstr "" msgid "[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected" msgstr "" +#: flatcamEditors/FlatCAMExcEditor.py:3424 +#: flatcamEditors/FlatCAMExcEditor.py:3431 +#: flatcamEditors/FlatCAMGeoEditor.py:3741 +#: flatcamEditors/FlatCAMGeoEditor.py:3755 +#: flatcamEditors/FlatCAMGrbEditor.py:1057 +#: flatcamEditors/FlatCAMGrbEditor.py:1160 +#: flatcamEditors/FlatCAMGrbEditor.py:1433 +#: flatcamEditors/FlatCAMGrbEditor.py:1690 +#: flatcamEditors/FlatCAMGrbEditor.py:4156 +#: flatcamEditors/FlatCAMGrbEditor.py:4170 flatcamGUI/FlatCAMGUI.py:2560 +#: flatcamGUI/FlatCAMGUI.py:2572 +msgid "[success] Done." +msgstr "" + #: flatcamEditors/FlatCAMExcEditor.py:3787 msgid "[success] Done. Drill(s) deleted." msgstr "" @@ -2889,6 +2849,12 @@ msgstr "" msgid "[success] Done. Rotate completed." msgstr "" +#: flatcamEditors/FlatCAMGeoEditor.py:1300 +#: flatcamEditors/FlatCAMGrbEditor.py:5513 +#, python-format +msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed." +msgstr "" + #: flatcamEditors/FlatCAMGeoEditor.py:1311 #: flatcamEditors/FlatCAMGrbEditor.py:5529 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!" @@ -2909,6 +2875,12 @@ msgstr "" msgid "[success] Flip on the X axis done ..." msgstr "" +#: flatcamEditors/FlatCAMGeoEditor.py:1357 +#: flatcamEditors/FlatCAMGrbEditor.py:5584 +#, python-format +msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed." +msgstr "" + #: flatcamEditors/FlatCAMGeoEditor.py:1366 #: flatcamEditors/FlatCAMGrbEditor.py:5599 msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!" @@ -3768,6 +3740,10 @@ msgid "" "creation." msgstr "" +#: flatcamEditors/FlatCAMGrbEditor.py:3917 +msgid "[ERROR] An internal error has occurred. See shell.\n" +msgstr "" + #: flatcamEditors/FlatCAMGrbEditor.py:3922 msgid "Creating Gerber." msgstr "" @@ -3780,6 +3756,10 @@ msgstr "" msgid "[WARNING_NOTCL] Cancelled. No aperture is selected" msgstr "" +#: flatcamEditors/FlatCAMGrbEditor.py:4097 +msgid "[success] Coordinates copied to clipboard." +msgstr "" + #: flatcamEditors/FlatCAMGrbEditor.py:4477 msgid "[ERROR_NOTCL] Failed. No aperture geometry is selected." msgstr "" @@ -5670,6 +5650,10 @@ msgstr "" msgid "Measurement Tool exit..." msgstr "" +#: flatcamGUI/FlatCAMGUI.py:3312 +msgid "[WARNING_NOTCL] Application is saving the project. Please wait ..." +msgstr "" + #: flatcamGUI/FlatCAMGUI.py:3554 msgid "GUI Preferences" msgstr "" @@ -9995,10 +9979,6 @@ msgstr "" msgid "Please enter a tool diameter to add, in Float format." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:915 flatcamTools/ToolSolderPaste.py:774 -msgid "Please enter a tool diameter with non-zero value, in Float format." -msgstr "" - #: flatcamTools/ToolNonCopperClear.py:940 flatcamTools/ToolPaint.py:728 msgid "Adding tool cancelled. Tool already in Tool Table." msgstr "" @@ -10174,8 +10154,9 @@ msgstr "" msgid "Parsing PDF file ..." msgstr "" -#: flatcamTools/ToolPDF.py:270 flatcamTools/ToolPcbWizard.py:451 -msgid "No geometry found in file" +#: flatcamTools/ToolPDF.py:220 +#, python-format +msgid "[success] Opened: %s" msgstr "" #: flatcamTools/ToolPDF.py:273 flatcamTools/ToolPDF.py:348 @@ -10510,10 +10491,6 @@ msgstr "" msgid "Panel. Tool" msgstr "" -#: flatcamTools/ToolPanelize.py:381 -msgid "No object Box. Using instead" -msgstr "" - #: flatcamTools/ToolPanelize.py:465 msgid "Columns or Rows are zero value. Change them to a positive integer." msgstr "" @@ -10666,10 +10643,6 @@ msgstr "" msgid "Main PcbWizard Excellon file loaded." msgstr "" -#: flatcamTools/ToolPcbWizard.py:427 -msgid "This is not Excellon file." -msgstr "" - #: flatcamTools/ToolPcbWizard.py:431 msgid "Cannot parse file" msgstr "" @@ -10984,10 +10957,6 @@ msgstr "" msgid "This Geometry can't be processed. NOT a solder_paste_tool geometry." msgstr "" -#: flatcamTools/ToolSolderPaste.py:1214 -msgid "An internal error has ocurred. See shell.\n" -msgstr "" - #: flatcamTools/ToolSolderPaste.py:1285 msgid "ToolSolderPaste CNCjob created" msgstr ""