Przeglądaj źródła

Merged in test_beta8.912 (pull request #136)

Test beta8.912
Marius Stanciu 6 lat temu
rodzic
commit
a4a8258730
62 zmienionych plików z 32579 dodań i 2405 usunięć
  1. 3 4
      FlatCAM.py
  2. 242 178
      FlatCAMApp.py
  3. 199 191
      FlatCAMEditor.py
  4. 240 133
      FlatCAMObj.py
  5. 8 0
      FlatCAMPostProc.py
  6. 1 1
      FlatCAMProcess.py
  7. 3 3
      FlatCAMTool.py
  8. 129 0
      FlatCAMTranslation.py
  9. 23 11
      ObjectCollection.py
  10. 81 0
      README.md
  11. 159 82
      camlib.py
  12. 513 479
      flatcamGUI/FlatCAMGUI.py
  13. 13 0
      flatcamGUI/GUIElements.py
  14. 254 224
      flatcamGUI/ObjectUI.py
  15. 2 3
      flatcamGUI/PlotCanvas.py
  16. 8 0
      flatcamGUI/VisPyCanvas.py
  17. 8 0
      flatcamGUI/VisPyPatches.py
  18. 8 0
      flatcamGUI/VisPyTesselators.py
  19. 9 1
      flatcamGUI/VisPyVisuals.py
  20. 0 0
      flatcamGUI/__init__.py
  21. 11 11
      flatcamParsers/ParseDXF.py
  22. 7 0
      flatcamParsers/ParseDXF_Spline.py
  23. 8 0
      flatcamParsers/ParseFont.py
  24. 4 8
      flatcamParsers/ParseSVG.py
  25. 0 0
      flatcamParsers/__init__.py
  26. 90 72
      flatcamTools/ToolCalculators.py
  27. 129 116
      flatcamTools/ToolCutOut.py
  28. 132 110
      flatcamTools/ToolDblSided.py
  29. 72 50
      flatcamTools/ToolFilm.py
  30. 60 40
      flatcamTools/ToolImage.py
  31. 55 32
      flatcamTools/ToolMeasurement.py
  32. 32 17
      flatcamTools/ToolMove.py
  33. 100 80
      flatcamTools/ToolNonCopperClear.py
  34. 120 100
      flatcamTools/ToolPaint.py
  35. 90 149
      flatcamTools/ToolPanelize.py
  36. 43 16
      flatcamTools/ToolProperties.py
  37. 11 3
      flatcamTools/ToolShell.py
  38. 157 138
      flatcamTools/ToolSolderPaste.py
  39. 167 150
      flatcamTools/ToolTransform.py
  40. BIN
      locale/en/LC_MESSAGES/en.mo
  41. 10244 0
      locale/en/LC_MESSAGES/en.po
  42. BIN
      locale/ro/LC_MESSAGES/strings.mo
  43. 10496 0
      locale/ro/LC_MESSAGES/strings.po
  44. 8526 0
      locale_template/strings.pot
  45. 8 2
      make_win.py
  46. 8 0
      postprocessors/Paste_1.py
  47. 8 0
      postprocessors/Repetier.py
  48. 8 0
      postprocessors/Roland_MDX_20.py
  49. 8 0
      postprocessors/Toolchange_Custom.py
  50. 8 0
      postprocessors/Toolchange_Probe_MACH3.py
  51. 8 0
      postprocessors/Toolchange_manual.py
  52. 8 0
      postprocessors/default.py
  53. 8 0
      postprocessors/grbl_11.py
  54. 9 1
      postprocessors/grbl_laser.py
  55. 8 0
      postprocessors/hpgl.py
  56. 8 0
      postprocessors/line_xyz.py
  57. 8 0
      postprocessors/marlin.py
  58. BIN
      share/cut16_bis.png
  59. BIN
      share/cut32_bis.png
  60. BIN
      share/language32.png
  61. BIN
      share/ncc16.png
  62. 17 0
      tclCommands/TclCommandDrillcncjob.py

+ 3 - 4
FlatCAM.py

@@ -1,15 +1,14 @@
 import sys, os
-from PyQt5 import sip
 
-from PyQt5 import QtGui, QtCore, QtWidgets
+from PyQt5 import QtWidgets
 from PyQt5.QtCore import QSettings, Qt
 from FlatCAMApp import App
 from multiprocessing import freeze_support
-import VisPyPatches
+from flatcamGUI import VisPyPatches
 
 if sys.platform == "win32":
     # cx_freeze 'module win32' workaround
-    import OpenGL.platform.win32
+    pass
 
 def debug_trace():
     """

Plik diff jest za duży
+ 242 - 178
FlatCAMApp.py


Plik diff jest za duży
+ 199 - 191
FlatCAMEditor.py


Plik diff jest za duży
+ 240 - 133
FlatCAMObj.py


+ 8 - 0
FlatCAMPostProc.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Matthieu Berthomé                           #
+# Date: 5/26/2017                                          #
+# MIT Licence                                              #
+############################################################
+
 from importlib.machinery import SourceFileLoader
 import os
 from abc import ABCMeta, abstractmethod

+ 1 - 1
FlatCAMProcess.py

@@ -6,7 +6,7 @@
 # MIT Licence                                              #
 ############################################################
 
-from FlatCAMGUI import FlatCAMActivityView
+from flatcamGUI.FlatCAMGUI import FlatCAMActivityView
 from PyQt5 import QtCore
 import weakref
 

+ 3 - 3
FlatCAMTool.py

@@ -83,11 +83,11 @@ class FlatCAMTool(QtWidgets.QWidget):
         # Put ourself in the GUI
         self.app.ui.tool_scroll_area.setWidget(self)
 
-        # Set the tool name as the widget object name
-        self.app.ui.tool_scroll_area.widget().setObjectName(self.toolName)
-
         # Switch notebook to tool page
         self.app.ui.notebook.setCurrentWidget(self.app.ui.tool_tab)
 
+        # Set the tool name as the widget object name
+        self.app.ui.tool_scroll_area.widget().setObjectName(self.toolName)
+
         self.show()
 

+ 129 - 0
FlatCAMTranslation.py

@@ -0,0 +1,129 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
+import os
+import sys
+
+from PyQt5 import QtWidgets, QtGui
+from PyQt5.QtCore import QSettings
+
+from flatcamGUI.GUIElements import log
+import gettext
+
+# ISO639-1 codes from here: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
+languages_dict = {
+    'zh': 'Chinese',
+    'de': 'German',
+    'en': 'English',
+    'es': 'Spanish',
+    'fr': 'French',
+    'it': 'Italian',
+    'ro': 'Romanian',
+    'ru': 'Russian',
+}
+
+translations = {}
+
+languages_path_search = ''
+
+
+def load_languages():
+    languages_path_search = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'locale')
+
+    available_translations = next(os.walk(languages_path_search))[1]
+
+    for lang in available_translations:
+        try:
+            if lang in languages_dict.keys():
+                translations[lang] = languages_dict[lang]
+        except KeyError as e:
+            log.debug("FlatCAMTranslations.load_languages() --> %s" % str(e))
+    return translations
+
+
+def languages_dir():
+    return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'locale')
+
+
+def on_language_apply_click(app, restart=False):
+    """
+    Using instructions from here:
+    https://inventwithpython.com/blog/2014/12/20/translate-your-python-3-program-with-the-gettext-module/
+
+    :return:
+    """
+    name = app.ui.general_defaults_form.general_app_group.language_cb.currentText()
+
+    # do nothing if trying to apply the language that is the current language (already applied).
+    settings = QSettings("Open Source", "FlatCAM")
+    if settings.contains("language"):
+        current_language = settings.value('language', type=str)
+        if current_language == name:
+            return
+
+    if restart:
+        msgbox = QtWidgets.QMessageBox()
+        msgbox.setText("The application will restart.")
+        msgbox.setInformativeText("Are you sure do you want to change the current language to %s?" % name.capitalize())
+        msgbox.setWindowTitle("Apply Language ...")
+        msgbox.setWindowIcon(QtGui.QIcon('share/language32.png'))
+        msgbox.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.Cancel)
+        msgbox.setDefaultButton(QtWidgets.QMessageBox.Yes)
+
+        response = msgbox.exec_()
+
+        if response == QtWidgets.QMessageBox.Cancel:
+            return
+        else:
+            settings = QSettings("Open Source", "FlatCAM")
+            saved_language = name
+            settings.setValue('language', saved_language)
+            # This will write the setting to the platform specific storage.
+            del settings
+
+            restart_program(app=app)
+
+def apply_language(domain, lang=None):
+    lang_code = ''
+
+    if lang is None:
+        settings = QSettings("Open Source", "FlatCAM")
+        if settings.contains("language"):
+            name = settings.value('language')
+        else:
+            name = settings.value('English')
+    else:
+        name = str(lang)
+
+    for lang_code, lang_usable in load_languages().items():
+        if lang_usable == name:
+            # break and then use the current key as language
+            break
+
+    if lang_code == '':
+        return "no language"
+    else:
+        try:
+            current_lang = gettext.translation(str(domain), localedir=languages_dir(), languages=[lang_code])
+            current_lang.install()
+        except Exception as e:
+            log.debug("FlatCAMTranslation.apply_language() --> %s" % str(e))
+
+        return name
+
+
+def restart_program(app):
+    """Restarts the current program.
+    Note: this function does not return. Any cleanup action (like
+    saving data) must be done before calling this function.
+    """
+    app.save_defaults()
+    python = sys.executable
+    os.execl(python, python, *sys.argv)
+
+

+ 23 - 11
ObjectCollection.py

@@ -6,6 +6,10 @@
 # MIT Licence                                              #
 ############################################################
 
+############################################################
+# File modified by: Dennis Hayrullin                       #
+############################################################
+
 # from PyQt5.QtCore import QModelIndex
 from FlatCAMObj import *
 import inspect  # TODO: Remove
@@ -14,6 +18,14 @@ from PyQt5 import QtGui, QtCore, QtWidgets
 from PyQt5.QtCore import Qt
 # import webbrowser
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class KeySensitiveListView(QtWidgets.QTreeView):
     """
@@ -65,7 +77,7 @@ class KeySensitiveListView(QtWidgets.QTreeView):
             # file drop from outside application
             if drop_indicator == QtWidgets.QAbstractItemView.OnItem:
                 if self.filename == "":
-                    self.app.inform.emit("Open cancelled.")
+                    self.app.inform.emit(_("Open cancelled."))
                 else:
                     if self.filename.lower().rpartition('.')[-1] in self.app.grb_list:
                         self.app.worker_task.emit({'fcn': self.app.open_gerber,
@@ -387,7 +399,7 @@ class ObjectCollection(QtCore.QAbstractItemModel):
                         "setData() --> Could not remove the old object name from auto-completer model list")
 
                 obj.build_ui()
-                self.app.inform.emit("Object renamed from %s to %s" % (old_name, new_name))
+                self.app.inform.emit(_("Object renamed from {old} to {new}").format(old=old_name, new=new_name))
 
         return True
 
@@ -681,17 +693,17 @@ class ObjectCollection(QtCore.QAbstractItemModel):
             obj = current.indexes()[0].internalPointer().obj
 
             if obj.kind == 'gerber':
-                self.app.inform.emit('[selected]<span style="color:%s;">%s</span> selected' %
-                                 ('green', str(obj.options['name'])))
+                self.app.inform.emit(_('[selected]<span style="color:{color};">{name}</span> selected').format(
+                    color='green', name=str(obj.options['name'])))
             elif obj.kind == 'excellon':
-                self.app.inform.emit('[selected]<span style="color:%s;">%s</span> selected' %
-                                 ('brown', str(obj.options['name'])))
+                self.app.inform.emit(_('[selected]<span style="color:{color};">{name}</span> selected').format(
+                    color='brown', name=str(obj.options['name'])))
             elif obj.kind == 'cncjob':
-                self.app.inform.emit('[selected]<span style="color:%s;">%s</span> selected' %
-                                 ('blue', str(obj.options['name'])))
+                self.app.inform.emit(_('[selected]<span style="color:{color};">{name}</span> selected').format(
+                    color='blue', name=str(obj.options['name'])))
             elif obj.kind == 'geometry':
-                self.app.inform.emit('[selected]<span style="color:%s;">%s</span> selected' %
-                                 ('red', str(obj.options['name'])))
+                self.app.inform.emit(_('[selected]<span style="color:{color};">{name}</span> selected').format(
+                    color='red', name=str(obj.options['name'])))
 
         except IndexError:
             FlatCAMApp.App.log.debug("on_list_selection_change(): Index Error (Nothing selected?)")
@@ -721,7 +733,7 @@ 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] Cause of error: %s") % str(e))
                 raise
 
     def get_list(self):

+ 81 - 0
README.md

@@ -9,6 +9,87 @@ CAD program, and create G-Code for Isolation routing.
 
 =================================================
 
+17.03.2019
+
+- remade the layout in 2Sided Tool
+- work in progress for translation in Romanian - 91%
+- changed some of the app strings formatting to work better with Poedit translation software
+- fixed bug in Drillcncjob TclCommand
+- finished translation in Romanian
+
+
+16.03.2019
+
+- fixed bug in Paint Tool - Single Poly: no geometry was generated
+- work in progress for translation in Romanian - 70%
+
+13.03.2019
+
+- made the layout combobox current item from Preferences -> General window to reflect the current layout
+- remade the POT translate file
+- work in progress in translation for Romanian language 44%
+- fix for showing tools by activating them from the Menu - final fix.
+
+11.03.2019
+
+- changed some icons here and there
+- fixed the Properties Project menu entry to work on the new way
+- in Properties tool now the Gerber apertures show the number of polygons in 'solid_geometry' instead of listing the objects
+- added a visual cue in Menu -> Edit about the entries to enter the Editor and to Save & Exit Editor. When one is enabled the other is disabled.
+- grouped all the UI files in flatcamGUI folder
+- grouped all parser files in flatcamParsers folder
+- another changes to the final_save() function
+- some strings were left outside the translation formatting - fixed
+- finished the replacement of '_' symbols throughout the app which conflicted with the _() function used by the i18n
+- reverted changes in Tools regarding the toggle effect - now they work as expected
+
+10.03.2019
+
+- added a fix in the Gerber parser when adding the geometry in the self.apertures dict for the case that the current aperture is None (Allegro does that)
+- finished support for internationalization by adding a set of .po/.mo files for the English language. Unfortunately the final action can be done only when Beta will be out of Beta (no more changes) or when I will decide to stop working on this app.
+- changed the tooltip for 'feedrate_rapids' parameter to point out that this parameter is useful only for the Marlin postprocessor
+- fix app crash for the case that there are no translation files
+- fixed some forgotten strings to be prepared for internationalization in ToolCalculators
+- fixed Tools menu no longer working due of changes
+- added some test translation for the ToolCalculators (in Romanian)
+- fixed bug in ToolCutOut where for each tool invocation the signals were reconnected
+- fixed some issues with ToolMeasurement due of above changes
+- updated the App.final_save() function
+- fixed an issue created by the fact that I used the '_' char inside the app to designate unused info and that conflicted with the _() function used by gettext
+- made impossible to try to reapply current language that it's already applied (un-necessary)
+
+8.03.2019
+
+- fixed issue when doing th CTRL (or SHIFT) + LMB, the focus is automatically moved to Project Tab
+- further work in internationalization, added a fallback to English language in case there is no translation for a string
+- fix for issue #262: when doing Edit-> Save & Close Editor on a Geometry that is not generated through first entering into an Editor, the geometry disappear
+- finished preparing for internationalization for the files: camlib and objectCollection
+- fixed tools shortcuts not working anymore due of the new toggle parameter for the .run().
+- finished preparing for internationalization for the files: FlatCAMEditor, FlatCAMGUI
+- finished preparing for internationalization for the files: FlatCAMObj, ObjectUI
+- sorted the languages in the Preferences combobox
+
+7.03.2019
+
+- made showing a shape when hovering over objects, optional, by adding a Preferences -> General parameter
+- starting to work in internationalization using gettext()
+- Finished adding _() in FlatCAM Tools
+- fixed Measuring Tool - after doing a measurement the Notebook was switching to Project Tab without letting the user see the results
+- more work on the translation engine; the app now restarts after a language is applied
+- added protection against using Travel Z parameter with negative or zero value (in Geometry).
+- made sure that when the Measuring Tools is active after last click the Status bar is no longer deleted
+
+6.03.2019
+
+- modified the way the FlatCAM Tools are run from toolbar as opposed of running them from other sources
+- some Gerber UI changes
+
+5.03.2019
+
+- modified the grbl-laser postprocessor lift_code()
+- treated an error created by Z_Cut parameter being None
+- changed the hover and selection box transparency
+
 4.03.2019
 
 - finished work on object hovering

+ 159 - 82
camlib.py

@@ -9,17 +9,21 @@
 #import traceback
 
 from io import StringIO
+
+import numpy as np
 from numpy import arctan2, Inf, array, sqrt, pi, ceil, sin, cos, dot, float32, \
     transpose
 from numpy.linalg import solve, norm
-import re
-import sys
+
+import re, sys, os, platform
+import math
+from copy import deepcopy
+
 import traceback
 from decimal import Decimal
 
-import collections
-
 from rtree import index as rtindex
+from lxml import etree as ET
 
 # See: http://toblerity.org/shapely/manual.html
 from shapely.geometry import Polygon, LineString, Point, LinearRing, MultiLineString
@@ -31,47 +35,43 @@ from shapely.wkt import loads as sloads
 from shapely.wkt import dumps as sdumps
 from shapely.geometry.base import BaseGeometry
 from shapely.geometry import shape
-from shapely import speedups
 
+import collections
 from collections import Iterable
 
-import numpy as np
 import rasterio
 from rasterio.features import shapes
-
-from copy import deepcopy
+import ezdxf
 
 # TODO: Commented for FlatCAM packaging with cx_freeze
-
-from xml.dom.minidom import parseString as parse_xml_string
-
 # from scipy.spatial import KDTree, Delaunay
 
-from ParseSVG import *
-from ParseDXF import *
+from flatcamParsers.ParseSVG import *
+from flatcamParsers.ParseDXF import *
 
 import logging
-import os
-# import pprint
-import platform
 import FlatCAMApp
 
-import math
-
 if platform.architecture()[0] == '64bit':
     from ortools.constraint_solver import pywrapcp
     from ortools.constraint_solver import routing_enums_pb2
 
-
 log = logging.getLogger('base2')
 log.setLevel(logging.DEBUG)
-# log.setLevel(logging.WARNING)
-# log.setLevel(logging.INFO)
+
 formatter = logging.Formatter('[%(levelname)s] %(message)s')
 handler = logging.StreamHandler()
 handler.setFormatter(formatter)
 log.addHandler(handler)
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class ParseError(Exception):
     pass
@@ -197,7 +197,7 @@ 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] self.solid_geometry is neither BaseGeometry or list."))
         return
 
     def subtract_polygon(self, points):
@@ -1384,9 +1384,9 @@ class Geometry(object):
                     self.tools[tool]['solid_geometry'] = mirror_geom(self.tools[tool]['solid_geometry'])
             else:
                 self.solid_geometry = mirror_geom(self.solid_geometry)
-            self.app.inform.emit('[success]Object was mirrored ...')
+            self.app.inform.emit(_('[success]Object was mirrored ...'))
         except AttributeError:
-            self.app.inform.emit("[ERROR_NOTCL] Failed to mirror. No object selected")
+            self.app.inform.emit(_("[ERROR_NOTCL] Failed to mirror. No object selected"))
 
     def rotate(self, angle, point):
         """
@@ -1422,9 +1422,9 @@ class Geometry(object):
                     self.tools[tool]['solid_geometry'] = rotate_geom(self.tools[tool]['solid_geometry'])
             else:
                 self.solid_geometry = rotate_geom(self.solid_geometry)
-            self.app.inform.emit('[success]Object was rotated ...')
+            self.app.inform.emit(_('[success]Object was rotated ...'))
         except AttributeError:
-            self.app.inform.emit("[ERROR_NOTCL] Failed to rotate. No object selected")
+            self.app.inform.emit(_("[ERROR_NOTCL] Failed to rotate. No object selected"))
 
     def skew(self, angle_x, angle_y, point):
         """
@@ -1458,9 +1458,9 @@ class Geometry(object):
                     self.tools[tool]['solid_geometry'] = skew_geom(self.tools[tool]['solid_geometry'])
             else:
                 self.solid_geometry = skew_geom(self.solid_geometry)
-            self.app.inform.emit('[success]Object was skewed ...')
+            self.app.inform.emit(_('[success]Object was skewed ...'))
         except AttributeError:
-            self.app.inform.emit("[ERROR_NOTCL] Failed to skew. No object selected")
+            self.app.inform.emit(_("[ERROR_NOTCL] Failed to skew. No object selected"))
 
         # if type(self.solid_geometry) == list:
         #     self.solid_geometry = [affinity.skew(g, angle_x, angle_y, origin=(px, py))
@@ -2548,8 +2548,8 @@ class Gerber (Geometry):
                         else:
                             if '0' not in self.apertures:
                                 self.apertures['0'] = {}
-                                self.apertures['0']['solid_geometry'] = []
                                 self.apertures['0']['type'] = 'REG'
+                                self.apertures['0']['solid_geometry'] = []
                             used_aperture = '0'
 
                         try:
@@ -2611,7 +2611,7 @@ class Gerber (Geometry):
                             if path[-1] != [linear_x, linear_y]:
                                 path.append([linear_x, linear_y])
 
-                            if  making_region is False:
+                            if making_region is False:
                                 # if the aperture is rectangle then add a rectangular shape having as parameters the
                                 # coordinates of the start and end point and also the width and height
                                 # of the 'R' aperture
@@ -2635,29 +2635,56 @@ class Gerber (Geometry):
                                 except:
                                     pass
                             last_path_aperture = current_aperture
+                            # we do this for the case that a region is done without having defined any aperture
+                            # Allegro does that
+                            if last_path_aperture is None:
+                                if '0' not in self.apertures:
+                                    self.apertures['0'] = {}
+                                    self.apertures['0']['type'] = 'REG'
+                                    self.apertures['0']['solid_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] Coordinates missing, line ignored: %s") % str(gline))
+                            self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"))
 
                     elif current_operation_code == 2:
                         if len(path) > 1:
                             geo = None
 
-                            ## --- BUFFERED ---
+                            # --- BUFFERED ---
                             # this treats the case when we are storing geometry as paths only
                             if making_region:
+                                # we do this for the case that a region is done without having defined any aperture
+                                # Allegro does that
+                                if last_path_aperture is None:
+                                    if '0' not in self.apertures:
+                                        self.apertures['0'] = {}
+                                        self.apertures['0']['type'] = 'REG'
+                                        self.apertures['0']['solid_geometry'] = []
+                                    last_path_aperture = '0'
                                 geo = Polygon()
                             else:
                                 geo = LineString(path)
+
                             try:
                                 if self.apertures[last_path_aperture]["type"] != 'R':
                                     if not geo.is_empty:
                                         follow_buffer.append(geo)
-                            except:
-                                follow_buffer.append(geo)
+                            except Exception as e:
+                                log.debug("camlib.Gerber.parse_lines() --> %s" % str(e))
+                                if not geo.is_empty:
+                                    follow_buffer.append(geo)
 
                             # this treats the case when we are storing geometry as solids
                             if making_region:
+                                # we do this for the case that a region is done without having defined any aperture
+                                # Allegro does that
+                                if last_path_aperture is None:
+                                    if '0' not in self.apertures:
+                                        self.apertures['0'] = {}
+                                        self.apertures['0']['type'] = 'REG'
+                                        self.apertures['0']['solid_geometry'] = []
+                                    last_path_aperture = '0'
                                 elem = [linear_x, linear_y]
                                 if elem != path[-1]:
                                     path.append([linear_x, linear_y])
@@ -2666,9 +2693,9 @@ class Gerber (Geometry):
                                     geo = Polygon(path)
                                 except ValueError:
                                     log.warning("Problem %s %s" % (gline, line_num))
-                                    self.app.inform.emit("[ERROR] Region does not have enough points. "
+                                    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))
+                                                         "Line number: %s") % str(line_num))
                             else:
                                 if last_path_aperture is None:
                                     log.warning("No aperture defined for curent path. (%d)" % line_num)
@@ -2684,7 +2711,8 @@ class Gerber (Geometry):
                                         except KeyError:
                                             self.apertures[last_path_aperture]['solid_geometry'] = []
                                             self.apertures[last_path_aperture]['solid_geometry'].append(geo)
-                            except:
+                            except Exception as e:
+                                log.debug("camlib.Gerber.parse_lines() --> %s" % str(e))
                                 poly_buffer.append(geo)
                                 try:
                                     self.apertures[last_path_aperture]['solid_geometry'].append(geo)
@@ -2696,8 +2724,8 @@ 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] Coordinates missing, line ignored: %s") % str(gline))
+                            self.app.inform.emit(_("[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"))
 
                     # Flash
                     # Not allowed in region mode.
@@ -3020,7 +3048,7 @@ class Gerber (Geometry):
 
             log.error("Gerber PARSING FAILED. Line %d: %s" % (line_num, gline))
             loc = 'Gerber Line #%d Gerber Line Content: %s\n' % (line_num, gline) + repr(err)
-            self.app.inform.emit("[ERROR]Gerber Parser ERROR.\n%s:" % loc)
+            self.app.inform.emit(_("[ERROR]Gerber Parser ERROR.\n%s:") % loc)
 
     @staticmethod
     def create_flash_geometry(location, aperture, steps_per_circle=None):
@@ -3198,7 +3226,7 @@ class Gerber (Geometry):
         try:
             xfactor = float(xfactor)
         except:
-            self.app.inform.emit("[ERROR_NOTCL] Scale factor has to be a number: integer or float.")
+            self.app.inform.emit(_("[ERROR_NOTCL] Scale factor has to be a number: integer or float."))
             return
 
         if yfactor is None:
@@ -3207,7 +3235,7 @@ class Gerber (Geometry):
             try:
                 yfactor = float(yfactor)
             except:
-                self.app.inform.emit("[ERROR_NOTCL] Scale factor has to be a number: integer or float.")
+                self.app.inform.emit(_("[ERROR_NOTCL] Scale factor has to be a number: integer or float."))
                 return
 
         if point is None:
@@ -3236,7 +3264,7 @@ class Gerber (Geometry):
         except Exception as e:
             log.debug('FlatCAMGeometry.scale() --> %s' % str(e))
 
-        self.app.inform.emit("[success]Gerber Scale done.")
+        self.app.inform.emit(_("[success]Gerber Scale done."))
 
 
         ## solid_geometry ???
@@ -3269,8 +3297,8 @@ class Gerber (Geometry):
         try:
             dx, dy = vect
         except TypeError:
-            self.app.inform.emit("[ERROR_NOTCL]An (x,y) pair of values are needed. "
-                                 "Probable you entered only one value in the Offset field.")
+            self.app.inform.emit(_("[ERROR_NOTCL]An (x,y) pair of values are needed. "
+                                 "Probable you entered only one value in the Offset field."))
             return
 
         def offset_geom(obj):
@@ -3293,7 +3321,7 @@ class Gerber (Geometry):
         except Exception as e:
             log.debug('FlatCAMGeometry.offset() --> %s' % str(e))
 
-        self.app.inform.emit("[success]Gerber Offset done.")
+        self.app.inform.emit(_("[success]Gerber Offset done."))
 
     def mirror(self, axis, point):
         """
@@ -3669,7 +3697,7 @@ 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] This is GCODE mark: %s') % eline)
                     return
 
                 # Header Begin (M48) #
@@ -4198,8 +4226,8 @@ 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 %d: %s\n' % (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 += traceback.format_exc()
             self.app.inform.emit(msg)
 
@@ -4276,9 +4304,9 @@ 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] Excellon.create_geometry() -> a drill location was skipped "
                                          "due of not having a tool associated.\n"
-                                         "Check the resulting GCode.")
+                                         "Check the resulting GCode."))
                     log.debug("Excellon.create_geometry() -> a drill location was skipped "
                               "due of not having a tool associated")
                     continue
@@ -4812,7 +4840,7 @@ 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] There is no such parameter: %s") % str(match))
                     log.debug("CNCJob.parse_custom_toolchange_code() --> AttributeError ")
                     return 'fail'
                 text = text.replace(match, str(value))
@@ -4877,15 +4905,15 @@ class CNCjob(Geometry):
         :rtype: None
         """
         if drillz > 0:
-            self.app.inform.emit("[WARNING] The Cut Z parameter has positive value. "
+            self.app.inform.emit(_("[WARNING] 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).")
+                                 "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] The Cut Z parameter is zero. "
+                                 "There will be no cut, skipping %s file") % exobj.options['name'])
             return 'fail'
         else:
             self.z_cut = drillz
@@ -4898,8 +4926,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 "
-                                         "in the format (x, y) \nbut now there is only one value, not two. ")
+                    self.app.inform.emit(_("[ERROR]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:
             log.debug("camlib.CNCJob.generate_from_excellon_by_tool() --> %s" % str(e))
@@ -5100,7 +5128,7 @@ class CNCjob(Geometry):
                 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]The loaded Excellon file has no drills ...'))
                     return 'fail'
 
                 log.debug("The total travel distance with OR-TOOLS Metaheuristics is: %s" % str(measured_distance))
@@ -5172,7 +5200,12 @@ class CNCjob(Geometry):
                             else:
                                 current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"]))
 
-                            z_offset = float(self.tool_offset[current_tooldia]) * (-1)
+                            # TODO apply offset only when using the GUI, for TclCommand this will create an error
+                            # because the values for Z offset are created in build_ui()
+                            try:
+                                z_offset = float(self.tool_offset[current_tooldia]) * (-1)
+                            except KeyError:
+                                z_offset = 0
                             self.z_cut += z_offset
 
                             # Drillling!
@@ -5190,12 +5223,12 @@ class CNCjob(Geometry):
                 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]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] Wrong optimization type selected."))
                 return 'fail'
         else:
             log.debug("Using Travelling Salesman drill path optimization.")
@@ -5241,7 +5274,7 @@ class CNCjob(Geometry):
                     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]The loaded Excellon file has no drills ...'))
                         return 'fail'
             log.debug("The total travel distance with Travelling Salesman Algorithm is: %s" % str(measured_distance))
 
@@ -5329,8 +5362,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 "
-                                         "in the format (x, y) \nbut now there is only one value, not two. ")
+                    self.app.inform.emit(_("[ERROR]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:
             log.debug("camlib.CNCJob.generate_from_multitool_geometry() --> %s" % str(e))
@@ -5339,16 +5372,38 @@ class CNCjob(Geometry):
         self.pp_geometry_name = pp_geometry_name if pp_geometry_name else 'default'
         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 "
+                                 "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] 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).")
+                                 "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] The Cut Z parameter is zero. "
+                                 "There will be no cut, skipping %s file") % self.options['name'])
+            return 'fail'
+
+        if self.z_move is None:
+            self.app.inform.emit(_("[ERROR_NOTCL] 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. "
+                                 "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'])
+            return 'fail'
 
         ## Index first and last points in paths
         # What points to index.
@@ -5476,14 +5531,14 @@ 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]Expected a Geometry, got %s") % 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 "
-                                 "from a Geometry object without solid_geometry.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Trying to generate a CNC Job "
+                                 "from a Geometry object without solid_geometry."))
 
         temp_solid_geometry = []
 
@@ -5521,9 +5576,9 @@ 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]The Tool Offset value is too negative to use "
                                          "for the current_geometry.\n"
-                                         "Raise the value (in module) and try again.")
+                                         "Raise the value (in module) and try again."))
                     return 'fail'
                 # hack: make offset smaller by 0.0000000001 which is insignificant difference but allow the job
                 # to continue
@@ -5578,8 +5633,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 "
-                                         "in the format (x, y) \nbut now there is only one value, not two. ")
+                    self.app.inform.emit(_("[ERROR]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:
             log.debug("camlib.CNCJob.generate_from_geometry_2() --> %s" % str(e))
@@ -5588,16 +5643,38 @@ class CNCjob(Geometry):
         self.pp_geometry_name = pp_geometry_name if pp_geometry_name else 'default'
         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 "
+                                 "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] 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).")
+                                 "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] The Cut Z parameter is zero. "
+                                 "There will be no cut, skipping %s 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."))
+            return 'fail'
+
+        if self.z_move < 0:
+            self.app.inform.emit(_("[WARNING] 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'])
+            return 'fail'
 
         ## Index first and last points in paths
         # What points to index.
@@ -5721,7 +5798,7 @@ 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] 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

Plik diff jest za duży
+ 513 - 479
flatcamGUI/FlatCAMGUI.py


+ 13 - 0
GUIElements.py → flatcamGUI/GUIElements.py

@@ -1,3 +1,16 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# Author: Juan Pablo Caram (c)                             #
+# Date: 2/5/2014                                           #
+# MIT Licence                                              #
+############################################################
+
+############################################################
+# File Modified (major mod): Marius Adrian Stanciu         #
+# Date: 3/10/2019                                          #
+############################################################
+
 from PyQt5 import QtGui, QtCore, QtWidgets
 from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot
 from PyQt5.QtWidgets import QTextEdit, QCompleter, QAction

Plik diff jest za duży
+ 254 - 224
flatcamGUI/ObjectUI.py


+ 2 - 3
PlotCanvas.py → flatcamGUI/PlotCanvas.py

@@ -9,12 +9,11 @@
 from PyQt5 import QtCore
 
 import logging
-from VisPyCanvas import VisPyCanvas
-from VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor
+from flatcamGUI.VisPyCanvas import VisPyCanvas, time
+from flatcamGUI.VisPyVisuals import ShapeGroup, ShapeCollection, TextCollection, TextGroup, Cursor
 from vispy.scene.visuals import InfiniteLine, Line
 import numpy as np
 from vispy.geometry import Rect
-import time
 
 log = logging.getLogger('base')
 

+ 8 - 0
VisPyCanvas.py → flatcamGUI/VisPyCanvas.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Dennis Hayrullin                            #
+# Date: 2/5/2016                                           #
+# MIT Licence                                              #
+############################################################
+
 import numpy as np
 from PyQt5.QtGui import QPalette
 import vispy.scene as scene

+ 8 - 0
VisPyPatches.py → flatcamGUI/VisPyPatches.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Dennis Hayrullin                            #
+# Date: 2/5/2016                                           #
+# MIT Licence                                              #
+############################################################
+
 from vispy.visuals import markers, LineVisual, InfiniteLineVisual
 from vispy.visuals.axis import Ticker, _get_ticks_talbot
 from vispy.scene.widgets import Grid

+ 8 - 0
VisPyTesselators.py → flatcamGUI/VisPyTesselators.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Dennis Hayrullin                            #
+# Date: 2/5/2016                                           #
+# MIT Licence                                              #
+############################################################
+
 from OpenGL import GLU
 
 

+ 9 - 1
VisPyVisuals.py → flatcamGUI/VisPyVisuals.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Dennis Hayrullin                            #
+# Date: 2/5/2016                                           #
+# MIT Licence                                              #
+############################################################
+
 from vispy.visuals import CompoundVisual, LineVisual, MeshVisual, TextVisual, MarkersVisual
 from vispy.scene.visuals import VisualNode, generate_docstring, visuals
 from vispy.gloo import set_state
@@ -5,7 +13,7 @@ from vispy.color import Color
 from shapely.geometry import Polygon, LineString, LinearRing
 import threading
 import numpy as np
-from VisPyTesselators import GLUTess
+from flatcamGUI.VisPyTesselators import GLUTess
 
 
 class FlatCAMLineVisual(LineVisual):

+ 0 - 0
flatcamGUI/__init__.py


+ 11 - 11
ParseDXF.py → flatcamParsers/ParseDXF.py

@@ -1,18 +1,18 @@
-import re
-import itertools
-import math
-import ezdxf
-
-from shapely.geometry import LinearRing, LineString, Point, Polygon
-from shapely.affinity import translate, rotate, scale, skew, affine_transform
-import numpy
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
+from shapely.geometry import LineString
 import logging
 
 log = logging.getLogger('base2')
-import FlatCAMApp
 
-from ParseFont import *
-from ParseDXF_Spline import *
+from flatcamParsers.ParseFont import *
+from flatcamParsers.ParseDXF_Spline import *
 
 
 def distance(pt1, pt2):

+ 7 - 0
ParseDXF_Spline.py → flatcamParsers/ParseDXF_Spline.py

@@ -2,6 +2,13 @@
 # Vasilis Vlachoudis
 # Date: 20-Oct-2015
 
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File modified: Marius Adrian Stanciu                     #
+# Date: 3/10/2019                                          #
+############################################################
+
 import math
 import sys
 

+ 8 - 0
ParseFont.py → flatcamParsers/ParseFont.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 #########################################################################
 ### Borrowed code from 'https://github.com/gddc/ttfquery/blob/master/ ###
 ### and made it work with Python 3                          #############

+ 4 - 8
ParseSVG.py → flatcamParsers/ParseSVG.py

@@ -20,17 +20,13 @@
 ############################################################
 
 # import xml.etree.ElementTree as ET
-from lxml import etree as ET
-import re
-import itertools
-from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier, parse_path
+from svg.path import Line, Arc, CubicBezier, QuadraticBezier, parse_path
 from svg.path.path import Move
-from shapely.geometry import LinearRing, LineString, Point, Polygon
-from shapely.affinity import translate, rotate, scale, skew, affine_transform
+from shapely.geometry import LineString
+from shapely.affinity import skew, affine_transform
 import numpy as np
-import logging
 
-from ParseFont import *
+from flatcamParsers.ParseFont import *
 
 log = logging.getLogger('base2')
 

+ 0 - 0
flatcamParsers/__init__.py


+ 90 - 72
flatcamTools/ToolCalculators.py

@@ -1,16 +1,30 @@
-from PyQt5 import QtGui
-from GUIElements import FCEntry
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
 import math
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class ToolCalculator(FlatCAMTool):
 
-    toolName = "Calculators"
-    v_shapeName = "V-Shape Tool Calculator"
-    unitsName = "Units Calculator"
-    eplateName = "ElectroPlating Calculator"
+    toolName = _("Calculators")
+    v_shapeName = _("V-Shape Tool Calculator")
+    unitsName = _("Units Calculator")
+    eplateName = _("ElectroPlating Calculator")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -51,12 +65,12 @@ class ToolCalculator(FlatCAMTool):
         self.inch_entry = FCEntry()
         # self.inch_entry.setFixedWidth(70)
         self.inch_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.inch_entry.setToolTip("Here you enter the value to be converted from INCH to MM")
+        self.inch_entry.setToolTip(_("Here you enter the value to be converted from INCH to MM"))
 
         self.mm_entry = FCEntry()
         # self.mm_entry.setFixedWidth(130)
         self.mm_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.mm_entry.setToolTip("Here you enter the value to be converted from MM to INCH")
+        self.mm_entry.setToolTip(_("Here you enter the value to be converted from MM to INCH"))
 
         grid_units_layout.addWidget(self.mm_entry, 1, 0)
         grid_units_layout.addWidget(self.inch_entry, 1, 1)
@@ -77,34 +91,34 @@ class ToolCalculator(FlatCAMTool):
         form_layout = QtWidgets.QFormLayout()
         self.layout.addLayout(form_layout)
 
-        self.tipDia_label = QtWidgets.QLabel("Tip Diameter:")
+        self.tipDia_label = QtWidgets.QLabel(_("Tip Diameter:"))
         self.tipDia_entry = FCEntry()
         # self.tipDia_entry.setFixedWidth(70)
         self.tipDia_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.tipDia_label.setToolTip('This is the diameter of the tool tip.\n'
-                                     'The manufacturer specifies it.')
+        self.tipDia_label.setToolTip(_('This is the diameter of the tool tip.\n'
+                                     'The manufacturer specifies it.'))
 
-        self.tipAngle_label = QtWidgets.QLabel("Tip Angle:")
+        self.tipAngle_label = QtWidgets.QLabel(_("Tip Angle:"))
         self.tipAngle_entry = FCEntry()
         # self.tipAngle_entry.setFixedWidth(70)
         self.tipAngle_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.tipAngle_label.setToolTip("This is the angle of the tip of the tool.\n"
-                                       "It is specified by manufacturer.")
+        self.tipAngle_label.setToolTip(_("This is the angle of the tip of the tool.\n"
+                                       "It is specified by manufacturer."))
 
-        self.cutDepth_label = QtWidgets.QLabel("Cut Z:")
+        self.cutDepth_label = QtWidgets.QLabel(_("Cut Z:"))
         self.cutDepth_entry = FCEntry()
         # self.cutDepth_entry.setFixedWidth(70)
         self.cutDepth_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.cutDepth_label.setToolTip("This is the depth to cut into the material.\n"
-                                       "In the CNCJob is the CutZ parameter.")
+        self.cutDepth_label.setToolTip(_("This is the depth to cut into the material.\n"
+                                       "In the CNCJob is the CutZ parameter."))
 
-        self.effectiveToolDia_label = QtWidgets.QLabel("Tool Diameter:")
+        self.effectiveToolDia_label = QtWidgets.QLabel(_("Tool Diameter:"))
         self.effectiveToolDia_entry = FCEntry()
         # self.effectiveToolDia_entry.setFixedWidth(70)
         self.effectiveToolDia_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.effectiveToolDia_label.setToolTip("This is the tool diameter to be entered into\n"
+        self.effectiveToolDia_label.setToolTip(_("This is the tool diameter to be entered into\n"
                                                "FlatCAM Gerber section.\n"
-                                               "In the CNCJob section it is called >Tool dia<.")
+                                               "In the CNCJob section it is called >Tool dia<."))
         # self.effectiveToolDia_entry.setEnabled(False)
 
 
@@ -114,11 +128,11 @@ class ToolCalculator(FlatCAMTool):
         form_layout.addRow(self.effectiveToolDia_label, self.effectiveToolDia_entry)
 
         ## Buttons
-        self.calculate_vshape_button = QtWidgets.QPushButton("Calculate")
+        self.calculate_vshape_button = QtWidgets.QPushButton(_("Calculate"))
         # self.calculate_button.setFixedWidth(70)
         self.calculate_vshape_button.setToolTip(
-            "Calculate either the Cut Z or the effective tool diameter,\n  "
-            "depending on which is desired and which is known. "
+            _("Calculate either the Cut Z or the effective tool diameter,\n  "
+            "depending on which is desired and which is known. ")
         )
         self.empty_label = QtWidgets.QLabel(" ")
 
@@ -135,8 +149,8 @@ class ToolCalculator(FlatCAMTool):
         ## Title of the ElectroPlating Tools Calculator
         plate_title_label = QtWidgets.QLabel("<font size=3><b>%s</b></font>" % self.eplateName)
         plate_title_label.setToolTip(
-            "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 chloride."
+            _("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 chloride.")
         )
         self.layout.addWidget(plate_title_label)
 
@@ -144,49 +158,49 @@ class ToolCalculator(FlatCAMTool):
         plate_form_layout = QtWidgets.QFormLayout()
         self.layout.addLayout(plate_form_layout)
 
-        self.pcblengthlabel = QtWidgets.QLabel("Board Length:")
+        self.pcblengthlabel = QtWidgets.QLabel(_("Board Length:"))
         self.pcblength_entry = FCEntry()
         # self.pcblengthlabel.setFixedWidth(70)
         self.pcblength_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.pcblengthlabel.setToolTip('This is the board length. In centimeters.')
+        self.pcblengthlabel.setToolTip(_('This is the board length. In centimeters.'))
 
-        self.pcbwidthlabel = QtWidgets.QLabel("Board Width:")
+        self.pcbwidthlabel = QtWidgets.QLabel(_("Board Width:"))
         self.pcbwidth_entry = FCEntry()
         # self.pcbwidthlabel.setFixedWidth(70)
         self.pcbwidth_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.pcbwidthlabel.setToolTip('This is the board width.In centimeters.')
+        self.pcbwidthlabel.setToolTip(_('This is the board width.In centimeters.'))
 
-        self.cdensity_label = QtWidgets.QLabel("Current Density:")
+        self.cdensity_label = QtWidgets.QLabel(_("Current Density:"))
         self.cdensity_entry = FCEntry()
         # self.cdensity_entry.setFixedWidth(70)
         self.cdensity_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.cdensity_label.setToolTip("Current density to pass through the board. \n"
-                                       "In Amps per Square Feet ASF.")
+        self.cdensity_label.setToolTip(_("Current density to pass through the board. \n"
+                                       "In Amps per Square Feet ASF."))
 
 
-        self.growth_label = QtWidgets.QLabel("Copper Growth:")
+        self.growth_label = QtWidgets.QLabel(_("Copper Growth:"))
         self.growth_entry = FCEntry()
         # self.growth_entry.setFixedWidth(70)
         self.growth_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.growth_label.setToolTip("How thick the copper growth is intended to be.\n"
-                                     "In microns.")
+        self.growth_label.setToolTip(_("How thick the copper growth is intended to be.\n"
+                                     "In microns."))
 
         # self.growth_entry.setEnabled(False)
 
-        self.cvaluelabel = QtWidgets.QLabel("Current Value:")
+        self.cvaluelabel = QtWidgets.QLabel(_("Current Value:"))
         self.cvalue_entry = FCEntry()
         # self.cvaluelabel.setFixedWidth(70)
         self.cvalue_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.cvaluelabel.setToolTip('This is the current intensity value\n'
-                                     'to be set on the Power Supply. In Amps.')
+        self.cvaluelabel.setToolTip(_('This is the current intensity value\n'
+                                     'to be set on the Power Supply. In Amps.'))
         self.cvalue_entry.setDisabled(True)
 
-        self.timelabel = QtWidgets.QLabel("Time:")
+        self.timelabel = QtWidgets.QLabel(_("Time:"))
         self.time_entry = FCEntry()
         # self.timelabel.setFixedWidth(70)
         self.time_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.timelabel.setToolTip('This is the calculated time required for the procedure.\n'
-                                  'In minutes.')
+        self.timelabel.setToolTip(_('This is the calculated time required for the procedure.\n'
+                                  'In minutes.'))
         self.time_entry.setDisabled(True)
 
         plate_form_layout.addRow(self.pcblengthlabel, self.pcblength_entry)
@@ -197,11 +211,11 @@ class ToolCalculator(FlatCAMTool):
         plate_form_layout.addRow(self.timelabel, self.time_entry)
 
         ## Buttons
-        self.calculate_plate_button = QtWidgets.QPushButton("Calculate")
+        self.calculate_plate_button = QtWidgets.QPushButton(_("Calculate"))
         # self.calculate_button.setFixedWidth(70)
         self.calculate_plate_button.setToolTip(
-            "Calculate the current intensity value and the procedure time,\n  "
-            "depending on the parameters above"
+            _("Calculate the current intensity value and the procedure time,\n  "
+            "depending on the parameters above")
         )
         self.empty_label_2 = QtWidgets.QLabel(" ")
 
@@ -221,21 +235,25 @@ class ToolCalculator(FlatCAMTool):
 
         self.calculate_plate_button.clicked.connect(self.on_calculate_eplate)
 
-
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolCalculators()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
+
         self.set_tool_ui()
 
         self.app.ui.notebook.setTabText(2, "Calc. Tool")
@@ -286,8 +304,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 tip_diameter = float(self.tipDia_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
@@ -297,8 +315,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 half_tip_angle = float(self.tipAngle_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         half_tip_angle /= 2
 
@@ -309,8 +327,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 cut_depth = float(self.cutDepth_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         tool_diameter = tip_diameter + (2 * cut_depth * math.tan(math.radians(half_tip_angle)))
@@ -324,8 +342,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 mm_val = float(self.mm_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         self.inch_entry.set_value('%.6f' % (mm_val / 25.4))
 
@@ -337,8 +355,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 inch_val = float(self.inch_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         self.mm_entry.set_value('%.6f' % (inch_val * 25.4))
 
@@ -351,8 +369,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 length = float(self.pcblength_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
@@ -362,8 +380,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 width = float(self.pcbwidth_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
@@ -373,8 +391,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 density = float(self.cdensity_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
@@ -384,8 +402,8 @@ class ToolCalculator(FlatCAMTool):
             try:
                 copper = float(self.growth_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         calculated_current = (length * width * density) * 0.0021527820833419

+ 129 - 116
flatcamTools/ToolCutOut.py

@@ -3,10 +3,18 @@ from ObjectCollection import *
 from FlatCAMApp import *
 from shapely.geometry import box
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class CutOut(FlatCAMTool):
 
-    toolName = "Cutout PCB"
+    toolName = _("Cutout PCB")
     gapFinished = pyqtSignal()
 
     def __init__(self, app):
@@ -42,12 +50,12 @@ class CutOut(FlatCAMTool):
         # self.type_obj_combo.setItemIcon(1, QtGui.QIcon("share/drill16.png"))
         self.type_obj_combo.setItemIcon(2, QtGui.QIcon("share/geometry16.png"))
 
-        self.type_obj_combo_label = QtWidgets.QLabel("Obj Type:")
+        self.type_obj_combo_label = QtWidgets.QLabel(_("Obj Type:"))
         self.type_obj_combo_label.setToolTip(
-            "Specify the type of object to be cutout.\n"
+            _("Specify the type of object to be cutout.\n"
             "It can be of type: Gerber or Geometry.\n"
             "What is selected here will dictate the kind\n"
-            "of objects that will populate the 'Object' combobox."
+            "of objects that will populate the 'Object' combobox.")
         )
         self.type_obj_combo_label.setFixedWidth(60)
         form_layout.addRow(self.type_obj_combo_label, self.type_obj_combo)
@@ -58,39 +66,39 @@ class CutOut(FlatCAMTool):
         self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
         self.obj_combo.setCurrentIndex(1)
 
-        self.object_label = QtWidgets.QLabel("Object:")
+        self.object_label = QtWidgets.QLabel(_("Object:"))
         self.object_label.setToolTip(
-            "Object to be cutout.                        "
+            _("Object to be cutout.                        ")
         )
         form_layout.addRow(self.object_label, self.obj_combo)
 
         # Tool Diameter
         self.dia = FCEntry()
-        self.dia_label = QtWidgets.QLabel("Tool Dia:")
+        self.dia_label = QtWidgets.QLabel(_("Tool Dia:"))
         self.dia_label.setToolTip(
-            "Diameter of the tool used to cutout\n"
-            "the PCB shape out of the surrounding material."
+           _( "Diameter of the tool used to cutout\n"
+            "the PCB shape out of the surrounding material.")
         )
         form_layout.addRow(self.dia_label, self.dia)
 
         # Margin
         self.margin = FCEntry()
-        self.margin_label = QtWidgets.QLabel("Margin:")
+        self.margin_label = QtWidgets.QLabel(_("Margin:"))
         self.margin_label.setToolTip(
-            "Margin over bounds. A positive value here\n"
+           _( "Margin over bounds. A positive value here\n"
             "will make the cutout of the PCB further from\n"
-            "the actual PCB border"
+            "the actual PCB border")
         )
         form_layout.addRow(self.margin_label, self.margin)
 
         # Gapsize
         self.gapsize = FCEntry()
-        self.gapsize_label = QtWidgets.QLabel("Gap size:")
+        self.gapsize_label = QtWidgets.QLabel(_("Gap size:"))
         self.gapsize_label.setToolTip(
-            "The size of the bridge gaps in the cutout\n"
+           _( "The size of the bridge gaps in the cutout\n"
             "used to keep the board connected to\n"
             "the surrounding material (the one \n"
-            "from which the PCB is cutout)."
+            "from which the PCB is cutout).")
         )
         form_layout.addRow(self.gapsize_label, self.gapsize)
 
@@ -103,9 +111,9 @@ class CutOut(FlatCAMTool):
         # 8     - 2*left + 2*right +2*top + 2*bottom
 
         ## Title2
-        title_param_label = QtWidgets.QLabel("<font size=4><b>A. Automatic Bridge Gaps</b></font>")
+        title_param_label = QtWidgets.QLabel("<font size=4><b>%s</b></font>" % _('A. Automatic Bridge Gaps'))
         title_param_label.setToolTip(
-            "This section handle creation of automatic bridge gaps."
+            _("This section handle creation of automatic bridge gaps.")
         )
         self.layout.addWidget(title_param_label)
 
@@ -114,9 +122,9 @@ class CutOut(FlatCAMTool):
         self.layout.addLayout(form_layout_2)
 
         # Gaps
-        gaps_label = QtWidgets.QLabel('Gaps:')
+        gaps_label = QtWidgets.QLabel(_('Gaps:'))
         gaps_label.setToolTip(
-            "Number of gaps used for the Automatic cutout.\n"
+            _("Number of gaps used for the Automatic cutout.\n"
             "There can be maximum 8 bridges/gaps.\n"
             "The choices are:\n"
             "- lr    - left + right\n"
@@ -124,7 +132,7 @@ class CutOut(FlatCAMTool):
             "- 4     - left + right +top + bottom\n"
             "- 2lr   - 2*left + 2*right\n"
             "- 2tb  - 2*top + 2*bottom\n"
-            "- 8     - 2*left + 2*right +2*top + 2*bottom"
+            "- 8     - 2*left + 2*right +2*top + 2*bottom")
         )
         gaps_label.setFixedWidth(60)
 
@@ -139,50 +147,50 @@ class CutOut(FlatCAMTool):
         hlay = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay)
 
-        title_ff_label = QtWidgets.QLabel("<b>FreeForm:</b>")
+        title_ff_label = QtWidgets.QLabel("<b>%s</b>" % _('FreeForm:'))
         title_ff_label.setToolTip(
-            "The cutout shape can be of ny shape.\n"
-            "Useful when the PCB has a non-rectangular shape."
+            _("The cutout shape can be of ny shape.\n"
+            "Useful when the PCB has a non-rectangular shape.")
         )
         hlay.addWidget(title_ff_label)
 
         hlay.addStretch()
 
-        self.ff_cutout_object_btn = QtWidgets.QPushButton("Generate Geo")
+        self.ff_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo"))
         self.ff_cutout_object_btn.setToolTip(
-            "Cutout the selected object.\n"
+            _("Cutout the selected object.\n"
             "The cutout shape can be of any shape.\n"
-            "Useful when the PCB has a non-rectangular shape."
+            "Useful when the PCB has a non-rectangular shape.")
         )
         hlay.addWidget(self.ff_cutout_object_btn)
 
         hlay2 = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay2)
 
-        title_rct_label = QtWidgets.QLabel("<b>Rectangular:</b>")
+        title_rct_label = QtWidgets.QLabel("<b>%s</b>" % _('Rectangular:'))
         title_rct_label.setToolTip(
-            "The resulting cutout shape is\n"
+            _("The resulting cutout shape is\n"
             "always a rectangle shape and it will be\n"
-            "the bounding box of the Object."
+            "the bounding box of the Object.")
         )
         hlay2.addWidget(title_rct_label)
 
         hlay2.addStretch()
-        self.rect_cutout_object_btn = QtWidgets.QPushButton("Generate Geo")
+        self.rect_cutout_object_btn = QtWidgets.QPushButton(_("Generate Geo"))
         self.rect_cutout_object_btn.setToolTip(
-            "Cutout the selected object.\n"
+            _("Cutout the selected object.\n"
             "The resulting cutout shape is\n"
             "always a rectangle shape and it will be\n"
-            "the bounding box of the Object."
+            "the bounding box of the Object.")
         )
         hlay2.addWidget(self.rect_cutout_object_btn)
 
         ## Title5
-        title_manual_label = QtWidgets.QLabel("<font size=4><b>B. Manual Bridge Gaps</b></font>")
+        title_manual_label = QtWidgets.QLabel("<font size=4><b>%s</b></font>" % _('B. Manual Bridge Gaps'))
         title_manual_label.setToolTip(
-            "This section handle creation of manual bridge gaps.\n"
+            _("This section handle creation of manual bridge gaps.\n"
             "This is done by mouse clicking on the perimeter of the\n"
-            "Geometry object that is used as a cutout object. "
+            "Geometry object that is used as a cutout object. ")
         )
         self.layout.addWidget(title_manual_label)
 
@@ -196,9 +204,9 @@ class CutOut(FlatCAMTool):
         self.man_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
         self.man_object_combo.setCurrentIndex(1)
 
-        self.man_object_label = QtWidgets.QLabel("Geo Obj:")
+        self.man_object_label = QtWidgets.QLabel(_("Geo Obj:"))
         self.man_object_label.setToolTip(
-            "Geometry object used to create the manual cutout."
+            _("Geometry object used to create the manual cutout.")
         )
         self.man_object_label.setFixedWidth(60)
         # e_lab_0 = QtWidgets.QLabel('')
@@ -209,44 +217,44 @@ class CutOut(FlatCAMTool):
         hlay3 = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay3)
 
-        self.man_geo_label = QtWidgets.QLabel("Manual Geo:")
+        self.man_geo_label = QtWidgets.QLabel(_("Manual Geo:"))
         self.man_geo_label.setToolTip(
-            "If the object to be cutout is a Gerber\n"
+            _("If the object to be cutout is a Gerber\n"
             "first create a Geometry that surrounds it,\n"
             "to be used as the cutout, if one doesn't exist yet.\n"
-            "Select the source Gerber file in the top object combobox."
+            "Select the source Gerber file in the top object combobox.")
         )
         hlay3.addWidget(self.man_geo_label)
 
         hlay3.addStretch()
-        self.man_geo_creation_btn = QtWidgets.QPushButton("Generate Geo")
+        self.man_geo_creation_btn = QtWidgets.QPushButton(_("Generate Geo"))
         self.man_geo_creation_btn.setToolTip(
-            "If the object to be cutout is a Gerber\n"
+            _("If the object to be cutout is a Gerber\n"
             "first create a Geometry that surrounds it,\n"
             "to be used as the cutout, if one doesn't exist yet.\n"
-            "Select the source Gerber file in the top object combobox."
+            "Select the source Gerber file in the top object combobox.")
         )
         hlay3.addWidget(self.man_geo_creation_btn)
 
         hlay4 = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay4)
 
-        self.man_bridge_gaps_label = QtWidgets.QLabel("Manual Add Bridge Gaps:")
+        self.man_bridge_gaps_label = QtWidgets.QLabel(_("Manual Add Bridge Gaps:"))
         self.man_bridge_gaps_label.setToolTip(
-            "Use the left mouse button (LMB) click\n"
+            _("Use the left mouse button (LMB) click\n"
             "to create a bridge gap to separate the PCB from\n"
-            "the surrounding material."
+            "the surrounding material.")
         )
         hlay4.addWidget(self.man_bridge_gaps_label)
 
         hlay4.addStretch()
-        self.man_gaps_creation_btn = QtWidgets.QPushButton("Generate Gap")
+        self.man_gaps_creation_btn = QtWidgets.QPushButton(_("Generate Gap"))
         self.man_gaps_creation_btn.setToolTip(
-            "Use the left mouse button (LMB) click\n"
+            _("Use the left mouse button (LMB) click\n"
             "to create a bridge gap to separate the PCB from\n"
             "the surrounding material.\n"
             "The LMB click has to be done on the perimeter of\n"
-            "the Geometry object used as a cutout geometry."
+            "the Geometry object used as a cutout geometry.")
         )
         hlay4.addWidget(self.man_gaps_creation_btn)
 
@@ -258,23 +266,36 @@ class CutOut(FlatCAMTool):
         # true if we want to repeat the gap without clicking again on the button
         self.repeat_gap = False
 
+        ## Signals
+        self.ff_cutout_object_btn.clicked.connect(self.on_freeform_cutout)
+        self.rect_cutout_object_btn.clicked.connect(self.on_rectangular_cutout)
+
+        self.type_obj_combo.currentIndexChanged.connect(self.on_type_obj_index_changed)
+        self.man_geo_creation_btn.clicked.connect(self.on_manual_geo)
+        self.man_gaps_creation_btn.clicked.connect(self.on_manual_gap_click)
+
     def on_type_obj_index_changed(self, index):
         obj_type = self.type_obj_combo.currentIndex()
         self.obj_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
         self.obj_combo.setCurrentIndex(0)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolCutOut()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
@@ -291,14 +312,6 @@ class CutOut(FlatCAMTool):
         self.gapsize.set_value(float(self.app.defaults["tools_cutoutgapsize"]))
         self.gaps.set_value(4)
 
-        ## Signals
-        self.ff_cutout_object_btn.clicked.connect(self.on_freeform_cutout)
-        self.rect_cutout_object_btn.clicked.connect(self.on_rectangular_cutout)
-
-        self.type_obj_combo.currentIndexChanged.connect(self.on_type_obj_index_changed)
-        self.man_geo_creation_btn.clicked.connect(self.on_manual_geo)
-        self.man_gaps_creation_btn.clicked.connect(self.on_manual_gap_click)
-
         self.gapFinished.connect(self.on_gap_finished)
 
     def on_freeform_cutout(self):
@@ -313,11 +326,11 @@ class CutOut(FlatCAMTool):
         try:
             cutout_obj = self.app.collection.get_by_name(str(name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % name)
             return "Could not retrieve object: %s" % name
 
         if cutout_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]There is no object selected for Cutout.\nSelect one and try again.")
+            self.app.inform.emit(_("[ERROR_NOTCL]There is no object selected for Cutout.\nSelect one and try again."))
             return
 
         try:
@@ -327,13 +340,13 @@ class CutOut(FlatCAMTool):
             try:
                 dia = float(self.dia.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
 
         if 0 in {dia}:
-            self.app.inform.emit("[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer.")
+            self.app.inform.emit(_("[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer."))
             return "Tool Diameter is zero value. Change it to a positive integer."
 
         try:
@@ -343,8 +356,8 @@ class CutOut(FlatCAMTool):
             try:
                 margin = float(self.margin.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Margin value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Margin value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         try:
@@ -354,25 +367,25 @@ class CutOut(FlatCAMTool):
             try:
                 gapsize = float(self.gapsize.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Gap size value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Gap size value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         try:
             gaps = self.gaps.get_value()
         except TypeError:
-            self.app.inform.emit("[WARNING_NOTCL] Number of gaps value is missing. Add it and retry.")
+            self.app.inform.emit(_("[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."))
             return
 
         if gaps not in ['LR', 'TB', '2LR', '2TB', '4', '8']:
-            self.app.inform.emit("[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 or 8. "
-                                 "Fill in a correct value and retry. ")
+            self.app.inform.emit(_("[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 or 8. "
+                                 "Fill in a correct value and retry. "))
             return
 
         if cutout_obj.multigeo is True:
-            self.app.inform.emit("[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+            self.app.inform.emit(_("[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
                                  "Optionally, this Multi-geo Geometry can be converted to Single-geo Geometry,\n"
-                                 "and after that perform Cutout.")
+                                 "and after that perform Cutout."))
             return
 
         # Get min and max data for each object as we just cut rectangles across X or Y
@@ -436,7 +449,7 @@ class CutOut(FlatCAMTool):
                                ymax + gapsize)
 
         cutout_obj.plot()
-        self.app.inform.emit("[success] Any form CutOut operation finished.")
+        self.app.inform.emit(_("[success] Any form CutOut operation finished."))
         self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
         self.app.should_we_save = True
 
@@ -452,11 +465,11 @@ class CutOut(FlatCAMTool):
         try:
             cutout_obj = self.app.collection.get_by_name(str(name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % name)
             return "Could not retrieve object: %s" % name
 
         if cutout_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]Object not found: %s" % cutout_obj)
+            self.app.inform.emit(_("[ERROR_NOTCL]Object not found: %s") % cutout_obj)
 
         try:
             dia = float(self.dia.get_value())
@@ -465,12 +478,12 @@ class CutOut(FlatCAMTool):
             try:
                 dia = float(self.dia.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         if 0 in {dia}:
-            self.app.inform.emit("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."))
             return "Tool Diameter is zero value. Change it to a positive integer."
 
         try:
@@ -480,8 +493,8 @@ class CutOut(FlatCAMTool):
             try:
                 margin = float(self.margin.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Margin value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Margin value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         try:
@@ -491,25 +504,25 @@ class CutOut(FlatCAMTool):
             try:
                 gapsize = float(self.gapsize.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Gap size value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Gap size value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         try:
             gaps = self.gaps.get_value()
         except TypeError:
-            self.app.inform.emit("[WARNING_NOTCL] Number of gaps value is missing. Add it and retry.")
+            self.app.inform.emit(_("[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."))
             return
 
         if gaps not in ['LR', 'TB', '2LR', '2TB', '4', '8']:
-            self.app.inform.emit("[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 or 8. "
-                                 "Fill in a correct value and retry. ")
+            self.app.inform.emit(_("[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 or 8. "
+                                 "Fill in a correct value and retry. "))
             return
 
         if cutout_obj.multigeo is True:
-            self.app.inform.emit("[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+            self.app.inform.emit(_("[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
                                  "Optionally, this Multi-geo Geometry can be converted to Single-geo Geometry,\n"
-                                 "and after that perform Cutout.")
+                                 "and after that perform Cutout."))
             return
 
         # Get min and max data for each object as we just cut rectangles across X or Y
@@ -570,12 +583,12 @@ class CutOut(FlatCAMTool):
                                ymax + gapsize)
 
         cutout_obj.plot()
-        self.app.inform.emit("[success] Any form CutOut operation finished.")
+        self.app.inform.emit(_("[success] Any form CutOut operation finished."))
         self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
         self.app.should_we_save = True
 
     def on_manual_gap_click(self):
-        self.app.inform.emit("Click on the selected geometry object perimeter to create a bridge gap ...")
+        self.app.inform.emit(_("Click on the selected geometry object perimeter to create a bridge gap ..."))
         self.app.geo_editor.tool_shape.enabled = True
 
         try:
@@ -585,12 +598,12 @@ class CutOut(FlatCAMTool):
             try:
                 self.cutting_dia = float(self.dia.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         if 0 in {self.cutting_dia}:
-            self.app.inform.emit("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."))
             return "Tool Diameter is zero value. Change it to a positive integer."
 
         try:
@@ -600,8 +613,8 @@ class CutOut(FlatCAMTool):
             try:
                 self.cutting_gapsize = float(self.gapsize.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Gap size value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Gap size value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         self.app.plotcanvas.vis_disconnect('key_press', self.app.ui.keyPressEvent)
@@ -616,7 +629,7 @@ class CutOut(FlatCAMTool):
     def doit(self, event):
         # do paint single only for left mouse clicks
         if event.button == 1:
-            self.app.inform.emit("Making manual bridge gap...")
+            self.app.inform.emit(_("Making manual bridge gap..."))
             pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
             self.on_manual_cutout(click_pos=pos)
 
@@ -639,11 +652,11 @@ class CutOut(FlatCAMTool):
         try:
             cutout_obj = self.app.collection.get_by_name(str(name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve Geoemtry object: %s" % name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve Geoemtry object: %s") % name)
             return "Could not retrieve object: %s" % name
 
         if cutout_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]Geometry object for manual cutout not found: %s" % cutout_obj)
+            self.app.inform.emit(_("[ERROR_NOTCL]Geometry object for manual cutout not found: %s") % cutout_obj)
             return
 
         # use the snapped position as reference
@@ -653,7 +666,7 @@ class CutOut(FlatCAMTool):
         cutout_obj.subtract_polygon(cut_poly)
 
         cutout_obj.plot()
-        self.app.inform.emit("[success] Added manual Bridge Gap.")
+        self.app.inform.emit(_("[success] Added manual Bridge Gap."))
 
         self.app.should_we_save = True
 
@@ -670,17 +683,17 @@ class CutOut(FlatCAMTool):
         try:
             cutout_obj = self.app.collection.get_by_name(str(name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve Gerber object: %s" % name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve Gerber object: %s") % name)
             return "Could not retrieve object: %s" % name
 
         if cutout_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
-                                 "Select one and try again.")
+            self.app.inform.emit(_("[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
+                                 "Select one and try again."))
             return
 
         if not isinstance(cutout_obj, FlatCAMGerber):
-            self.app.inform.emit("[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
-                                 "Select a Gerber file and try again.")
+            self.app.inform.emit(_("[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
+                                 "Select a Gerber file and try again."))
             return
 
         try:
@@ -690,12 +703,12 @@ class CutOut(FlatCAMTool):
             try:
                 dia = float(self.dia.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         if 0 in {dia}:
-            self.app.inform.emit("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."))
             return "Tool Diameter is zero value. Change it to a positive integer."
 
         try:
@@ -705,8 +718,8 @@ class CutOut(FlatCAMTool):
             try:
                 margin = float(self.margin.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Margin value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Margin value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         def geo_init(geo_obj, app_obj):

+ 132 - 110
flatcamTools/ToolDblSided.py

@@ -1,15 +1,21 @@
-from PyQt5 import QtGui
-from GUIElements import RadioSet, EvalEntry, LengthEntry
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
 from shapely.geometry import Point
 from shapely import affinity
 from PyQt5 import QtCore
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class DblSidedTool(FlatCAMTool):
 
-    toolName = "2-Sided PCB"
+    toolName = _("2-Sided PCB")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -43,18 +49,18 @@ class DblSidedTool(FlatCAMTool):
             "Gerber  to be mirrored."
         )
 
-        self.mirror_gerber_button = QtWidgets.QPushButton("Mirror")
+        self.mirror_gerber_button = QtWidgets.QPushButton(_("Mirror"))
         self.mirror_gerber_button.setToolTip(
-            "Mirrors (flips) the specified object around \n"
+            _("Mirrors (flips) the specified object around \n"
             "the specified axis. Does not create a new \n"
-            "object, but modifies it."
+            "object, but modifies it.")
         )
-        self.mirror_gerber_button.setFixedWidth(40)
+        self.mirror_gerber_button.setFixedWidth(60)
 
         # grid_lay.addRow("Bottom Layer:", self.object_combo)
         grid_lay.addWidget(self.botlay_label, 0, 0)
-        grid_lay.addWidget(self.gerber_object_combo, 1, 0, 1, 2)
-        grid_lay.addWidget(self.mirror_gerber_button, 1, 3)
+        grid_lay.addWidget(self.gerber_object_combo, 1, 0)
+        grid_lay.addWidget(self.mirror_gerber_button, 1, 1)
 
         ## Excellon Object to mirror
         self.exc_object_combo = QtWidgets.QComboBox()
@@ -64,21 +70,21 @@ class DblSidedTool(FlatCAMTool):
 
         self.excobj_label = QtWidgets.QLabel("<b>EXCELLON:</b>")
         self.excobj_label.setToolTip(
-            "Excellon Object to be mirrored."
+            _("Excellon Object to be mirrored.")
         )
 
-        self.mirror_exc_button = QtWidgets.QPushButton("Mirror")
+        self.mirror_exc_button = QtWidgets.QPushButton(_("Mirror"))
         self.mirror_exc_button.setToolTip(
-            "Mirrors (flips) the specified object around \n"
+            _("Mirrors (flips) the specified object around \n"
             "the specified axis. Does not create a new \n"
-            "object, but modifies it."
+            "object, but modifies it.")
         )
-        self.mirror_exc_button.setFixedWidth(40)
+        self.mirror_exc_button.setFixedWidth(60)
 
         # grid_lay.addRow("Bottom Layer:", self.object_combo)
         grid_lay.addWidget(self.excobj_label, 2, 0)
-        grid_lay.addWidget(self.exc_object_combo, 3, 0, 1, 2)
-        grid_lay.addWidget(self.mirror_exc_button, 3, 3)
+        grid_lay.addWidget(self.exc_object_combo, 3, 0)
+        grid_lay.addWidget(self.mirror_exc_button, 3, 1)
 
         ## Geometry Object to mirror
         self.geo_object_combo = QtWidgets.QComboBox()
@@ -88,73 +94,81 @@ class DblSidedTool(FlatCAMTool):
 
         self.geoobj_label = QtWidgets.QLabel("<b>GEOMETRY</b>:")
         self.geoobj_label.setToolTip(
-            "Geometry Obj to be mirrored."
+            _("Geometry Obj to be mirrored.")
         )
 
-        self.mirror_geo_button = QtWidgets.QPushButton("Mirror")
+        self.mirror_geo_button = QtWidgets.QPushButton(_("Mirror"))
         self.mirror_geo_button.setToolTip(
-            "Mirrors (flips) the specified object around \n"
+            _("Mirrors (flips) the specified object around \n"
             "the specified axis. Does not create a new \n"
-            "object, but modifies it."
+            "object, but modifies it.")
         )
-        self.mirror_geo_button.setFixedWidth(40)
+        self.mirror_geo_button.setFixedWidth(60)
 
         # grid_lay.addRow("Bottom Layer:", self.object_combo)
         grid_lay.addWidget(self.geoobj_label, 4, 0)
-        grid_lay.addWidget(self.geo_object_combo, 5, 0, 1, 2)
-        grid_lay.addWidget(self.mirror_geo_button, 5, 3)
+        grid_lay.addWidget(self.geo_object_combo, 5, 0)
+        grid_lay.addWidget(self.mirror_geo_button, 5, 1)
+
+        ## Grid Layout
+        grid_lay1 = QtWidgets.QGridLayout()
+        self.layout.addLayout(grid_lay1)
 
         ## Axis
         self.mirror_axis = RadioSet([{'label': 'X', 'value': 'X'},
                                      {'label': 'Y', 'value': 'Y'}])
-        self.mirax_label = QtWidgets.QLabel("Mirror Axis:")
+        self.mirax_label = QtWidgets.QLabel(_("Mirror Axis:"))
         self.mirax_label.setToolTip(
-            "Mirror vertically (X) or horizontally (Y)."
+            _("Mirror vertically (X) or horizontally (Y).")
         )
         # grid_lay.addRow("Mirror Axis:", self.mirror_axis)
         self.empty_lb1 = QtWidgets.QLabel("")
-        grid_lay.addWidget(self.empty_lb1, 6, 0)
-        grid_lay.addWidget(self.mirax_label, 7, 0)
-        grid_lay.addWidget(self.mirror_axis, 7, 1)
+        grid_lay1.addWidget(self.empty_lb1, 6, 0)
+        grid_lay1.addWidget(self.mirax_label, 7, 0)
+        grid_lay1.addWidget(self.mirror_axis, 7, 1)
 
         ## Axis Location
         self.axis_location = RadioSet([{'label': 'Point', 'value': 'point'},
                                        {'label': 'Box', 'value': 'box'}])
-        self.axloc_label = QtWidgets.QLabel("Axis Ref:")
+        self.axloc_label = QtWidgets.QLabel(_("Axis Ref:"))
         self.axloc_label.setToolTip(
-            "The axis should pass through a <b>point</b> or cut\n "
+            _("The axis should pass through a <b>point</b> or cut\n "
             "a specified <b>box</b> (in a FlatCAM object) through \n"
-            "the center."
+            "the center.")
         )
         # grid_lay.addRow("Axis Location:", self.axis_location)
-        grid_lay.addWidget(self.axloc_label, 8, 0)
-        grid_lay.addWidget(self.axis_location, 8, 1)
+        grid_lay1.addWidget(self.axloc_label, 8, 0)
+        grid_lay1.addWidget(self.axis_location, 8, 1)
 
         self.empty_lb2 = QtWidgets.QLabel("")
-        grid_lay.addWidget(self.empty_lb2, 9, 0)
+        grid_lay1.addWidget(self.empty_lb2, 9, 0)
+
+        ## Grid Layout
+        grid_lay2 = QtWidgets.QGridLayout()
+        self.layout.addLayout(grid_lay2)
 
         ## Point/Box
         self.point_box_container = QtWidgets.QVBoxLayout()
-        self.pb_label = QtWidgets.QLabel("<b>Point/Box Reference:</b>")
+        self.pb_label = QtWidgets.QLabel("<b>%s</b>" % _('Point/Box Reference:'))
         self.pb_label.setToolTip(
-            "If 'Point' is selected above it store the coordinates (x, y) through which\n"
+            _("If 'Point' is selected above it store the coordinates (x, y) through which\n"
             "the mirroring axis passes.\n"
             "If 'Box' is selected above, select here a FlatCAM object (Gerber, Exc or Geo).\n"
-            "Through the center of this object pass the mirroring axis selected above."
+            "Through the center of this object pass the mirroring axis selected above.")
         )
 
-        self.add_point_button = QtWidgets.QPushButton("Add")
+        self.add_point_button = QtWidgets.QPushButton(_("Add"))
         self.add_point_button.setToolTip(
-            "Add the coordinates in format <b>(x, y)</b> through which the mirroring axis \n "
+            _("Add the coordinates in format <b>(x, y)</b> through which the mirroring axis \n "
             "selected in 'MIRROR AXIS' pass.\n"
             "The (x, y) coordinates are captured by pressing SHIFT key\n"
-            "and left mouse button click on canvas or you can enter the coords manually."
+            "and left mouse button click on canvas or you can enter the coords manually.")
         )
-        self.add_point_button.setFixedWidth(40)
+        self.add_point_button.setFixedWidth(60)
 
-        grid_lay.addWidget(self.pb_label, 10, 0)
-        grid_lay.addLayout(self.point_box_container, 11, 0, 1, 3)
-        grid_lay.addWidget(self.add_point_button, 11, 3)
+        grid_lay2.addWidget(self.pb_label, 10, 0)
+        grid_lay2.addLayout(self.point_box_container, 11, 0)
+        grid_lay2.addWidget(self.add_point_button, 11, 1)
 
         self.point_entry = EvalEntry()
 
@@ -165,9 +179,9 @@ class DblSidedTool(FlatCAMTool):
         self.box_combo.setCurrentIndex(1)
 
         self.box_combo_type = QtWidgets.QComboBox()
-        self.box_combo_type.addItem("Gerber   Reference Box Object")
-        self.box_combo_type.addItem("Excellon Reference Box Object")
-        self.box_combo_type.addItem("Geometry Reference Box Object")
+        self.box_combo_type.addItem(_("Gerber   Reference Box Object"))
+        self.box_combo_type.addItem(_("Excellon Reference Box Object"))
+        self.box_combo_type.addItem(_("Geometry Reference Box Object"))
 
         self.point_box_container.addWidget(self.box_combo_type)
         self.point_box_container.addWidget(self.box_combo)
@@ -176,70 +190,74 @@ class DblSidedTool(FlatCAMTool):
 
 
         ## Alignment holes
-        self.ah_label = QtWidgets.QLabel("<b>Alignment Drill Coordinates:</b>")
+        self.ah_label = QtWidgets.QLabel("<b%s</b>" % _('Alignment Drill Coordinates:'))
         self.ah_label.setToolTip(
-            "Alignment holes (x1, y1), (x2, y2), ... "
+           _( "Alignment holes (x1, y1), (x2, y2), ... "
             "on one side of the mirror axis. For each set of (x, y) coordinates\n"
             "entered here, a pair of drills will be created:\n\n"
             "- one drill at the coordinates from the field\n"
-            "- one drill in mirror position over the axis selected above in the 'Mirror Axis'."
+            "- one drill in mirror position over the axis selected above in the 'Mirror Axis'.")
         )
         self.layout.addWidget(self.ah_label)
 
-        grid_lay1 = QtWidgets.QGridLayout()
-        self.layout.addLayout(grid_lay1)
+        grid_lay3 = QtWidgets.QGridLayout()
+        self.layout.addLayout(grid_lay3)
 
         self.alignment_holes = EvalEntry()
 
-        self.add_drill_point_button = QtWidgets.QPushButton("Add")
+        self.add_drill_point_button = QtWidgets.QPushButton(_("Add"))
         self.add_drill_point_button.setToolTip(
-            "Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
+            _("Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
             "on one side of the mirror axis.\n\n"
             "The coordinates set can be obtained:\n"
             "- press SHIFT key and left mouse clicking on canvas. Then click Add.\n"
             "- press SHIFT key and left mouse clicking on canvas. Then CTRL+V in the field.\n"
             "- press SHIFT key and left mouse clicking on canvas. Then RMB click in the field and click Paste.\n"
-            "- by entering the coords manually in the format: (x1, y1), (x2, y2), ..."
+            "- by entering the coords manually in the format: (x1, y1), (x2, y2), ...")
         )
-        self.add_drill_point_button.setFixedWidth(40)
+        self.add_drill_point_button.setFixedWidth(60)
 
-        grid_lay1.addWidget(self.alignment_holes, 0, 0, 1, 2)
-        grid_lay1.addWidget(self.add_drill_point_button, 0, 3)
+        grid_lay3.addWidget(self.alignment_holes, 0, 0)
+        grid_lay3.addWidget(self.add_drill_point_button, 0, 1)
 
         ## Drill diameter for alignment holes
-        self.dt_label = QtWidgets.QLabel("<b>Alignment Drill Diameter</b>:")
+        self.dt_label = QtWidgets.QLabel("<b>%s</b>:" % _('Alignment Drill Diameter'))
         self.dt_label.setToolTip(
-            "Diameter of the drill for the "
-            "alignment holes."
+            _("Diameter of the drill for the "
+            "alignment holes.")
         )
         self.layout.addWidget(self.dt_label)
 
-        grid_lay2 = QtWidgets.QGridLayout()
-        self.layout.addLayout(grid_lay2)
+        hlay = QtWidgets.QHBoxLayout()
+        self.layout.addLayout(hlay)
 
         self.drill_dia = FCEntry()
-        self.dd_label = QtWidgets.QLabel("Drill diam.:")
+        self.dd_label = QtWidgets.QLabel(_("Drill diam.:"))
         self.dd_label.setToolTip(
-            "Diameter of the drill for the "
-            "alignment holes."
+            _("Diameter of the drill for the "
+            "alignment holes.")
         )
-        grid_lay2.addWidget(self.dd_label, 0, 0)
-        grid_lay2.addWidget(self.drill_dia, 0, 1)
+        hlay.addWidget(self.dd_label)
+        hlay.addWidget(self.drill_dia)
+
+        hlay2 = QtWidgets.QHBoxLayout()
+        self.layout.addLayout(hlay2)
 
         ## Buttons
-        self.create_alignment_hole_button = QtWidgets.QPushButton("Create Excellon Object")
+        self.create_alignment_hole_button = QtWidgets.QPushButton(_("Create Excellon Object"))
         self.create_alignment_hole_button.setToolTip(
-            "Creates an Excellon Object containing the\n"
+            _("Creates an Excellon Object containing the\n"
             "specified alignment holes and their mirror\n"
             "images.")
-        # self.create_alignment_hole_button.setFixedWidth(40)
-        grid_lay2.addWidget(self.create_alignment_hole_button, 1,0, 1, 2)
+        )
+        hlay2.addWidget(self.create_alignment_hole_button)
 
-        self.reset_button = QtWidgets.QPushButton("Reset")
+        self.reset_button = QtWidgets.QPushButton(_("Reset"))
         self.reset_button.setToolTip(
-            "Resets all the fields.")
-        self.reset_button.setFixedWidth(40)
-        grid_lay2.addWidget(self.reset_button, 1, 2)
+            _("Resets all the fields.")
+        )
+        self.reset_button.setFixedWidth(60)
+        hlay2.addWidget(self.reset_button)
 
         self.layout.addStretch()
 
@@ -261,23 +279,27 @@ class DblSidedTool(FlatCAMTool):
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='ALT+D', **kwargs)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("Tool2Sided()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
-        self.app.ui.notebook.setTabText(2, "2-Sided Tool")
+        self.app.ui.notebook.setTabText(2, _("2-Sided Tool"))
 
     def set_tool_ui(self):
         self.reset_fields()
@@ -302,8 +324,8 @@ class DblSidedTool(FlatCAMTool):
             try:
                 px, py = self.point_entry.get_value()
             except TypeError:
-                self.app.inform.emit("[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates "
-                                     "are missing. Add them and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates "
+                                     "are missing. Add them and retry."))
                 return
         else:
             selection_index = self.box_combo.currentIndex()
@@ -321,7 +343,7 @@ class DblSidedTool(FlatCAMTool):
                         bb_obj = model_index.internalPointer().obj
                     except AttributeError:
                         self.app.inform.emit(
-                            "[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry.")
+                            _("[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry."))
                         return
 
             xmin, ymin, xmax, ymax = bb_obj.bounds()
@@ -338,19 +360,19 @@ class DblSidedTool(FlatCAMTool):
                 dia = float(self.drill_dia.get_value().replace(',', '.'))
                 self.drill_dia.set_value(dia)
             except ValueError:
-                self.app.inform.emit("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
-                                     "Add it and retry.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Tool diameter value is missing or wrong format. "
+                                     "Add it and retry."))
                 return
 
         if dia is '':
-            self.app.inform.emit("[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry.")
+            self.app.inform.emit(_("[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry."))
             return
         tools = {"1": {"C": dia}}
 
         # holes = self.alignment_holes.get_value()
         holes = eval('[{}]'.format(self.alignment_holes.text()))
         if not holes:
-            self.app.inform.emit("[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them and retry.")
+            self.app.inform.emit(_("[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them and retry."))
             return
 
         drills = []
@@ -372,7 +394,7 @@ class DblSidedTool(FlatCAMTool):
 
         self.app.new_object("excellon", "Alignment Drills", obj_init)
         self.drill_values = ''
-        self.app.inform.emit("[success] Excellon object with alignment drills created...")
+        self.app.inform.emit(_("[success] Excellon object with alignment drills created..."))
 
     def on_mirror_gerber(self):
         selection_index = self.gerber_object_combo.currentIndex()
@@ -381,11 +403,11 @@ class DblSidedTool(FlatCAMTool):
         try:
             fcobj = model_index.internalPointer().obj
         except Exception as e:
-            self.app.inform.emit("[WARNING_NOTCL] There is no Gerber object loaded ...")
+            self.app.inform.emit(_("[WARNING_NOTCL] There is no Gerber object loaded ..."))
             return
 
         if not isinstance(fcobj, FlatCAMGerber):
-            self.app.inform.emit("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored.")
+            self.app.inform.emit(_("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."))
             return
 
         axis = self.mirror_axis.get_value()
@@ -395,8 +417,8 @@ class DblSidedTool(FlatCAMTool):
             try:
                 px, py = self.point_entry.get_value()
             except TypeError:
-                self.app.inform.emit("[WARNING_NOTCL] 'Point' coordinates missing. "
-                                     "Using Origin (0, 0) as mirroring reference.")
+                self.app.inform.emit(_("[WARNING_NOTCL] 'Point' coordinates missing. "
+                                     "Using Origin (0, 0) as mirroring reference."))
                 px, py = (0, 0)
 
         else:
@@ -405,7 +427,7 @@ class DblSidedTool(FlatCAMTool):
             try:
                 bb_obj = model_index_box.internalPointer().obj
             except Exception as e:
-                self.app.inform.emit("[WARNING_NOTCL] There is no Box object loaded ...")
+                self.app.inform.emit(_("[WARNING_NOTCL] There is no Box object loaded ..."))
                 return
 
             xmin, ymin, xmax, ymax = bb_obj.bounds()
@@ -415,7 +437,7 @@ class DblSidedTool(FlatCAMTool):
         fcobj.mirror(axis, [px, py])
         self.app.object_changed.emit(fcobj)
         fcobj.plot()
-        self.app.inform.emit("[success] Gerber %s was mirrored..." % str(fcobj.options['name']))
+        self.app.inform.emit(_("[success] Gerber %s was mirrored...") % str(fcobj.options['name']))
 
     def on_mirror_exc(self):
         selection_index = self.exc_object_combo.currentIndex()
@@ -424,11 +446,11 @@ class DblSidedTool(FlatCAMTool):
         try:
             fcobj = model_index.internalPointer().obj
         except Exception as e:
-            self.app.inform.emit("[WARNING_NOTCL] There is no Excellon object loaded ...")
+            self.app.inform.emit(_("[WARNING_NOTCL] There is no Excellon object loaded ..."))
             return
 
         if not isinstance(fcobj, FlatCAMExcellon):
-            self.app.inform.emit("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored.")
+            self.app.inform.emit(_("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."))
             return
 
         axis = self.mirror_axis.get_value()
@@ -439,8 +461,8 @@ class DblSidedTool(FlatCAMTool):
                 px, py = self.point_entry.get_value()
             except Exception as e:
                 log.debug("DblSidedTool.on_mirror_geo() --> %s" % str(e))
-                self.app.inform.emit("[WARNING_NOTCL] There are no Point coordinates in the Point field. "
-                                     "Add coords and try again ...")
+                self.app.inform.emit(_("[WARNING_NOTCL] There are no Point coordinates in the Point field. "
+                                     "Add coords and try again ..."))
                 return
         else:
             selection_index_box = self.box_combo.currentIndex()
@@ -449,7 +471,7 @@ class DblSidedTool(FlatCAMTool):
                 bb_obj = model_index_box.internalPointer().obj
             except Exception as e:
                 log.debug("DblSidedTool.on_mirror_geo() --> %s" % str(e))
-                self.app.inform.emit("[WARNING_NOTCL] There is no Box object loaded ...")
+                self.app.inform.emit(_("[WARNING_NOTCL] There is no Box object loaded ..."))
                 return
 
             xmin, ymin, xmax, ymax = bb_obj.bounds()
@@ -459,7 +481,7 @@ class DblSidedTool(FlatCAMTool):
         fcobj.mirror(axis, [px, py])
         self.app.object_changed.emit(fcobj)
         fcobj.plot()
-        self.app.inform.emit("[success] Excellon %s was mirrored..." % str(fcobj.options['name']))
+        self.app.inform.emit(_("[success] Excellon %s was mirrored...") % str(fcobj.options['name']))
 
     def on_mirror_geo(self):
         selection_index = self.geo_object_combo.currentIndex()
@@ -468,11 +490,11 @@ class DblSidedTool(FlatCAMTool):
         try:
             fcobj = model_index.internalPointer().obj
         except Exception as e:
-            self.app.inform.emit("[WARNING_NOTCL] There is no Geometry object loaded ...")
+            self.app.inform.emit(_("[WARNING_NOTCL] There is no Geometry object loaded ..."))
             return
 
         if not isinstance(fcobj, FlatCAMGeometry):
-            self.app.inform.emit("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored.")
+            self.app.inform.emit(_("[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."))
             return
 
         axis = self.mirror_axis.get_value()
@@ -486,7 +508,7 @@ class DblSidedTool(FlatCAMTool):
             try:
                 bb_obj = model_index_box.internalPointer().obj
             except Exception as e:
-                self.app.inform.emit("[WARNING_NOTCL] There is no Box object loaded ...")
+                self.app.inform.emit(_("[WARNING_NOTCL] There is no Box object loaded ..."))
                 return
 
             xmin, ymin, xmax, ymax = bb_obj.bounds()
@@ -496,7 +518,7 @@ class DblSidedTool(FlatCAMTool):
         fcobj.mirror(axis, [px, py])
         self.app.object_changed.emit(fcobj)
         fcobj.plot()
-        self.app.inform.emit("[success] Geometry %s was mirrored..." % str(fcobj.options['name']))
+        self.app.inform.emit(_("[success] Geometry %s was mirrored...") % str(fcobj.options['name']))
 
     def on_point_add(self):
         val = self.app.defaults["global_point_clipboard_format"] % (self.app.pos[0], self.app.pos[1])

+ 72 - 50
flatcamTools/ToolFilm.py

@@ -1,12 +1,28 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 
-from GUIElements import RadioSet, FCEntry
+from flatcamGUI.GUIElements import RadioSet, FCEntry
 from PyQt5 import QtGui, QtCore, QtWidgets
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class Film(FlatCAMTool):
 
-    toolName = "Film PCB"
+    toolName = _("Film PCB")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -37,12 +53,12 @@ class Film(FlatCAMTool):
         self.tf_type_obj_combo.setItemIcon(0, QtGui.QIcon("share/flatcam_icon16.png"))
         self.tf_type_obj_combo.setItemIcon(2, QtGui.QIcon("share/geometry16.png"))
 
-        self.tf_type_obj_combo_label = QtWidgets.QLabel("Object Type:")
+        self.tf_type_obj_combo_label = QtWidgets.QLabel(_("Object Type:"))
         self.tf_type_obj_combo_label.setToolTip(
-            "Specify the type of object for which to create the film.\n"
+            _("Specify the type of object for which to create the film.\n"
             "The object can be of type: Gerber or Geometry.\n"
             "The selection here decide the type of objects that will be\n"
-            "in the Film Object combobox."
+            "in the Film Object combobox.")
         )
         tf_form_layout.addRow(self.tf_type_obj_combo_label, self.tf_type_obj_combo)
 
@@ -52,9 +68,9 @@ class Film(FlatCAMTool):
         self.tf_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
         self.tf_object_combo.setCurrentIndex(1)
 
-        self.tf_object_label = QtWidgets.QLabel("Film Object:")
+        self.tf_object_label = QtWidgets.QLabel(_("Film Object:"))
         self.tf_object_label.setToolTip(
-            "Object for which to create the film."
+            _("Object for which to create the film.")
         )
         tf_form_layout.addRow(self.tf_object_label, self.tf_object_combo)
 
@@ -70,12 +86,12 @@ class Film(FlatCAMTool):
         self.tf_type_box_combo.setItemIcon(0, QtGui.QIcon("share/flatcam_icon16.png"))
         self.tf_type_box_combo.setItemIcon(2, QtGui.QIcon("share/geometry16.png"))
 
-        self.tf_type_box_combo_label = QtWidgets.QLabel("Box Type:")
+        self.tf_type_box_combo_label = QtWidgets.QLabel(_("Box Type:"))
         self.tf_type_box_combo_label.setToolTip(
-            "Specify the type of object to be used as an container for\n"
+            _("Specify the type of object to be used as an container for\n"
             "film creation. It can be: Gerber or Geometry type."
             "The selection here decide the type of objects that will be\n"
-            "in the Box Object combobox."
+            "in the Box Object combobox.")
         )
         tf_form_layout.addRow(self.tf_type_box_combo_label, self.tf_type_box_combo)
 
@@ -85,50 +101,51 @@ class Film(FlatCAMTool):
         self.tf_box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
         self.tf_box_combo.setCurrentIndex(1)
 
-        self.tf_box_combo_label = QtWidgets.QLabel("Box Object:")
+        self.tf_box_combo_label = QtWidgets.QLabel(_("Box Object:"))
         self.tf_box_combo_label.setToolTip(
-            "The actual object that is used a container for the\n "
+            _("The actual object that is used a container for the\n "
             "selected object for which we create the film.\n"
             "Usually it is the PCB outline but it can be also the\n"
             "same object for which the film is created.")
+        )
         tf_form_layout.addRow(self.tf_box_combo_label, self.tf_box_combo)
 
         # Film Type
         self.film_type = RadioSet([{'label': 'Positive', 'value': 'pos'},
                                      {'label': 'Negative', 'value': 'neg'}])
-        self.film_type_label = QtWidgets.QLabel("Film Type:")
+        self.film_type_label = QtWidgets.QLabel(_("Film Type:"))
         self.film_type_label.setToolTip(
-            "Generate a Positive black film or a Negative film.\n"
+            _("Generate a Positive black film or a Negative film.\n"
             "Positive means that it will print the features\n"
             "with black on a white canvas.\n"
             "Negative means that it will print the features\n"
             "with white on a black canvas.\n"
-            "The Film format is SVG."
+            "The Film format is SVG.")
         )
         tf_form_layout.addRow(self.film_type_label, self.film_type)
 
         # Boundary for negative film generation
 
         self.boundary_entry = FCEntry()
-        self.boundary_label = QtWidgets.QLabel("Border:")
+        self.boundary_label = QtWidgets.QLabel(_("Border:"))
         self.boundary_label.setToolTip(
-            "Specify a border around the object.\n"
+            _("Specify a border around the object.\n"
             "Only for negative film.\n"
             "It helps if we use as a Box Object the same \n"
             "object as in Film Object. It will create a thick\n"
             "black bar around the actual print allowing for a\n"
             "better delimitation of the outline features which are of\n"
             "white color like the rest and which may confound with the\n"
-            "surroundings if not for this border."
+            "surroundings if not for this border.")
         )
         tf_form_layout.addRow(self.boundary_label, self.boundary_entry)
 
         self.film_scale_entry = FCEntry()
-        self.film_scale_label = QtWidgets.QLabel("Scale Stroke:")
+        self.film_scale_label = QtWidgets.QLabel(_("Scale Stroke:"))
         self.film_scale_label.setToolTip(
-            "Scale the line stroke thickness of each feature in the SVG file.\n"
+            _("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 thinner,\n"
-            "therefore the fine features may be more affected by this parameter."
+            "therefore the fine features may be more affected by this parameter.")
         )
         tf_form_layout.addRow(self.film_scale_label, self.film_scale_entry)
 
@@ -137,12 +154,12 @@ class Film(FlatCAMTool):
         self.layout.addLayout(hlay)
         hlay.addStretch()
 
-        self.film_object_button = QtWidgets.QPushButton("Save Film")
+        self.film_object_button = QtWidgets.QPushButton(_("Save Film"))
         self.film_object_button.setToolTip(
-            "Create a Film for the selected object, within\n"
+            _("Create a Film for the selected object, within\n"
             "the specified box. Does not create a new \n "
             "FlatCAM object, but directly save it in SVG format\n"
-            "which can be opened with Inkscape."
+            "which can be opened with Inkscape.")
         )
         hlay.addWidget(self.film_object_button)
 
@@ -163,23 +180,28 @@ class Film(FlatCAMTool):
         self.tf_box_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
         self.tf_box_combo.setCurrentIndex(0)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolFilm()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
+
         self.set_tool_ui()
 
-        self.app.ui.notebook.setTabText(2, "Film Tool")
+        self.app.ui.notebook.setTabText(2, _("Film Tool"))
 
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='ALT+L', **kwargs)
@@ -190,7 +212,7 @@ class Film(FlatCAMTool):
         f_type = self.app.defaults["tools_film_type"] if self.app.defaults["tools_film_type"] else 'neg'
         self.film_type.set_value(str(f_type))
 
-        b_entry = self.app.defaults[ "tools_film_boundary"] if self.app.defaults[ "tools_film_boundary"] else 0.0
+        b_entry = self.app.defaults["tools_film_boundary"] if self.app.defaults["tools_film_boundary"] else 0.0
         self.boundary_entry.set_value(float(b_entry))
 
         scale_stroke_width = self.app.defaults["tools_film_scale"] if self.app.defaults["tools_film_scale"] else 0.0
@@ -200,13 +222,13 @@ class Film(FlatCAMTool):
         try:
             name = self.tf_object_combo.currentText()
         except:
-            self.app.inform.emit("[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry.")
+            self.app.inform.emit(_("[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry."))
             return
 
         try:
             boxname = self.tf_box_combo.currentText()
         except:
-            self.app.inform.emit("[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry.")
+            self.app.inform.emit(_("[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry."))
             return
 
         try:
@@ -216,51 +238,51 @@ class Film(FlatCAMTool):
             try:
                 border = float(self.boundary_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
             scale_stroke_width = int(self.film_scale_entry.get_value())
         except ValueError:
-            self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                 "use a number.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                 "use a number."))
             return
 
         if border is None:
             border = 0
 
-        self.app.inform.emit("Generating Film ...")
+        self.app.inform.emit(_("Generating Film ..."))
 
         if self.film_type.get_value() == "pos":
             try:
-                filename, _ = QtWidgets.QFileDialog.getSaveFileName(
-                    caption="Export SVG positive",
+                filename, _f = QtWidgets.QFileDialog.getSaveFileName(
+                    caption=_("Export SVG positive"),
                     directory=self.app.get_last_save_folder() + '/' + name,
                     filter="*.svg")
             except TypeError:
-                filename, _ = QtWidgets.QFileDialog.getSaveFileName(caption="Export SVG positive")
+                filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export SVG positive"))
 
             filename = str(filename)
 
             if str(filename) == "":
-                self.app.inform.emit("[WARNING_NOTCL]Export SVG positive cancelled.")
+                self.app.inform.emit(_("[WARNING_NOTCL]Export SVG positive cancelled."))
                 return
             else:
                 self.app.export_svg_black(name, boxname, filename, scale_factor=scale_stroke_width)
         else:
             try:
-                filename, _ = QtWidgets.QFileDialog.getSaveFileName(
-                    caption="Export SVG negative",
+                filename, _f = QtWidgets.QFileDialog.getSaveFileName(
+                    caption=_("Export SVG negative"),
                     directory=self.app.get_last_save_folder() + '/' + name,
                     filter="*.svg")
             except TypeError:
-                filename, _ = QtWidgets.QFileDialog.getSaveFileName(caption="Export SVG negative")
+                filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export SVG negative"))
 
             filename = str(filename)
 
             if str(filename) == "":
-                self.app.inform.emit("[WARNING_NOTCL]Export SVG negative cancelled.")
+                self.app.inform.emit(_("[WARNING_NOTCL]Export SVG negative cancelled."))
                 return
             else:
                 self.app.export_svg_negative(name, boxname, filename, border, scale_factor=scale_stroke_width)

+ 60 - 40
flatcamTools/ToolImage.py

@@ -1,18 +1,34 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 
-from GUIElements import RadioSet, FloatEntry, FCComboBox, IntEntry
-from PyQt5 import QtGui, QtCore, QtWidgets
+from flatcamGUI.GUIElements import RadioSet, FCComboBox, IntEntry
+from PyQt5 import QtGui, QtWidgets
+
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
 
 
 class ToolImage(FlatCAMTool):
 
-    toolName = "Image as Object"
+    toolName = _("Image as Object")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
 
         # Title
-        title_label = QtWidgets.QLabel("%s" % 'Image to PCB')
+        title_label = QtWidgets.QLabel("%s" % _('Image to PCB'))
         title_label.setStyleSheet("""
                         QLabel
                         {
@@ -34,26 +50,26 @@ class ToolImage(FlatCAMTool):
         self.tf_type_obj_combo.setItemIcon(0, QtGui.QIcon("share/flatcam_icon16.png"))
         self.tf_type_obj_combo.setItemIcon(1, QtGui.QIcon("share/geometry16.png"))
 
-        self.tf_type_obj_combo_label = QtWidgets.QLabel("Object Type:")
+        self.tf_type_obj_combo_label = QtWidgets.QLabel(_("Object Type:"))
         self.tf_type_obj_combo_label.setToolTip(
-            "Specify the type of object to create from the image.\n"
-            "It can be of type: Gerber or Geometry."
+           _( "Specify the type of object to create from the image.\n"
+            "It can be of type: Gerber or Geometry.")
 
         )
         ti_form_layout.addRow(self.tf_type_obj_combo_label, self.tf_type_obj_combo)
 
         # DPI value of the imported image
         self.dpi_entry = IntEntry()
-        self.dpi_label = QtWidgets.QLabel("DPI value:")
+        self.dpi_label = QtWidgets.QLabel(_("DPI value:"))
         self.dpi_label.setToolTip(
-            "Specify a DPI value for the image."
+           _( "Specify a DPI value for the image.")
         )
         ti_form_layout.addRow(self.dpi_label, self.dpi_entry)
 
         self.emty_lbl = QtWidgets.QLabel("")
         self.layout.addWidget(self.emty_lbl)
 
-        self.detail_label = QtWidgets.QLabel("<font size=4><b>Level of detail:</b>")
+        self.detail_label = QtWidgets.QLabel("<font size=4><b>%s:</b>" % _('Level of detail'))
         self.layout.addWidget(self.detail_label)
 
         ti2_form_layout = QtWidgets.QFormLayout()
@@ -62,56 +78,56 @@ class ToolImage(FlatCAMTool):
         # Type of image interpretation
         self.image_type = RadioSet([{'label': 'B/W', 'value': 'black'},
                                      {'label': 'Color', 'value': 'color'}])
-        self.image_type_label = QtWidgets.QLabel("<b>Image type:</b>")
+        self.image_type_label = QtWidgets.QLabel("<b>%s:</b>" % _('Image type'))
         self.image_type_label.setToolTip(
-            "Choose a method for the image interpretation.\n"
-            "B/W means a black & white image. Color means a colored image."
+            _("Choose a method for the image interpretation.\n"
+            "B/W means a black & white image. Color means a colored image.")
         )
         ti2_form_layout.addRow(self.image_type_label, self.image_type)
 
         # Mask value of the imported image when image monochrome
         self.mask_bw_entry = IntEntry()
-        self.mask_bw_label = QtWidgets.QLabel("Mask value <b>B/W</b>:")
+        self.mask_bw_label = QtWidgets.QLabel("%s <b>B/W</b>:" % _('Mask value'))
         self.mask_bw_label.setToolTip(
-            "Mask for monochrome image.\n"
+            _("Mask for monochrome image.\n"
             "Takes values between [0 ... 255].\n"
             "Decides the level of details to include\n"
             "in the resulting geometry.\n"
             "0 means no detail and 255 means everything \n"
-            "(which is totally black)."
+            "(which is totally black).")
         )
         ti2_form_layout.addRow(self.mask_bw_label, self.mask_bw_entry)
 
         # Mask value of the imported image for RED color when image color
         self.mask_r_entry = IntEntry()
-        self.mask_r_label = QtWidgets.QLabel("Mask value <b>R:</b>")
+        self.mask_r_label = QtWidgets.QLabel("%s <b>R:</b>" % _('Mask value'))
         self.mask_r_label.setToolTip(
-            "Mask for RED color.\n"
+            _("Mask for RED color.\n"
             "Takes values between [0 ... 255].\n"
             "Decides the level of details to include\n"
-            "in the resulting geometry."
+            "in the resulting geometry.")
         )
         ti2_form_layout.addRow(self.mask_r_label, self.mask_r_entry)
 
         # Mask value of the imported image for GREEN color when image color
         self.mask_g_entry = IntEntry()
-        self.mask_g_label = QtWidgets.QLabel("Mask value <b>G:</b>")
+        self.mask_g_label = QtWidgets.QLabel("%s <b>G:</b>" % _('Mask value'))
         self.mask_g_label.setToolTip(
-            "Mask for GREEN color.\n"
+            _("Mask for GREEN color.\n"
             "Takes values between [0 ... 255].\n"
             "Decides the level of details to include\n"
-            "in the resulting geometry."
+            "in the resulting geometry.")
         )
         ti2_form_layout.addRow(self.mask_g_label, self.mask_g_entry)
 
         # Mask value of the imported image for BLUE color when image color
         self.mask_b_entry = IntEntry()
-        self.mask_b_label = QtWidgets.QLabel("Mask value <b>B:</b>")
+        self.mask_b_label = QtWidgets.QLabel("%s <b>B:</b>" % _('Mask value'))
         self.mask_b_label.setToolTip(
-            "Mask for BLUE color.\n"
+            _("Mask for BLUE color.\n"
             "Takes values between [0 ... 255].\n"
             "Decides the level of details to include\n"
-            "in the resulting geometry."
+            "in the resulting geometry.")
         )
         ti2_form_layout.addRow(self.mask_b_label, self.mask_b_entry)
 
@@ -120,9 +136,9 @@ class ToolImage(FlatCAMTool):
         self.layout.addLayout(hlay)
         hlay.addStretch()
 
-        self.import_button = QtWidgets.QPushButton("Import image")
+        self.import_button = QtWidgets.QPushButton(_("Import image"))
         self.import_button.setToolTip(
-            "Open a image of raster type and then import it in FlatCAM."
+            _("Open a image of raster type and then import it in FlatCAM.")
         )
         hlay.addWidget(self.import_button)
 
@@ -131,23 +147,27 @@ class ToolImage(FlatCAMTool):
         ## Signals
         self.import_button.clicked.connect(self.on_file_importimage)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolImage()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
-        self.app.ui.notebook.setTabText(2, "Image Tool")
+        self.app.ui.notebook.setTabText(2, _("Image Tool"))
 
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, **kwargs)
@@ -177,10 +197,10 @@ class ToolImage(FlatCAMTool):
                  "Jpeg File (*.JPG);;" \
                  "All Files (*.*)"
         try:
-            filename, _ = QtWidgets.QFileDialog.getOpenFileName(caption="Import IMAGE",
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import IMAGE"),
                                                          directory=self.app.get_last_folder(), filter=filter)
         except TypeError:
-            filename, _ = QtWidgets.QFileDialog.getOpenFileName(caption="Import IMAGE", filter=filter)
+            filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import IMAGE"), filter=filter)
 
         filename = str(filename)
         type = self.tf_type_obj_combo.get_value().lower()
@@ -190,7 +210,7 @@ class ToolImage(FlatCAMTool):
                 self.mask_b_entry.get_value()]
 
         if filename == "":
-            self.app.inform.emit("Open cancelled.")
+            self.app.inform.emit(_("Open cancelled."))
         else:
             self.app.worker_task.emit({'fcn': self.app.import_image,
                                        'params': [filename, type, dpi, mode, mask]})

+ 55 - 32
flatcamTools/ToolMeasurement.py

@@ -1,13 +1,29 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
-from VisPyVisuals import *
+from flatcamGUI.VisPyVisuals import *
 
-from copy import copy
 from math import sqrt
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
+
 class Measurement(FlatCAMTool):
 
-    toolName = "Measurement"
+    toolName = _("Measurement")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -28,51 +44,51 @@ class Measurement(FlatCAMTool):
         form_layout_child_2 = QtWidgets.QFormLayout()
         form_layout_child_3 = QtWidgets.QFormLayout()
 
-        self.start_label = QtWidgets.QLabel("<b>Start</b> Coords:")
-        self.start_label.setToolTip("This is measuring Start point coordinates.")
+        self.start_label = QtWidgets.QLabel("<b>%s</b> %s:" % (_('Start'), _('Coords')))
+        self.start_label.setToolTip(_("This is measuring Start point coordinates."))
 
-        self.stop_label = QtWidgets.QLabel("<b>Stop</b> Coords:")
-        self.stop_label.setToolTip("This is the measuring Stop point coordinates.")
+        self.stop_label = QtWidgets.QLabel("<b>%s</b> %s:" % (_('Stop'), _('Coords')))
+        self.stop_label.setToolTip(_("This is the measuring Stop point coordinates."))
 
         self.distance_x_label = QtWidgets.QLabel("Dx:")
-        self.distance_x_label.setToolTip("This is the distance measured over the X axis.")
+        self.distance_x_label.setToolTip(_("This is the distance measured over the X axis."))
 
         self.distance_y_label = QtWidgets.QLabel("Dy:")
-        self.distance_y_label.setToolTip("This is the distance measured over the Y axis.")
+        self.distance_y_label.setToolTip(_("This is the distance measured over the Y axis."))
 
-        self.total_distance_label = QtWidgets.QLabel("<b>DISTANCE:</b>")
-        self.total_distance_label.setToolTip("This is the point to point Euclidian distance.")
+        self.total_distance_label = QtWidgets.QLabel("<b>%s:</b>" % _('DISTANCE'))
+        self.total_distance_label.setToolTip(_("This is the point to point Euclidian distance."))
 
         self.units_entry_1 = FCEntry()
-        self.units_entry_1.setToolTip("Those are the units in which the distance is measured.")
+        self.units_entry_1.setToolTip(_("Those are the units in which the distance is measured."))
         self.units_entry_1.setDisabled(True)
         self.units_entry_1.setFocusPolicy(QtCore.Qt.NoFocus)
         self.units_entry_1.setFrame(False)
         self.units_entry_1.setFixedWidth(30)
 
         self.units_entry_2 = FCEntry()
-        self.units_entry_2.setToolTip("Those are the units in which the distance is measured.")
+        self.units_entry_2.setToolTip(_("Those are the units in which the distance is measured."))
         self.units_entry_2.setDisabled(True)
         self.units_entry_2.setFocusPolicy(QtCore.Qt.NoFocus)
         self.units_entry_2.setFrame(False)
         self.units_entry_2.setFixedWidth(30)
 
         self.units_entry_3 = FCEntry()
-        self.units_entry_3.setToolTip("Those are the units in which the distance is measured.")
+        self.units_entry_3.setToolTip(_("Those are the units in which the distance is measured."))
         self.units_entry_3.setDisabled(True)
         self.units_entry_3.setFocusPolicy(QtCore.Qt.NoFocus)
         self.units_entry_3.setFrame(False)
         self.units_entry_3.setFixedWidth(30)
 
         self.units_entry_4 = FCEntry()
-        self.units_entry_4.setToolTip("Those are the units in which the distance is measured.")
+        self.units_entry_4.setToolTip(_("Those are the units in which the distance is measured."))
         self.units_entry_4.setDisabled(True)
         self.units_entry_4.setFocusPolicy(QtCore.Qt.NoFocus)
         self.units_entry_4.setFrame(False)
         self.units_entry_4.setFixedWidth(30)
 
         self.units_entry_5 = FCEntry()
-        self.units_entry_5.setToolTip("Those are the units in which the distance is measured.")
+        self.units_entry_5.setToolTip(_("Those are the units in which the distance is measured."))
         self.units_entry_5.setDisabled(True)
         self.units_entry_5.setFocusPolicy(QtCore.Qt.NoFocus)
         self.units_entry_5.setFrame(False)
@@ -80,32 +96,32 @@ class Measurement(FlatCAMTool):
 
         self.start_entry = FCEntry()
         self.start_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.start_entry.setToolTip("This is measuring Start point coordinates.")
+        self.start_entry.setToolTip(_("This is measuring Start point coordinates."))
         self.start_entry.setFixedWidth(100)
 
         self.stop_entry = FCEntry()
         self.stop_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.stop_entry.setToolTip("This is the measuring Stop point coordinates.")
+        self.stop_entry.setToolTip(_("This is the measuring Stop point coordinates."))
         self.stop_entry.setFixedWidth(100)
 
         self.distance_x_entry = FCEntry()
         self.distance_x_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.distance_x_entry.setToolTip("This is the distance measured over the X axis.")
+        self.distance_x_entry.setToolTip(_("This is the distance measured over the X axis."))
         self.distance_x_entry.setFixedWidth(100)
 
 
         self.distance_y_entry = FCEntry()
         self.distance_y_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.distance_y_entry.setToolTip("This is the distance measured over the Y axis.")
+        self.distance_y_entry.setToolTip(_("This is the distance measured over the Y axis."))
         self.distance_y_entry.setFixedWidth(100)
 
 
         self.total_distance_entry = FCEntry()
         self.total_distance_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        self.total_distance_entry.setToolTip("This is the point to point Euclidian distance.")
+        self.total_distance_entry.setToolTip(_("This is the point to point Euclidian distance."))
         self.total_distance_entry.setFixedWidth(100)
 
-        self.measure_btn = QtWidgets.QPushButton("Measure")
+        self.measure_btn = QtWidgets.QPushButton(_("Measure"))
         self.measure_btn.setFixedWidth(70)
         self.layout.addWidget(self.measure_btn)
 
@@ -149,17 +165,22 @@ class Measurement(FlatCAMTool):
         # VisPy visuals
         self.sel_shapes = ShapeCollection(parent=self.app.plotcanvas.vispy_canvas.view.scene, layers=1)
 
-        self.measure_btn.clicked.connect(self.toggle)
+        self.measure_btn.clicked.connect(self.toggle_f)
 
-    def run(self):
+    def run(self, toggle=False):
         self.app.report_usage("ToolMeasurement()")
 
         if self.app.tool_tab_locked is True:
             return
-        self.toggle()
+
+        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+        if self.app.ui.splitter.sizes()[0] == 0:
+            self.app.ui.splitter.setSizes([1, 1])
+
+        self.toggle_f()
 
         self.set_tool_ui()
-        self.app.ui.notebook.setTabText(2, "Meas. Tool")
+        self.app.ui.notebook.setTabText(2, _("Meas. Tool"))
 
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='CTRL+M', **kwargs)
@@ -176,11 +197,12 @@ class Measurement(FlatCAMTool):
         self.units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower()
         self.show()
 
-    def toggle(self):
+    def toggle_f(self):
         # the self.active var is doing the 'toggle'
         if self.active is True:
             # DISABLE the Measuring TOOL
             self.active = False
+
             # disconnect the mouse/key events from functions of measurement tool
             self.app.plotcanvas.vis_disconnect('mouse_move', self.on_mouse_move_meas)
             self.app.plotcanvas.vis_disconnect('mouse_press', self.on_click_meas)
@@ -202,6 +224,7 @@ class Measurement(FlatCAMTool):
                 self.app.exc_editor.canvas.vis_connect('key_press', self.app.exc_editor.on_canvas_key)
                 self.app.exc_editor.canvas.vis_connect('mouse_release', self.app.exc_editor.on_canvas_click_release)
 
+            self.app.call_source = 'measurement'
             self.clicked_meas = 0
             self.app.command_active = None
             # delete the measuring line
@@ -250,7 +273,7 @@ class Measurement(FlatCAMTool):
             self.units_entry_4.set_value(str(self.units))
             self.units_entry_5.set_value(str(self.units))
 
-            self.app.inform.emit("MEASURING: Click on the Start point ...")
+            self.app.inform.emit(_("MEASURING: Click on the Start point ..."))
 
     def on_key_release_meas(self, event):
         if event.key == 'escape':
@@ -279,7 +302,7 @@ class Measurement(FlatCAMTool):
                     pos = pos_canvas[0], pos_canvas[1]
                 self.point1 = pos
                 self.start_entry.set_value("(%.4f, %.4f)" % pos)
-                self.app.inform.emit("MEASURING: Click on the Destination point ...")
+                self.app.inform.emit(_("MEASURING: Click on the Destination point ..."))
 
             if self.clicked_meas == 1:
                 try:
@@ -300,15 +323,15 @@ class Measurement(FlatCAMTool):
 
                     self.stop_entry.set_value("(%.4f, %.4f)" % pos)
 
-                    self.app.inform.emit("MEASURING: Result D(x) = %.4f | D(y) = %.4f | Distance = %.4f" %
-                                         (abs(dx), abs(dy), abs(d)))
+                    self.app.inform.emit(_("MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}").format(
+                        d_x='%4f' % abs(dx), d_y='%4f' % abs(dy), d_z='%4f' % abs(d)))
 
                     self.distance_x_entry.set_value('%.4f' % abs(dx))
                     self.distance_y_entry.set_value('%.4f' % abs(dy))
                     self.total_distance_entry.set_value('%.4f' % abs(d))
 
                     self.clicked_meas = 0
-                    self.toggle()
+                    self.toggle_f()
 
                     # delete the measuring line
                     self.delete_shape()

+ 32 - 17
flatcamTools/ToolMove.py

@@ -1,14 +1,29 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
-from VisPyVisuals import *
+from flatcamGUI.VisPyVisuals import *
 
-from io import StringIO
 from copy import copy
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class ToolMove(FlatCAMTool):
 
-    toolName = "Move"
+    toolName = _("Move")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -33,14 +48,14 @@ class ToolMove(FlatCAMTool):
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='M', **kwargs)
 
-    def run(self):
+    def run(self, toggle):
         self.app.report_usage("ToolMove()")
 
         if self.app.tool_tab_locked is True:
             return
         self.toggle()
 
-    def toggle(self):
+    def toggle(self, toggle=False):
         if self.isVisible():
             self.setVisible(False)
 
@@ -63,14 +78,14 @@ class ToolMove(FlatCAMTool):
             self.app.command_active = "Move"
 
             if self.app.collection.get_selected():
-                self.app.inform.emit("MOVE: Click on the Start point ...")
+                self.app.inform.emit(_("MOVE: Click on the Start point ..."))
                 # draw the selection box
                 self.draw_sel_bbox()
             else:
                 self.setVisible(False)
                 # signal that there is no command active
                 self.app.command_active = None
-                self.app.inform.emit("[WARNING_NOTCL]MOVE action cancelled. No object(s) to move.")
+                self.app.inform.emit(_("[WARNING_NOTCL] MOVE action cancelled. No object(s) to move."))
 
     def on_left_click(self, event):
         # mouse click will be accepted only if the left button is clicked
@@ -92,7 +107,7 @@ class ToolMove(FlatCAMTool):
                 else:
                     self.point2 = copy(self.point1)
                     self.point1 = pos
-                self.app.inform.emit("MOVE: Click on the Destination point ...")
+                self.app.inform.emit(_("MOVE: Click on the Destination point ..."))
 
             if self.clicked_move == 1:
                 try:
@@ -110,14 +125,14 @@ class ToolMove(FlatCAMTool):
                     dx = pos[0] - self.point1[0]
                     dy = pos[1] - self.point1[1]
 
-                    proc = self.app.proc_container.new("Moving ...")
+                    proc = self.app.proc_container.new(_("Moving ..."))
 
                     def job_move(app_obj):
                         obj_list = self.app.collection.get_selected()
 
                         try:
                             if not obj_list:
-                                self.app.inform.emit("[WARNING_NOTCL] No object(s) selected.")
+                                self.app.inform.emit(_("[WARNING_NOTCL] No object(s) selected."))
                                 return "fail"
                             else:
                                 for sel_obj in obj_list:
@@ -140,13 +155,13 @@ class ToolMove(FlatCAMTool):
                                     # self.app.collection.set_active(sel_obj.options['name'])
                         except Exception as e:
                             proc.done()
-                            self.app.inform.emit('[ERROR_NOTCL] '
-                                                 'ToolMove.on_left_click() --> %s' % str(e))
+                            self.app.inform.emit(_('[ERROR_NOTCL] '
+                                                 'ToolMove.on_left_click() --> %s') % str(e))
                             return "fail"
                         proc.done()
                         # delete the selection bounding box
                         self.delete_shape()
-                        self.app.inform.emit('[success]%s object was moved ...' %
+                        self.app.inform.emit(_('[success]%s object was moved ...') %
                                              str(sel_obj.kind).capitalize())
 
                     self.app.worker_task.emit({'fcn': job_move, 'params': [self]})
@@ -156,8 +171,8 @@ class ToolMove(FlatCAMTool):
                     return
 
                 except TypeError:
-                    self.app.inform.emit('[ERROR_NOTCL] '
-                                         'ToolMove.on_left_click() --> Error when mouse left click.')
+                    self.app.inform.emit(_('[ERROR_NOTCL] '
+                                         'ToolMove.on_left_click() --> Error when mouse left click.'))
                     return
 
             self.clicked_move = 1
@@ -184,7 +199,7 @@ class ToolMove(FlatCAMTool):
     def on_key_press(self, event):
         if event.key == 'escape':
             # abort the move action
-            self.app.inform.emit("[WARNING_NOTCL]Move action cancelled.")
+            self.app.inform.emit(_("[WARNING_NOTCL]Move action cancelled."))
             self.toggle()
         return
 
@@ -196,7 +211,7 @@ class ToolMove(FlatCAMTool):
 
         obj_list = self.app.collection.get_selected()
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL]Object(s) not selected")
+            self.app.inform.emit(_("[WARNING_NOTCL]Object(s) not selected"))
             self.toggle()
         else:
             # if we have an object selected then we can safely activate the mouse events

+ 100 - 80
flatcamTools/ToolNonCopperClear.py

@@ -1,12 +1,28 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Modified by: Marius Adrian Stanciu (c)              #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from copy import copy,deepcopy
 from ObjectCollection import *
 import time
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class NonCopperClear(FlatCAMTool, Gerber):
 
-    toolName = "Non-Copper Clearing"
+    toolName = _("Non-Copper Clearing")
 
     def __init__(self, app):
         self.app = app
@@ -44,7 +60,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
 
         self.object_label = QtWidgets.QLabel("Gerber:")
         self.object_label.setToolTip(
-            "Gerber object to be cleared of excess copper.                        "
+            _("Gerber object to be cleared of excess copper.                        ")
         )
         e_lab_0 = QtWidgets.QLabel('')
 
@@ -52,10 +68,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
         form_layout.addRow(e_lab_0)
 
         #### Tools ####
-        self.tools_table_label = QtWidgets.QLabel('<b>Tools Table</b>')
+        self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
         self.tools_table_label.setToolTip(
-            "Tools pool from which the algorithm\n"
-            "will pick the ones used for copper clearing."
+            _("Tools pool from which the algorithm\n"
+            "will pick the ones used for copper clearing.")
         )
         self.tools_box.addWidget(self.tools_table_label)
 
@@ -63,25 +79,25 @@ class NonCopperClear(FlatCAMTool, Gerber):
         self.tools_box.addWidget(self.tools_table)
 
         self.tools_table.setColumnCount(4)
-        self.tools_table.setHorizontalHeaderLabels(['#', 'Diameter', 'TT', ''])
+        self.tools_table.setHorizontalHeaderLabels(['#', _('Diameter'), 'TT', ''])
         self.tools_table.setColumnHidden(3, True)
         self.tools_table.setSortingEnabled(False)
         # self.tools_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
 
         self.tools_table.horizontalHeaderItem(0).setToolTip(
-            "This is the Tool Number.\n"
+            _("This is the Tool Number.\n"
             "Non copper clearing will start with the tool with the biggest \n"
             "diameter, continuing until there are no more tools.\n"
             "Only tools that create NCC clearing geometry will still be present\n"
             "in the resulting geometry. This is because with some tools\n"
-            "this function will not be able to create painting geometry."
+            "this function will not be able to create painting geometry.")
             )
         self.tools_table.horizontalHeaderItem(1).setToolTip(
-            "Tool Diameter. It's value (in current FlatCAM units) \n"
-            "is the cut width into the material.")
+            _("Tool Diameter. It's value (in current FlatCAM units) \n"
+            "is the cut width into the material."))
 
         self.tools_table.horizontalHeaderItem(2).setToolTip(
-            "The Tool Type (TT) can be:<BR>"
+            _("The Tool Type (TT) can be:<BR>"
             "- <B>Circular</B> with 1 ... 4 teeth -> it is informative only. Being circular, <BR>"
             "the cut width in material is exactly the tool diameter.<BR>"
             "- <B>Ball</B> -> informative only and make reference to the Ball type endmill.<BR>"
@@ -91,7 +107,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
             "as the cut width into material will be equal with the value in the Tool Diameter "
             "column of this table.<BR>"
             "Choosing the <B>V-Shape</B> Tool Type automatically will select the Operation Type "
-            "in the resulting geometry as Isolation.")
+            "in the resulting geometry as Isolation."))
 
         self.empty_label = QtWidgets.QLabel('')
         self.tools_box.addWidget(self.empty_label)
@@ -100,9 +116,9 @@ class NonCopperClear(FlatCAMTool, Gerber):
         hlay = QtWidgets.QHBoxLayout()
         self.tools_box.addLayout(hlay)
 
-        self.addtool_entry_lbl = QtWidgets.QLabel('<b>Tool Dia:</b>')
+        self.addtool_entry_lbl = QtWidgets.QLabel('<b>%s:</b>' % _('Tool Dia'))
         self.addtool_entry_lbl.setToolTip(
-            "Diameter for the new tool to add in the Tool Table"
+            _("Diameter for the new tool to add in the Tool Table")
         )
         self.addtool_entry = FCEntry()
 
@@ -114,10 +130,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
         grid2 = QtWidgets.QGridLayout()
         self.tools_box.addLayout(grid2)
 
-        self.addtool_btn = QtWidgets.QPushButton('Add')
+        self.addtool_btn = QtWidgets.QPushButton(_('Add'))
         self.addtool_btn.setToolTip(
-            "Add a new tool to the Tool Table\n"
-            "with the diameter specified above."
+            _("Add a new tool to the Tool Table\n"
+            "with the diameter specified above.")
         )
 
         # self.copytool_btn = QtWidgets.QPushButton('Copy')
@@ -126,10 +142,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
         #     "by first selecting a row in the Tool Table."
         # )
 
-        self.deltool_btn = QtWidgets.QPushButton('Delete')
+        self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
         self.deltool_btn.setToolTip(
-            "Delete a selection of tools in the Tool Table\n"
-            "by first selecting a row(s) in the Tool Table."
+            _("Delete a selection of tools in the Tool Table\n"
+            "by first selecting a row(s) in the Tool Table.")
         )
 
         grid2.addWidget(self.addtool_btn, 0, 0)
@@ -145,9 +161,9 @@ class NonCopperClear(FlatCAMTool, Gerber):
         e_lab_1 = QtWidgets.QLabel('')
         grid3.addWidget(e_lab_1, 0, 0)
 
-        nccoverlabel = QtWidgets.QLabel('Overlap:')
+        nccoverlabel = QtWidgets.QLabel(_('Overlap:'))
         nccoverlabel.setToolTip(
-            "How much (fraction) of the tool width to overlap each tool pass.\n"
+            _("How much (fraction) of the tool width to overlap each tool pass.\n"
             "Example:\n"
             "A value here of 0.25 means 25% from the tool diameter found above.\n\n"
             "Adjust the value starting with lower values\n"
@@ -155,27 +171,27 @@ class NonCopperClear(FlatCAMTool, Gerber):
             "not cleared.\n"
             "Lower values = faster processing, faster execution on PCB.\n"
             "Higher values = slow processing and slow execution on CNC\n"
-            "due of too many paths."
+            "due of too many paths.")
         )
         grid3.addWidget(nccoverlabel, 1, 0)
         self.ncc_overlap_entry = FCEntry()
         grid3.addWidget(self.ncc_overlap_entry, 1, 1)
 
-        nccmarginlabel = QtWidgets.QLabel('Margin:')
+        nccmarginlabel = QtWidgets.QLabel(_('Margin:'))
         nccmarginlabel.setToolTip(
-            "Bounding box margin."
+            _("Bounding box margin.")
         )
         grid3.addWidget(nccmarginlabel, 2, 0)
         self.ncc_margin_entry = FCEntry()
         grid3.addWidget(self.ncc_margin_entry, 2, 1)
 
         # Method
-        methodlabel = QtWidgets.QLabel('Method:')
+        methodlabel = QtWidgets.QLabel(_('Method:'))
         methodlabel.setToolTip(
-            "Algorithm for non-copper clearing:<BR>"
+            _("Algorithm for non-copper clearing:<BR>"
             "<B>Standard</B>: Fixed step inwards.<BR>"
             "<B>Seed-based</B>: Outwards from seed.<BR>"
-            "<B>Line-based</B>: Parallel lines."
+            "<B>Line-based</B>: Parallel lines.")
         )
         grid3.addWidget(methodlabel, 3, 0)
         self.ncc_method_radio = RadioSet([
@@ -186,42 +202,42 @@ class NonCopperClear(FlatCAMTool, Gerber):
         grid3.addWidget(self.ncc_method_radio, 3, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel("Connect:")
+        pathconnectlabel = QtWidgets.QLabel(_("Connect:"))
         pathconnectlabel.setToolTip(
-            "Draw lines between resulting\n"
-            "segments to minimize tool lifts."
+            _("Draw lines between resulting\n"
+            "segments to minimize tool lifts.")
         )
         grid3.addWidget(pathconnectlabel, 4, 0)
         self.ncc_connect_cb = FCCheckBox()
         grid3.addWidget(self.ncc_connect_cb, 4, 1)
 
-        contourlabel = QtWidgets.QLabel("Contour:")
+        contourlabel = QtWidgets.QLabel(_("Contour:"))
         contourlabel.setToolTip(
-            "Cut around the perimeter of the polygon\n"
-            "to trim rough edges."
+            _("Cut around the perimeter of the polygon\n"
+            "to trim rough edges.")
         )
         grid3.addWidget(contourlabel, 5, 0)
         self.ncc_contour_cb = FCCheckBox()
         grid3.addWidget(self.ncc_contour_cb, 5, 1)
 
-        restlabel = QtWidgets.QLabel("Rest M.:")
+        restlabel = QtWidgets.QLabel(_("Rest M.:"))
         restlabel.setToolTip(
-            "If checked, use 'rest machining'.\n"
+            _("If checked, use 'rest machining'.\n"
             "Basically it will clear copper outside PCB features,\n"
             "using the biggest tool and continue with the next tools,\n"
             "from bigger to smaller, to clear areas of copper that\n"
             "could not be cleared by previous tool, until there is\n"
             "no more copper to clear or there are no more tools.\n"
-            "If not checked, use the standard algorithm."
+            "If not checked, use the standard algorithm.")
         )
         grid3.addWidget(restlabel, 6, 0)
         self.ncc_rest_cb = FCCheckBox()
         grid3.addWidget(self.ncc_rest_cb, 6, 1)
 
-        self.generate_ncc_button = QtWidgets.QPushButton('Generate Geometry')
+        self.generate_ncc_button = QtWidgets.QPushButton(_('Generate Geometry'))
         self.generate_ncc_button.setToolTip(
-            "Create the Geometry Object\n"
-            "for non-copper routing."
+            _("Create the Geometry Object\n"
+            "for non-copper routing.")
         )
         self.tools_box.addWidget(self.generate_ncc_button)
 
@@ -243,24 +259,28 @@ class NonCopperClear(FlatCAMTool, Gerber):
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='ALT+N', **kwargs)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolNonCopperClear()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
         self.build_ui()
-        self.app.ui.notebook.setTabText(2, "NCC Tool")
+        self.app.ui.notebook.setTabText(2, _("NCC Tool"))
 
     def set_tool_ui(self):
         self.tools_frame.show()
@@ -455,16 +475,16 @@ class NonCopperClear(FlatCAMTool, Gerber):
                 try:
                     tool_dia = float(self.addtool_entry.get_value().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                         "use a number."))
                     return
             if tool_dia is None:
                 self.build_ui()
-                self.app.inform.emit("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."))
                 return
 
         if tool_dia == 0:
-            self.app.inform.emit("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")
+            self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format."))
             return
 
         # construct a list of all 'tooluid' in the self.tools
@@ -488,12 +508,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
 
         if float('%.4f' % tool_dia) in tool_dias:
             if muted is None:
-                self.app.inform.emit("[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."))
             self.tools_table.itemChanged.connect(self.on_tool_edit)
             return
         else:
             if muted is None:
-                self.app.inform.emit("[success] New tool added to Tool Table.")
+                self.app.inform.emit(_("[success] New tool added to Tool Table."))
             self.ncc_tools.update({
                 int(self.tooluid): {
                     'tooldia': float('%.4f' % tool_dia),
@@ -526,8 +546,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
                 try:
                     new_tool_dia = float(self.tools_table.item(row, 1).text().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered, "
+                                         "use a number."))
                     return
 
             tooluid = int(self.tools_table.item(row, 3).text())
@@ -535,7 +555,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
             # identify the tool that was edited and get it's tooluid
             if new_tool_dia not in tool_dias:
                 self.ncc_tools[tooluid]['tooldia'] = new_tool_dia
-                self.app.inform.emit("[success] Tool from Tool Table was edited.")
+                self.app.inform.emit(_("[success] Tool from Tool Table was edited."))
                 self.build_ui()
                 return
             else:
@@ -546,7 +566,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
                         break
                 restore_dia_item = self.tools_table.item(row, 1)
                 restore_dia_item.setText(str(old_tool_dia))
-                self.app.inform.emit("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
         self.build_ui()
 
     def on_tool_delete(self, rows_to_delete=None, all=None):
@@ -585,12 +605,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
                     self.ncc_tools.pop(t, None)
 
         except AttributeError:
-            self.app.inform.emit("[WARNING_NOTCL]Delete failed. Select a tool to delete.")
+            self.app.inform.emit(_("[WARNING_NOTCL]Delete failed. Select a tool to delete."))
             return
         except Exception as e:
             log.debug(str(e))
 
-        self.app.inform.emit("[success] Tool(s) deleted from Tool Table.")
+        self.app.inform.emit(_("[success] Tool(s) deleted from Tool Table."))
         self.build_ui()
 
     def on_ncc(self):
@@ -602,8 +622,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
             try:
                 over = float(self.ncc_overlap_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         over = over if over else self.app.defaults["tools_nccoverlap"]
 
@@ -614,8 +634,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
             try:
                 margin = float(self.ncc_margin_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         margin = margin if margin else self.app.defaults["tools_nccmargin"]
 
@@ -636,14 +656,14 @@ class NonCopperClear(FlatCAMTool, Gerber):
         try:
             self.ncc_obj = self.app.collection.get_by_name(self.obj_name)
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % self.obj_name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % self.obj_name)
             return "Could not retrieve object: %s" % self.obj_name
 
         # Prepare non-copper polygons
         try:
             bounding_box = self.ncc_obj.solid_geometry.envelope.buffer(distance=margin, join_style=JOIN_STYLE.mitre)
         except AttributeError:
-            self.app.inform.emit("[ERROR_NOTCL]No Gerber file available.")
+            self.app.inform.emit(_("[ERROR_NOTCL]No Gerber file available."))
             return
 
         # calculate the empty area by subtracting the solid_geometry from the object bounding box geometry
@@ -681,7 +701,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
         sorted_tools.sort(reverse=True)
 
         # Do job in background
-        proc = self.app.proc_container.new("Clearing Non-Copper areas.")
+        proc = self.app.proc_container.new(_("Clearing Non-Copper areas."))
 
         def initialize(geo_obj, app_obj):
             assert isinstance(geo_obj, FlatCAMGeometry), \
@@ -699,7 +719,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
             current_uid = int(1)
 
             for tool in sorted_tools:
-                self.app.inform.emit('[success] Non-Copper Clearing with ToolDia = %s started.' % str(tool))
+                self.app.inform.emit(_('[success] Non-Copper Clearing with ToolDia = %s started.') % str(tool))
                 cleared_geo[:] = []
 
                 # Get remaining tools offset
@@ -768,22 +788,22 @@ class NonCopperClear(FlatCAMTool, Gerber):
                 app_obj.new_object("geometry", name, initialize)
             except Exception as e:
                 proc.done()
-                self.app.inform.emit('[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s' % str(e))
+                self.app.inform.emit(_('[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s') % str(e))
                 return
             proc.done()
 
             if app_obj.poly_not_cleared is False:
-                self.app.inform.emit('[success] NCC Tool finished.')
+                self.app.inform.emit(_('[success] NCC Tool finished.'))
             else:
-                self.app.inform.emit('[WARNING_NOTCL] NCC Tool finished but some PCB features could not be cleared. '
-                                     'Check the result.')
+                self.app.inform.emit(_('[WARNING_NOTCL] NCC Tool finished but some PCB features could not be cleared. '
+                                     'Check the result.'))
             # reset the variable for next use
             app_obj.poly_not_cleared = False
 
             # focus on Selected Tab
             self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab)
             self.tools_frame.hide()
-            self.app.ui.notebook.setTabText(2, "Tools")
+            self.app.ui.notebook.setTabText(2, _("Tools"))
 
         # Promise object with the new name
         self.app.collection.promise(name)
@@ -803,7 +823,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
         sorted_tools.sort(reverse=True)
 
         # Do job in background
-        proc = self.app.proc_container.new("Clearing Non-Copper areas.")
+        proc = self.app.proc_container.new(_("Clearing Non-Copper areas."))
 
         def initialize_rm(geo_obj, app_obj):
             assert isinstance(geo_obj, FlatCAMGeometry), \
@@ -821,7 +841,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
             # Generate area for each tool
             while sorted_tools:
                 tool = sorted_tools.pop(0)
-                self.app.inform.emit('[success] Non-Copper Rest Clearing with ToolDia = %s started.' % str(tool))
+                self.app.inform.emit(_('[success] Non-Copper Rest Clearing with ToolDia = %s started.') % str(tool))
 
                 tool_used = tool  - 1e-12
                 cleared_geo[:] = []
@@ -919,7 +939,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
                 app_obj.new_object("geometry", name, initialize_rm)
             except Exception as e:
                 proc.done()
-                self.app.inform.emit('[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s' % str(e))
+                self.app.inform.emit(_('[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s') % str(e))
                 return
 
             if app_obj.poly_not_cleared is True:
@@ -927,8 +947,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
                 # focus on Selected Tab
                 self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab)
             else:
-                self.app.inform.emit('[ERROR_NOTCL] NCC Tool finished but could not clear the object '
-                                     'with current settings.')
+                self.app.inform.emit(_('[ERROR_NOTCL] NCC Tool finished but could not clear the object '
+                                     'with current settings.'))
                 # focus on Project Tab
                 self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
             proc.done()

+ 120 - 100
flatcamTools/ToolPaint.py

@@ -1,11 +1,27 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Modified: Marius Adrian Stanciu (c)                 #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from copy import copy,deepcopy
 from ObjectCollection import *
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class ToolPaint(FlatCAMTool, Gerber):
 
-    toolName = "Paint Area"
+    toolName = _("Paint Area")
 
     def __init__(self, app):
         self.app = app
@@ -41,19 +57,19 @@ class ToolPaint(FlatCAMTool, Gerber):
         self.object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
         self.object_combo.setCurrentIndex(1)
 
-        self.object_label = QtWidgets.QLabel("Geometry:")
+        self.object_label = QtWidgets.QLabel(_("Geometry:"))
         self.object_label.setToolTip(
-            "Geometry object to be painted.                        "
+            _("Geometry object to be painted.                        ")
         )
         e_lab_0 = QtWidgets.QLabel('')
         form_layout.addRow(self.object_label, self.object_combo)
         form_layout.addRow(e_lab_0)
 
         #### Tools ####
-        self.tools_table_label = QtWidgets.QLabel('<b>Tools Table</b>')
+        self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
         self.tools_table_label.setToolTip(
-            "Tools pool from which the algorithm\n"
-            "will pick the ones used for painting."
+            _("Tools pool from which the algorithm\n"
+            "will pick the ones used for painting.")
         )
         self.tools_box.addWidget(self.tools_table_label)
 
@@ -61,25 +77,25 @@ class ToolPaint(FlatCAMTool, Gerber):
         self.tools_box.addWidget(self.tools_table)
 
         self.tools_table.setColumnCount(4)
-        self.tools_table.setHorizontalHeaderLabels(['#', 'Diameter', 'TT', ''])
+        self.tools_table.setHorizontalHeaderLabels(['#', _('Diameter'), 'TT', ''])
         self.tools_table.setColumnHidden(3, True)
         # self.tools_table.setSortingEnabled(False)
         # self.tools_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
 
         self.tools_table.horizontalHeaderItem(0).setToolTip(
-            "This is the Tool Number.\n"
+            _("This is the Tool Number.\n"
             "Painting will start with the tool with the biggest diameter,\n"
             "continuing until there are no more tools.\n"
             "Only tools that create painting geometry will still be present\n"
             "in the resulting geometry. This is because with some tools\n"
-            "this function will not be able to create painting geometry."
+            "this function will not be able to create painting geometry.")
             )
         self.tools_table.horizontalHeaderItem(1).setToolTip(
-            "Tool Diameter. It's value (in current FlatCAM units) \n"
-            "is the cut width into the material.")
+            _("Tool Diameter. It's value (in current FlatCAM units) \n"
+            "is the cut width into the material."))
 
         self.tools_table.horizontalHeaderItem(2).setToolTip(
-            "The Tool Type (TT) can be:<BR>"
+            _("The Tool Type (TT) can be:<BR>"
             "- <B>Circular</B> with 1 ... 4 teeth -> it is informative only. Being circular, <BR>"
             "the cut width in material is exactly the tool diameter.<BR>"
             "- <B>Ball</B> -> informative only and make reference to the Ball type endmill.<BR>"
@@ -89,7 +105,7 @@ class ToolPaint(FlatCAMTool, Gerber):
             "as the cut width into material will be equal with the value in the Tool Diameter "
             "column of this table.<BR>"
             "Choosing the <B>V-Shape</B> Tool Type automatically will select the Operation Type "
-            "in the resulting geometry as Isolation.")
+            "in the resulting geometry as Isolation."))
 
         self.empty_label = QtWidgets.QLabel('')
         self.tools_box.addWidget(self.empty_label)
@@ -98,9 +114,9 @@ class ToolPaint(FlatCAMTool, Gerber):
         hlay = QtWidgets.QHBoxLayout()
         self.tools_box.addLayout(hlay)
 
-        self.addtool_entry_lbl = QtWidgets.QLabel('<b>Tool Dia:</b>')
+        self.addtool_entry_lbl = QtWidgets.QLabel('<b>%s:</b>' % _('Tool Dia'))
         self.addtool_entry_lbl.setToolTip(
-            "Diameter for the new tool."
+            _("Diameter for the new tool.")
         )
         self.addtool_entry = FCEntry()
 
@@ -112,10 +128,10 @@ class ToolPaint(FlatCAMTool, Gerber):
         grid2 = QtWidgets.QGridLayout()
         self.tools_box.addLayout(grid2)
 
-        self.addtool_btn = QtWidgets.QPushButton('Add')
+        self.addtool_btn = QtWidgets.QPushButton(_('Add'))
         self.addtool_btn.setToolTip(
-            "Add a new tool to the Tool Table\n"
-            "with the diameter specified above."
+            _("Add a new tool to the Tool Table\n"
+            "with the diameter specified above.")
         )
 
         # self.copytool_btn = QtWidgets.QPushButton('Copy')
@@ -124,10 +140,10 @@ class ToolPaint(FlatCAMTool, Gerber):
         #     "by first selecting a row in the Tool Table."
         # )
 
-        self.deltool_btn = QtWidgets.QPushButton('Delete')
+        self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
         self.deltool_btn.setToolTip(
-            "Delete a selection of tools in the Tool Table\n"
-            "by first selecting a row(s) in the Tool Table."
+            _("Delete a selection of tools in the Tool Table\n"
+            "by first selecting a row(s) in the Tool Table.")
         )
 
         grid2.addWidget(self.addtool_btn, 0, 0)
@@ -141,9 +157,9 @@ class ToolPaint(FlatCAMTool, Gerber):
         self.tools_box.addLayout(grid3)
 
         # Overlap
-        ovlabel = QtWidgets.QLabel('Overlap:')
+        ovlabel = QtWidgets.QLabel(_('Overlap:'))
         ovlabel.setToolTip(
-            "How much (fraction) of the tool width to overlap each tool pass.\n"
+            _("How much (fraction) of the tool width to overlap each tool pass.\n"
             "Example:\n"
             "A value here of 0.25 means 25% from the tool diameter found above.\n\n"
             "Adjust the value starting with lower values\n"
@@ -151,30 +167,30 @@ class ToolPaint(FlatCAMTool, Gerber):
             "not painted.\n"
             "Lower values = faster processing, faster execution on PCB.\n"
             "Higher values = slow processing and slow execution on CNC\n"
-            "due of too many paths."
+            "due of too many paths.")
         )
         grid3.addWidget(ovlabel, 1, 0)
         self.paintoverlap_entry = FCEntry()
         grid3.addWidget(self.paintoverlap_entry, 1, 1)
 
         # Margin
-        marginlabel = QtWidgets.QLabel('Margin:')
+        marginlabel = QtWidgets.QLabel(_('Margin:'))
         marginlabel.setToolTip(
-            "Distance by which to avoid\n"
+            _("Distance by which to avoid\n"
             "the edges of the polygon to\n"
-            "be painted."
+            "be painted.")
         )
         grid3.addWidget(marginlabel, 2, 0)
         self.paintmargin_entry = FCEntry()
         grid3.addWidget(self.paintmargin_entry, 2, 1)
 
         # Method
-        methodlabel = QtWidgets.QLabel('Method:')
+        methodlabel = QtWidgets.QLabel(_('Method:'))
         methodlabel.setToolTip(
-            "Algorithm for non-copper clearing:<BR>"
+            _("Algorithm for non-copper clearing:<BR>"
             "<B>Standard</B>: Fixed step inwards.<BR>"
             "<B>Seed-based</B>: Outwards from seed.<BR>"
-            "<B>Line-based</B>: Parallel lines."
+            "<B>Line-based</B>: Parallel lines.")
         )
         grid3.addWidget(methodlabel, 3, 0)
         self.paintmethod_combo = RadioSet([
@@ -185,45 +201,45 @@ class ToolPaint(FlatCAMTool, Gerber):
         grid3.addWidget(self.paintmethod_combo, 3, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel("Connect:")
+        pathconnectlabel = QtWidgets.QLabel(_("Connect:"))
         pathconnectlabel.setToolTip(
-            "Draw lines between resulting\n"
-            "segments to minimize tool lifts."
+            _("Draw lines between resulting\n"
+            "segments to minimize tool lifts.")
         )
         grid3.addWidget(pathconnectlabel, 4, 0)
         self.pathconnect_cb = FCCheckBox()
         grid3.addWidget(self.pathconnect_cb, 4, 1)
 
-        contourlabel = QtWidgets.QLabel("Contour:")
+        contourlabel = QtWidgets.QLabel(_("Contour:"))
         contourlabel.setToolTip(
-            "Cut around the perimeter of the polygon\n"
-            "to trim rough edges."
+            _("Cut around the perimeter of the polygon\n"
+            "to trim rough edges.")
         )
         grid3.addWidget(contourlabel, 5, 0)
         self.paintcontour_cb = FCCheckBox()
         grid3.addWidget(self.paintcontour_cb, 5, 1)
 
-        restlabel = QtWidgets.QLabel("Rest M.:")
+        restlabel = QtWidgets.QLabel(_("Rest M.:"))
         restlabel.setToolTip(
-            "If checked, use 'rest machining'.\n"
+            _("If checked, use 'rest machining'.\n"
             "Basically it will clear copper outside PCB features,\n"
             "using the biggest tool and continue with the next tools,\n"
             "from bigger to smaller, to clear areas of copper that\n"
             "could not be cleared by previous tool, until there is\n"
             "no more copper to clear or there are no more tools.\n\n"
-            "If not checked, use the standard algorithm."
+            "If not checked, use the standard algorithm.")
         )
         grid3.addWidget(restlabel, 6, 0)
         self.rest_cb = FCCheckBox()
         grid3.addWidget(self.rest_cb, 6, 1)
 
         # Polygon selection
-        selectlabel = QtWidgets.QLabel('Selection:')
+        selectlabel = QtWidgets.QLabel(_('Selection:'))
         selectlabel.setToolTip(
-            "How to select the polygons to paint.<BR>"
+            _("How to select the polygons to paint.<BR>"
             "Options:<BR>"
             "- <B>Single</B>: left mouse click on the polygon to be painted.<BR>"
-            "- <B>All</B>: paint all polygons."
+            "- <B>All</B>: paint all polygons.")
         )
         grid3.addWidget(selectlabel, 7, 0)
         # grid3 = QtWidgets.QGridLayout()
@@ -235,13 +251,13 @@ class ToolPaint(FlatCAMTool, Gerber):
         grid3.addWidget(self.selectmethod_combo, 7, 1)
 
         # GO Button
-        self.generate_paint_button = QtWidgets.QPushButton('Create Paint Geometry')
+        self.generate_paint_button = QtWidgets.QPushButton(_('Create Paint Geometry'))
         self.generate_paint_button.setToolTip(
-            "After clicking here, click inside<BR>"
+            _("After clicking here, click inside<BR>"
             "the polygon you wish to be painted if <B>Single</B> is selected.<BR>"
             "If <B>All</B>  is selected then the Paint will start after click.<BR>"
             "A new Geometry object with the tool<BR>"
-            "paths will be created."
+            "paths will be created.")
         )
         self.tools_box.addWidget(self.generate_paint_button)
 
@@ -301,23 +317,27 @@ class ToolPaint(FlatCAMTool, Gerber):
     def install(self, icon=None, separator=None, **kwargs):
         FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolPaint()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
-        self.app.ui.notebook.setTabText(2, "Paint Tool")
+        self.app.ui.notebook.setTabText(2, _("Paint Tool"))
 
     def on_radio_selection(self):
         if self.selectmethod_combo.get_value() == 'single':
@@ -514,13 +534,13 @@ class ToolPaint(FlatCAMTool, Gerber):
                 try:
                     tool_dia = float(self.addtool_entry.get_value().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                         "use a number."))
                     return
 
             if tool_dia is None:
                 self.build_ui()
-                self.app.inform.emit("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."))
                 return
 
         # construct a list of all 'tooluid' in the self.tools
@@ -544,12 +564,12 @@ class ToolPaint(FlatCAMTool, Gerber):
 
         if float('%.4f' % tool_dia) in tool_dias:
             if muted is None:
-                self.app.inform.emit("[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."))
             self.tools_table.itemChanged.connect(self.on_tool_edit)
             return
         else:
             if muted is None:
-                self.app.inform.emit("[success] New tool added to Tool Table.")
+                self.app.inform.emit(_("[success] New tool added to Tool Table."))
             self.paint_tools.update({
                 int(self.tooluid): {
                     'tooldia': float('%.4f' % tool_dia),
@@ -584,15 +604,15 @@ class ToolPaint(FlatCAMTool, Gerber):
                 try:
                     new_tool_dia = float(self.tools_table.item(row, 1).text().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                         "use a number."))
                     return
             tooluid = int(self.tools_table.item(row, 3).text())
 
             # identify the tool that was edited and get it's tooluid
             if new_tool_dia not in tool_dias:
                 self.paint_tools[tooluid]['tooldia'] = new_tool_dia
-                self.app.inform.emit("[success] Tool from Tool Table was edited.")
+                self.app.inform.emit(_("[success] Tool from Tool Table was edited."))
                 self.build_ui()
                 return
             else:
@@ -603,7 +623,7 @@ class ToolPaint(FlatCAMTool, Gerber):
                         break
                 restore_dia_item = self.tools_table.item(row, 1)
                 restore_dia_item.setText(str(old_tool_dia))
-                self.app.inform.emit("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
         self.build_ui()
 
     # def on_tool_copy(self, all=None):
@@ -700,18 +720,19 @@ class ToolPaint(FlatCAMTool, Gerber):
                     self.paint_tools.pop(t, None)
 
         except AttributeError:
-            self.app.inform.emit("[WARNING_NOTCL]Delete failed. Select a tool to delete.")
+            self.app.inform.emit(_("[WARNING_NOTCL]Delete failed. Select a tool to delete."))
             return
         except Exception as e:
             log.debug(str(e))
 
-        self.app.inform.emit("[success] Tool(s) deleted from Tool Table.")
+        self.app.inform.emit(_("[success] Tool(s) deleted from Tool Table."))
         self.build_ui()
 
     def on_paint_button_click(self):
-        self.app.report_usage("geometry_on_paint_button")
+        self.app.report_usage(_("geometry_on_paint_button"))
+        self.app.call_source = 'paint'
 
-        self.app.inform.emit("[WARNING_NOTCL]Click inside the desired polygon.")
+        self.app.inform.emit(_("[WARNING_NOTCL]Click inside the desired polygon."))
         try:
             overlap = float(self.paintoverlap_entry.get_value())
         except ValueError:
@@ -719,8 +740,8 @@ class ToolPaint(FlatCAMTool, Gerber):
             try:
                 overlap = float(self.paintoverlap_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         connect = self.pathconnect_cb.get_value()
@@ -733,17 +754,17 @@ class ToolPaint(FlatCAMTool, Gerber):
         try:
             self.paint_obj = self.app.collection.get_by_name(str(self.obj_name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % self.obj_name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % self.obj_name)
             return
 
         if self.paint_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]Object not found: %s" % self.paint_obj)
+            self.app.inform.emit(_("[ERROR_NOTCL]Object not found: %s") % self.paint_obj)
             return
 
         # test if the Geometry Object is multigeo and return Fail if True because
         # for now Paint don't work on MultiGeo
         if self.paint_obj.multigeo is True:
-            self.app.inform.emit("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ...")
+            self.app.inform.emit(_("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."))
             return 'Fail'
 
         o_name = '%s_multitool_paint' % (self.obj_name)
@@ -756,7 +777,7 @@ class ToolPaint(FlatCAMTool, Gerber):
                                 contour=contour)
 
         if select_method == "single":
-            self.app.inform.emit("[WARNING_NOTCL]Click inside the desired polygon.")
+            self.app.inform.emit(_("[WARNING_NOTCL]Click inside the desired polygon."))
 
             # use the first tool in the tool table; get the diameter
             tooldia = float('%.4f' % float(self.tools_table.item(0, 1).text()))
@@ -765,7 +786,7 @@ class ToolPaint(FlatCAMTool, Gerber):
             def doit(event):
                 # do paint single only for left mouse clicks
                 if event.button == 1:
-                    self.app.inform.emit("Painting polygon...")
+                    self.app.inform.emit(_("Painting polygon..."))
                     self.app.plotcanvas.vis_disconnect('mouse_press', doit)
                     pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
                     self.paint_poly(self.paint_obj,
@@ -799,7 +820,6 @@ class ToolPaint(FlatCAMTool, Gerber):
 
         # Which polygon.
         # poly = find_polygon(self.solid_geometry, inside_pt)
-
         poly = obj.find_polygon(inside_pt)
         paint_method = self.paintmethod_combo.get_value()
 
@@ -810,17 +830,17 @@ class ToolPaint(FlatCAMTool, Gerber):
             try:
                 paint_margin = float(self.paintmargin_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         # No polygon?
         if poly is None:
             self.app.log.warning('No polygon found.')
-            self.app.inform.emit('[WARNING] No polygon found.')
+            self.app.inform.emit(_('[WARNING] No polygon found.'))
             return
 
-        proc = self.app.proc_container.new("Painting polygon.")
+        proc = self.app.proc_container.new(_("Painting polygon."))
 
         name = outname if outname else self.obj_name + "_paint"
 
@@ -862,13 +882,13 @@ class ToolPaint(FlatCAMTool, Gerber):
                     geo_obj.solid_geometry += list(cp.get_objects())
                     return cp
                 else:
-                    self.app.inform.emit('[ERROR_NOTCL] Geometry could not be painted completely')
+                    self.app.inform.emit(_('[ERROR_NOTCL] Geometry could not be painted completely'))
                     return None
 
             geo_obj.solid_geometry = []
 
             try:
-                a, b, c, d = poly.bounds()
+                a, b, c, d = poly.bounds
                 geo_obj.options['xmin'] = a
                 geo_obj.options['ymin'] = b
                 geo_obj.options['xmax'] = c
@@ -888,8 +908,8 @@ class ToolPaint(FlatCAMTool, Gerber):
             except Exception as e:
                 log.debug("Could not Paint the polygons. %s" % str(e))
                 self.app.inform.emit(
-                    "[ERROR] Could not do Paint. Try a different combination of parameters. "
-                    "Or a different strategy of paint\n%s" % str(e))
+                    _("[ERROR] Could not do Paint. Try a different combination of parameters. "
+                    "Or a different strategy of paint\n%s") % str(e))
                 return
 
             if cp is not None:
@@ -930,13 +950,13 @@ class ToolPaint(FlatCAMTool, Gerber):
                 app_obj.new_object("geometry", name, gen_paintarea)
             except Exception as e:
                 proc.done()
-                self.app.inform.emit('[ERROR_NOTCL] PaintTool.paint_poly() --> %s' % str(e))
+                self.app.inform.emit(_('[ERROR_NOTCL] PaintTool.paint_poly() --> %s') % str(e))
                 return
             proc.done()
             # focus on Selected Tab
             self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab)
 
-        self.app.inform.emit("Polygon Paint started ...")
+        self.app.inform.emit(_("Polygon Paint started ..."))
 
         # Promise object with the new name
         self.app.collection.promise(name)
@@ -965,11 +985,11 @@ class ToolPaint(FlatCAMTool, Gerber):
             try:
                 paint_margin = float(self.paintmargin_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
-        proc = self.app.proc_container.new("Painting polygon.")
+        proc = self.app.proc_container.new(_("Painting polygon..."))
         name = outname if outname else self.obj_name + "_paint"
         over = overlap
         conn = connect
@@ -1084,8 +1104,8 @@ class ToolPaint(FlatCAMTool, Gerber):
                     except Exception as e:
                         log.debug("Could not Paint the polygons. %s" % str(e))
                         self.app.inform.emit(
-                            "[ERROR] Could not do Paint All. Try a different combination of parameters. "
-                            "Or a different Method of paint\n%s" % str(e))
+                            _("[ERROR] Could not do Paint All. Try a different combination of parameters. "
+                            "Or a different Method of paint\n%s") % str(e))
                         return
 
                 # add the solid_geometry to the current too in self.paint_tools dictionary and then reset the
@@ -1108,16 +1128,16 @@ class ToolPaint(FlatCAMTool, Gerber):
                 if geo_obj.tools[tooluid]['solid_geometry']:
                     has_solid_geo += 1
             if has_solid_geo == 0:
-                self.app.inform.emit("[ERROR] There is no Painting Geometry in the file.\n"
+                self.app.inform.emit(_("[ERROR] There is no Painting Geometry in the file.\n"
                                       "Usually it means that the tool diameter is too big for the painted geometry.\n"
-                                      "Change the painting parameters and try again.")
+                                      "Change the painting parameters and try again."))
                 return
 
             # Experimental...
             # print("Indexing...", end=' ')
             # geo_obj.make_index()
 
-            self.app.inform.emit("[success] Paint All Done.")
+            self.app.inform.emit(_("[success] Paint All Done."))
 
         # Initializes the new geometry object
         def gen_paintarea_rest_machining(geo_obj, app_obj):
@@ -1173,8 +1193,8 @@ class ToolPaint(FlatCAMTool, Gerber):
                     except Exception as e:
                         log.debug("Could not Paint the polygons. %s" % str(e))
                         self.app.inform.emit(
-                            "[ERROR] Could not do Paint All. Try a different combination of parameters. "
-                            "Or a different Method of paint\n%s" % str(e))
+                            _("[ERROR] Could not do Paint All. Try a different combination of parameters. "
+                            "Or a different Method of paint\n%s") % str(e))
                         return
 
                 # find the tooluid associated with the current tool_dia so we know where to add the tool solid_geometry
@@ -1203,16 +1223,16 @@ class ToolPaint(FlatCAMTool, Gerber):
                 if geo_obj.tools[tooluid]['solid_geometry']:
                     has_solid_geo += 1
             if has_solid_geo == 0:
-                self.app.inform.emit("[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
+                self.app.inform.emit(_("[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
                                       "Usually it means that the tool diameter is too big for the painted geometry.\n"
-                                      "Change the painting parameters and try again.")
+                                      "Change the painting parameters and try again."))
                 return
 
             # Experimental...
             # print("Indexing...", end=' ')
             # geo_obj.make_index()
 
-            self.app.inform.emit("[success] Paint All with Rest-Machining Done.")
+            self.app.inform.emit(_("[success] Paint All with Rest-Machining done."))
 
         def job_thread(app_obj):
             try:
@@ -1228,7 +1248,7 @@ class ToolPaint(FlatCAMTool, Gerber):
             # focus on Selected Tab
             self.app.ui.notebook.setCurrentWidget(self.app.ui.selected_tab)
 
-        self.app.inform.emit("Polygon Paint started ...")
+        self.app.inform.emit(_("Polygon Paint started ..."))
 
         # Promise object with the new name
         self.app.collection.promise(name)

+ 90 - 149
flatcamTools/ToolPanelize.py

@@ -1,12 +1,28 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from copy import copy, deepcopy
 from ObjectCollection import *
 import time
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class Panelize(FlatCAMTool):
 
-    toolName = "Panelize PCB"
+    toolName = _("Panelize PCB")
 
     def __init__(self, app):
         super(Panelize, self).__init__(self)
@@ -37,12 +53,12 @@ class Panelize(FlatCAMTool):
         self.type_obj_combo.setItemIcon(1, QtGui.QIcon("share/drill16.png"))
         self.type_obj_combo.setItemIcon(2, QtGui.QIcon("share/geometry16.png"))
 
-        self.type_obj_combo_label = QtWidgets.QLabel("Object Type:")
+        self.type_obj_combo_label = QtWidgets.QLabel(_("Object Type:"))
         self.type_obj_combo_label.setToolTip(
-            "Specify the type of object to be panelized\n"
+            _("Specify the type of object to be panelized\n"
             "It can be of type: Gerber, Excellon or Geometry.\n"
             "The selection here decide the type of objects that will be\n"
-            "in the Object combobox."
+            "in the Object combobox.")
         )
         form_layout.addRow(self.type_obj_combo_label, self.type_obj_combo)
 
@@ -52,10 +68,10 @@ class Panelize(FlatCAMTool):
         self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
         self.object_combo.setCurrentIndex(1)
 
-        self.object_label = QtWidgets.QLabel("Object:")
+        self.object_label = QtWidgets.QLabel(_("Object:"))
         self.object_label.setToolTip(
-            "Object to be panelized. This means that it will\n"
-            "be duplicated in an array of rows and columns."
+            _("Object to be panelized. This means that it will\n"
+            "be duplicated in an array of rows and columns.")
         )
         form_layout.addRow(self.object_label, self.object_combo)
 
@@ -70,12 +86,12 @@ class Panelize(FlatCAMTool):
         self.type_box_combo.setItemIcon(0, QtGui.QIcon("share/flatcam_icon16.png"))
         self.type_box_combo.setItemIcon(2, QtGui.QIcon("share/geometry16.png"))
 
-        self.type_box_combo_label = QtWidgets.QLabel("Box Type:")
+        self.type_box_combo_label = QtWidgets.QLabel(_("Box Type:"))
         self.type_box_combo_label.setToolTip(
-            "Specify the type of object to be used as an container for\n"
+            _("Specify the type of object to be used as an container for\n"
             "panelization. It can be: Gerber or Geometry type.\n"
             "The selection here decide the type of objects that will be\n"
-            "in the Box Object combobox."
+            "in the Box Object combobox.")
         )
         form_layout.addRow(self.type_box_combo_label, self.type_box_combo)
 
@@ -85,83 +101,83 @@ class Panelize(FlatCAMTool):
         self.box_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
         self.box_combo.setCurrentIndex(1)
 
-        self.box_combo_label = QtWidgets.QLabel("Box Object:")
+        self.box_combo_label = QtWidgets.QLabel(_("Box Object:"))
         self.box_combo_label.setToolTip(
-            "The actual object that is used a container for the\n "
-            "selected object that is to be panelized."
+            _("The actual object that is used a container for the\n "
+            "selected object that is to be panelized.")
         )
         form_layout.addRow(self.box_combo_label, self.box_combo)
 
         ## Spacing Columns
         self.spacing_columns = FCEntry()
-        self.spacing_columns_label = QtWidgets.QLabel("Spacing cols:")
+        self.spacing_columns_label = QtWidgets.QLabel(_("Spacing cols:"))
         self.spacing_columns_label.setToolTip(
-            "Spacing between columns of the desired panel.\n"
-            "In current units."
+            _("Spacing between columns of the desired panel.\n"
+            "In current units.")
         )
         form_layout.addRow(self.spacing_columns_label, self.spacing_columns)
 
         ## Spacing Rows
         self.spacing_rows = FCEntry()
-        self.spacing_rows_label = QtWidgets.QLabel("Spacing rows:")
+        self.spacing_rows_label = QtWidgets.QLabel(_("Spacing rows:"))
         self.spacing_rows_label.setToolTip(
-            "Spacing between rows of the desired panel.\n"
-            "In current units."
+            _("Spacing between rows of the desired panel.\n"
+            "In current units.")
         )
         form_layout.addRow(self.spacing_rows_label, self.spacing_rows)
 
         ## Columns
         self.columns = FCEntry()
-        self.columns_label = QtWidgets.QLabel("Columns:")
+        self.columns_label = QtWidgets.QLabel(_("Columns:"))
         self.columns_label.setToolTip(
-            "Number of columns of the desired panel"
+            _("Number of columns of the desired panel")
         )
         form_layout.addRow(self.columns_label, self.columns)
 
         ## Rows
         self.rows = FCEntry()
-        self.rows_label = QtWidgets.QLabel("Rows:")
+        self.rows_label = QtWidgets.QLabel(_("Rows:"))
         self.rows_label.setToolTip(
-            "Number of rows of the desired panel"
+            _("Number of rows of the desired panel")
         )
         form_layout.addRow(self.rows_label, self.rows)
 
         ## Type of resulting Panel object
         self.panel_type_radio = RadioSet([{'label': 'Gerber', 'value': 'gerber'},
                                      {'label': 'Geometry', 'value': 'geometry'}])
-        self.panel_type_label = QtWidgets.QLabel("Panel Type:")
+        self.panel_type_label = QtWidgets.QLabel(_("Panel Type:"))
         self.panel_type_label.setToolTip(
-            "Choose the type of object for the panel object:\n"
+            _("Choose the type of object for the panel object:\n"
             "- Geometry\n"
-            "- Gerber"
+            "- Gerber")
         )
         form_layout.addRow(self.panel_type_label)
         form_layout.addRow(self.panel_type_radio)
 
         ## Constrains
-        self.constrain_cb = FCCheckBox("Constrain panel within:")
+        self.constrain_cb = FCCheckBox(_("Constrain panel within:"))
         self.constrain_cb.setToolTip(
-            "Area define by DX and DY within to constrain the panel.\n"
+            _("Area define by DX and DY within to constrain the panel.\n"
             "DX and DY values are in current units.\n"
             "Regardless of how many columns and rows are desired,\n"
             "the final panel will have as many columns and rows as\n"
-            "they fit completely within selected area."
+            "they fit completely within selected area.")
         )
         form_layout.addRow(self.constrain_cb)
 
         self.x_width_entry = FCEntry()
-        self.x_width_lbl = QtWidgets.QLabel("Width (DX):")
+        self.x_width_lbl = QtWidgets.QLabel(_("Width (DX):"))
         self.x_width_lbl.setToolTip(
-            "The width (DX) within which the panel must fit.\n"
-            "In current units."
+            _("The width (DX) within which the panel must fit.\n"
+            "In current units.")
         )
         form_layout.addRow(self.x_width_lbl, self.x_width_entry)
 
         self.y_height_entry = FCEntry()
-        self.y_height_lbl = QtWidgets.QLabel("Height (DY):")
+        self.y_height_lbl = QtWidgets.QLabel(_("Height (DY):"))
         self.y_height_lbl.setToolTip(
-            "The height (DY)within which the panel must fit.\n"
-            "In current units."
+            _("The height (DY)within which the panel must fit.\n"
+            "In current units.")
         )
         form_layout.addRow(self.y_height_lbl, self.y_height_entry)
 
@@ -173,11 +189,11 @@ class Panelize(FlatCAMTool):
         self.layout.addLayout(hlay_2)
 
         hlay_2.addStretch()
-        self.panelize_object_button = QtWidgets.QPushButton("Panelize Object")
+        self.panelize_object_button = QtWidgets.QPushButton(_("Panelize Object"))
         self.panelize_object_button.setToolTip(
-            "Panelize the specified object around the specified box.\n"
+            _("Panelize the specified object around the specified box.\n"
             "In other words it creates multiple copies of the source object,\n"
-            "arranged in a 2D array of rows and columns."
+            "arranged in a 2D array of rows and columns.")
         )
         hlay_2.addWidget(self.panelize_object_button)
 
@@ -197,18 +213,22 @@ class Panelize(FlatCAMTool):
         # flag to signal the constrain was activated
         self.constrain_flag = False
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolPanelize()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
@@ -270,13 +290,13 @@ class Panelize(FlatCAMTool):
         try:
             obj = self.app.collection.get_by_name(str(name))
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % name)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % name)
             return "Could not retrieve object: %s" % name
 
         panel_obj = obj
 
         if panel_obj is None:
-            self.app.inform.emit("[ERROR_NOTCL]Object not found: %s" % panel_obj)
+            self.app.inform.emit(_("[ERROR_NOTCL]Object not found: %s") % panel_obj)
             return "Object not found: %s" % panel_obj
 
         boxname = self.box_combo.currentText()
@@ -284,11 +304,11 @@ class Panelize(FlatCAMTool):
         try:
             box = self.app.collection.get_by_name(boxname)
         except:
-            self.app.inform.emit("[ERROR_NOTCL]Could not retrieve object: %s" % boxname)
+            self.app.inform.emit(_("[ERROR_NOTCL]Could not retrieve object: %s") % boxname)
             return "Could not retrieve object: %s" % boxname
 
         if box is None:
-            self.app.inform.emit("[WARNING]No object Box. Using instead %s" % panel_obj)
+            self.app.inform.emit(_("[WARNING]No object Box. Using instead %s") % panel_obj)
             box = panel_obj
 
         self.outname = name + '_panelized'
@@ -300,8 +320,8 @@ class Panelize(FlatCAMTool):
             try:
                 spacing_columns = float(self.spacing_columns.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         spacing_columns = spacing_columns if spacing_columns is not None else 0
 
@@ -312,8 +332,8 @@ class Panelize(FlatCAMTool):
             try:
                 spacing_rows = float(self.spacing_rows.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         spacing_rows = spacing_rows if spacing_rows is not None else 0
 
@@ -325,8 +345,8 @@ class Panelize(FlatCAMTool):
                 rows = float(self.rows.get_value().replace(',', '.'))
                 rows = int(rows)
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         rows = rows if rows is not None else 1
 
@@ -338,8 +358,8 @@ class Panelize(FlatCAMTool):
                 columns = float(self.columns.get_value().replace(',', '.'))
                 columns = int(columns)
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
         columns = columns if columns is not None else 1
 
@@ -350,8 +370,8 @@ class Panelize(FlatCAMTool):
             try:
                 constrain_dx = float(self.x_width_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         try:
@@ -361,15 +381,15 @@ class Panelize(FlatCAMTool):
             try:
                 constrain_dy = float(self.y_height_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                     "use a number."))
                 return
 
         panel_type = str(self.panel_type_radio.get_value())
 
 
         if 0 in {columns, rows}:
-            self.app.inform.emit("[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive integer.")
+            self.app.inform.emit(_("[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive integer."))
             return "Columns or Rows are zero value. Change them to a positive integer."
 
         xmin, ymin, xmax, ymax = box.bounds()
@@ -392,88 +412,9 @@ class Panelize(FlatCAMTool):
                     rows -= 1
                     panel_lengthy = ((ymax - ymin) * rows) + (spacing_rows * (rows - 1))
 
-        # def clean_temp():
-        #     # deselect all  to avoid  delete selected object when run  delete  from  shell
-        #     self.app.collection.set_all_inactive()
-        #
-        #     for del_obj in self.objs:
-        #         self.app.collection.set_active(del_obj.options['name'])
-        #         self.app.on_delete()
-        #
-        #     self.objs[:] = []
-
-        # def panelize():
-        #     if panel_obj is not None:
-        #         self.app.inform.emit("Generating panel ... Please wait.")
-        #
-        #         self.app.progress.emit(10)
-        #
-        #         if isinstance(panel_obj, FlatCAMExcellon):
-        #             currenty = 0.0
-        #             self.app.progress.emit(0)
-        #
-        #             def initialize_local_excellon(obj_init, app):
-        #                 obj_init.tools = panel_obj.tools
-        #                 # drills are offset, so they need to be deep copied
-        #                 obj_init.drills = deepcopy(panel_obj.drills)
-        #                 obj_init.offset([float(currentx), float(currenty)])
-        #                 obj_init.create_geometry()
-        #                 self.objs.append(obj_init)
-        #
-        #             self.app.progress.emit(0)
-        #             for row in range(rows):
-        #                 currentx = 0.0
-        #                 for col in range(columns):
-        #                     local_outname = self.outname + ".tmp." + str(col) + "." + str(row)
-        #                     self.app.new_object("excellon", local_outname, initialize_local_excellon, plot=False,
-        #                                         autoselected=False)
-        #                     currentx += lenghtx
-        #                 currenty += lenghty
-        #         else:
-        #             currenty = 0
-        #             self.app.progress.emit(0)
-        #
-        #             def initialize_local_geometry(obj_init, app):
-        #                 obj_init.solid_geometry = panel_obj.solid_geometry
-        #                 obj_init.offset([float(currentx), float(currenty)])
-        #                 self.objs.append(obj_init)
-        #
-        #             self.app.progress.emit(0)
-        #             for row in range(rows):
-        #                 currentx = 0
-        #
-        #                 for col in range(columns):
-        #                     local_outname = self.outname + ".tmp." + str(col) + "." + str(row)
-        #                     self.app.new_object("geometry", local_outname, initialize_local_geometry, plot=False,
-        #                                         autoselected=False)
-        #                     currentx += lenghtx
-        #                 currenty += lenghty
-        #
-        #         def job_init_geometry(obj_fin, app_obj):
-        #             FlatCAMGeometry.merge(self.objs, obj_fin)
-        #
-        #         def job_init_excellon(obj_fin, app_obj):
-        #             # merge expects tools to exist in the target object
-        #             obj_fin.tools = panel_obj.tools.copy()
-        #             FlatCAMExcellon.merge(self.objs, obj_fin)
-        #
-        #         if isinstance(panel_obj, FlatCAMExcellon):
-        #             self.app.progress.emit(50)
-        #             self.app.new_object("excellon", self.outname, job_init_excellon, plot=True, autoselected=True)
-        #         else:
-        #             self.app.progress.emit(50)
-        #             self.app.new_object("geometry", self.outname, job_init_geometry, plot=True, autoselected=True)
-        #
-        #     else:
-        #         self.app.inform.emit("[ERROR_NOTCL] Obj is None")
-        #         return "ERROR: Obj is None"
-
-        # panelize()
-        # clean_temp()
-
         def panelize_2():
             if panel_obj is not None:
-                self.app.inform.emit("Generating panel ... Please wait.")
+                self.app.inform.emit(_("Generating panel ... Please wait."))
 
                 self.app.progress.emit(0)
 
@@ -576,18 +517,18 @@ class Panelize(FlatCAMTool):
                                         plot=True, autoselected=True)
 
         if self.constrain_flag is False:
-            self.app.inform.emit("[success]Panel done...")
+            self.app.inform.emit(_("[success]Panel done..."))
         else:
             self.constrain_flag = False
-            self.app.inform.emit("[WARNING] Too big for the constrain area. Final panel has %s columns and %s rows" %
-                                 (columns, rows))
+            self.app.inform.emit(_("[WARNING] Too big for the constrain area. Final panel has {col} columns and {row} rows").format(
+                col=columns, row=rows))
 
-        proc = self.app.proc_container.new("Generating panel ... Please wait.")
+        proc = self.app.proc_container.new(_("Generating panel ... Please wait."))
 
         def job_thread(app_obj):
             try:
                 panelize_2()
-                self.app.inform.emit("[success]Panel created successfully.")
+                self.app.inform.emit(_("[success]Panel created successfully."))
             except Exception as e:
                 proc.done()
                 log.debug(str(e))

+ 43 - 16
flatcamTools/ToolProperties.py

@@ -1,12 +1,28 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from PyQt5 import QtGui, QtCore, QtWidgets
 from PyQt5.QtCore import Qt
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class Properties(FlatCAMTool):
 
-    toolName = "Properties"
+    toolName = _("Properties")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -48,24 +64,29 @@ class Properties(FlatCAMTool):
         self.vlay.addWidget(self.treeWidget)
         self.vlay.setStretch(0,0)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolProperties()")
 
         if self.app.tool_tab_locked is True:
             return
-        self.set_tool_ui()
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
+        self.set_tool_ui()
+
         self.properties()
 
     def install(self, icon=None, separator=None, **kwargs):
@@ -79,15 +100,15 @@ class Properties(FlatCAMTool):
     def properties(self):
         obj_list = self.app.collection.get_selected()
         if not obj_list:
-            self.app.inform.emit("[ERROR_NOTCL] Properties Tool was not displayed. No object selected.")
-            self.app.ui.notebook.setTabText(2, "Tools")
+            self.app.inform.emit(_("[ERROR_NOTCL] Properties Tool was not displayed. No object selected."))
+            self.app.ui.notebook.setTabText(2, _("Tools"))
             self.properties_frame.hide()
             self.app.ui.notebook.setCurrentWidget(self.app.ui.project_tab)
             return
         for obj in obj_list:
             self.addItems(obj)
-            self.app.inform.emit("[success] Object Properties are displayed.")
-        self.app.ui.notebook.setTabText(2, "Properties Tool")
+            self.app.inform.emit(_("[success] Object Properties are displayed."))
+        self.app.ui.notebook.setTabText(2, _("Properties Tool"))
 
     def addItems(self, obj):
         parent = self.treeWidget.invisibleRootItem()
@@ -150,8 +171,14 @@ class Properties(FlatCAMTool):
             self.addChild(options, [str(option), str(obj.options[option])], True)
 
         if obj.kind.lower() == 'gerber':
+            temp_ap = {}
             for ap in obj.apertures:
-                self.addChild(apertures, [str(ap), str(obj.apertures[ap])], True)
+                temp_ap.clear()
+                temp_ap = deepcopy(obj.apertures[ap])
+                if obj.apertures[ap]['solid_geometry']:
+                    elems = len(obj.apertures[ap]['solid_geometry'])
+                    temp_ap['solid_geometry'] = '%s Polygons' % str(elems)
+                self.addChild(apertures, [str(ap), str(temp_ap)], True)
         elif obj.kind.lower() == 'excellon':
             for tool, value in obj.tools.items():
                 self.addChild(tools, [str(tool), str(value['C'])], True)

+ 11 - 3
flatcamTools/ToolShell.py

@@ -10,9 +10,17 @@
 from PyQt5.QtCore import Qt
 from PyQt5.QtGui import QTextCursor
 from PyQt5.QtWidgets import QVBoxLayout, QWidget
-from GUIElements import _BrowserTextEdit, _ExpandableTextEdit
+from flatcamGUI.GUIElements import _BrowserTextEdit, _ExpandableTextEdit
 import html
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class TermWidget(QWidget):
     """
@@ -58,9 +66,9 @@ class TermWidget(QWidget):
         self._edit.setTextColor(Qt.white)
         self._edit.setTextBackgroundColor(Qt.darkGreen)
         if detail is None:
-            self._edit.setPlainText("...proccessing...")
+            self._edit.setPlainText(_("...proccessing..."))
         else:
-            self._edit.setPlainText("...proccessing... [%s]" % detail)
+            self._edit.setPlainText(_("...proccessing... [%s]") % detail)
 
         self._edit.setDisabled(True)
         self._edit.setFocus()

+ 157 - 138
flatcamTools/ToolSolderPaste.py

@@ -1,8 +1,16 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from FlatCAMCommon import LoudDict
-from GUIElements import FCComboBox, FCEntry, FCTable
+from flatcamGUI.GUIElements import FCComboBox, FCEntry, FCTable
 from FlatCAMApp import log
-from camlib import distance, CNCjob
+from camlib import distance
 from FlatCAMObj import FlatCAMCNCjob
 
 from PyQt5 import QtGui, QtCore, QtWidgets
@@ -10,16 +18,23 @@ from PyQt5.QtCore import Qt
 from copy import deepcopy
 from datetime import datetime
 
-from shapely.geometry import MultiPolygon, Polygon, LineString
-from shapely.geometry.base import BaseGeometry
+from shapely.geometry import Polygon, LineString
 from shapely.ops import cascaded_union
 
 import traceback
 from io import StringIO
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class SolderPaste(FlatCAMTool):
-    toolName = "Solder Paste Tool"
+    toolName = _("Solder Paste Tool")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -47,15 +62,15 @@ class SolderPaste(FlatCAMTool):
 
         self.object_label = QtWidgets.QLabel("Gerber:   ")
         self.object_label.setToolTip(
-            "Gerber Solder paste object.                        "
+            _("Gerber Solder paste object.                        ")
         )
         obj_form_layout.addRow(self.object_label, self.obj_combo)
 
         #### Tools ####
-        self.tools_table_label = QtWidgets.QLabel('<b>Tools Table</b>')
+        self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
         self.tools_table_label.setToolTip(
-            "Tools pool from which the algorithm\n"
-            "will pick the ones used for dispensing solder paste."
+            _("Tools pool from which the algorithm\n"
+            "will pick the ones used for dispensing solder paste.")
         )
         self.layout.addWidget(self.tools_table_label)
 
@@ -63,29 +78,29 @@ class SolderPaste(FlatCAMTool):
         self.layout.addWidget(self.tools_table)
 
         self.tools_table.setColumnCount(3)
-        self.tools_table.setHorizontalHeaderLabels(['#', 'Diameter', ''])
+        self.tools_table.setHorizontalHeaderLabels(['#', _('Diameter'), ''])
         self.tools_table.setColumnHidden(2, True)
         self.tools_table.setSortingEnabled(False)
         # self.tools_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
 
         self.tools_table.horizontalHeaderItem(0).setToolTip(
-            "This is the Tool Number.\n"
+            _("This is the Tool Number.\n"
             "The solder dispensing will start with the tool with the biggest \n"
             "diameter, continuing until there are no more Nozzle tools.\n"
             "If there are no longer tools but there are still pads not covered\n "
-            "with solder paste, the app will issue a warning message box."
+            "with solder paste, the app will issue a warning message box.")
             )
         self.tools_table.horizontalHeaderItem(1).setToolTip(
-            "Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
-            "is the width of the solder paste dispensed.")
+           _( "Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
+            "is the width of the solder paste dispensed."))
 
         #### Add a new Tool ####
         hlay_tools = QtWidgets.QHBoxLayout()
         self.layout.addLayout(hlay_tools)
 
-        self.addtool_entry_lbl = QtWidgets.QLabel('<b>New Nozzle Tool:</b>')
+        self.addtool_entry_lbl = QtWidgets.QLabel('<b>%s:</b>' % _('New Nozzle Tool'))
         self.addtool_entry_lbl.setToolTip(
-            "Diameter for the new Nozzle tool to add in the Tool Table"
+            _("Diameter for the new Nozzle tool to add in the Tool Table")
         )
         self.addtool_entry = FCEntry()
 
@@ -97,21 +112,21 @@ class SolderPaste(FlatCAMTool):
         grid0 = QtWidgets.QGridLayout()
         self.layout.addLayout(grid0)
 
-        self.addtool_btn = QtWidgets.QPushButton('Add')
+        self.addtool_btn = QtWidgets.QPushButton(_('Add'))
         self.addtool_btn.setToolTip(
-            "Add a new nozzle tool to the Tool Table\n"
-            "with the diameter specified above."
+            _("Add a new nozzle tool to the Tool Table\n"
+            "with the diameter specified above.")
         )
 
-        self.deltool_btn = QtWidgets.QPushButton('Delete')
+        self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
         self.deltool_btn.setToolTip(
-            "Delete a selection of tools in the Tool Table\n"
-            "by first selecting a row(s) in the Tool Table."
+           _( "Delete a selection of tools in the Tool Table\n"
+            "by first selecting a row(s) in the Tool Table.")
         )
 
-        self.soldergeo_btn = QtWidgets.QPushButton("Generate Geo")
+        self.soldergeo_btn = QtWidgets.QPushButton(_("Generate Geo"))
         self.soldergeo_btn.setToolTip(
-            "Generate solder paste dispensing geometry."
+            _("Generate solder paste dispensing geometry.")
         )
 
         grid0.addWidget(self.addtool_btn, 0, 0)
@@ -124,13 +139,13 @@ class SolderPaste(FlatCAMTool):
         grid0_1 = QtWidgets.QGridLayout()
         self.layout.addLayout(grid0_1)
 
-        step1_lbl = QtWidgets.QLabel("<b>STEP 1:</b>")
+        step1_lbl = QtWidgets.QLabel("<b>%s:</b>" % _('STEP 1'))
         step1_lbl.setToolTip(
-            "First step is to select a number of nozzle tools for usage\n"
-            "and then optionally modify the GCode parameters bellow."
+            _("First step is to select a number of nozzle tools for usage\n"
+            "and then optionally modify the GCode parameters bellow.")
         )
-        step1_description_lbl = QtWidgets.QLabel("Select tools.\n"
-                                                 "Modify parameters.")
+        step1_description_lbl = QtWidgets.QLabel(_("Select tools.\n"
+                                                 "Modify parameters."))
 
         grid0_1.addWidget(step1_lbl, 0, 0, alignment=Qt.AlignTop)
         grid0_1.addWidget(step1_description_lbl, 0, 2, alignment=Qt.AlignBottom)
@@ -148,120 +163,120 @@ class SolderPaste(FlatCAMTool):
 
         # Z dispense start
         self.z_start_entry = FCEntry()
-        self.z_start_label = QtWidgets.QLabel("Z Dispense Start:")
+        self.z_start_label = QtWidgets.QLabel(_("Z Dispense Start:"))
         self.z_start_label.setToolTip(
-            "The height (Z) when solder paste dispensing starts."
+            _("The height (Z) when solder paste dispensing starts.")
         )
         self.gcode_form_layout.addRow(self.z_start_label, self.z_start_entry)
 
         # Z dispense
         self.z_dispense_entry = FCEntry()
-        self.z_dispense_label = QtWidgets.QLabel("Z Dispense:")
+        self.z_dispense_label = QtWidgets.QLabel(_("Z Dispense:"))
         self.z_dispense_label.setToolTip(
-            "The height (Z) when doing solder paste dispensing."
+            _("The height (Z) when doing solder paste dispensing.")
 
         )
         self.gcode_form_layout.addRow(self.z_dispense_label, self.z_dispense_entry)
 
         # Z dispense stop
         self.z_stop_entry = FCEntry()
-        self.z_stop_label = QtWidgets.QLabel("Z Dispense Stop:")
+        self.z_stop_label = QtWidgets.QLabel(_("Z Dispense Stop:"))
         self.z_stop_label.setToolTip(
-            "The height (Z) when solder paste dispensing stops."
+            _("The height (Z) when solder paste dispensing stops.")
         )
         self.gcode_form_layout.addRow(self.z_stop_label, self.z_stop_entry)
 
         # Z travel
         self.z_travel_entry = FCEntry()
-        self.z_travel_label = QtWidgets.QLabel("Z Travel:")
+        self.z_travel_label = QtWidgets.QLabel(_("Z Travel:"))
         self.z_travel_label.setToolTip(
-            "The height (Z) for travel between pads\n"
-            "(without dispensing solder paste)."
+           _( "The height (Z) for travel between pads\n"
+            "(without dispensing solder paste).")
         )
         self.gcode_form_layout.addRow(self.z_travel_label, self.z_travel_entry)
 
         # Z toolchange location
         self.z_toolchange_entry = FCEntry()
-        self.z_toolchange_label = QtWidgets.QLabel("Z Toolchange:")
+        self.z_toolchange_label = QtWidgets.QLabel(_("Z Toolchange:"))
         self.z_toolchange_label.setToolTip(
-            "The height (Z) for tool (nozzle) change."
+           _( "The height (Z) for tool (nozzle) change.")
         )
         self.gcode_form_layout.addRow(self.z_toolchange_label, self.z_toolchange_entry)
 
         # X,Y Toolchange location
         self.xy_toolchange_entry = FCEntry()
-        self.xy_toolchange_label = QtWidgets.QLabel("XY Toolchange:")
+        self.xy_toolchange_label = QtWidgets.QLabel(_("XY Toolchange:"))
         self.xy_toolchange_label.setToolTip(
-            "The X,Y location for tool (nozzle) change.\n"
-            "The format is (x, y) where x and y are real numbers."
+            _("The X,Y location for tool (nozzle) change.\n"
+            "The format is (x, y) where x and y are real numbers.")
         )
         self.gcode_form_layout.addRow(self.xy_toolchange_label, self.xy_toolchange_entry)
 
         # Feedrate X-Y
         self.frxy_entry = FCEntry()
-        self.frxy_label = QtWidgets.QLabel("Feedrate X-Y:")
+        self.frxy_label = QtWidgets.QLabel(_("Feedrate X-Y:"))
         self.frxy_label.setToolTip(
-            "Feedrate (speed) while moving on the X-Y plane."
+           _( "Feedrate (speed) while moving on the X-Y plane.")
         )
         self.gcode_form_layout.addRow(self.frxy_label, self.frxy_entry)
 
         # Feedrate Z
         self.frz_entry = FCEntry()
-        self.frz_label = QtWidgets.QLabel("Feedrate Z:")
+        self.frz_label = QtWidgets.QLabel(_("Feedrate Z:"))
         self.frz_label.setToolTip(
-            "Feedrate (speed) while moving vertically\n"
-            "(on Z plane)."
+            _("Feedrate (speed) while moving vertically\n"
+            "(on Z plane).")
         )
         self.gcode_form_layout.addRow(self.frz_label, self.frz_entry)
 
         # Feedrate Z Dispense
         self.frz_dispense_entry = FCEntry()
-        self.frz_dispense_label = QtWidgets.QLabel("Feedrate Z Dispense:")
+        self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:"))
         self.frz_dispense_label.setToolTip(
-            "Feedrate (speed) while moving up vertically\n"
-            " to Dispense position (on Z plane)."
+           _( "Feedrate (speed) while moving up vertically\n"
+            " to Dispense position (on Z plane).")
         )
         self.gcode_form_layout.addRow(self.frz_dispense_label, self.frz_dispense_entry)
 
         # Spindle Speed Forward
         self.speedfwd_entry = FCEntry()
-        self.speedfwd_label = QtWidgets.QLabel("Spindle Speed FWD:")
+        self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:"))
         self.speedfwd_label.setToolTip(
-            "The dispenser speed while pushing solder paste\n"
-            "through the dispenser nozzle."
+           _( "The dispenser speed while pushing solder paste\n"
+            "through the dispenser nozzle.")
         )
         self.gcode_form_layout.addRow(self.speedfwd_label, self.speedfwd_entry)
 
         # Dwell Forward
         self.dwellfwd_entry = FCEntry()
-        self.dwellfwd_label = QtWidgets.QLabel("Dwell FWD:")
+        self.dwellfwd_label = QtWidgets.QLabel(_("Dwell FWD:"))
         self.dwellfwd_label.setToolTip(
-            "Pause after solder dispensing."
+            _("Pause after solder dispensing.")
         )
         self.gcode_form_layout.addRow(self.dwellfwd_label, self.dwellfwd_entry)
 
         # Spindle Speed Reverse
         self.speedrev_entry = FCEntry()
-        self.speedrev_label = QtWidgets.QLabel("Spindle Speed REV:")
+        self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:"))
         self.speedrev_label.setToolTip(
-            "The dispenser speed while retracting solder paste\n"
-            "through the dispenser nozzle."
+           _( "The dispenser speed while retracting solder paste\n"
+            "through the dispenser nozzle.")
         )
         self.gcode_form_layout.addRow(self.speedrev_label, self.speedrev_entry)
 
         # Dwell Reverse
         self.dwellrev_entry = FCEntry()
-        self.dwellrev_label = QtWidgets.QLabel("Dwell REV:")
+        self.dwellrev_label = QtWidgets.QLabel(_("Dwell REV:"))
         self.dwellrev_label.setToolTip(
-            "Pause after solder paste dispenser retracted,\n"
-            "to allow pressure equilibrium."
+            _("Pause after solder paste dispenser retracted,\n"
+            "to allow pressure equilibrium.")
         )
         self.gcode_form_layout.addRow(self.dwellrev_label, self.dwellrev_entry)
 
         # Postprocessors
-        pp_label = QtWidgets.QLabel('PostProcessors:')
+        pp_label = QtWidgets.QLabel(_('PostProcessors:'))
         pp_label.setToolTip(
-            "Files that control the GCode generation."
+            _("Files that control the GCode generation.")
         )
 
         self.pp_combo = FCComboBox()
@@ -272,10 +287,10 @@ class SolderPaste(FlatCAMTool):
         grid1 = QtWidgets.QGridLayout()
         self.gcode_box.addLayout(grid1)
 
-        self.solder_gcode_btn = QtWidgets.QPushButton("Generate GCode")
+        self.solder_gcode_btn = QtWidgets.QPushButton(_("Generate GCode"))
         self.solder_gcode_btn.setToolTip(
-            "Generate GCode for Solder Paste dispensing\n"
-            "on PCB pads."
+           _( "Generate GCode for Solder Paste dispensing\n"
+            "on PCB pads.")
         )
 
         self.generation_frame = QtWidgets.QFrame()
@@ -290,10 +305,10 @@ class SolderPaste(FlatCAMTool):
         grid2 = QtWidgets.QGridLayout()
         self.generation_box.addLayout(grid2)
 
-        step2_lbl = QtWidgets.QLabel("<b>STEP 2:</b>")
+        step2_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 2:'))
         step2_lbl.setToolTip(
-            "Second step is to create a solder paste dispensing\n"
-            "geometry out of an Solder Paste Mask Gerber file."
+            _("Second step is to create a solder paste dispensing\n"
+            "geometry out of an Solder Paste Mask Gerber file.")
         )
         grid2.addWidget(step2_lbl, 0, 0)
         grid2.addWidget(self.soldergeo_btn, 0, 2)
@@ -308,24 +323,24 @@ class SolderPaste(FlatCAMTool):
         self.geo_obj_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
         self.geo_obj_combo.setCurrentIndex(1)
 
-        self.geo_object_label = QtWidgets.QLabel("Geo Result:")
+        self.geo_object_label = QtWidgets.QLabel(_("Geo Result:"))
         self.geo_object_label.setToolTip(
-            "Geometry Solder Paste object.\n"
+           _( "Geometry Solder Paste object.\n"
             "The name of the object has to end in:\n"
-            "'_solderpaste' as a protection."
+            "'_solderpaste' as a protection.")
         )
         geo_form_layout.addRow(self.geo_object_label, self.geo_obj_combo)
 
         grid3 = QtWidgets.QGridLayout()
         self.generation_box.addLayout(grid3)
 
-        step3_lbl = QtWidgets.QLabel("<b>STEP 3:</b>")
+        step3_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 3:'))
         step3_lbl.setToolTip(
-            "Third step is to select a solder paste dispensing geometry,\n"
+           _( "Third step is to select a solder paste dispensing geometry,\n"
             "and then generate a CNCJob object.\n\n"
             "REMEMBER: if you want to create a CNCJob with new parameters,\n"
             "first you need to generate a geometry with those new params,\n"
-            "and only after that you can generate an updated CNCJob."
+            "and only after that you can generate an updated CNCJob.")
         )
 
         grid3.addWidget(step3_lbl, 0, 0)
@@ -341,34 +356,34 @@ class SolderPaste(FlatCAMTool):
         self.cnc_obj_combo.setRootModelIndex(self.app.collection.index(3, 0, QtCore.QModelIndex()))
         self.cnc_obj_combo.setCurrentIndex(1)
 
-        self.cnc_object_label = QtWidgets.QLabel("CNC Result:")
+        self.cnc_object_label = QtWidgets.QLabel(_("CNC Result:"))
         self.cnc_object_label.setToolTip(
-            "CNCJob Solder paste object.\n"
+           _( "CNCJob Solder paste object.\n"
             "In order to enable the GCode save section,\n"
             "the name of the object has to end in:\n"
-            "'_solderpaste' as a protection."
+            "'_solderpaste' as a protection.")
         )
         cnc_form_layout.addRow(self.cnc_object_label, self.cnc_obj_combo)
 
         grid4 = QtWidgets.QGridLayout()
         self.generation_box.addLayout(grid4)
 
-        self.solder_gcode_view_btn = QtWidgets.QPushButton("View GCode")
+        self.solder_gcode_view_btn = QtWidgets.QPushButton(_("View GCode"))
         self.solder_gcode_view_btn.setToolTip(
-            "View the generated GCode for Solder Paste dispensing\n"
-            "on PCB pads."
+            _("View the generated GCode for Solder Paste dispensing\n"
+            "on PCB pads.")
         )
 
-        self.solder_gcode_save_btn = QtWidgets.QPushButton("Save GCode")
+        self.solder_gcode_save_btn = QtWidgets.QPushButton(_("Save GCode"))
         self.solder_gcode_save_btn.setToolTip(
-            "Save the generated GCode for Solder Paste dispensing\n"
-            "on PCB pads, to a file."
+           _( "Save the generated GCode for Solder Paste dispensing\n"
+            "on PCB pads, to a file.")
         )
 
-        step4_lbl = QtWidgets.QLabel("<b>STEP 4:</b>")
+        step4_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 4:'))
         step4_lbl.setToolTip(
-            "Fourth step (and last) is to select a CNCJob made from \n"
-            "a solder paste dispensing geometry, and then view/save it's GCode."
+           _( "Fourth step (and last) is to select a CNCJob made from \n"
+            "a solder paste dispensing geometry, and then view/save it's GCode.")
         )
 
         grid4.addWidget(step4_lbl, 0, 0)
@@ -395,7 +410,7 @@ class SolderPaste(FlatCAMTool):
         self.flat_geometry = []
 
         # action to be added in the combobox context menu
-        self.combo_context_del_action = QtWidgets.QAction(QtGui.QIcon('share/trash16.png'), "Delete Object")
+        self.combo_context_del_action = QtWidgets.QAction(QtGui.QIcon('share/trash16.png'), _("Delete Object"))
 
         ## Signals
         self.combo_context_del_action.triggered.connect(self.on_delete_object)
@@ -411,18 +426,22 @@ class SolderPaste(FlatCAMTool):
 
         self.app.object_status_changed.connect(self.update_comboboxes)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolSolderPaste()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
 
         FlatCAMTool.run(self)
         self.set_tool_ui()
@@ -456,9 +475,9 @@ class SolderPaste(FlatCAMTool):
 
         self.tools_table.setupContextMenu()
         self.tools_table.addContextMenu(
-            "Add", lambda: self.on_tool_add(dia=None, muted=None), icon=QtGui.QIcon("share/plus16.png"))
+            _("Add"), lambda: self.on_tool_add(dia=None, muted=None), icon=QtGui.QIcon("share/plus16.png"))
         self.tools_table.addContextMenu(
-            "Delete", lambda:
+            _("Delete"), lambda:
             self.on_tool_delete(rows_to_delete=None, all=None), icon=QtGui.QIcon("share/delete32.png"))
 
         try:
@@ -733,16 +752,16 @@ class SolderPaste(FlatCAMTool):
                 try:
                     tool_dia = float(self.addtool_entry.get_value().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                         "use a number."))
                     return
             if tool_dia is None:
                 self.build_ui()
-                self.app.inform.emit("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."))
                 return
 
         if tool_dia == 0:
-            self.app.inform.emit("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")
+            self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format."))
             return
 
         # construct a list of all 'tooluid' in the self.tooltable_tools
@@ -766,12 +785,12 @@ class SolderPaste(FlatCAMTool):
 
         if float('%.4f' % tool_dia) in tool_dias:
             if muted is None:
-                self.app.inform.emit("[WARNING_NOTCL]Adding Nozzle tool cancelled. Tool already in Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table."))
             self.tools_table.itemChanged.connect(self.on_tool_edit)
             return
         else:
             if muted is None:
-                self.app.inform.emit("[success] New Nozzle tool added to Tool Table.")
+                self.app.inform.emit(_("[success] New Nozzle tool added to Tool Table."))
             self.tooltable_tools.update({
                 int(self.tooluid): {
                     'tooldia': float('%.4f' % tool_dia),
@@ -804,8 +823,8 @@ class SolderPaste(FlatCAMTool):
                 try:
                     new_tool_dia = float(self.tools_table.item(row, 1).text().replace(',', '.'))
                 except ValueError:
-                    self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered, "
-                                         "use a number.")
+                    self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered, "
+                                         "use a number."))
                     return
 
             tooluid = int(self.tools_table.item(row, 2).text())
@@ -813,7 +832,7 @@ class SolderPaste(FlatCAMTool):
             # identify the tool that was edited and get it's tooluid
             if new_tool_dia not in tool_dias:
                 self.tooltable_tools[tooluid]['tooldia'] = new_tool_dia
-                self.app.inform.emit("[success] Nozzle tool from Tool Table was edited.")
+                self.app.inform.emit(_("[success] Nozzle tool from Tool Table was edited."))
                 self.build_ui()
                 return
             else:
@@ -824,7 +843,7 @@ class SolderPaste(FlatCAMTool):
                         break
                 restore_dia_item = self.tools_table.item(row, 1)
                 restore_dia_item.setText(str(old_tool_dia))
-                self.app.inform.emit("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table.")
+                self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
         self.build_ui()
 
     def on_tool_delete(self, rows_to_delete=None, all=None):
@@ -869,12 +888,12 @@ class SolderPaste(FlatCAMTool):
                     self.tooltable_tools.pop(t, None)
 
         except AttributeError:
-            self.app.inform.emit("[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete.")
+            self.app.inform.emit(_("[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete."))
             return
         except Exception as e:
             log.debug(str(e))
 
-        self.app.inform.emit("[success] Nozzle tool(s) deleted from Tool Table.")
+        self.app.inform.emit(_("[success] Nozzle tool(s) deleted from Tool Table."))
         self.build_ui()
 
     def on_rmb_combo(self, pos, combo):
@@ -929,7 +948,7 @@ class SolderPaste(FlatCAMTool):
         """
         name = self.obj_combo.currentText()
         if name == '':
-            self.app.inform.emit("[WARNING_NOTCL] No SolderPaste mask Gerber object loaded.")
+            self.app.inform.emit(_("[WARNING_NOTCL] No SolderPaste mask Gerber object loaded."))
             return
 
         obj = self.app.collection.get_by_name(name)
@@ -946,7 +965,7 @@ class SolderPaste(FlatCAMTool):
         :param work_object: the source Gerber object from which the geometry is created
         :return: a Geometry type object
         """
-        proc = self.app.proc_container.new("Creating Solder Paste dispensing geometry.")
+        proc = self.app.proc_container.new(_("Creating Solder Paste dispensing geometry."))
         obj = work_object
 
         # Sort tools in descending order
@@ -958,7 +977,7 @@ class SolderPaste(FlatCAMTool):
         sorted_tools.sort(reverse=True)
 
         if not sorted_tools:
-            self.app.inform.emit("[WARNING_NOTCL] No Nozzle tools in the tool table.")
+            self.app.inform.emit(_("[WARNING_NOTCL] No Nozzle tools in the tool table."))
             return 'fail'
 
         def flatten(geometry=None, reset=True, pathonly=False):
@@ -1084,17 +1103,17 @@ class SolderPaste(FlatCAMTool):
                         if not geo_obj.tools[tooluid_key]['solid_geometry']:
                             a += 1
                     if a == len(geo_obj.tools):
-                        self.app.inform.emit('[ERROR_NOTCL]Cancelled. Empty file, it has no geometry...')
+                        self.app.inform.emit(_('[ERROR_NOTCL] Cancelled. Empty file, it has no geometry...'))
                         return 'fail'
 
-                    app_obj.inform.emit("[success] Solder Paste geometry generated successfully...")
+                    app_obj.inform.emit(_("[success] Solder Paste geometry generated successfully..."))
                     return
 
             # if we still have geometry not processed at the end of the tools then we failed
             # some or all the pads are not covered with solder paste
             if work_geo:
-                app_obj.inform.emit("[WARNING_NOTCL] Some or all pads have no solder "
-                                    "due of inadequate nozzle diameters...")
+                app_obj.inform.emit(_("[WARNING_NOTCL] Some or all pads have no solder "
+                                    "due of inadequate nozzle diameters..."))
                 return 'fail'
 
         if use_thread:
@@ -1107,7 +1126,7 @@ class SolderPaste(FlatCAMTool):
                     return
                 proc.done()
 
-            self.app.inform.emit("Generating Solder Paste dispensing geometry...")
+            self.app.inform.emit(_("Generating Solder Paste dispensing geometry..."))
             # Promise object with the new name
             self.app.collection.promise(name)
 
@@ -1127,11 +1146,11 @@ class SolderPaste(FlatCAMTool):
         obj = self.app.collection.get_by_name(name)
 
         if name == '':
-            self.app.inform.emit("[WARNING_NOTCL]There is no Geometry object available.")
+            self.app.inform.emit(_("[WARNING_NOTCL] There is no Geometry object available."))
             return 'fail'
 
         if obj.special_group != 'solder_paste_tool':
-            self.app.inform.emit("[WARNING_NOTCL]This Geometry can't be processed. NOT a solder_paste_tool geometry.")
+            self.app.inform.emit(_("[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool geometry."))
             return 'fail'
 
         a = 0
@@ -1139,7 +1158,7 @@ class SolderPaste(FlatCAMTool):
             if obj.tools[tooluid_key]['solid_geometry'] is None:
                 a += 1
         if a == len(obj.tools):
-            self.app.inform.emit('[ERROR_NOTCL]Cancelled. Empty file, it has no geometry...')
+            self.app.inform.emit(_('[ERROR_NOTCL] Cancelled. Empty file, it has no geometry...'))
             return 'fail'
 
         # use the name of the first tool selected in self.geo_tools_table which has the diameter passed as tool_dia
@@ -1236,7 +1255,7 @@ class SolderPaste(FlatCAMTool):
             def job_thread(app_obj):
                 with self.app.proc_container.new("Generating CNC Code"):
                     if app_obj.new_object("cncjob", name, job_init) != 'fail':
-                        app_obj.inform.emit("[success]ToolSolderPaste CNCjob created: %s" % name)
+                        app_obj.inform.emit(_("[success] ToolSolderPaste CNCjob created: %s") % name)
                         app_obj.progress.emit(100)
 
             # Create a promise with the name
@@ -1268,12 +1287,12 @@ class SolderPaste(FlatCAMTool):
 
         try:
             if obj.special_group != 'solder_paste_tool':
-                self.app.inform.emit("[WARNING_NOTCL]This CNCJob object can't be processed. "
-                                     "NOT a solder_paste_tool CNCJob object.")
+                self.app.inform.emit(_("[WARNING_NOTCL] This CNCJob object can't be processed. "
+                                     "NOT a solder_paste_tool CNCJob object."))
                 return
         except AttributeError:
-            self.app.inform.emit("[WARNING_NOTCL]This CNCJob object can't be processed. "
-                                 "NOT a solder_paste_tool CNCJob object.")
+            self.app.inform.emit(_("[WARNING_NOTCL] This CNCJob object can't be processed. "
+                                 "NOT a solder_paste_tool CNCJob object."))
             return
 
         gcode = '(G-CODE GENERATED BY FLATCAM v%s - www.flatcam.org - Version Date: %s)\n' % \
@@ -1295,7 +1314,7 @@ class SolderPaste(FlatCAMTool):
         try:
             lines = StringIO(gcode)
         except:
-            self.app.inform.emit("[ERROR_NOTCL] No Gcode in the object...")
+            self.app.inform.emit(_("[ERROR_NOTCL] No Gcode in the object..."))
             return
 
         try:
@@ -1304,7 +1323,7 @@ class SolderPaste(FlatCAMTool):
                 self.app.ui.code_editor.append(proc_line)
         except Exception as e:
             log.debug('ToolSolderPaste.on_view_gcode() -->%s' % str(e))
-            self.app.inform.emit('[ERROR]ToolSolderPaste.on_view_gcode() -->%s' % str(e))
+            self.app.inform.emit(_('[ERROR] ToolSolderPaste.on_view_gcode() -->%s') % str(e))
             return
 
         self.app.ui.code_editor.moveCursor(QtGui.QTextCursor.Start)
@@ -1323,8 +1342,8 @@ class SolderPaste(FlatCAMTool):
         obj = self.app.collection.get_by_name(name)
 
         if obj.special_group != 'solder_paste_tool':
-            self.app.inform.emit("[WARNING_NOTCL]This CNCJob object can't be processed. "
-                                 "NOT a solder_paste_tool CNCJob object.")
+            self.app.inform.emit(_("[WARNING_NOTCL] This CNCJob object can't be processed. "
+                                 "NOT a solder_paste_tool CNCJob object."))
             return
 
         _filter_ = "G-Code Files (*.nc);;G-Code Files (*.txt);;G-Code Files (*.tap);;G-Code Files (*.cnc);;" \
@@ -1332,16 +1351,16 @@ class SolderPaste(FlatCAMTool):
 
         try:
             dir_file_to_save = self.app.get_last_save_folder() + '/' + str(name)
-            filename, _ = QtWidgets.QFileDialog.getSaveFileName(
-                caption="Export GCode ...",
+            filename, _f = QtWidgets.QFileDialog.getSaveFileName(
+                caption=_("Export GCode ..."),
                 directory=dir_file_to_save,
                 filter=_filter_
             )
         except TypeError:
-            filename, _ = QtWidgets.QFileDialog.getSaveFileName(caption="Export Machine Code ...", filter=_filter_)
+            filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Machine Code ..."), filter=_filter_)
 
         if filename == '':
-            self.app.inform.emit("[WARNING_NOTCL]Export Machine Code cancelled ...")
+            self.app.inform.emit(_("[WARNING_NOTCL] Export Machine Code cancelled ..."))
             return
 
         gcode = '(G-CODE GENERATED BY FLATCAM v%s - www.flatcam.org - Version Date: %s)\n' % \
@@ -1367,11 +1386,11 @@ class SolderPaste(FlatCAMTool):
                     for line in lines:
                         f.write(line)
             except FileNotFoundError:
-                self.app.inform.emit("[WARNING_NOTCL] No such file or directory")
+                self.app.inform.emit(_("[WARNING_NOTCL] No such file or directory"))
                 return
 
         self.app.file_saved.emit("gcode", filename)
-        self.app.inform.emit("[success] Solder paste dispenser GCode file saved to: %s" % filename)
+        self.app.inform.emit(_("[success] Solder paste dispenser GCode file saved to: %s") % filename)
 
     def reset_fields(self):
         self.obj_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))

+ 167 - 150
flatcamTools/ToolTransform.py

@@ -1,18 +1,31 @@
-from PyQt5 import QtGui, QtCore, QtWidgets
-from PyQt5.QtCore import Qt
-from GUIElements import FCEntry, FCButton, OptionalInputSection
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMTool import FlatCAMTool
 from FlatCAMObj import *
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+
+fcTranslate.apply_language('strings')
+import builtins
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
 
 class ToolTransform(FlatCAMTool):
 
-    toolName = "Object Transform"
-    rotateName = "Rotate"
-    skewName = "Skew/Shear"
-    scaleName = "Scale"
-    flipName = "Mirror (Flip)"
-    offsetName = "Offset"
+    toolName = _("Object Transform")
+    rotateName = _("Rotate")
+    skewName = _("Skew/Shear")
+    scaleName = _("Scale")
+    flipName = _("Mirror (Flip)")
+    offsetName = _("Offset")
 
     def __init__(self, app):
         FlatCAMTool.__init__(self, app)
@@ -31,7 +44,7 @@ class ToolTransform(FlatCAMTool):
         self.transform_lay.addWidget(title_label)
 
         self.empty_label = QtWidgets.QLabel("")
-        self.empty_label.setFixedWidth(50)
+        self.empty_label.setFixedWidth(70)
 
         self.empty_label1 = QtWidgets.QLabel("")
         self.empty_label1.setFixedWidth(70)
@@ -52,27 +65,27 @@ class ToolTransform(FlatCAMTool):
         self.transform_lay.addLayout(form_layout)
         form_child = QtWidgets.QHBoxLayout()
 
-        self.rotate_label = QtWidgets.QLabel("Angle:")
+        self.rotate_label = QtWidgets.QLabel(_("Angle:"))
         self.rotate_label.setToolTip(
-            "Angle for Rotation action, in degrees.\n"
+            _("Angle for Rotation action, in degrees.\n"
             "Float number between -360 and 359.\n"
             "Positive numbers for CW motion.\n"
-            "Negative numbers for CCW motion."
+            "Negative numbers for CCW motion.")
         )
-        self.rotate_label.setFixedWidth(50)
+        self.rotate_label.setFixedWidth(70)
 
         self.rotate_entry = FCEntry()
-        # self.rotate_entry.setFixedWidth(60)
+        # self.rotate_entry.setFixedWidth(70)
         self.rotate_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
 
         self.rotate_button = FCButton()
-        self.rotate_button.set_value("Rotate")
+        self.rotate_button.set_value(_("Rotate"))
         self.rotate_button.setToolTip(
-            "Rotate the selected object(s).\n"
+            _("Rotate the selected object(s).\n"
             "The point of reference is the middle of\n"
-            "the bounding box for all selected objects."
+            "the bounding box for all selected objects.")
         )
-        self.rotate_button.setFixedWidth(60)
+        self.rotate_button.setFixedWidth(90)
 
         form_child.addWidget(self.rotate_entry)
         form_child.addWidget(self.rotate_button)
@@ -91,41 +104,41 @@ class ToolTransform(FlatCAMTool):
         form1_child_1 = QtWidgets.QHBoxLayout()
         form1_child_2 = QtWidgets.QHBoxLayout()
 
-        self.skewx_label = QtWidgets.QLabel("Angle X:")
+        self.skewx_label = QtWidgets.QLabel(_("Angle X:"))
         self.skewx_label.setToolTip(
-            "Angle for Skew action, in degrees.\n"
-            "Float number between -360 and 359."
+            _("Angle for Skew action, in degrees.\n"
+            "Float number between -360 and 359.")
         )
-        self.skewx_label.setFixedWidth(50)
+        self.skewx_label.setFixedWidth(70)
         self.skewx_entry = FCEntry()
         self.skewx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.skewx_entry.setFixedWidth(60)
+        # self.skewx_entry.setFixedWidth(70)
 
         self.skewx_button = FCButton()
-        self.skewx_button.set_value("Skew X")
+        self.skewx_button.set_value(_("Skew X"))
         self.skewx_button.setToolTip(
-            "Skew/shear the selected object(s).\n"
+            _("Skew/shear the selected object(s).\n"
             "The point of reference is the middle of\n"
-            "the bounding box for all selected objects.")
-        self.skewx_button.setFixedWidth(60)
+            "the bounding box for all selected objects."))
+        self.skewx_button.setFixedWidth(90)
 
-        self.skewy_label = QtWidgets.QLabel("Angle Y:")
+        self.skewy_label = QtWidgets.QLabel(_("Angle Y:"))
         self.skewy_label.setToolTip(
-            "Angle for Skew action, in degrees.\n"
-            "Float number between -360 and 359."
+            _("Angle for Skew action, in degrees.\n"
+            "Float number between -360 and 359.")
         )
-        self.skewy_label.setFixedWidth(50)
+        self.skewy_label.setFixedWidth(70)
         self.skewy_entry = FCEntry()
         self.skewy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.skewy_entry.setFixedWidth(60)
+        # self.skewy_entry.setFixedWidth(70)
 
         self.skewy_button = FCButton()
-        self.skewy_button.set_value("Skew Y")
+        self.skewy_button.set_value(_("Skew Y"))
         self.skewy_button.setToolTip(
-            "Skew/shear the selected object(s).\n"
+            _("Skew/shear the selected object(s).\n"
             "The point of reference is the middle of\n"
-            "the bounding box for all selected objects.")
-        self.skewy_button.setFixedWidth(60)
+            "the bounding box for all selected objects."))
+        self.skewy_button.setFixedWidth(90)
 
         form1_child_1.addWidget(self.skewx_entry)
         form1_child_1.addWidget(self.skewx_button)
@@ -148,56 +161,56 @@ class ToolTransform(FlatCAMTool):
         form2_child_1 = QtWidgets.QHBoxLayout()
         form2_child_2 = QtWidgets.QHBoxLayout()
 
-        self.scalex_label = QtWidgets.QLabel("Factor X:")
+        self.scalex_label = QtWidgets.QLabel(_("Factor X:"))
         self.scalex_label.setToolTip(
-            "Factor for Scale action over X axis."
+            _("Factor for Scale action over X axis.")
         )
-        self.scalex_label.setFixedWidth(50)
+        self.scalex_label.setFixedWidth(70)
         self.scalex_entry = FCEntry()
         self.scalex_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.scalex_entry.setFixedWidth(60)
+        # self.scalex_entry.setFixedWidth(70)
 
         self.scalex_button = FCButton()
-        self.scalex_button.set_value("Scale X")
+        self.scalex_button.set_value(_("Scale X"))
         self.scalex_button.setToolTip(
-            "Scale the selected object(s).\n"
+            _("Scale the selected object(s).\n"
             "The point of reference depends on \n"
-            "the Scale reference checkbox state.")
-        self.scalex_button.setFixedWidth(60)
+            "the Scale reference checkbox state."))
+        self.scalex_button.setFixedWidth(90)
 
-        self.scaley_label = QtWidgets.QLabel("Factor Y:")
+        self.scaley_label = QtWidgets.QLabel(_("Factor Y:"))
         self.scaley_label.setToolTip(
-            "Factor for Scale action over Y axis."
+            _("Factor for Scale action over Y axis.")
         )
-        self.scaley_label.setFixedWidth(50)
+        self.scaley_label.setFixedWidth(70)
         self.scaley_entry = FCEntry()
         self.scaley_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.scaley_entry.setFixedWidth(60)
+        # self.scaley_entry.setFixedWidth(70)
 
         self.scaley_button = FCButton()
-        self.scaley_button.set_value("Scale Y")
+        self.scaley_button.set_value(_("Scale Y"))
         self.scaley_button.setToolTip(
-            "Scale the selected object(s).\n"
+            _("Scale the selected object(s).\n"
             "The point of reference depends on \n"
-            "the Scale reference checkbox state.")
-        self.scaley_button.setFixedWidth(60)
+            "the Scale reference checkbox state."))
+        self.scaley_button.setFixedWidth(90)
 
         self.scale_link_cb = FCCheckBox()
         self.scale_link_cb.set_value(True)
-        self.scale_link_cb.setText("Link")
+        self.scale_link_cb.setText(_("Link"))
         self.scale_link_cb.setToolTip(
-            "Scale the selected object(s)\n"
-            "using the Scale Factor X for both axis.")
-        self.scale_link_cb.setFixedWidth(50)
+            _("Scale the selected object(s)\n"
+            "using the Scale Factor X for both axis."))
+        self.scale_link_cb.setFixedWidth(70)
 
         self.scale_zero_ref_cb = FCCheckBox()
         self.scale_zero_ref_cb.set_value(True)
-        self.scale_zero_ref_cb.setText("Scale Reference")
+        self.scale_zero_ref_cb.setText(_("Scale Reference"))
         self.scale_zero_ref_cb.setToolTip(
-            "Scale the selected object(s)\n"
+            _("Scale the selected object(s)\n"
             "using the origin reference when checked,\n"
             "and the center of the biggest bounding box\n"
-            "of the selected objects when unchecked.")
+            "of the selected objects when unchecked."))
 
         form2_child_1.addWidget(self.scalex_entry)
         form2_child_1.addWidget(self.scalex_button)
@@ -222,39 +235,39 @@ class ToolTransform(FlatCAMTool):
         form3_child_1 = QtWidgets.QHBoxLayout()
         form3_child_2 = QtWidgets.QHBoxLayout()
 
-        self.offx_label = QtWidgets.QLabel("Value X:")
+        self.offx_label = QtWidgets.QLabel(_("Value X:"))
         self.offx_label.setToolTip(
-            "Value for Offset action on X axis."
+            _("Value for Offset action on X axis.")
         )
-        self.offx_label.setFixedWidth(50)
+        self.offx_label.setFixedWidth(70)
         self.offx_entry = FCEntry()
         self.offx_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.offx_entry.setFixedWidth(60)
+        # self.offx_entry.setFixedWidth(70)
 
         self.offx_button = FCButton()
-        self.offx_button.set_value("Offset X")
+        self.offx_button.set_value(_("Offset X"))
         self.offx_button.setToolTip(
-            "Offset the selected object(s).\n"
+            _("Offset the selected object(s).\n"
             "The point of reference is the middle of\n"
-            "the bounding box for all selected objects.\n")
-        self.offx_button.setFixedWidth(60)
+            "the bounding box for all selected objects.\n"))
+        self.offx_button.setFixedWidth(90)
 
-        self.offy_label = QtWidgets.QLabel("Value Y:")
+        self.offy_label = QtWidgets.QLabel(_("Value Y:"))
         self.offy_label.setToolTip(
-            "Value for Offset action on Y axis."
+            _("Value for Offset action on Y axis.")
         )
-        self.offy_label.setFixedWidth(50)
+        self.offy_label.setFixedWidth(70)
         self.offy_entry = FCEntry()
         self.offy_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.offy_entry.setFixedWidth(60)
+        # self.offy_entry.setFixedWidth(70)
 
         self.offy_button = FCButton()
-        self.offy_button.set_value("Offset Y")
+        self.offy_button.set_value(_("Offset Y"))
         self.offy_button.setToolTip(
-            "Offset the selected object(s).\n"
+            _("Offset the selected object(s).\n"
             "The point of reference is the middle of\n"
-            "the bounding box for all selected objects.\n")
-        self.offy_button.setFixedWidth(60)
+            "the bounding box for all selected objects.\n"))
+        self.offy_button.setFixedWidth(90)
 
         form3_child_1.addWidget(self.offx_entry)
         form3_child_1.addWidget(self.offx_button)
@@ -279,26 +292,26 @@ class ToolTransform(FlatCAMTool):
         form4_child_1 = QtWidgets.QHBoxLayout()
 
         self.flipx_button = FCButton()
-        self.flipx_button.set_value("Flip on X")
+        self.flipx_button.set_value(_("Flip on X"))
         self.flipx_button.setToolTip(
-            "Flip the selected object(s) over the X axis.\n"
-            "Does not create a new object.\n "
+            _("Flip the selected object(s) over the X axis.\n"
+            "Does not create a new object.\n ")
         )
-        self.flipx_button.setFixedWidth(60)
+        self.flipx_button.setFixedWidth(100)
 
         self.flipy_button = FCButton()
-        self.flipy_button.set_value("Flip on Y")
+        self.flipy_button.set_value(_("Flip on Y"))
         self.flipy_button.setToolTip(
-            "Flip the selected object(s) over the X axis.\n"
-            "Does not create a new object.\n "
+            _("Flip the selected object(s) over the X axis.\n"
+            "Does not create a new object.\n ")
         )
-        self.flipy_button.setFixedWidth(60)
+        self.flipy_button.setFixedWidth(90)
 
         self.flip_ref_cb = FCCheckBox()
         self.flip_ref_cb.set_value(True)
-        self.flip_ref_cb.setText("Ref Pt")
+        self.flip_ref_cb.setText(_("Ref Pt"))
         self.flip_ref_cb.setToolTip(
-            "Flip the selected object(s)\n"
+            _("Flip the selected object(s)\n"
             "around the point in Point Entry Field.\n"
             "\n"
             "The point coordinates can be captured by\n"
@@ -306,27 +319,27 @@ class ToolTransform(FlatCAMTool):
             "SHIFT key. \n"
             "Then click Add button to insert coordinates.\n"
             "Or enter the coords in format (x, y) in the\n"
-            "Point Entry field and click Flip on X(Y)")
-        self.flip_ref_cb.setFixedWidth(50)
+            "Point Entry field and click Flip on X(Y)"))
+        self.flip_ref_cb.setFixedWidth(70)
 
-        self.flip_ref_label = QtWidgets.QLabel("Point:")
+        self.flip_ref_label = QtWidgets.QLabel(_("Point:"))
         self.flip_ref_label.setToolTip(
-            "Coordinates in format (x, y) used as reference for mirroring.\n"
+            _("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"
-            "the 'y' in (x, y) will be used when using Flip on Y and"
+            "the 'y' in (x, y) will be used when using Flip on Y and")
         )
-        self.flip_ref_label.setFixedWidth(50)
+        self.flip_ref_label.setFixedWidth(70)
         self.flip_ref_entry = EvalEntry2("(0, 0)")
         self.flip_ref_entry.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
-        # self.flip_ref_entry.setFixedWidth(60)
+        # self.flip_ref_entry.setFixedWidth(70)
 
         self.flip_ref_button = FCButton()
-        self.flip_ref_button.set_value("Add")
+        self.flip_ref_button.set_value(_("Add"))
         self.flip_ref_button.setToolTip(
-            "The point coordinates can be captured by\n"
+            _("The point coordinates can be captured by\n"
             "left click on canvas together with pressing\n"
-            "SHIFT key. Then click Add button to insert.")
-        self.flip_ref_button.setFixedWidth(60)
+            "SHIFT key. Then click Add button to insert."))
+        self.flip_ref_button.setFixedWidth(90)
 
         form4_child_hlay.addStretch()
         form4_child_hlay.addWidget(self.flipx_button)
@@ -362,26 +375,30 @@ class ToolTransform(FlatCAMTool):
         self.offx_entry.returnPressed.connect(self.on_offx)
         self.offy_entry.returnPressed.connect(self.on_offy)
 
-    def run(self):
+    def run(self, toggle=True):
         self.app.report_usage("ToolTransform()")
 
-        # if the splitter is hidden, display it, else hide it but only if the current widget is the same
-        if self.app.ui.splitter.sizes()[0] == 0:
-            self.app.ui.splitter.setSizes([1, 1])
+        if toggle:
+            # if the splitter is hidden, display it, else hide it but only if the current widget is the same
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+            else:
+                try:
+                    if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
+                        self.app.ui.splitter.setSizes([0, 1])
+                except AttributeError:
+                    pass
         else:
-            try:
-                if self.app.ui.tool_scroll_area.widget().objectName() == self.toolName:
-                    self.app.ui.splitter.setSizes([0, 1])
-            except AttributeError:
-                pass
-                
+            if self.app.ui.splitter.sizes()[0] == 0:
+                self.app.ui.splitter.setSizes([1, 1])
+
         FlatCAMTool.run(self)
         self.set_tool_ui()
 
-        self.app.ui.notebook.setTabText(2, "Transform Tool")
+        self.app.ui.notebook.setTabText(2, _("Transform Tool"))
 
     def install(self, icon=None, separator=None, **kwargs):
-        FlatCAMTool.install(self, icon, separator, shortcut='ALT+T', **kwargs)
+        FlatCAMTool.install(self, icon, separator, shortcut='ALT+R', **kwargs)
 
     def set_tool_ui(self):
         ## Initialize form
@@ -448,8 +465,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 value = float(self.rotate_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Rotate, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Rotate, "
+                                     "use a number."))
                 return
         self.app.worker_task.emit({'fcn': self.on_rotate_action,
                                        'params': [value]})
@@ -482,8 +499,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 value = float(self.skewx_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Skew X, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Skew X, "
+                                     "use a number."))
                 return
 
         # self.on_skew("X", value)
@@ -500,8 +517,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 value = float(self.skewy_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Skew Y, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Skew Y, "
+                                     "use a number."))
                 return
 
         # self.on_skew("Y", value)
@@ -518,8 +535,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 xvalue = float(self.scalex_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Scale X, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Scale X, "
+                                     "use a number."))
                 return
 
         # scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@@ -552,8 +569,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 yvalue = float(self.scaley_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Scale Y, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Scale Y, "
+                                     "use a number."))
                 return
 
         # scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@@ -581,8 +598,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 value = float(self.offx_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Offset X, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Offset X, "
+                                     "use a number."))
                 return
 
         # self.on_offset("X", value)
@@ -599,8 +616,8 @@ class ToolTransform(FlatCAMTool):
             try:
                 value = float(self.offy_entry.get_value().replace(',', '.'))
             except ValueError:
-                self.app.inform.emit("[ERROR_NOTCL]Wrong value format entered for Offset Y, "
-                                     "use a number.")
+                self.app.inform.emit(_("[ERROR_NOTCL]Wrong value format entered for Offset Y, "
+                                     "use a number."))
                 return
 
         # self.on_offset("Y", value)
@@ -617,10 +634,10 @@ class ToolTransform(FlatCAMTool):
         ymaxlist = []
 
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to rotate!")
+            self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to rotate!"))
             return
         else:
-            with self.app.proc_container.new("Appying Rotate"):
+            with self.app.proc_container.new(_("Appying Rotate")):
                 try:
                     # first get a bounding box to fit all
                     for obj in obj_list:
@@ -645,7 +662,7 @@ class ToolTransform(FlatCAMTool):
                         px = 0.5 * (xminimal + xmaximal)
                         py = 0.5 * (yminimal + ymaximal)
                         if isinstance(sel_obj, FlatCAMCNCjob):
-                            self.app.inform.emit("CNCJob objects can't be rotated.")
+                            self.app.inform.emit(_("CNCJob objects can't be rotated."))
                         else:
                             sel_obj.rotate(-num, point=(px, py))
                             sel_obj.plot()
@@ -654,11 +671,11 @@ class ToolTransform(FlatCAMTool):
                         # add information to the object that it was changed and how much
                         sel_obj.options['rotate'] = num
 
-                    self.app.inform.emit('[success]Rotate done ...')
+                    self.app.inform.emit(_('[success]Rotate done ...'))
                     self.app.progress.emit(100)
 
                 except Exception as e:
-                    self.app.inform.emit("[ERROR_NOTCL] Due of %s, rotation movement was not executed." % str(e))
+                    self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, rotation movement was not executed.") % str(e))
                     return
 
     def on_flip(self, axis):
@@ -669,10 +686,10 @@ class ToolTransform(FlatCAMTool):
         ymaxlist = []
 
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to flip!")
+            self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to flip!"))
             return
         else:
-            with self.app.proc_container.new("Applying Flip"):
+            with self.app.proc_container.new(_("Applying Flip")):
                 try:
                     # get mirroring coords from the point entry
                     if self.flip_ref_cb.isChecked():
@@ -704,7 +721,7 @@ class ToolTransform(FlatCAMTool):
                     # execute mirroring
                     for obj in obj_list:
                         if isinstance(obj, FlatCAMCNCjob):
-                            self.app.inform.emit("CNCJob objects can't be mirrored/flipped.")
+                            self.app.inform.emit(_("CNCJob objects can't be mirrored/flipped."))
                         else:
                             if axis is 'X':
                                 obj.mirror('X', (px, py))
@@ -715,7 +732,7 @@ class ToolTransform(FlatCAMTool):
                                 else:
                                     obj.options['mirror_y'] = True
                                 obj.plot()
-                                self.app.inform.emit('[success]Flip on the Y axis done ...')
+                                self.app.inform.emit(_('[success]Flip on the Y axis done ...'))
                             elif axis is 'Y':
                                 obj.mirror('Y', (px, py))
                                 # add information to the object that it was changed and how much
@@ -725,12 +742,12 @@ class ToolTransform(FlatCAMTool):
                                 else:
                                     obj.options['mirror_x'] = True
                                 obj.plot()
-                                self.app.inform.emit('[success]Flip on the X axis done ...')
+                                self.app.inform.emit(_('[success]Flip on the X axis done ...'))
                             self.app.object_changed.emit(obj)
                     self.app.progress.emit(100)
 
                 except Exception as e:
-                    self.app.inform.emit("[ERROR_NOTCL] Due of %s, Flip action was not executed." % str(e))
+                    self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Flip action was not executed.") % str(e))
                     return
 
     def on_skew(self, axis, num):
@@ -739,10 +756,10 @@ class ToolTransform(FlatCAMTool):
         yminlist = []
 
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!")
+            self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"))
             return
         else:
-            with self.app.proc_container.new("Applying Skew"):
+            with self.app.proc_container.new(_("Applying Skew")):
                 try:
                     # first get a bounding box to fit all
                     for obj in obj_list:
@@ -761,7 +778,7 @@ class ToolTransform(FlatCAMTool):
 
                     for obj in obj_list:
                         if isinstance(obj, FlatCAMCNCjob):
-                            self.app.inform.emit("CNCJob objects can't be skewed.")
+                            self.app.inform.emit(_("CNCJob objects can't be skewed."))
                         else:
                             if axis is 'X':
                                 obj.skew(num, 0, point=(xminimal, yminimal))
@@ -773,11 +790,11 @@ class ToolTransform(FlatCAMTool):
                                 obj.options['skew_y'] = num
                             obj.plot()
                             self.app.object_changed.emit(obj)
-                    self.app.inform.emit('[success]Skew on the %s axis done ...' % str(axis))
+                    self.app.inform.emit(_('[success]Skew on the %s axis done ...') % str(axis))
                     self.app.progress.emit(100)
 
                 except Exception as e:
-                    self.app.inform.emit("[ERROR_NOTCL] Due of %s, Skew action was not executed." % str(e))
+                    self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Skew action was not executed.") % str(e))
                     return
 
     def on_scale(self, axis, xfactor, yfactor, point=None):
@@ -788,10 +805,10 @@ class ToolTransform(FlatCAMTool):
         ymaxlist = []
 
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to scale!")
+            self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to scale!"))
             return
         else:
-            with self.app.proc_container.new("Applying Scale"):
+            with self.app.proc_container.new(_("Applying Scale")):
                 try:
                     # first get a bounding box to fit all
                     for obj in obj_list:
@@ -821,7 +838,7 @@ class ToolTransform(FlatCAMTool):
 
                     for obj in obj_list:
                         if isinstance(obj, FlatCAMCNCjob):
-                            self.app.inform.emit("CNCJob objects can't be scaled.")
+                            self.app.inform.emit(_("CNCJob objects can't be scaled."))
                         else:
                             obj.scale(xfactor, yfactor, point=(px, py))
                             # add information to the object that it was changed and how much
@@ -829,10 +846,10 @@ class ToolTransform(FlatCAMTool):
                             obj.options['scale_y'] = yfactor
                             obj.plot()
                             self.app.object_changed.emit(obj)
-                    self.app.inform.emit('[success]Scale on the %s axis done ...' % str(axis))
+                    self.app.inform.emit(_('[success] Scale on the %s axis done ...') % str(axis))
                     self.app.progress.emit(100)
                 except Exception as e:
-                    self.app.inform.emit("[ERROR_NOTCL] Due of %s, Scale action was not executed." % str(e))
+                    self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Scale action was not executed.") % str(e))
                     return
 
     def on_offset(self, axis, num):
@@ -841,10 +858,10 @@ class ToolTransform(FlatCAMTool):
         yminlist = []
 
         if not obj_list:
-            self.app.inform.emit("[WARNING_NOTCL] No object selected. Please Select an object to offset!")
+            self.app.inform.emit(_("[WARNING_NOTCL] No object selected. Please Select an object to offset!"))
             return
         else:
-            with self.app.proc_container.new("Applying Offset"):
+            with self.app.proc_container.new(_("Applying Offset")):
                 try:
                     # first get a bounding box to fit all
                     for obj in obj_list:
@@ -862,7 +879,7 @@ class ToolTransform(FlatCAMTool):
 
                     for obj in obj_list:
                         if isinstance(obj, FlatCAMCNCjob):
-                            self.app.inform.emit("CNCJob objects can't be offseted.")
+                            self.app.inform.emit(_("CNCJob objects can't be offseted."))
                         else:
                             if axis is 'X':
                                 obj.offset((num, 0))
@@ -874,11 +891,11 @@ class ToolTransform(FlatCAMTool):
                                 obj.options['offset_y'] = num
                             obj.plot()
                             self.app.object_changed.emit(obj)
-                    self.app.inform.emit('[success]Offset on the %s axis done ...' % str(axis))
+                    self.app.inform.emit(_('[success]Offset on the %s axis done ...') % str(axis))
                     self.app.progress.emit(100)
 
                 except Exception as e:
-                    self.app.inform.emit("[ERROR_NOTCL] Due of %s, Offset action was not executed." % str(e))
+                    self.app.inform.emit(_("[ERROR_NOTCL] Due of %s, Offset action was not executed.") % str(e))
                     return
 
-# end of file
+# end of file

BIN
locale/en/LC_MESSAGES/en.mo


+ 10244 - 0
locale/en/LC_MESSAGES/en.po

@@ -0,0 +1,10244 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR ORGANIZATION
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2019-03-17 23:12+0200\n"
+"PO-Revision-Date: 2019-03-17 23:13+0200\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Generator: Poedit 2.2.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Basepath: ../../..\n"
+"Last-Translator: \n"
+"Language: en\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: FlatCAMApp.py:844
+msgid "[ERROR] Could not find the Language files. The App strings are missing."
+msgstr ""
+"[ERROR] Could not find the Language files. The App strings are missing."
+
+#: FlatCAMApp.py:1672 ObjectCollection.py:80 flatcamTools/ToolImage.py:213
+msgid "Open cancelled."
+msgstr "Open cancelled."
+
+#: FlatCAMApp.py:1686
+msgid "Open Config file failed."
+msgstr "Open Config file failed."
+
+#: FlatCAMApp.py:1871
+msgid ""
+"[WARNING_NOTCL] Editing a MultiGeo Geometry is not possible for the moment."
+msgstr ""
+"[WARNING_NOTCL] Editing a MultiGeo Geometry is not possible for the moment."
+
+#: FlatCAMApp.py:1892
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to edit."
+msgstr "[WARNING_NOTCL]Select a Geometry or Excellon Object to edit."
+
+#: FlatCAMApp.py:1903
+msgid "[WARNING_NOTCL]Editor is activated ..."
+msgstr "[WARNING_NOTCL]Editor is activated ..."
+
+#: FlatCAMApp.py:1942
+msgid "[WARNING] Object empty after edit."
+msgstr "[WARNING] Object empty after edit."
+
+#: FlatCAMApp.py:1951
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to update."
+msgstr "[WARNING_NOTCL]Select a Geometry or Excellon Object to update."
+
+#: FlatCAMApp.py:1964
+#, python-format
+msgid "[selected] %s is updated, returning to App..."
+msgstr "[selected] %s is updated, returning to App..."
+
+#: FlatCAMApp.py:2287
+msgid "[ERROR] Could not load defaults file."
+msgstr "[ERROR] Could not load defaults file."
+
+#: FlatCAMApp.py:2299
+msgid "[ERROR] Failed to parse defaults file."
+msgstr "[ERROR] Failed to parse defaults file."
+
+#: FlatCAMApp.py:2320 FlatCAMApp.py:2323
+msgid "Import FlatCAM Preferences"
+msgstr "Import FlatCAM Preferences"
+
+#: FlatCAMApp.py:2328
+msgid "[WARNING_NOTCL]FlatCAM preferences import cancelled."
+msgstr "[WARNING_NOTCL]FlatCAM preferences import cancelled."
+
+#: FlatCAMApp.py:2336 FlatCAMApp.py:2810
+msgid "[ERROR_NOTCL] Could not load defaults file."
+msgstr "[ERROR_NOTCL] Could not load defaults file."
+
+#: FlatCAMApp.py:2344 FlatCAMApp.py:2819
+msgid "[ERROR_NOTCL] Failed to parse defaults file."
+msgstr "[ERROR_NOTCL] Failed to parse defaults file."
+
+#: FlatCAMApp.py:2347
+#, python-format
+msgid "[success]Imported Defaults from %s"
+msgstr "[success]Imported Defaults from %s"
+
+#: FlatCAMApp.py:2357 FlatCAMApp.py:2361
+msgid "Export FlatCAM Preferences"
+msgstr "Export FlatCAM Preferences"
+
+#: FlatCAMApp.py:2367
+msgid "[WARNING_NOTCL]FlatCAM preferences export cancelled."
+msgstr "[WARNING_NOTCL]FlatCAM preferences export cancelled."
+
+#: FlatCAMApp.py:2383
+msgid "[ERROR_NOTCL]Could not load defaults file."
+msgstr "[ERROR_NOTCL]Could not load defaults file."
+
+#: FlatCAMApp.py:2402 FlatCAMApp.py:2833
+msgid "[ERROR_NOTCL] Failed to write defaults to file."
+msgstr "[ERROR_NOTCL] Failed to write defaults to file."
+
+#: FlatCAMApp.py:2454
+msgid "[ERROR_NOTCL]Failed to open recent files file for writing."
+msgstr "[ERROR_NOTCL]Failed to open recent files file for writing."
+
+#: FlatCAMApp.py:2539 camlib.py:4229
+msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
+msgstr "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
+
+#: FlatCAMApp.py:2540
+#, python-brace-format
+msgid ""
+"Object ({kind}) failed because: {error} \n"
+"\n"
+msgstr ""
+"Object ({kind}) failed because: {error} \n"
+"\n"
+
+#: FlatCAMApp.py:2560
+msgid "Converting units to "
+msgstr "Converting units to "
+
+#: FlatCAMApp.py:2618 FlatCAMApp.py:2621 FlatCAMApp.py:2624 FlatCAMApp.py:2627
+#, python-brace-format
+msgid ""
+"[selected]{kind} created/selected: <span style=\"color:{color};\">{name}</"
+"span>"
+msgstr ""
+"[selected]{kind} created/selected: <span style=\"color:{color};\">{name}</"
+"span>"
+
+#: FlatCAMApp.py:2865
+msgid "[success]Defaults saved."
+msgstr "[success]Defaults saved."
+
+#: FlatCAMApp.py:2886
+msgid "[ERROR_NOTCL] Could not load factory defaults file."
+msgstr "[ERROR_NOTCL] Could not load factory defaults file."
+
+#: FlatCAMApp.py:2895
+msgid "[ERROR_NOTCL] Failed to parse factory defaults file."
+msgstr "[ERROR_NOTCL] Failed to parse factory defaults file."
+
+#: FlatCAMApp.py:2909
+msgid "[ERROR_NOTCL] Failed to write factory defaults to file."
+msgstr "[ERROR_NOTCL] Failed to write factory defaults to file."
+
+#: FlatCAMApp.py:2913
+msgid "Factory defaults saved."
+msgstr "Factory defaults saved."
+
+#: FlatCAMApp.py:2918
+msgid ""
+"There are files/objects modified in FlatCAM. \n"
+"Do you want to Save the project?"
+msgstr ""
+"There are files/objects modified in FlatCAM. \n"
+"Do you want to Save the project?"
+
+#: FlatCAMApp.py:2921 FlatCAMApp.py:5190
+msgid "Save changes"
+msgstr "Save changes"
+
+#: FlatCAMApp.py:2981
+msgid ""
+"[ERROR] 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] 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."
+
+#: FlatCAMApp.py:3022
+msgid "[ERROR_NOTCL]Failed. Excellon joining works only on Excellon objects."
+msgstr "[ERROR_NOTCL]Failed. Excellon joining works only on Excellon objects."
+
+#: FlatCAMApp.py:3044
+msgid "[ERROR_NOTCL]Failed. Gerber joining works only on Gerber objects."
+msgstr "[ERROR_NOTCL]Failed. Gerber joining works only on Gerber objects."
+
+#: FlatCAMApp.py:3059 FlatCAMApp.py:3084
+msgid "[ERROR_NOTCL]Failed. Select a Geometry Object and try again."
+msgstr "[ERROR_NOTCL]Failed. Select a Geometry Object and try again."
+
+#: FlatCAMApp.py:3063 FlatCAMApp.py:3088
+#, python-format
+msgid "[ERROR_NOTCL]Expected a FlatCAMGeometry, got %s"
+msgstr "[ERROR_NOTCL]Expected a FlatCAMGeometry, got %s"
+
+#: FlatCAMApp.py:3076
+msgid "[success] A Geometry object was converted to MultiGeo type."
+msgstr "[success] A Geometry object was converted to MultiGeo type."
+
+#: FlatCAMApp.py:3102
+msgid "[success] A Geometry object was converted to SingleGeo type."
+msgstr "[success] A Geometry object was converted to SingleGeo type."
+
+#: FlatCAMApp.py:3286
+#, python-format
+msgid "[success]Converted units to %s"
+msgstr "[success]Converted units to %s"
+
+#: FlatCAMApp.py:3297
+msgid "[WARNING_NOTCL]Units conversion cancelled."
+msgstr "[WARNING_NOTCL]Units conversion cancelled."
+
+#: FlatCAMApp.py:3862
+msgid "Open file"
+msgstr "Open file"
+
+#: FlatCAMApp.py:3913 FlatCAMApp.py:3918
+msgid "Export G-Code ..."
+msgstr "Export G-Code ..."
+
+#: FlatCAMApp.py:3921
+msgid "[WARNING_NOTCL]Export Code cancelled."
+msgstr "[WARNING_NOTCL]Export Code cancelled."
+
+#: FlatCAMApp.py:3931
+msgid "[WARNING] No such file or directory"
+msgstr "[WARNING] No such file or directory"
+
+#: FlatCAMApp.py:3938
+#, python-format
+msgid "Saved to: %s"
+msgstr "Saved to: %s"
+
+#: FlatCAMApp.py:4001 FlatCAMApp.py:4033 FlatCAMApp.py:4044 FlatCAMApp.py:4055
+#: flatcamTools/ToolNonCopperClear.py:487 flatcamTools/ToolSolderPaste.py:764
+msgid ""
+"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
+"format."
+msgstr ""
+"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
+"format."
+
+#: FlatCAMApp.py:4006 FlatCAMApp.py:4038 FlatCAMApp.py:4049 FlatCAMApp.py:4060
+#: flatcamGUI/FlatCAMGUI.py:2484
+msgid "[WARNING_NOTCL] Adding Tool cancelled ..."
+msgstr "[WARNING_NOTCL] Adding Tool cancelled ..."
+
+#: FlatCAMApp.py:4009
+msgid ""
+"Adding Tool works only when Advanced is checked.\n"
+"Go to Preferences -> General - Show Advanced Options."
+msgstr ""
+"Adding Tool works only when Advanced is checked.\n"
+"Go to Preferences -> General - Show Advanced Options."
+
+#: FlatCAMApp.py:4114
+msgid "Object(s) deleted ..."
+msgstr "Object(s) deleted ..."
+
+#: FlatCAMApp.py:4118
+msgid "Failed. No object(s) selected..."
+msgstr "Failed. No object(s) selected..."
+
+#: FlatCAMApp.py:4120
+msgid "Save the work in Editor and try again ..."
+msgstr "Save the work in Editor and try again ..."
+
+#: FlatCAMApp.py:4133
+msgid "Click to set the origin ..."
+msgstr "Click to set the origin ..."
+
+#: FlatCAMApp.py:4145
+msgid "Jump to ..."
+msgstr "Jump to ..."
+
+#: FlatCAMApp.py:4146
+msgid "Enter the coordinates in format X,Y:"
+msgstr "Enter the coordinates in format X,Y:"
+
+#: FlatCAMApp.py:4153
+msgid "Wrong coordinates. Enter coordinates in format: X,Y"
+msgstr "Wrong coordinates. Enter coordinates in format: X,Y"
+
+#: FlatCAMApp.py:4168
+msgid "Done."
+msgstr "Done."
+
+#: FlatCAMApp.py:4300
+msgid "[success] Origin set ..."
+msgstr "[success] Origin set ..."
+
+#: FlatCAMApp.py:4318
+msgid "Preferences"
+msgstr "Preferences"
+
+#: FlatCAMApp.py:4338
+msgid "[WARNING_NOTCL] No object selected to Flip on Y axis."
+msgstr "[WARNING_NOTCL] No object selected to Flip on Y axis."
+
+#: FlatCAMApp.py:4363
+msgid "[success] Flip on Y axis done."
+msgstr "[success] Flip on Y axis done."
+
+#: FlatCAMApp.py:4365 FlatCAMApp.py:4405 FlatCAMEditor.py:1340
+#: flatcamTools/ToolTransform.py:750
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed."
+msgstr "[ERROR_NOTCL] Due of %s, Flip action was not executed."
+
+#: FlatCAMApp.py:4378
+msgid "[WARNING_NOTCL] No object selected to Flip on X axis."
+msgstr "[WARNING_NOTCL] No object selected to Flip on X axis."
+
+#: FlatCAMApp.py:4403
+msgid "[success] Flip on X axis done."
+msgstr "[success] Flip on X axis done."
+
+#: FlatCAMApp.py:4418
+msgid "[WARNING_NOTCL] No object selected to Rotate."
+msgstr "[WARNING_NOTCL] No object selected to Rotate."
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Transform"
+msgstr "Transform"
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Enter the Angle value:"
+msgstr "Enter the Angle value:"
+
+#: FlatCAMApp.py:4451
+msgid "[success] Rotation done."
+msgstr "[success] Rotation done."
+
+#: FlatCAMApp.py:4453 FlatCAMEditor.py:1283 flatcamTools/ToolTransform.py:678
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
+msgstr "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
+
+#: FlatCAMApp.py:4464
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
+msgstr "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
+
+#: FlatCAMApp.py:4485
+msgid "[success] Skew on X axis done."
+msgstr "[success] Skew on X axis done."
+
+#: FlatCAMApp.py:4495
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
+msgstr "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
+
+#: FlatCAMApp.py:4516
+msgid "[success] Skew on Y axis done."
+msgstr "[success] Skew on Y axis done."
+
+#: FlatCAMApp.py:4612 FlatCAMApp.py:4639
+msgid ""
+"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
+"format."
+msgstr ""
+"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
+"format."
+
+#: FlatCAMApp.py:4618
+msgid "[success] New Grid added ..."
+msgstr "[success] New Grid added ..."
+
+#: FlatCAMApp.py:4621
+msgid "[WARNING_NOTCL] Grid already exists ..."
+msgstr "[WARNING_NOTCL] Grid already exists ..."
+
+#: FlatCAMApp.py:4624
+msgid "[WARNING_NOTCL] Adding New Grid cancelled ..."
+msgstr "[WARNING_NOTCL] Adding New Grid cancelled ..."
+
+#: FlatCAMApp.py:4646
+msgid "[ERROR_NOTCL] Grid Value does not exist ..."
+msgstr "[ERROR_NOTCL] Grid Value does not exist ..."
+
+#: FlatCAMApp.py:4649
+msgid "[success] Grid Value deleted ..."
+msgstr "[success] Grid Value deleted ..."
+
+#: FlatCAMApp.py:4652
+msgid "[WARNING_NOTCL] Delete Grid value cancelled ..."
+msgstr "[WARNING_NOTCL] Delete Grid value cancelled ..."
+
+#: FlatCAMApp.py:4691
+msgid "[WARNING_NOTCL]No object selected to copy it's name"
+msgstr "[WARNING_NOTCL]No object selected to copy it's name"
+
+#: FlatCAMApp.py:4695
+msgid "Name copied on clipboard ..."
+msgstr "Name copied on clipboard ..."
+
+#: FlatCAMApp.py:4990 FlatCAMApp.py:4993 FlatCAMApp.py:4996 FlatCAMApp.py:4999
+#: FlatCAMApp.py:5013 FlatCAMApp.py:5016 FlatCAMApp.py:5019 FlatCAMApp.py:5022
+#: FlatCAMApp.py:5061 FlatCAMApp.py:5064 FlatCAMApp.py:5067 FlatCAMApp.py:5070
+#: ObjectCollection.py:696 ObjectCollection.py:699 ObjectCollection.py:702
+#: ObjectCollection.py:705
+#, python-brace-format
+msgid "[selected]<span style=\"color:{color};\">{name}</span> selected"
+msgstr "[selected]<span style=\"color:{color};\">{name}</span> selected"
+
+#: FlatCAMApp.py:5187
+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 ""
+"There are files/objects opened in FlatCAM.\n"
+"Creating a New project will delete them.\n"
+"Do you want to Save the project?"
+
+#: FlatCAMApp.py:5205
+msgid "[success] New Project created..."
+msgstr "[success] New Project created..."
+
+#: FlatCAMApp.py:5286
+msgid ""
+"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
+msgstr ""
+"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
+
+#: FlatCAMApp.py:5293
+msgid ""
+"[WARNING_NOTCL] There is no selected object for which to see it's source "
+"file code."
+msgstr ""
+"[WARNING_NOTCL] There is no selected object for which to see it's source "
+"file code."
+
+#: FlatCAMApp.py:5297 FlatCAMApp.py:6728 FlatCAMObj.py:5398
+msgid "Code Editor"
+msgstr "Code Editor"
+
+#: FlatCAMApp.py:5310
+#, python-format
+msgid "[ERROR]App.on_view_source() -->%s"
+msgstr "[ERROR]App.on_view_source() -->%s"
+
+#: FlatCAMApp.py:5348 FlatCAMApp.py:5351 flatcamGUI/FlatCAMGUI.py:541
+#: flatcamGUI/FlatCAMGUI.py:1590
+msgid "Open Gerber"
+msgstr "Open Gerber"
+
+#: FlatCAMApp.py:5356
+msgid "[WARNING_NOTCL] Open Gerber cancelled."
+msgstr "[WARNING_NOTCL] Open Gerber cancelled."
+
+#: FlatCAMApp.py:5377 FlatCAMApp.py:5380 flatcamGUI/FlatCAMGUI.py:542
+#: flatcamGUI/FlatCAMGUI.py:1591
+msgid "Open Excellon"
+msgstr "Open Excellon"
+
+#: FlatCAMApp.py:5385
+msgid "[WARNING_NOTCL]Open Excellon cancelled."
+msgstr "[WARNING_NOTCL]Open Excellon cancelled."
+
+#: FlatCAMApp.py:5407 FlatCAMApp.py:5410
+msgid "Open G-Code"
+msgstr "Open G-Code"
+
+#: FlatCAMApp.py:5415
+msgid "[WARNING_NOTCL]Open G-Code cancelled."
+msgstr "[WARNING_NOTCL]Open G-Code cancelled."
+
+#: FlatCAMApp.py:5433 FlatCAMApp.py:5436
+msgid "Open Project"
+msgstr "Open Project"
+
+#: FlatCAMApp.py:5444
+msgid "[WARNING_NOTCL]Open Project cancelled."
+msgstr "[WARNING_NOTCL]Open Project cancelled."
+
+#: FlatCAMApp.py:5463 FlatCAMApp.py:5466
+msgid "Open Configuration File"
+msgstr "Open Configuration File"
+
+#: FlatCAMApp.py:5470
+msgid "[WARNING_NOTCL]Open Config cancelled."
+msgstr "[WARNING_NOTCL]Open Config cancelled."
+
+#: FlatCAMApp.py:5485 FlatCAMApp.py:5682 FlatCAMApp.py:7588 FlatCAMApp.py:7608
+#: FlatCAMApp.py:7629 FlatCAMApp.py:7651
+msgid "[WARNING_NOTCL] No object selected."
+msgstr "[WARNING_NOTCL] No object selected."
+
+#: FlatCAMApp.py:5486 FlatCAMApp.py:5683
+msgid "Please Select a Geometry object to export"
+msgstr "Please Select a Geometry object to export"
+
+#: FlatCAMApp.py:5497
+msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
+msgstr "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
+
+#: FlatCAMApp.py:5510 FlatCAMApp.py:5514
+msgid "Export SVG"
+msgstr "Export SVG"
+
+#: FlatCAMApp.py:5519
+msgid "[WARNING_NOTCL]Export SVG cancelled."
+msgstr "[WARNING_NOTCL]Export SVG cancelled."
+
+#: FlatCAMApp.py:5533
+msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
+msgstr "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
+
+#: FlatCAMApp.py:5539 FlatCAMApp.py:5543
+msgid "Export PNG Image"
+msgstr "Export PNG Image"
+
+#: FlatCAMApp.py:5548
+msgid "Export PNG cancelled."
+msgstr "Export PNG cancelled."
+
+#: FlatCAMApp.py:5565
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
+msgstr ""
+"[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
+
+#: FlatCAMApp.py:5570
+msgid ""
+"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
+msgstr ""
+"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
+
+#: FlatCAMApp.py:5582
+msgid "Save Gerber source file"
+msgstr "Save Gerber source file"
+
+#: FlatCAMApp.py:5587
+msgid "[WARNING_NOTCL] Save Gerber source file cancelled."
+msgstr "[WARNING_NOTCL] Save Gerber source file cancelled."
+
+#: FlatCAMApp.py:5604
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Excellon object to "
+"export."
+msgstr ""
+"[WARNING_NOTCL] No object selected. Please select an Excellon object to "
+"export."
+
+#: FlatCAMApp.py:5609 FlatCAMApp.py:5648
+msgid ""
+"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
+msgstr ""
+"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
+
+#: FlatCAMApp.py:5617 FlatCAMApp.py:5621
+msgid "Save Excellon source file"
+msgstr "Save Excellon source file"
+
+#: FlatCAMApp.py:5626
+msgid "[WARNING_NOTCL] Saving Excellon source file cancelled."
+msgstr "[WARNING_NOTCL] Saving Excellon source file cancelled."
+
+#: FlatCAMApp.py:5643
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
+"export."
+msgstr ""
+"[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
+"export."
+
+#: FlatCAMApp.py:5656 FlatCAMApp.py:5660
+msgid "Export Excellon"
+msgstr "Export Excellon"
+
+#: FlatCAMApp.py:5665
+msgid "[WARNING_NOTCL]Export Excellon cancelled."
+msgstr "[WARNING_NOTCL]Export Excellon cancelled."
+
+#: FlatCAMApp.py:5693
+msgid "[ERROR_NOTCL] Only Geometry objects can be used."
+msgstr "[ERROR_NOTCL] Only Geometry objects can be used."
+
+#: FlatCAMApp.py:5706 FlatCAMApp.py:5710
+msgid "Export DXF"
+msgstr "Export DXF"
+
+#: FlatCAMApp.py:5715
+msgid "[WARNING_NOTCL] Export DXF cancelled."
+msgstr "[WARNING_NOTCL] Export DXF cancelled."
+
+#: FlatCAMApp.py:5733 FlatCAMApp.py:5736
+msgid "Import SVG"
+msgstr "Import SVG"
+
+#: FlatCAMApp.py:5744
+msgid "[WARNING_NOTCL] Open SVG cancelled."
+msgstr "[WARNING_NOTCL] Open SVG cancelled."
+
+#: FlatCAMApp.py:5763 FlatCAMApp.py:5766
+msgid "Import DXF"
+msgstr "Import DXF"
+
+#: FlatCAMApp.py:5774
+msgid "[WARNING_NOTCL]Open DXF cancelled."
+msgstr "[WARNING_NOTCL]Open DXF cancelled."
+
+#: FlatCAMApp.py:5792 FlatCAMApp.py:5795
+msgid "Open TCL script"
+msgstr "Open TCL script"
+
+#: FlatCAMApp.py:5803
+msgid "[WARNING_NOTCL]Open TCL script cancelled."
+msgstr "[WARNING_NOTCL]Open TCL script cancelled."
+
+#: FlatCAMApp.py:5851 FlatCAMApp.py:5855
+msgid "Save Project As ..."
+msgstr "Save Project As ..."
+
+#: FlatCAMApp.py:5852
+#, python-brace-format
+msgid "{l_save}/Project_{date}"
+msgstr "{l_save}/Project_{date}"
+
+#: FlatCAMApp.py:5860
+msgid "[WARNING_NOTCL] Save Project cancelled."
+msgstr "[WARNING_NOTCL] Save Project cancelled."
+
+#: FlatCAMApp.py:5905
+msgid "Exporting SVG"
+msgstr "Exporting SVG"
+
+#: FlatCAMApp.py:5938 FlatCAMApp.py:6043 FlatCAMApp.py:6157
+#, python-format
+msgid "[success] SVG file exported to %s"
+msgstr "[success] SVG file exported to %s"
+
+#: FlatCAMApp.py:5969 FlatCAMApp.py:6089
+#, python-format
+msgid "[WARNING_NOTCL]No object Box. Using instead %s"
+msgstr "[WARNING_NOTCL]No object Box. Using instead %s"
+
+#: FlatCAMApp.py:6046 FlatCAMApp.py:6160
+msgid "Generating Film ... Please wait."
+msgstr "Generating Film ... Please wait."
+
+#: FlatCAMApp.py:6307
+#, python-format
+msgid "[success] Excellon file exported to %s"
+msgstr "[success] Excellon file exported to %s"
+
+#: FlatCAMApp.py:6314
+msgid "Exporting Excellon"
+msgstr "Exporting Excellon"
+
+#: FlatCAMApp.py:6319 FlatCAMApp.py:6326
+msgid "[ERROR_NOTCL] Could not export Excellon file."
+msgstr "[ERROR_NOTCL] Could not export Excellon file."
+
+#: FlatCAMApp.py:6365
+#, python-format
+msgid "[success] DXF file exported to %s"
+msgstr "[success] DXF file exported to %s"
+
+#: FlatCAMApp.py:6371
+msgid "Exporting DXF"
+msgstr "Exporting DXF"
+
+#: FlatCAMApp.py:6376 FlatCAMApp.py:6383
+msgid "[[WARNING_NOTCL]] Could not export DXF file."
+msgstr "[[WARNING_NOTCL]] Could not export DXF file."
+
+#: FlatCAMApp.py:6403 FlatCAMApp.py:6445 FlatCAMApp.py:6486
+msgid ""
+"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
+"Gerber are supported"
+msgstr ""
+"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
+"Gerber are supported"
+
+#: FlatCAMApp.py:6413
+msgid "Importing SVG"
+msgstr "Importing SVG"
+
+#: FlatCAMApp.py:6424 FlatCAMApp.py:6466 FlatCAMApp.py:6506 FlatCAMApp.py:6582
+#: FlatCAMApp.py:6649 FlatCAMApp.py:6714
+#, python-format
+msgid "[success] Opened: %s"
+msgstr "[success] Opened: %s"
+
+#: FlatCAMApp.py:6455
+msgid "Importing DXF"
+msgstr "Importing DXF"
+
+#: FlatCAMApp.py:6494
+msgid "Importing Image"
+msgstr "Importing Image"
+
+#: FlatCAMApp.py:6535 FlatCAMApp.py:6537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open file: %s"
+msgstr "[ERROR_NOTCL] Failed to open file: %s"
+
+#: FlatCAMApp.py:6540
+#, python-brace-format
+msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
+msgstr "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
+
+#: FlatCAMApp.py:6546 FlatCAMEditor.py:5802 FlatCAMObj.py:4104
+msgid "[ERROR] An internal error has ocurred. See shell.\n"
+msgstr "[ERROR] An internal error has ocurred. See shell.\n"
+
+#: FlatCAMApp.py:6555
+msgid ""
+"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
+msgstr ""
+"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
+
+#: FlatCAMApp.py:6563
+msgid "Opening Gerber"
+msgstr "Opening Gerber"
+
+#: FlatCAMApp.py:6573
+msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
+msgstr "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
+
+#: FlatCAMApp.py:6608
+msgid "[ERROR_NOTCL] This is not Excellon file."
+msgstr "[ERROR_NOTCL] This is not Excellon file."
+
+#: FlatCAMApp.py:6611
+#, python-format
+msgid "[ERROR_NOTCL] Cannot open file: %s"
+msgstr "[ERROR_NOTCL] Cannot open file: %s"
+
+#: FlatCAMApp.py:6616
+msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
+msgstr "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
+
+#: FlatCAMApp.py:6632
+#, python-format
+msgid "[ERROR_NOTCL] No geometry found in file: %s"
+msgstr "[ERROR_NOTCL] No geometry found in file: %s"
+
+#: FlatCAMApp.py:6635
+msgid "Opening Excellon."
+msgstr "Opening Excellon."
+
+#: FlatCAMApp.py:6642
+msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
+msgstr ""
+"[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
+
+#: FlatCAMApp.py:6681
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open %s"
+msgstr "[ERROR_NOTCL] Failed to open %s"
+
+#: FlatCAMApp.py:6691
+msgid "[ERROR_NOTCL] This is not GCODE"
+msgstr "[ERROR_NOTCL] This is not GCODE"
+
+#: FlatCAMApp.py:6697
+msgid "Opening G-Code."
+msgstr "Opening G-Code."
+
+#: FlatCAMApp.py:6705
+msgid ""
+"[ERROR_NOTCL] 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] 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"
+
+#: FlatCAMApp.py:6745
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open config file: %s"
+msgstr "[ERROR_NOTCL] Failed to open config file: %s"
+
+#: FlatCAMApp.py:6770 FlatCAMApp.py:6787
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open project file: %s"
+msgstr "[ERROR_NOTCL] Failed to open project file: %s"
+
+#: FlatCAMApp.py:6777
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse project file: %s"
+msgstr "[ERROR_NOTCL] Failed to parse project file: %s"
+
+#: FlatCAMApp.py:6813
+#, python-format
+msgid "[success] Project loaded from: %s"
+msgstr "[success] Project loaded from: %s"
+
+#: FlatCAMApp.py:6943
+msgid "Available commands:\n"
+msgstr "Available commands:\n"
+
+#: FlatCAMApp.py:6945
+msgid ""
+"\n"
+"\n"
+"Type help <command_name> for usage.\n"
+" Example: help open_gerber"
+msgstr ""
+"\n"
+"\n"
+"Type help <command_name> for usage.\n"
+" Example: help open_gerber"
+
+#: FlatCAMApp.py:7093
+msgid "Shows list of commands."
+msgstr "Shows list of commands."
+
+#: FlatCAMApp.py:7146
+msgid "[ERROR_NOTCL] Failed to load recent item list."
+msgstr "[ERROR_NOTCL] Failed to load recent item list."
+
+#: FlatCAMApp.py:7153
+msgid "[ERROR_NOTCL] Failed to parse recent item list."
+msgstr "[ERROR_NOTCL] Failed to parse recent item list."
+
+#: FlatCAMApp.py:7214 flatcamGUI/FlatCAMGUI.py:856
+msgid "<b>Shortcut Key List</b>"
+msgstr "<b>Shortcut Key List</b>"
+
+#: FlatCAMApp.py:7221
+msgid ""
+"\n"
+"<p><span style=\"font-size:14px\"><strong>Selected Tab - Choose an Item from "
+"Project Tab</strong></span></p>\n"
+"\n"
+"<p><span style=\"font-size:10px\"><strong>Details</strong>:<br />\n"
+"The normal flow when working in FlatCAM is the following:</span></p>\n"
+"\n"
+"<ol>\n"
+"\t<li><span style=\"font-size:10px\">Loat/Import a Gerber, Excellon, Gcode, "
+"DXF, Raster Image or SVG file into FlatCAM using either the menu&#39;s, "
+"toolbars, key shortcuts or even dragging and dropping the files on the GUI."
+"<br />\n"
+"\t<br />\n"
+"\tYou can also load a <strong>FlatCAM project</strong> by double clicking on "
+"the project file, drag &amp; drop of the file into the FLATCAM GUI or "
+"through the menu/toolbar links offered within the app.</span><br />\n"
+"\t&nbsp;</li>\n"
+"\t<li><span style=\"font-size:10px\">Once an object is available in the "
+"Project Tab, by selecting it and then focusing on <strong>SELECTED TAB </"
+"strong>(more simpler is to double click the object name in the Project Tab), "
+"<strong>SELECTED TAB </strong>will be updated with the object properties "
+"according to it&#39;s kind: Gerber, Excellon, Geometry or CNCJob object.<br /"
+">\n"
+"\t<br />\n"
+"\tIf the selection of the object is done on the canvas by single click "
+"instead, and the <strong>SELECTED TAB</strong> is in focus, again the object "
+"properties will be displayed into the Selected Tab. Alternatively, double "
+"clicking on the object on the canvas will bring the <strong>SELECTED TAB</"
+"strong> and populate it even if it was out of focus.<br />\n"
+"\t<br />\n"
+"\tYou can change the parameters in this screen and the flow direction is "
+"like this:<br />\n"
+"\t<br />\n"
+"\t<strong>Gerber/Excellon Object</strong> -&gt; Change Param -&gt; Generate "
+"Geometry -&gt;<strong> Geometry Object </strong>-&gt; Add tools (change "
+"param in Selected Tab) -&gt; Generate CNCJob -&gt;<strong> CNCJob Object </"
+"strong>-&gt; Verify GCode (through Edit CNC Code) and/or append/prepend to "
+"GCode (again, done in <strong>SELECTED TAB)&nbsp;</strong>-&gt; Save GCode</"
+"span></li>\n"
+"</ol>\n"
+"\n"
+"<p><span style=\"font-size:10px\">A list of key shortcuts is available "
+"through an menu entry in <strong>Help -&gt; Shortcuts List</strong>&nbsp;or "
+"through it&#39;s own key shortcut: <strng>F3</strong>.</span></p>\n"
+"\n"
+"        "
+msgstr ""
+"\n"
+"<p><span style=\"font-size:14px\"><strong>Selected Tab - Choose an Item from "
+"Project Tab</strong></span></p>\n"
+"\n"
+"<p><span style=\"font-size:10px\"><strong>Details</strong>:<br />\n"
+"The normal flow when working in FlatCAM is the following:</span></p>\n"
+"\n"
+"<ol>\n"
+"\t<li><span style=\"font-size:10px\">Loat/Import a Gerber, Excellon, Gcode, "
+"DXF, Raster Image or SVG file into FlatCAM using either the menu&#39;s, "
+"toolbars, key shortcuts or even dragging and dropping the files on the GUI."
+"<br />\n"
+"\t<br />\n"
+"\tYou can also load a <strong>FlatCAM project</strong> by double clicking on "
+"the project file, drag &amp; drop of the file into the FLATCAM GUI or "
+"through the menu/toolbar links offered within the app.</span><br />\n"
+"\t&nbsp;</li>\n"
+"\t<li><span style=\"font-size:10px\">Once an object is available in the "
+"Project Tab, by selecting it and then focusing on <strong>SELECTED TAB </"
+"strong>(more simpler is to double click the object name in the Project Tab), "
+"<strong>SELECTED TAB </strong>will be updated with the object properties "
+"according to it&#39;s kind: Gerber, Excellon, Geometry or CNCJob object.<br /"
+">\n"
+"\t<br />\n"
+"\tIf the selection of the object is done on the canvas by single click "
+"instead, and the <strong>SELECTED TAB</strong> is in focus, again the object "
+"properties will be displayed into the Selected Tab. Alternatively, double "
+"clicking on the object on the canvas will bring the <strong>SELECTED TAB</"
+"strong> and populate it even if it was out of focus.<br />\n"
+"\t<br />\n"
+"\tYou can change the parameters in this screen and the flow direction is "
+"like this:<br />\n"
+"\t<br />\n"
+"\t<strong>Gerber/Excellon Object</strong> -&gt; Change Param -&gt; Generate "
+"Geometry -&gt;<strong> Geometry Object </strong>-&gt; Add tools (change "
+"param in Selected Tab) -&gt; Generate CNCJob -&gt;<strong> CNCJob Object </"
+"strong>-&gt; Verify GCode (through Edit CNC Code) and/or append/prepend to "
+"GCode (again, done in <strong>SELECTED TAB)&nbsp;</strong>-&gt; Save GCode</"
+"span></li>\n"
+"</ol>\n"
+"\n"
+"<p><span style=\"font-size:10px\">A list of key shortcuts is available "
+"through an menu entry in <strong>Help -&gt; Shortcuts List</strong>&nbsp;or "
+"through it&#39;s own key shortcut: <strng>F3</strong>.</span></p>\n"
+"\n"
+"        "
+
+#: FlatCAMApp.py:7325
+msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
+msgstr "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
+
+#: FlatCAMApp.py:7332
+msgid "[ERROR_NOTCL] Could not parse information about latest version."
+msgstr "[ERROR_NOTCL] Could not parse information about latest version."
+
+#: FlatCAMApp.py:7342
+msgid "[success] FlatCAM is up to date!"
+msgstr "[success] FlatCAM is up to date!"
+
+#: FlatCAMApp.py:7347
+msgid "Newer Version Available"
+msgstr "Newer Version Available"
+
+#: FlatCAMApp.py:7348
+msgid ""
+"There is a newer version of FlatCAM available for download:\n"
+"\n"
+msgstr ""
+"There is a newer version of FlatCAM available for download:\n"
+"\n"
+
+#: FlatCAMApp.py:7350
+msgid "info"
+msgstr "info"
+
+#: FlatCAMApp.py:7369
+msgid "[success]All plots disabled."
+msgstr "[success]All plots disabled."
+
+#: FlatCAMApp.py:7375
+msgid "[success]All non selected plots disabled."
+msgstr "[success]All non selected plots disabled."
+
+#: FlatCAMApp.py:7381
+msgid "[success]All plots enabled."
+msgstr "[success]All plots enabled."
+
+#: FlatCAMApp.py:7491
+msgid "Saving FlatCAM Project"
+msgstr "Saving FlatCAM Project"
+
+#: FlatCAMApp.py:7512 FlatCAMApp.py:7543
+#, python-format
+msgid "[success] Project saved to: %s"
+msgstr "[success] Project saved to: %s"
+
+#: FlatCAMApp.py:7530
+#, python-format
+msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
+msgstr "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
+
+#: FlatCAMApp.py:7537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
+msgstr ""
+"[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
+
+#: FlatCAMApp.py:7545
+#, python-format
+msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
+msgstr "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
+
+#: FlatCAMEditor.py:76
+msgid "Buffer distance:"
+msgstr "Buffer distance:"
+
+#: FlatCAMEditor.py:77
+msgid "Buffer corner:"
+msgstr "Buffer corner:"
+
+#: FlatCAMEditor.py:79
+msgid ""
+"There are 3 types of corners:\n"
+" - 'Round': the corner is rounded for exterior buffer.\n"
+" - 'Square:' the corner is met in a sharp angle for exterior buffer.\n"
+" - 'Beveled:' the corner is a line that directly connects the features "
+"meeting in the corner"
+msgstr ""
+"There are 3 types of corners:\n"
+" - 'Round': the corner is rounded for exterior buffer.\n"
+" - 'Square:' the corner is met in a sharp angle for exterior buffer.\n"
+" - 'Beveled:' the corner is a line that directly connects the features "
+"meeting in the corner"
+
+#: FlatCAMEditor.py:85
+msgid "Round"
+msgstr "Round"
+
+#: FlatCAMEditor.py:86
+msgid "Square"
+msgstr "Square"
+
+#: FlatCAMEditor.py:87
+msgid "Beveled"
+msgstr "Beveled"
+
+#: FlatCAMEditor.py:94
+msgid "Buffer Interior"
+msgstr "Buffer Interior"
+
+#: FlatCAMEditor.py:96
+msgid "Buffer Exterior"
+msgstr "Buffer Exterior"
+
+#: FlatCAMEditor.py:102
+msgid "Full Buffer"
+msgstr "Full Buffer"
+
+#: FlatCAMEditor.py:123 FlatCAMEditor.py:2623
+msgid "Buffer Tool"
+msgstr "Buffer Tool"
+
+#: FlatCAMEditor.py:134 FlatCAMEditor.py:151 FlatCAMEditor.py:168
+#: FlatCAMEditor.py:2641 FlatCAMEditor.py:2667 FlatCAMEditor.py:2693
+msgid ""
+"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
+"retry."
+
+#: FlatCAMEditor.py:416 flatcamGUI/FlatCAMGUI.py:3402
+#: flatcamGUI/FlatCAMGUI.py:4608 flatcamGUI/FlatCAMGUI.py:4884
+#: flatcamGUI/FlatCAMGUI.py:5015 flatcamGUI/ObjectUI.py:331
+msgid "Tool dia:"
+msgstr "Tool dia:"
+
+#: FlatCAMEditor.py:418 flatcamGUI/FlatCAMGUI.py:5017
+msgid ""
+"Diameter of the tool to\n"
+"be used in the operation."
+msgstr ""
+"Diameter of the tool to\n"
+"be used in the operation."
+
+#: FlatCAMEditor.py:427 flatcamGUI/FlatCAMGUI.py:4790
+#: flatcamGUI/FlatCAMGUI.py:5026 flatcamTools/ToolNonCopperClear.py:164
+#: flatcamTools/ToolPaint.py:160
+msgid "Overlap:"
+msgstr "Overlap:"
+
+#: FlatCAMEditor.py:429 flatcamTools/ToolPaint.py:162
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+
+#: FlatCAMEditor.py:445 flatcamGUI/FlatCAMGUI.py:4806
+#: flatcamGUI/FlatCAMGUI.py:4892 flatcamGUI/FlatCAMGUI.py:5036
+#: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:180
+#: flatcamTools/ToolPaint.py:177
+msgid "Margin:"
+msgstr "Margin:"
+
+#: FlatCAMEditor.py:447 flatcamGUI/FlatCAMGUI.py:5038
+#: flatcamTools/ToolPaint.py:179
+msgid ""
+"Distance by which to avoid\n"
+"the edges of the polygon to\n"
+"be painted."
+msgstr ""
+"Distance by which to avoid\n"
+"the edges of the polygon to\n"
+"be painted."
+
+#: FlatCAMEditor.py:456 flatcamGUI/FlatCAMGUI.py:4815
+#: flatcamGUI/FlatCAMGUI.py:5047 flatcamTools/ToolNonCopperClear.py:189
+#: flatcamTools/ToolPaint.py:188
+msgid "Method:"
+msgstr "Method:"
+
+#: FlatCAMEditor.py:458 flatcamGUI/FlatCAMGUI.py:5049
+msgid ""
+"Algorithm to paint the polygon:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed."
+msgstr ""
+"Algorithm to paint the polygon:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed."
+
+#: FlatCAMEditor.py:464 flatcamGUI/FlatCAMGUI.py:4824
+#: flatcamGUI/FlatCAMGUI.py:5055
+msgid "Standard"
+msgstr "Standard"
+
+#: FlatCAMEditor.py:465 flatcamGUI/FlatCAMGUI.py:4825
+#: flatcamGUI/FlatCAMGUI.py:5056
+msgid "Seed-based"
+msgstr "Seed-based"
+
+#: FlatCAMEditor.py:466 flatcamGUI/FlatCAMGUI.py:4826
+#: flatcamGUI/FlatCAMGUI.py:5057
+msgid "Straight lines"
+msgstr "Straight lines"
+
+#: FlatCAMEditor.py:471 flatcamGUI/FlatCAMGUI.py:4831
+#: flatcamGUI/FlatCAMGUI.py:5062 flatcamTools/ToolNonCopperClear.py:205
+#: flatcamTools/ToolPaint.py:204
+msgid "Connect:"
+msgstr "Connect:"
+
+#: FlatCAMEditor.py:473 flatcamGUI/FlatCAMGUI.py:4833
+#: flatcamGUI/FlatCAMGUI.py:5064 flatcamTools/ToolNonCopperClear.py:207
+#: flatcamTools/ToolPaint.py:206
+msgid ""
+"Draw lines between resulting\n"
+"segments to minimize tool lifts."
+msgstr ""
+"Draw lines between resulting\n"
+"segments to minimize tool lifts."
+
+#: FlatCAMEditor.py:480 flatcamGUI/FlatCAMGUI.py:4840
+#: flatcamGUI/FlatCAMGUI.py:5072 flatcamTools/ToolNonCopperClear.py:214
+#: flatcamTools/ToolPaint.py:213
+msgid "Contour:"
+msgstr "Contour:"
+
+#: FlatCAMEditor.py:482 flatcamGUI/FlatCAMGUI.py:4842
+#: flatcamGUI/FlatCAMGUI.py:5074 flatcamTools/ToolNonCopperClear.py:216
+#: flatcamTools/ToolPaint.py:215
+msgid ""
+"Cut around the perimeter of the polygon\n"
+"to trim rough edges."
+msgstr ""
+"Cut around the perimeter of the polygon\n"
+"to trim rough edges."
+
+#: FlatCAMEditor.py:494
+msgid "Paint"
+msgstr "Paint"
+
+#: FlatCAMEditor.py:512 flatcamGUI/FlatCAMGUI.py:575
+#: flatcamGUI/FlatCAMGUI.py:1624 flatcamGUI/ObjectUI.py:1379
+#: flatcamTools/ToolPaint.py:340
+msgid "Paint Tool"
+msgstr "Paint Tool"
+
+#: FlatCAMEditor.py:548
+msgid "[WARNING_NOTCL] Paint cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Paint cancelled. No shape selected."
+
+#: FlatCAMEditor.py:559 flatcamTools/ToolCutOut.py:343
+#: flatcamTools/ToolCutOut.py:481 flatcamTools/ToolCutOut.py:601
+#: flatcamTools/ToolCutOut.py:706 flatcamTools/ToolDblSided.py:363
+msgid ""
+"[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and "
+"retry."
+
+#: FlatCAMEditor.py:570
+msgid ""
+"[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry."
+
+#: FlatCAMEditor.py:582
+msgid ""
+"[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and "
+"retry."
+
+#: FlatCAMEditor.py:591 FlatCAMEditor.py:2648 FlatCAMEditor.py:2674
+#: FlatCAMEditor.py:2700 flatcamTools/ToolNonCopperClear.py:806
+#: flatcamTools/ToolProperties.py:104
+msgid "Tools"
+msgstr "Tools"
+
+#: FlatCAMEditor.py:602 FlatCAMEditor.py:975 flatcamGUI/FlatCAMGUI.py:584
+#: flatcamGUI/FlatCAMGUI.py:1635 flatcamTools/ToolTransform.py:398
+msgid "Transform Tool"
+msgstr "Transform Tool"
+
+#: FlatCAMEditor.py:603 FlatCAMEditor.py:664 flatcamTools/ToolTransform.py:24
+#: flatcamTools/ToolTransform.py:82
+msgid "Rotate"
+msgstr "Rotate"
+
+#: FlatCAMEditor.py:604 flatcamTools/ToolTransform.py:25
+msgid "Skew/Shear"
+msgstr "Skew/Shear"
+
+#: FlatCAMEditor.py:605 flatcamGUI/ObjectUI.py:100 flatcamGUI/ObjectUI.py:265
+#: flatcamTools/ToolTransform.py:26
+msgid "Scale"
+msgstr "Scale"
+
+#: FlatCAMEditor.py:606 flatcamTools/ToolTransform.py:27
+msgid "Mirror (Flip)"
+msgstr "Mirror (Flip)"
+
+#: FlatCAMEditor.py:607 flatcamGUI/ObjectUI.py:127 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517 flatcamTools/ToolTransform.py:28
+msgid "Offset"
+msgstr "Offset"
+
+#: FlatCAMEditor.py:618
+#, python-format
+msgid "Editor %s"
+msgstr "Editor %s"
+
+#: FlatCAMEditor.py:650 FlatCAMEditor.py:4851 FlatCAMEditor.py:4887
+#: flatcamTools/ToolTransform.py:68
+msgid "Angle:"
+msgstr "Angle:"
+
+#: FlatCAMEditor.py:652 flatcamTools/ToolTransform.py:70
+msgid ""
+"Angle for Rotation action, in degrees.\n"
+"Float number between -360 and 359.\n"
+"Positive numbers for CW motion.\n"
+"Negative numbers for CCW motion."
+msgstr ""
+"Angle for Rotation action, in degrees.\n"
+"Float number between -360 and 359.\n"
+"Positive numbers for CW motion.\n"
+"Negative numbers for CCW motion."
+
+#: FlatCAMEditor.py:666
+msgid ""
+"Rotate the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+"Rotate the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+
+#: FlatCAMEditor.py:689 flatcamTools/ToolTransform.py:107
+msgid "Angle X:"
+msgstr "Angle X:"
+
+#: FlatCAMEditor.py:691 FlatCAMEditor.py:709 flatcamTools/ToolTransform.py:109
+#: flatcamTools/ToolTransform.py:127
+msgid ""
+"Angle for Skew action, in degrees.\n"
+"Float number between -360 and 359."
+msgstr ""
+"Angle for Skew action, in degrees.\n"
+"Float number between -360 and 359."
+
+#: FlatCAMEditor.py:700 flatcamTools/ToolTransform.py:118
+msgid "Skew X"
+msgstr "Skew X"
+
+#: FlatCAMEditor.py:702 FlatCAMEditor.py:720
+msgid ""
+"Skew/shear the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+"Skew/shear the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+
+#: FlatCAMEditor.py:707 flatcamTools/ToolTransform.py:125
+msgid "Angle Y:"
+msgstr "Angle Y:"
+
+#: FlatCAMEditor.py:718 flatcamTools/ToolTransform.py:136
+msgid "Skew Y"
+msgstr "Skew Y"
+
+#: FlatCAMEditor.py:746 flatcamTools/ToolTransform.py:164
+msgid "Factor X:"
+msgstr "Factor X:"
+
+#: FlatCAMEditor.py:748 flatcamTools/ToolTransform.py:166
+msgid "Factor for Scale action over X axis."
+msgstr "Factor for Scale action over X axis."
+
+#: FlatCAMEditor.py:756 flatcamTools/ToolTransform.py:174
+msgid "Scale X"
+msgstr "Scale X"
+
+#: FlatCAMEditor.py:758 FlatCAMEditor.py:775
+msgid ""
+"Scale the selected shape(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+"Scale the selected shape(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+
+#: FlatCAMEditor.py:763 flatcamTools/ToolTransform.py:181
+msgid "Factor Y:"
+msgstr "Factor Y:"
+
+#: FlatCAMEditor.py:765 flatcamTools/ToolTransform.py:183
+msgid "Factor for Scale action over Y axis."
+msgstr "Factor for Scale action over Y axis."
+
+#: FlatCAMEditor.py:773 flatcamTools/ToolTransform.py:191
+msgid "Scale Y"
+msgstr "Scale Y"
+
+#: FlatCAMEditor.py:782 flatcamGUI/FlatCAMGUI.py:5421
+#: flatcamTools/ToolTransform.py:200
+msgid "Link"
+msgstr "Link"
+
+#: FlatCAMEditor.py:784
+msgid ""
+"Scale the selected shape(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+"Scale the selected shape(s)\n"
+"using the Scale Factor X for both axis."
+
+#: FlatCAMEditor.py:790 flatcamGUI/FlatCAMGUI.py:5429
+#: flatcamTools/ToolTransform.py:208
+msgid "Scale Reference"
+msgstr "Scale Reference"
+
+#: FlatCAMEditor.py:792
+msgid ""
+"Scale the selected shape(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected shapes when unchecked."
+msgstr ""
+"Scale the selected shape(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected shapes when unchecked."
+
+#: FlatCAMEditor.py:820 flatcamTools/ToolTransform.py:238
+msgid "Value X:"
+msgstr "Value X:"
+
+#: FlatCAMEditor.py:822 flatcamTools/ToolTransform.py:240
+msgid "Value for Offset action on X axis."
+msgstr "Value for Offset action on X axis."
+
+#: FlatCAMEditor.py:830 flatcamTools/ToolTransform.py:248
+msgid "Offset X"
+msgstr "Offset X"
+
+#: FlatCAMEditor.py:832 FlatCAMEditor.py:850
+msgid ""
+"Offset the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes.\n"
+msgstr ""
+"Offset the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes.\n"
+
+#: FlatCAMEditor.py:838 flatcamTools/ToolTransform.py:255
+msgid "Value Y:"
+msgstr "Value Y:"
+
+#: FlatCAMEditor.py:840 flatcamTools/ToolTransform.py:257
+msgid "Value for Offset action on Y axis."
+msgstr "Value for Offset action on Y axis."
+
+#: FlatCAMEditor.py:848 flatcamTools/ToolTransform.py:265
+msgid "Offset Y"
+msgstr "Offset Y"
+
+#: FlatCAMEditor.py:879 flatcamTools/ToolTransform.py:295
+msgid "Flip on X"
+msgstr "Flip on X"
+
+#: FlatCAMEditor.py:881 FlatCAMEditor.py:889
+msgid ""
+"Flip the selected shape(s) over the X axis.\n"
+"Does not create a new shape."
+msgstr ""
+"Flip the selected shape(s) over the X axis.\n"
+"Does not create a new shape."
+
+#: FlatCAMEditor.py:887 flatcamTools/ToolTransform.py:303
+msgid "Flip on Y"
+msgstr "Flip on Y"
+
+#: FlatCAMEditor.py:896 flatcamTools/ToolTransform.py:312
+msgid "Ref Pt"
+msgstr "Ref Pt"
+
+#: FlatCAMEditor.py:898
+msgid ""
+"Flip the selected shape(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+"Flip the selected shape(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+
+#: FlatCAMEditor.py:910 flatcamTools/ToolTransform.py:325
+msgid "Point:"
+msgstr "Point:"
+
+#: FlatCAMEditor.py:912
+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"
+"the 'y' in (x, y) will be used when using Flip on Y."
+msgstr ""
+"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"
+"the 'y' in (x, y) will be used when using Flip on Y."
+
+#: FlatCAMEditor.py:922 flatcamGUI/ObjectUI.py:1059
+#: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:208
+#: flatcamTools/ToolNonCopperClear.py:133 flatcamTools/ToolPaint.py:131
+#: flatcamTools/ToolSolderPaste.py:115 flatcamTools/ToolSolderPaste.py:478
+#: flatcamTools/ToolTransform.py:337
+msgid "Add"
+msgstr "Add"
+
+#: FlatCAMEditor.py:924 flatcamTools/ToolTransform.py:339
+msgid ""
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. Then click Add button to insert."
+msgstr ""
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. Then click Add button to insert."
+
+#: FlatCAMEditor.py:1039
+msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Transformation cancelled. No shape selected."
+
+#: FlatCAMEditor.py:1060 flatcamTools/ToolTransform.py:468
+msgid "[ERROR_NOTCL]Wrong value format entered for Rotate, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Rotate, use a number."
+
+#: FlatCAMEditor.py:1097 flatcamTools/ToolTransform.py:502
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew X, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Skew X, use a number."
+
+#: FlatCAMEditor.py:1118 flatcamTools/ToolTransform.py:520
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew Y, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Skew Y, use a number."
+
+#: FlatCAMEditor.py:1139 flatcamTools/ToolTransform.py:538
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale X, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Scale X, use a number."
+
+#: FlatCAMEditor.py:1176 flatcamTools/ToolTransform.py:572
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale Y, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Scale Y, use a number."
+
+#: FlatCAMEditor.py:1208 flatcamTools/ToolTransform.py:601
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset X, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Offset X, use a number."
+
+#: FlatCAMEditor.py:1229 flatcamTools/ToolTransform.py:619
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset Y, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered for Offset Y, use a number."
+
+#: FlatCAMEditor.py:1247
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
+msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
+
+#: FlatCAMEditor.py:1250 flatcamTools/ToolTransform.py:640
+msgid "Appying Rotate"
+msgstr "Appying Rotate"
+
+#: FlatCAMEditor.py:1278
+msgid "[success] Done. Rotate completed."
+msgstr "[success] Done. Rotate completed."
+
+#: FlatCAMEditor.py:1294
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
+msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
+
+#: FlatCAMEditor.py:1297 flatcamTools/ToolTransform.py:692
+msgid "Applying Flip"
+msgstr "Applying Flip"
+
+#: FlatCAMEditor.py:1327
+msgid "[success] Flip on the Y axis done ..."
+msgstr "[success] Flip on the Y axis done ..."
+
+#: FlatCAMEditor.py:1330
+msgid "[success] Flip on the X axis done ..."
+msgstr "[success] Flip on the X axis done ..."
+
+#: FlatCAMEditor.py:1349
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
+msgstr ""
+"[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
+
+#: FlatCAMEditor.py:1352 flatcamTools/ToolTransform.py:762
+msgid "Applying Skew"
+msgstr "Applying Skew"
+
+#: FlatCAMEditor.py:1377
+#, python-format
+msgid "[success] Skew on the %s axis done ..."
+msgstr "[success] Skew on the %s axis done ..."
+
+#: FlatCAMEditor.py:1381 flatcamTools/ToolTransform.py:797
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed."
+msgstr "[ERROR_NOTCL] Due of %s, Skew action was not executed."
+
+#: FlatCAMEditor.py:1392
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
+msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
+
+#: FlatCAMEditor.py:1395 flatcamTools/ToolTransform.py:811
+msgid "Applying Scale"
+msgstr "Applying Scale"
+
+#: FlatCAMEditor.py:1428 flatcamTools/ToolTransform.py:849
+#, python-format
+msgid "[success] Scale on the %s axis done ..."
+msgstr "[success] Scale on the %s axis done ..."
+
+#: FlatCAMEditor.py:1431 flatcamTools/ToolTransform.py:852
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed."
+msgstr "[ERROR_NOTCL] Due of %s, Scale action was not executed."
+
+#: FlatCAMEditor.py:1440
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
+msgstr "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
+
+#: FlatCAMEditor.py:1443 flatcamTools/ToolTransform.py:864
+msgid "Applying Offset"
+msgstr "Applying Offset"
+
+#: FlatCAMEditor.py:1467
+#, python-format
+msgid "[success] Offset on the %s axis done ..."
+msgstr "[success] Offset on the %s axis done ..."
+
+#: FlatCAMEditor.py:1471 flatcamTools/ToolTransform.py:898
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed."
+msgstr "[ERROR_NOTCL] Due of %s, Offset action was not executed."
+
+#: FlatCAMEditor.py:1475
+msgid "Rotate ..."
+msgstr "Rotate ..."
+
+#: FlatCAMEditor.py:1476 FlatCAMEditor.py:1533 FlatCAMEditor.py:1550
+msgid "Enter an Angle Value (degrees):"
+msgstr "Enter an Angle Value (degrees):"
+
+#: FlatCAMEditor.py:1485
+msgid "[success] Geometry shape rotate done..."
+msgstr "[success] Geometry shape rotate done..."
+
+#: FlatCAMEditor.py:1490
+msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..."
+msgstr "[WARNING_NOTCL] Geometry shape rotate cancelled..."
+
+#: FlatCAMEditor.py:1496
+msgid "Offset on X axis ..."
+msgstr "Offset on X axis ..."
+
+#: FlatCAMEditor.py:1497 FlatCAMEditor.py:1516
+#, python-format
+msgid "Enter a distance Value (%s):"
+msgstr "Enter a distance Value (%s):"
+
+#: FlatCAMEditor.py:1506
+msgid "[success] Geometry shape offset on X axis done..."
+msgstr "[success] Geometry shape offset on X axis done..."
+
+#: FlatCAMEditor.py:1510
+msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..."
+msgstr "[WARNING_NOTCL] Geometry shape offset X cancelled..."
+
+#: FlatCAMEditor.py:1515
+msgid "Offset on Y axis ..."
+msgstr "Offset on Y axis ..."
+
+#: FlatCAMEditor.py:1525
+msgid "[success] Geometry shape offset on Y axis done..."
+msgstr "[success] Geometry shape offset on Y axis done..."
+
+#: FlatCAMEditor.py:1529
+msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
+msgstr "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
+
+#: FlatCAMEditor.py:1532
+msgid "Skew on X axis ..."
+msgstr "Skew on X axis ..."
+
+#: FlatCAMEditor.py:1542
+msgid "[success] Geometry shape skew on X axis done..."
+msgstr "[success] Geometry shape skew on X axis done..."
+
+#: FlatCAMEditor.py:1546
+msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..."
+msgstr "[WARNING_NOTCL] Geometry shape skew X cancelled..."
+
+#: FlatCAMEditor.py:1549
+msgid "Skew on Y axis ..."
+msgstr "Skew on Y axis ..."
+
+#: FlatCAMEditor.py:1559
+msgid "[success] Geometry shape skew on Y axis done..."
+msgstr "[success] Geometry shape skew on Y axis done..."
+
+#: FlatCAMEditor.py:1563
+msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
+msgstr "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
+
+#: FlatCAMEditor.py:1894 FlatCAMEditor.py:1933
+msgid "Click on CENTER ..."
+msgstr "Click on CENTER ..."
+
+#: FlatCAMEditor.py:1901
+msgid "Click on Circle perimeter point to complete ..."
+msgstr "Click on Circle perimeter point to complete ..."
+
+#: FlatCAMEditor.py:1925
+msgid "[success]Done. Adding Circle completed."
+msgstr "[success]Done. Adding Circle completed."
+
+#: FlatCAMEditor.py:1952
+msgid "Click on Start arc point ..."
+msgstr "Click on Start arc point ..."
+
+#: FlatCAMEditor.py:1956
+msgid "Click on End arc point to complete ..."
+msgstr "Click on End arc point to complete ..."
+
+#: FlatCAMEditor.py:2111
+msgid "[success]Done. Arc completed."
+msgstr "[success]Done. Arc completed."
+
+#: FlatCAMEditor.py:2123
+msgid "Click on 1st corner ..."
+msgstr "Click on 1st corner ..."
+
+#: FlatCAMEditor.py:2163
+msgid "Click on 1st point ..."
+msgstr "Click on 1st point ..."
+
+#: FlatCAMEditor.py:2170
+msgid "Click on next Point or click Right mouse button to complete ..."
+msgstr "Click on next Point or click Right mouse button to complete ..."
+
+#: FlatCAMEditor.py:2193
+msgid "[success]Done. Polygon completed."
+msgstr "[success]Done. Polygon completed."
+
+#: FlatCAMEditor.py:2212
+msgid "[success]Done. Path completed."
+msgstr "[success]Done. Path completed."
+
+#: FlatCAMEditor.py:2472 FlatCAMEditor.py:4034
+msgid "[WARNING_NOTCL] Move cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Move cancelled. No shape selected."
+
+#: FlatCAMEditor.py:2476
+msgid "Click on reference point."
+msgstr "Click on reference point."
+
+#: FlatCAMEditor.py:2479
+msgid "Click on destination point."
+msgstr "Click on destination point."
+
+#: FlatCAMEditor.py:2510
+msgid "[success]Done. Geometry(s) Move completed."
+msgstr "[success]Done. Geometry(s) Move completed."
+
+#: FlatCAMEditor.py:2555
+msgid "[success]Done. Geometry(s) Copy completed."
+msgstr "[success]Done. Geometry(s) Copy completed."
+
+#: FlatCAMEditor.py:2567
+msgid "Click on the Destination point..."
+msgstr "Click on the Destination point..."
+
+#: FlatCAMEditor.py:2581
+#, python-format
+msgid ""
+"[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are "
+"supported. Error: %s"
+msgstr ""
+"[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are "
+"supported. Error: %s"
+
+#: FlatCAMEditor.py:2591
+msgid "[success]Done. Adding Text completed."
+msgstr "[success]Done. Adding Text completed."
+
+#: FlatCAMEditor.py:2619
+msgid "Create buffer geometry ..."
+msgstr "Create buffer geometry ..."
+
+#: FlatCAMEditor.py:2630 FlatCAMEditor.py:2656 FlatCAMEditor.py:2682
+msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Buffer cancelled. No shape selected."
+
+#: FlatCAMEditor.py:2652
+msgid "[success]Done. Buffer Tool completed."
+msgstr "[success]Done. Buffer Tool completed."
+
+#: FlatCAMEditor.py:2678
+msgid "[success]Done. Buffer Int Tool completed."
+msgstr "[success]Done. Buffer Int Tool completed."
+
+#: FlatCAMEditor.py:2704
+msgid "[success]Done. Buffer Ext Tool completed."
+msgstr "[success]Done. Buffer Ext Tool completed."
+
+#: FlatCAMEditor.py:2737
+msgid "Create Paint geometry ..."
+msgstr "Create Paint geometry ..."
+
+#: FlatCAMEditor.py:2751
+msgid "Shape transformations ..."
+msgstr "Shape transformations ..."
+
+#: FlatCAMEditor.py:2776
+msgid "[WARNING_NOTCL] To add a drill first select a tool"
+msgstr "[WARNING_NOTCL] To add a drill first select a tool"
+
+#: FlatCAMEditor.py:2785 FlatCAMEditor.py:2875 FlatCAMEditor.py:3148
+#: FlatCAMEditor.py:3173
+msgid "Click on target location ..."
+msgstr "Click on target location ..."
+
+#: FlatCAMEditor.py:2825
+msgid "[success]Done. Drill added."
+msgstr "[success]Done. Drill added."
+
+#: FlatCAMEditor.py:2867
+msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table"
+msgstr ""
+"[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table"
+
+#: FlatCAMEditor.py:2892
+msgid "Click on the Drill Circular Array Start position"
+msgstr "Click on the Drill Circular Array Start position"
+
+#: FlatCAMEditor.py:2914
+msgid ""
+"[ERROR_NOTCL] The value is not Float. Check for comma instead of dot "
+"separator."
+msgstr ""
+"[ERROR_NOTCL] The value is not Float. Check for comma instead of dot "
+"separator."
+
+#: FlatCAMEditor.py:2917
+msgid "[ERROR_NOTCL] The value is mistyped. Check the value."
+msgstr "[ERROR_NOTCL] The value is mistyped. Check the value."
+
+#: FlatCAMEditor.py:3010
+msgid "[WARNING_NOTCL]Too many drills for the selected spacing angle."
+msgstr "[WARNING_NOTCL]Too many drills for the selected spacing angle."
+
+#: FlatCAMEditor.py:3027
+msgid "[success]Done. Drill Array added."
+msgstr "[success]Done. Drill Array added."
+
+#: FlatCAMEditor.py:3038
+msgid "Click on the Drill(s) to resize ..."
+msgstr "Click on the Drill(s) to resize ..."
+
+#: FlatCAMEditor.py:3058
+msgid ""
+"[ERROR_NOTCL]Resize drill(s) failed. Please enter a diameter for resize."
+msgstr ""
+"[ERROR_NOTCL]Resize drill(s) failed. Please enter a diameter for resize."
+
+#: FlatCAMEditor.py:3130
+msgid "[success]Done. Drill Resize completed."
+msgstr "[success]Done. Drill Resize completed."
+
+#: FlatCAMEditor.py:3150
+msgid "Click on reference location ..."
+msgstr "Click on reference location ..."
+
+#: FlatCAMEditor.py:3205
+msgid "[success]Done. Drill(s) Move completed."
+msgstr "[success]Done. Drill(s) Move completed."
+
+#: FlatCAMEditor.py:3258
+msgid "[success]Done. Drill(s) copied."
+msgstr "[success]Done. Drill(s) copied."
+
+#: FlatCAMEditor.py:3908 flatcamGUI/FlatCAMGUI.py:2114
+#: flatcamGUI/FlatCAMGUI.py:2126
+msgid "[success]Done."
+msgstr "[success]Done."
+
+#: FlatCAMEditor.py:4041
+msgid "[WARNING_NOTCL] Copy cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Copy cancelled. No shape selected."
+
+#: FlatCAMEditor.py:4048 flatcamGUI/FlatCAMGUI.py:2406
+#: flatcamGUI/FlatCAMGUI.py:2418 flatcamGUI/FlatCAMGUI.py:2452
+msgid "Click on target point."
+msgstr "Click on target point."
+
+#: FlatCAMEditor.py:4289
+msgid ""
+"[WARNING_NOTCL]A selection of at least 2 geo items is required to do "
+"Intersection."
+msgstr ""
+"[WARNING_NOTCL]A selection of at least 2 geo items is required to do "
+"Intersection."
+
+#: FlatCAMEditor.py:4327 FlatCAMEditor.py:4364 FlatCAMEditor.py:4436
+msgid ""
+"[ERROR_NOTCL]Negative buffer value is not accepted. Use Buffer interior to "
+"generate an 'inside' shape"
+msgstr ""
+"[ERROR_NOTCL]Negative buffer value is not accepted. Use Buffer interior to "
+"generate an 'inside' shape"
+
+#: FlatCAMEditor.py:4335 FlatCAMEditor.py:4373 FlatCAMEditor.py:4444
+msgid "[WARNING_NOTCL] Nothing selected for buffering."
+msgstr "[WARNING_NOTCL] Nothing selected for buffering."
+
+#: FlatCAMEditor.py:4339 FlatCAMEditor.py:4377 FlatCAMEditor.py:4448
+msgid "[WARNING_NOTCL] Invalid distance for buffering."
+msgstr "[WARNING_NOTCL] Invalid distance for buffering."
+
+#: FlatCAMEditor.py:4349 FlatCAMEditor.py:4457
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a different buffer value."
+msgstr ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a different buffer value."
+
+#: FlatCAMEditor.py:4357
+msgid "[success]Full buffer geometry created."
+msgstr "[success]Full buffer geometry created."
+
+#: FlatCAMEditor.py:4386
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a smaller buffer value."
+msgstr ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a smaller buffer value."
+
+#: FlatCAMEditor.py:4398 FlatCAMEditor.py:4469
+msgid "[success]Exterior buffer geometry created."
+msgstr "[success]Exterior buffer geometry created."
+
+#: FlatCAMEditor.py:4533
+msgid "[WARNING_NOTCL]Nothing selected for painting."
+msgstr "[WARNING_NOTCL]Nothing selected for painting."
+
+#: FlatCAMEditor.py:4539
+msgid "[WARNING] Invalid value for {}"
+msgstr "[WARNING] Invalid value for {}"
+
+#: FlatCAMEditor.py:4545
+msgid ""
+"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
+"(100%)."
+msgstr ""
+"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
+"(100%)."
+
+#: FlatCAMEditor.py:4604
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different method of Paint\n"
+"%s"
+msgstr ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different method of Paint\n"
+"%s"
+
+#: FlatCAMEditor.py:4615
+msgid "[success] Paint done."
+msgstr "[success] Paint done."
+
+#: FlatCAMEditor.py:4647
+msgid "Excellon Editor"
+msgstr "Excellon Editor"
+
+#: FlatCAMEditor.py:4654
+msgid "Name:"
+msgstr "Name:"
+
+#: FlatCAMEditor.py:4674 flatcamTools/ToolNonCopperClear.py:71
+#: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70
+msgid "Tools Table"
+msgstr "Tools Table"
+
+#: FlatCAMEditor.py:4676 flatcamGUI/ObjectUI.py:609
+msgid ""
+"Tools in this Excellon object\n"
+"when are used for drilling."
+msgstr ""
+"Tools in this Excellon object\n"
+"when are used for drilling."
+
+#: FlatCAMEditor.py:4685 FlatCAMEditor.py:5745 FlatCAMObj.py:2203
+#: FlatCAMObj.py:2297 FlatCAMObj.py:2408 flatcamGUI/ObjectUI.py:627
+#: flatcamTools/ToolNonCopperClear.py:82 flatcamTools/ToolPaint.py:80
+#: flatcamTools/ToolSolderPaste.py:81
+msgid "Diameter"
+msgstr "Diameter"
+
+#: FlatCAMEditor.py:4693
+msgid "Add/Delete Tool"
+msgstr "Add/Delete Tool"
+
+#: FlatCAMEditor.py:4695
+msgid ""
+"Add/Delete a tool to the tool list\n"
+"for this Excellon object."
+msgstr ""
+"Add/Delete a tool to the tool list\n"
+"for this Excellon object."
+
+#: FlatCAMEditor.py:4703 flatcamTools/ToolCutOut.py:77
+msgid "Tool Dia:"
+msgstr "Tool Dia:"
+
+#: FlatCAMEditor.py:4705 flatcamGUI/ObjectUI.py:1046
+msgid "Diameter for the new tool"
+msgstr "Diameter for the new tool"
+
+#: FlatCAMEditor.py:4714
+msgid "Add Tool"
+msgstr "Add Tool"
+
+#: FlatCAMEditor.py:4716
+msgid ""
+"Add a new tool to the tool list\n"
+"with the diameter specified above."
+msgstr ""
+"Add a new tool to the tool list\n"
+"with the diameter specified above."
+
+#: FlatCAMEditor.py:4726
+msgid "Delete Tool"
+msgstr "Delete Tool"
+
+#: FlatCAMEditor.py:4728
+msgid ""
+"Delete a tool in the tool list\n"
+"by selecting a row in the tool table."
+msgstr ""
+"Delete a tool in the tool list\n"
+"by selecting a row in the tool table."
+
+#: FlatCAMEditor.py:4746
+msgid "Resize Drill(s)"
+msgstr "Resize Drill(s)"
+
+#: FlatCAMEditor.py:4748
+msgid "Resize a drill or a selection of drills."
+msgstr "Resize a drill or a selection of drills."
+
+#: FlatCAMEditor.py:4755
+msgid "Resize Dia:"
+msgstr "Resize Dia:"
+
+#: FlatCAMEditor.py:4757
+msgid "Diameter to resize to."
+msgstr "Diameter to resize to."
+
+#: FlatCAMEditor.py:4765
+msgid "Resize"
+msgstr "Resize"
+
+#: FlatCAMEditor.py:4767
+msgid "Resize drill(s)"
+msgstr "Resize drill(s)"
+
+#: FlatCAMEditor.py:4789 flatcamGUI/FlatCAMGUI.py:1384
+msgid "Add Drill Array"
+msgstr "Add Drill Array"
+
+#: FlatCAMEditor.py:4791
+msgid "Add an array of drills (linear or circular array)"
+msgstr "Add an array of drills (linear or circular array)"
+
+#: FlatCAMEditor.py:4797
+msgid ""
+"Select the type of drills array to create.\n"
+"It can be Linear X(Y) or Circular"
+msgstr ""
+"Select the type of drills array to create.\n"
+"It can be Linear X(Y) or Circular"
+
+#: FlatCAMEditor.py:4800
+msgid "Linear"
+msgstr "Linear"
+
+#: FlatCAMEditor.py:4801
+msgid "Circular"
+msgstr "Circular"
+
+#: FlatCAMEditor.py:4808
+msgid "Nr of drills:"
+msgstr "Nr of drills:"
+
+#: FlatCAMEditor.py:4810
+msgid "Specify how many drills to be in the array."
+msgstr "Specify how many drills to be in the array."
+
+#: FlatCAMEditor.py:4827 FlatCAMEditor.py:4872
+msgid "Direction:"
+msgstr "Direction:"
+
+#: FlatCAMEditor.py:4829
+msgid ""
+"Direction on which the linear array is oriented:\n"
+"- 'X' - horizontal axis \n"
+"- 'Y' - vertical axis or \n"
+"- 'Angle' - a custom angle for the array inclination"
+msgstr ""
+"Direction on which the linear array is oriented:\n"
+"- 'X' - horizontal axis \n"
+"- 'Y' - vertical axis or \n"
+"- 'Angle' - a custom angle for the array inclination"
+
+#: FlatCAMEditor.py:4838
+msgid "Angle"
+msgstr "Angle"
+
+#: FlatCAMEditor.py:4842
+msgid "Pitch:"
+msgstr "Pitch:"
+
+#: FlatCAMEditor.py:4844
+msgid "Pitch = Distance between elements of the array."
+msgstr "Pitch = Distance between elements of the array."
+
+#: FlatCAMEditor.py:4853
+msgid ""
+"Angle at which the linear array is placed.\n"
+"The precision is of max 2 decimals.\n"
+"Min value is: -359.99 degrees.\n"
+"Max value is:  360.00 degrees."
+msgstr ""
+"Angle at which the linear array is placed.\n"
+"The precision is of max 2 decimals.\n"
+"Min value is: -359.99 degrees.\n"
+"Max value is:  360.00 degrees."
+
+#: FlatCAMEditor.py:4874
+msgid ""
+"Direction for circular array.Can be CW = clockwise or CCW = counter "
+"clockwise."
+msgstr ""
+"Direction for circular array.Can be CW = clockwise or CCW = counter "
+"clockwise."
+
+#: FlatCAMEditor.py:4889
+msgid "Angle at which each element in circular array is placed."
+msgstr "Angle at which each element in circular array is placed."
+
+#: FlatCAMEditor.py:5210 FlatCAMObj.py:1725
+msgid "Total Drills"
+msgstr "Total Drills"
+
+#: FlatCAMEditor.py:5242 FlatCAMObj.py:1751
+msgid "Total Slots"
+msgstr "Total Slots"
+
+#: FlatCAMEditor.py:5316 FlatCAMObj.py:1958 FlatCAMObj.py:3221
+#: FlatCAMObj.py:3527 FlatCAMObj.py:3714 FlatCAMObj.py:3727 FlatCAMObj.py:3844
+#: FlatCAMObj.py:4252 FlatCAMObj.py:4485 FlatCAMObj.py:4891
+#: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318
+#: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345
+#: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372
+#: flatcamTools/ToolCalculators.py:383 flatcamTools/ToolCalculators.py:394
+#: flatcamTools/ToolCalculators.py:405 flatcamTools/ToolFilm.py:241
+#: flatcamTools/ToolFilm.py:248 flatcamTools/ToolNonCopperClear.py:478
+#: flatcamTools/ToolNonCopperClear.py:625
+#: flatcamTools/ToolNonCopperClear.py:637 flatcamTools/ToolPaint.py:537
+#: flatcamTools/ToolPaint.py:607 flatcamTools/ToolPaint.py:743
+#: flatcamTools/ToolPaint.py:833 flatcamTools/ToolPaint.py:988
+#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335
+#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361
+#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384
+#: flatcamTools/ToolSolderPaste.py:755 flatcamTools/ToolSolderPaste.py:826
+msgid "[ERROR_NOTCL]Wrong value format entered, use a number."
+msgstr "[ERROR_NOTCL]Wrong value format entered, use a number."
+
+#: FlatCAMEditor.py:5329
+msgid ""
+"[WARNING_NOTCL]Tool already in the original or actual tool list.\n"
+"Save and reedit Excellon if you need to add this tool. "
+msgstr ""
+"[WARNING_NOTCL]Tool already in the original or actual tool list.\n"
+"Save and reedit Excellon if you need to add this tool. "
+
+#: FlatCAMEditor.py:5338 flatcamGUI/FlatCAMGUI.py:2481
+#, python-brace-format
+msgid "[success]Added new tool with dia: {dia} {units}"
+msgstr "[success]Added new tool with dia: {dia} {units}"
+
+#: FlatCAMEditor.py:5369
+msgid "[WARNING_NOTCL]Select a tool in Tool Table"
+msgstr "[WARNING_NOTCL]Select a tool in Tool Table"
+
+#: FlatCAMEditor.py:5402
+#, python-brace-format
+msgid "[success]Deleted tool with dia: {del_dia} {units}"
+msgstr "[success]Deleted tool with dia: {del_dia} {units}"
+
+#: FlatCAMEditor.py:5799
+msgid ""
+"[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon "
+"creation."
+msgstr ""
+"[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon "
+"creation."
+
+#: FlatCAMEditor.py:5808
+msgid "Creating Excellon."
+msgstr "Creating Excellon."
+
+#: FlatCAMEditor.py:5817
+msgid "[success]Excellon editing finished."
+msgstr "[success]Excellon editing finished."
+
+#: FlatCAMEditor.py:5834
+msgid "[WARNING_NOTCL]Cancelled. There is no Tool/Drill selected"
+msgstr "[WARNING_NOTCL]Cancelled. There is no Tool/Drill selected"
+
+#: FlatCAMEditor.py:6316
+msgid "[success]Done. Drill(s) deleted."
+msgstr "[success]Done. Drill(s) deleted."
+
+#: FlatCAMEditor.py:6386
+msgid "Click on the circular array Center position"
+msgstr "Click on the circular array Center position"
+
+#: FlatCAMObj.py:193
+#, python-brace-format
+msgid "[success]Name changed from {old} to {new}"
+msgstr "[success]Name changed from {old} to {new}"
+
+#: FlatCAMObj.py:532 FlatCAMObj.py:1886 FlatCAMObj.py:3149 FlatCAMObj.py:5296
+msgid "<span style=\"color:green;\"><b>Basic</b></span>"
+msgstr "<span style=\"color:green;\"><b>Basic</b></span>"
+
+#: FlatCAMObj.py:544 FlatCAMObj.py:1902 FlatCAMObj.py:3171 FlatCAMObj.py:5302
+msgid "<span style=\"color:red;\"><b>Advanced</b></span>"
+msgstr "<span style=\"color:red;\"><b>Advanced</b></span>"
+
+#: FlatCAMObj.py:899 FlatCAMObj.py:954
+#, python-format
+msgid "[success]Isolation geometry created: %s"
+msgstr "[success]Isolation geometry created: %s"
+
+#: FlatCAMObj.py:1029
+msgid ""
+"[ERROR_NOTCL] The aperture scale factor value is missing or wrong format."
+msgstr ""
+"[ERROR_NOTCL] The aperture scale factor value is missing or wrong format."
+
+#: FlatCAMObj.py:1044 FlatCAMObj.py:1079
+msgid ""
+"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
+"again."
+msgstr ""
+"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
+"again."
+
+#: FlatCAMObj.py:1064
+msgid "[ERROR_NOTCL] The aperture buffer value is missing or wrong format."
+msgstr "[ERROR_NOTCL] The aperture buffer value is missing or wrong format."
+
+#: FlatCAMObj.py:1136
+msgid "Generating Gerber"
+msgstr "Generating Gerber"
+
+#: FlatCAMObj.py:1144
+msgid "[ERROR_NOTCL] Cretion of Gerber failed."
+msgstr "[ERROR_NOTCL] Cretion of Gerber failed."
+
+#: FlatCAMObj.py:1151
+#, python-format
+msgid "[success] Created: %s"
+msgstr "[success] Created: %s"
+
+#: FlatCAMObj.py:1271
+msgid "Plotting Apertures"
+msgstr "Plotting Apertures"
+
+#: FlatCAMObj.py:2182 FlatCAMObj.py:2273 FlatCAMObj.py:2388
+msgid ""
+"[ERROR_NOTCL]Please select one or more tools from the list and try again."
+msgstr ""
+"[ERROR_NOTCL]Please select one or more tools from the list and try again."
+
+#: FlatCAMObj.py:2189
+msgid ""
+"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
+msgstr ""
+"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Tool_nr"
+msgstr "Tool_nr"
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Drills_Nr"
+msgstr "Drills_Nr"
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Slots_Nr"
+msgstr "Slots_Nr"
+
+#: FlatCAMObj.py:2283
+msgid ""
+"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
+msgstr ""
+"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
+
+#: FlatCAMObj.py:2446 FlatCAMObj.py:4140 FlatCAMObj.py:4351 FlatCAMObj.py:4666
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"z_pdepth\"] or self."
+"options[\"z_pdepth\"]"
+msgstr ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"z_pdepth\"] or self."
+"options[\"z_pdepth\"]"
+
+#: FlatCAMObj.py:2458 FlatCAMObj.py:4152 FlatCAMObj.py:4363 FlatCAMObj.py:4678
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"feedrate_probe\"] or "
+"self.options[\"feedrate_probe\"]"
+msgstr ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"feedrate_probe\"] or "
+"self.options[\"feedrate_probe\"]"
+
+#: FlatCAMObj.py:2490 FlatCAMObj.py:4553 FlatCAMObj.py:4558 FlatCAMObj.py:4704
+msgid "Generating CNC Code"
+msgstr "Generating CNC Code"
+
+#: FlatCAMObj.py:2516 FlatCAMObj.py:4850 camlib.py:4929 camlib.py:5365
+#: camlib.py:5636
+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]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. "
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3105 FlatCAMObj.py:3390
+msgid "Path"
+msgstr "Path"
+
+#: FlatCAMObj.py:2863
+msgid "In"
+msgstr "In"
+
+#: FlatCAMObj.py:2863
+msgid "Out"
+msgstr "Out"
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3186 FlatCAMObj.py:3759
+msgid "Custom"
+msgstr "Custom"
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3770 FlatCAMObj.py:3771 FlatCAMObj.py:3780
+msgid "Iso"
+msgstr "Iso"
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3107 FlatCAMObj.py:3392
+msgid "Rough"
+msgstr "Rough"
+
+#: FlatCAMObj.py:2864
+msgid "Finish"
+msgstr "Finish"
+
+#: FlatCAMObj.py:3142 flatcamGUI/FlatCAMGUI.py:463
+#: flatcamGUI/FlatCAMGUI.py:1388 flatcamGUI/ObjectUI.py:1067
+msgid "Copy"
+msgstr "Copy"
+
+#: FlatCAMObj.py:3144 flatcamGUI/FlatCAMGUI.py:464
+#: flatcamGUI/FlatCAMGUI.py:1389 flatcamGUI/ObjectUI.py:1075
+#: flatcamTools/ToolNonCopperClear.py:145 flatcamTools/ToolPaint.py:143
+#: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:480
+msgid "Delete"
+msgstr "Delete"
+
+#: FlatCAMObj.py:3362
+msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
+msgstr "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
+
+#: FlatCAMObj.py:3437
+msgid "[success] Tool added in Tool Table."
+msgstr "[success] Tool added in Tool Table."
+
+#: FlatCAMObj.py:3442
+msgid "[ERROR_NOTCL]Default Tool added. Wrong value format entered."
+msgstr "[ERROR_NOTCL]Default Tool added. Wrong value format entered."
+
+#: FlatCAMObj.py:3472 FlatCAMObj.py:3482
+msgid "[WARNING_NOTCL]Failed. Select a tool to copy."
+msgstr "[WARNING_NOTCL]Failed. Select a tool to copy."
+
+#: FlatCAMObj.py:3511
+msgid "[success] Tool was copied in Tool Table."
+msgstr "[success] Tool was copied in Tool Table."
+
+#: FlatCAMObj.py:3544
+msgid "[success] Tool was edited in Tool Table."
+msgstr "[success] Tool was edited in Tool Table."
+
+#: FlatCAMObj.py:3575 FlatCAMObj.py:3585
+msgid "[WARNING_NOTCL]Failed. Select a tool to delete."
+msgstr "[WARNING_NOTCL]Failed. Select a tool to delete."
+
+#: FlatCAMObj.py:3609
+msgid "[success] Tool was deleted in Tool Table."
+msgstr "[success] Tool was deleted in Tool Table."
+
+#: FlatCAMObj.py:4023
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This Geometry can't be processed because it is %s geometry."
+msgstr ""
+"[WARNING_NOTCL]This Geometry can't be processed because it is %s geometry."
+
+#: FlatCAMObj.py:4040
+msgid "[ERROR_NOTCL]Wrong Tool Dia value format entered, use a number."
+msgstr "[ERROR_NOTCL]Wrong Tool Dia value format entered, use a number."
+
+#: FlatCAMObj.py:4067
+msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
+msgstr "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
+
+#: FlatCAMObj.py:4105
+#, python-format
+msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
+msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
+
+#: FlatCAMObj.py:4261 FlatCAMObj.py:4494
+msgid ""
+"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
+"Add a Tool Offset or change the Offset Type."
+msgstr ""
+"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
+"Add a Tool Offset or change the Offset Type."
+
+#: FlatCAMObj.py:4375
+msgid "[ERROR_NOTCL]Cancelled. Empty file, it has no geometry..."
+msgstr "[ERROR_NOTCL]Cancelled. Empty file, it has no geometry..."
+
+#: FlatCAMObj.py:4737 FlatCAMObj.py:4747 camlib.py:3229 camlib.py:3238
+msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
+msgstr "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
+
+#: FlatCAMObj.py:4785
+msgid "[success]Geometry Scale done."
+msgstr "[success]Geometry Scale done."
+
+#: FlatCAMObj.py:4802 camlib.py:3300
+msgid ""
+"[ERROR_NOTCL]An (x,y) pair of values are needed. Probable you entered only "
+"one value in the Offset field."
+msgstr ""
+"[ERROR_NOTCL]An (x,y) pair of values are needed. Probable you entered only "
+"one value in the Offset field."
+
+#: FlatCAMObj.py:4822
+msgid "[success]Geometry Offset done."
+msgstr "[success]Geometry Offset done."
+
+#: FlatCAMObj.py:5364 FlatCAMObj.py:5369 flatcamTools/ToolSolderPaste.py:1360
+msgid "Export Machine Code ..."
+msgstr "Export Machine Code ..."
+
+#: FlatCAMObj.py:5375
+msgid "[WARNING_NOTCL]Export Machine Code cancelled ..."
+msgstr "[WARNING_NOTCL]Export Machine Code cancelled ..."
+
+#: FlatCAMObj.py:5386
+#, python-format
+msgid "[success] Machine Code file saved to: %s"
+msgstr "[success] Machine Code file saved to: %s"
+
+#: FlatCAMObj.py:5417
+#, python-format
+msgid "[ERROR]FlatCAMCNNJob.on_modifygcode_button_click() -->%s"
+msgstr "[ERROR]FlatCAMCNNJob.on_modifygcode_button_click() -->%s"
+
+#: FlatCAMObj.py:5523
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This CNCJob object can't be processed because it is a %s "
+"CNCJob object."
+msgstr ""
+"[WARNING_NOTCL]This CNCJob object can't be processed because it is a %s "
+"CNCJob object."
+
+#: FlatCAMObj.py:5576
+msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
+msgstr "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
+
+#: FlatCAMObj.py:5589
+msgid ""
+"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
+"empty."
+msgstr ""
+"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
+"empty."
+
+#: FlatCAMObj.py:5596
+msgid "[success] Toolchange G-code was replaced by a custom code."
+msgstr "[success] Toolchange G-code was replaced by a custom code."
+
+#: FlatCAMObj.py:5611 flatcamTools/ToolSolderPaste.py:1389
+msgid "[WARNING_NOTCL] No such file or directory"
+msgstr "[WARNING_NOTCL] No such file or directory"
+
+#: FlatCAMObj.py:5630 FlatCAMObj.py:5642
+msgid ""
+"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
+"'toolchange_custom'"
+msgstr ""
+"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
+"'toolchange_custom'"
+
+#: FlatCAMObj.py:5648
+msgid "[ERROR] There is no postprocessor file."
+msgstr "[ERROR] There is no postprocessor file."
+
+#: ObjectCollection.py:402
+#, python-brace-format
+msgid "Object renamed from {old} to {new}"
+msgstr "Object renamed from {old} to {new}"
+
+#: ObjectCollection.py:736
+#, python-format
+msgid "[ERROR] Cause of error: %s"
+msgstr "[ERROR] Cause of error: %s"
+
+#: camlib.py:200
+msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list."
+msgstr "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list."
+
+#: camlib.py:1387
+msgid "[success]Object was mirrored ..."
+msgstr "[success]Object was mirrored ..."
+
+#: camlib.py:1389
+msgid "[ERROR_NOTCL] Failed to mirror. No object selected"
+msgstr "[ERROR_NOTCL] Failed to mirror. No object selected"
+
+#: camlib.py:1425
+msgid "[success]Object was rotated ..."
+msgstr "[success]Object was rotated ..."
+
+#: camlib.py:1427
+msgid "[ERROR_NOTCL] Failed to rotate. No object selected"
+msgstr "[ERROR_NOTCL] Failed to rotate. No object selected"
+
+#: camlib.py:1461
+msgid "[success]Object was skewed ..."
+msgstr "[success]Object was skewed ..."
+
+#: camlib.py:1463
+msgid "[ERROR_NOTCL] Failed to skew. No object selected"
+msgstr "[ERROR_NOTCL] Failed to skew. No object selected"
+
+#: camlib.py:2647 camlib.py:2727
+#, python-format
+msgid "[WARNING] Coordinates missing, line ignored: %s"
+msgstr "[WARNING] Coordinates missing, line ignored: %s"
+
+#: camlib.py:2648 camlib.py:2728
+msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
+msgstr "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
+
+#: camlib.py:2696
+#, python-format
+msgid ""
+"[ERROR] Region does not have enough points. File will be processed but there "
+"are parser errors. Line number: %s"
+msgstr ""
+"[ERROR] Region does not have enough points. File will be processed but there "
+"are parser errors. Line number: %s"
+
+#: camlib.py:3051
+#, python-format
+msgid ""
+"[ERROR]Gerber Parser ERROR.\n"
+"%s:"
+msgstr ""
+"[ERROR]Gerber Parser ERROR.\n"
+"%s:"
+
+#: camlib.py:3267
+msgid "[success]Gerber Scale done."
+msgstr "[success]Gerber Scale done."
+
+#: camlib.py:3324
+msgid "[success]Gerber Offset done."
+msgstr "[success]Gerber Offset done."
+
+#: camlib.py:3700
+#, python-format
+msgid "[ERROR_NOTCL] This is GCODE mark: %s"
+msgstr "[ERROR_NOTCL] This is GCODE mark: %s"
+
+#: camlib.py:4230
+#, python-brace-format
+msgid ""
+"[ERROR] Excellon Parser error.\n"
+"Parsing Failed. Line {l_nr}: {line}\n"
+msgstr ""
+"[ERROR] Excellon Parser error.\n"
+"Parsing Failed. Line {l_nr}: {line}\n"
+
+#: camlib.py:4307
+msgid ""
+"[WARNING] 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() -> a drill location was skipped due of "
+"not having a tool associated.\n"
+"Check the resulting GCode."
+
+#: camlib.py:4843
+#, python-format
+msgid "[ERROR] There is no such parameter: %s"
+msgstr "[ERROR] There is no such parameter: %s"
+
+#: camlib.py:4908
+msgid ""
+"[WARNING] 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] 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)."
+
+#: camlib.py:4915 camlib.py:5388 camlib.py:5659
+#, python-format
+msgid ""
+"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
+msgstr ""
+"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
+
+#: camlib.py:5131 camlib.py:5226 camlib.py:5277
+msgid "[ERROR_NOTCL]The loaded Excellon file has no drills ..."
+msgstr "[ERROR_NOTCL]The loaded Excellon file has no drills ..."
+
+#: camlib.py:5231
+msgid "[ERROR_NOTCL] Wrong optimization type selected."
+msgstr "[ERROR_NOTCL] Wrong optimization type selected."
+
+#: camlib.py:5376 camlib.py:5647
+msgid ""
+"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
+"combinations of other parameters."
+msgstr ""
+"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
+"combinations of other parameters."
+
+#: camlib.py:5381 camlib.py:5652
+msgid ""
+"[WARNING] 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] 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)."
+
+#: camlib.py:5393 camlib.py:5664
+msgid "[ERROR_NOTCL] Travel Z parameter is None or zero."
+msgstr "[ERROR_NOTCL] Travel Z parameter is None or zero."
+
+#: camlib.py:5397 camlib.py:5668
+msgid ""
+"[WARNING] 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] 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)."
+
+#: camlib.py:5404 camlib.py:5675
+#, python-format
+msgid ""
+"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
+msgstr ""
+"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
+
+#: camlib.py:5534
+#, python-format
+msgid "[ERROR]Expected a Geometry, got %s"
+msgstr "[ERROR]Expected a Geometry, got %s"
+
+#: camlib.py:5540
+msgid ""
+"[ERROR_NOTCL]Trying to generate a CNC Job from a Geometry object without "
+"solid_geometry."
+msgstr ""
+"[ERROR_NOTCL]Trying to generate a CNC Job from a Geometry object without "
+"solid_geometry."
+
+#: camlib.py:5579
+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]The Tool Offset value is too negative to use for the "
+"current_geometry.\n"
+"Raise the value (in module) and try again."
+
+#: camlib.py:5801
+msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
+msgstr "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
+
+#: flatcamGUI/FlatCAMGUI.py:50
+msgid "&File"
+msgstr "&File"
+
+#: flatcamGUI/FlatCAMGUI.py:55
+msgid "&New Project ...\tCTRL+N"
+msgstr "&New Project ...\tCTRL+N"
+
+#: flatcamGUI/FlatCAMGUI.py:57
+msgid "Will create a new, blank project"
+msgstr "Will create a new, blank project"
+
+#: flatcamGUI/FlatCAMGUI.py:62
+msgid "&New"
+msgstr "&New"
+
+#: flatcamGUI/FlatCAMGUI.py:65
+msgid "Geometry\tN"
+msgstr "Geometry\tN"
+
+#: flatcamGUI/FlatCAMGUI.py:67
+msgid "Will create a new, empty Geometry Object."
+msgstr "Will create a new, empty Geometry Object."
+
+#: flatcamGUI/FlatCAMGUI.py:69
+msgid "Excellon\tL"
+msgstr "Excellon\tL"
+
+#: flatcamGUI/FlatCAMGUI.py:71
+msgid "Will create a new, empty Excellon Object."
+msgstr "Will create a new, empty Excellon Object."
+
+#: flatcamGUI/FlatCAMGUI.py:74
+msgid "Open"
+msgstr "Open"
+
+#: flatcamGUI/FlatCAMGUI.py:79
+msgid "Open &Gerber ...\tCTRL+G"
+msgstr "Open &Gerber ...\tCTRL+G"
+
+#: flatcamGUI/FlatCAMGUI.py:86
+msgid "Open &Excellon ...\tCTRL+E"
+msgstr "Open &Excellon ...\tCTRL+E"
+
+#: flatcamGUI/FlatCAMGUI.py:91
+msgid "Open G-&Code ..."
+msgstr "Open G-&Code ..."
+
+#: flatcamGUI/FlatCAMGUI.py:95
+msgid "Open &Project ..."
+msgstr "Open &Project ..."
+
+#: flatcamGUI/FlatCAMGUI.py:101
+msgid "Open Config ..."
+msgstr "Open Config ..."
+
+#: flatcamGUI/FlatCAMGUI.py:105
+msgid "Recent files"
+msgstr "Recent files"
+
+#: flatcamGUI/FlatCAMGUI.py:111
+msgid "Run Script ...\tSHIFT+S"
+msgstr "Run Script ...\tSHIFT+S"
+
+#: flatcamGUI/FlatCAMGUI.py:114
+msgid ""
+"Will run the opened Tcl Script thus\n"
+"enabling the automation of certain\n"
+"functions of FlatCAM."
+msgstr ""
+"Will run the opened Tcl Script thus\n"
+"enabling the automation of certain\n"
+"functions of FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:124
+msgid "Import"
+msgstr "Import"
+
+#: flatcamGUI/FlatCAMGUI.py:126
+msgid "&SVG as Geometry Object ..."
+msgstr "&SVG as Geometry Object ..."
+
+#: flatcamGUI/FlatCAMGUI.py:129
+msgid "&SVG as Gerber Object ..."
+msgstr "&SVG as Gerber Object ..."
+
+#: flatcamGUI/FlatCAMGUI.py:134
+msgid "&DXF as Geometry Object ..."
+msgstr "&DXF as Geometry Object ..."
+
+#: flatcamGUI/FlatCAMGUI.py:137
+msgid "&DXF as Gerber Object ..."
+msgstr "&DXF as Gerber Object ..."
+
+#: flatcamGUI/FlatCAMGUI.py:142
+msgid "Export"
+msgstr "Export"
+
+#: flatcamGUI/FlatCAMGUI.py:145
+msgid "Export &SVG ..."
+msgstr "Export &SVG ..."
+
+#: flatcamGUI/FlatCAMGUI.py:148
+msgid "Export DXF ..."
+msgstr "Export DXF ..."
+
+#: flatcamGUI/FlatCAMGUI.py:153
+msgid "Export &PNG ..."
+msgstr "Export &PNG ..."
+
+#: flatcamGUI/FlatCAMGUI.py:155
+msgid ""
+"Will export an image in PNG format,\n"
+"the saved image will contain the visual \n"
+"information currently in FlatCAM Plot Area."
+msgstr ""
+"Will export an image in PNG format,\n"
+"the saved image will contain the visual \n"
+"information currently in FlatCAM Plot Area."
+
+#: flatcamGUI/FlatCAMGUI.py:163
+msgid "Export &Excellon ..."
+msgstr "Export &Excellon ..."
+
+#: flatcamGUI/FlatCAMGUI.py:166
+msgid ""
+"Will export an Excellon Object as Excellon file,\n"
+"the coordinates format, the file units and zeros\n"
+"are set in Preferences -> Excellon Export."
+msgstr ""
+"Will export an Excellon Object as Excellon file,\n"
+"the coordinates format, the file units and zeros\n"
+"are set in Preferences -> Excellon Export."
+
+#: flatcamGUI/FlatCAMGUI.py:177
+msgid "Save &Defaults"
+msgstr "Save &Defaults"
+
+#: flatcamGUI/FlatCAMGUI.py:183 flatcamGUI/FlatCAMGUI.py:465
+msgid "Save"
+msgstr "Save"
+
+#: flatcamGUI/FlatCAMGUI.py:185
+msgid "&Save Project ..."
+msgstr "&Save Project ..."
+
+#: flatcamGUI/FlatCAMGUI.py:190
+msgid "Save Project &As ...\tCTRL+S"
+msgstr "Save Project &As ...\tCTRL+S"
+
+#: flatcamGUI/FlatCAMGUI.py:194
+msgid "Save Project C&opy ..."
+msgstr "Save Project C&opy ..."
+
+#: flatcamGUI/FlatCAMGUI.py:202
+msgid "E&xit"
+msgstr "E&xit"
+
+#: flatcamGUI/FlatCAMGUI.py:208
+msgid "&Edit"
+msgstr "&Edit"
+
+#: flatcamGUI/FlatCAMGUI.py:211
+msgid "Edit Object\tE"
+msgstr "Edit Object\tE"
+
+#: flatcamGUI/FlatCAMGUI.py:212
+msgid "Save && Close Editor\tCTRL+S"
+msgstr "Save && Close Editor\tCTRL+S"
+
+#: flatcamGUI/FlatCAMGUI.py:220
+msgid "Conversion"
+msgstr "Conversion"
+
+#: flatcamGUI/FlatCAMGUI.py:222
+msgid "&Join Geo/Gerber/Exc -> Geo"
+msgstr "&Join Geo/Gerber/Exc -> Geo"
+
+#: flatcamGUI/FlatCAMGUI.py:224
+msgid ""
+"Merge a selection of objects, which can be of type:\n"
+"- Gerber\n"
+"- Excellon\n"
+"- Geometry\n"
+"into a new combo Geometry object."
+msgstr ""
+"Merge a selection of objects, which can be of type:\n"
+"- Gerber\n"
+"- Excellon\n"
+"- Geometry\n"
+"into a new combo Geometry object."
+
+#: flatcamGUI/FlatCAMGUI.py:231
+msgid "Join Excellon(s) -> Excellon"
+msgstr "Join Excellon(s) -> Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:233
+msgid "Merge a selection of Excellon objects into a new combo Excellon object."
+msgstr ""
+"Merge a selection of Excellon objects into a new combo Excellon object."
+
+#: flatcamGUI/FlatCAMGUI.py:236
+msgid "Join Gerber(s) -> Gerber"
+msgstr "Join Gerber(s) -> Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:238
+msgid "Merge a selection of Gerber objects into a new combo Gerber object."
+msgstr "Merge a selection of Gerber objects into a new combo Gerber object."
+
+#: flatcamGUI/FlatCAMGUI.py:243
+msgid "Convert Single to MultiGeo"
+msgstr "Convert Single to MultiGeo"
+
+#: flatcamGUI/FlatCAMGUI.py:245
+msgid ""
+"Will convert a Geometry object from single_geometry type\n"
+"to a multi_geometry type."
+msgstr ""
+"Will convert a Geometry object from single_geometry type\n"
+"to a multi_geometry type."
+
+#: flatcamGUI/FlatCAMGUI.py:249
+msgid "Convert Multi to SingleGeo"
+msgstr "Convert Multi to SingleGeo"
+
+#: flatcamGUI/FlatCAMGUI.py:251
+msgid ""
+"Will convert a Geometry object from multi_geometry type\n"
+"to a single_geometry type."
+msgstr ""
+"Will convert a Geometry object from multi_geometry type\n"
+"to a single_geometry type."
+
+#: flatcamGUI/FlatCAMGUI.py:258
+msgid "&Copy Object\tCTRL+C"
+msgstr "&Copy Object\tCTRL+C"
+
+#: flatcamGUI/FlatCAMGUI.py:260
+msgid "Copy as &Geom"
+msgstr "Copy as &Geom"
+
+#: flatcamGUI/FlatCAMGUI.py:263
+msgid "&Delete\tDEL"
+msgstr "&Delete\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:267
+msgid "Se&t Origin\tO"
+msgstr "Se&t Origin\tO"
+
+#: flatcamGUI/FlatCAMGUI.py:268
+msgid "Jump to Location\tJ"
+msgstr "Jump to Location\tJ"
+
+#: flatcamGUI/FlatCAMGUI.py:273
+msgid "Toggle Units\tQ"
+msgstr "Toggle Units\tQ"
+
+#: flatcamGUI/FlatCAMGUI.py:275
+msgid "&Select All\tCTRL+A"
+msgstr "&Select All\tCTRL+A"
+
+#: flatcamGUI/FlatCAMGUI.py:279
+msgid "&Preferences\tSHIFT+P"
+msgstr "&Preferences\tSHIFT+P"
+
+#: flatcamGUI/FlatCAMGUI.py:282
+msgid "&Options"
+msgstr "&Options"
+
+#: flatcamGUI/FlatCAMGUI.py:297
+msgid "&Rotate Selection\tSHIFT+(R)"
+msgstr "&Rotate Selection\tSHIFT+(R)"
+
+#: flatcamGUI/FlatCAMGUI.py:302
+msgid "&Skew on X axis\tSHIFT+X"
+msgstr "&Skew on X axis\tSHIFT+X"
+
+#: flatcamGUI/FlatCAMGUI.py:304
+msgid "S&kew on Y axis\tSHIFT+Y"
+msgstr "S&kew on Y axis\tSHIFT+Y"
+
+#: flatcamGUI/FlatCAMGUI.py:309
+msgid "Flip on &X axis\tX"
+msgstr "Flip on &X axis\tX"
+
+#: flatcamGUI/FlatCAMGUI.py:311
+msgid "Flip on &Y axis\tY"
+msgstr "Flip on &Y axis\tY"
+
+#: flatcamGUI/FlatCAMGUI.py:316
+msgid "View source\tALT+S"
+msgstr "View source\tALT+S"
+
+#: flatcamGUI/FlatCAMGUI.py:321
+msgid "&View"
+msgstr "&View"
+
+#: flatcamGUI/FlatCAMGUI.py:322
+msgid "Enable all plots\tALT+1"
+msgstr "Enable all plots\tALT+1"
+
+#: flatcamGUI/FlatCAMGUI.py:324
+msgid "Disable all plots\tALT+2"
+msgstr "Disable all plots\tALT+2"
+
+#: flatcamGUI/FlatCAMGUI.py:326
+msgid "Disable non-selected\tALT+3"
+msgstr "Disable non-selected\tALT+3"
+
+#: flatcamGUI/FlatCAMGUI.py:329
+msgid "&Zoom Fit\tV"
+msgstr "&Zoom Fit\tV"
+
+#: flatcamGUI/FlatCAMGUI.py:330
+msgid "&Zoom In\t-"
+msgstr "&Zoom In\t-"
+
+#: flatcamGUI/FlatCAMGUI.py:331
+msgid "&Zoom Out\t="
+msgstr "&Zoom Out\t="
+
+#: flatcamGUI/FlatCAMGUI.py:335
+msgid "Toggle Code Editor\tCTRL+E"
+msgstr "Toggle Code Editor\tCTRL+E"
+
+#: flatcamGUI/FlatCAMGUI.py:338
+msgid "&Toggle FullScreen\tALT+F10"
+msgstr "&Toggle FullScreen\tALT+F10"
+
+#: flatcamGUI/FlatCAMGUI.py:340
+msgid "&Toggle Plot Area\tCTRL+F10"
+msgstr "&Toggle Plot Area\tCTRL+F10"
+
+#: flatcamGUI/FlatCAMGUI.py:342
+msgid "&Toggle Project/Sel/Tool\t`"
+msgstr "&Toggle Project/Sel/Tool\t`"
+
+#: flatcamGUI/FlatCAMGUI.py:345
+msgid "&Toggle Grid Snap\tG"
+msgstr "&Toggle Grid Snap\tG"
+
+#: flatcamGUI/FlatCAMGUI.py:347
+msgid "&Toggle Axis\tSHIFT+G"
+msgstr "&Toggle Axis\tSHIFT+G"
+
+#: flatcamGUI/FlatCAMGUI.py:350
+msgid "Toggle Workspace\tSHIFT+W"
+msgstr "Toggle Workspace\tSHIFT+W"
+
+#: flatcamGUI/FlatCAMGUI.py:354
+msgid "&Tool"
+msgstr "&Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:356
+msgid "&Command Line\tS"
+msgstr "&Command Line\tS"
+
+#: flatcamGUI/FlatCAMGUI.py:359
+msgid "&Help"
+msgstr "&Help"
+
+#: flatcamGUI/FlatCAMGUI.py:360
+msgid "Help\tF1"
+msgstr "Help\tF1"
+
+#: flatcamGUI/FlatCAMGUI.py:361
+msgid "FlatCAM.org"
+msgstr "FlatCAM.org"
+
+#: flatcamGUI/FlatCAMGUI.py:364
+msgid "Shortcuts List\tF3"
+msgstr "Shortcuts List\tF3"
+
+#: flatcamGUI/FlatCAMGUI.py:365
+msgid "YouTube Channel\tF4"
+msgstr "YouTube Channel\tF4"
+
+#: flatcamGUI/FlatCAMGUI.py:367
+msgid "About"
+msgstr "About"
+
+#: flatcamGUI/FlatCAMGUI.py:378
+msgid "Add Circle\tO"
+msgstr "Add Circle\tO"
+
+#: flatcamGUI/FlatCAMGUI.py:380
+msgid "Add Arc\tA"
+msgstr "Add Arc\tA"
+
+#: flatcamGUI/FlatCAMGUI.py:383
+msgid "Add Rectangle\tR"
+msgstr "Add Rectangle\tR"
+
+#: flatcamGUI/FlatCAMGUI.py:386
+msgid "Add Polygon\tN"
+msgstr "Add Polygon\tN"
+
+#: flatcamGUI/FlatCAMGUI.py:388
+msgid "Add Path\tP"
+msgstr "Add Path\tP"
+
+#: flatcamGUI/FlatCAMGUI.py:390
+msgid "Add Text\tT"
+msgstr "Add Text\tT"
+
+#: flatcamGUI/FlatCAMGUI.py:393
+msgid "Polygon Union\tU"
+msgstr "Polygon Union\tU"
+
+#: flatcamGUI/FlatCAMGUI.py:395
+msgid "Polygon Intersection\tE"
+msgstr "Polygon Intersection\tE"
+
+#: flatcamGUI/FlatCAMGUI.py:397
+msgid "Polygon Subtraction\tS"
+msgstr "Polygon Subtraction\tS"
+
+#: flatcamGUI/FlatCAMGUI.py:401
+msgid "Cut Path\tX"
+msgstr "Cut Path\tX"
+
+#: flatcamGUI/FlatCAMGUI.py:403
+msgid "Copy Geom\tC"
+msgstr "Copy Geom\tC"
+
+#: flatcamGUI/FlatCAMGUI.py:405
+msgid "Delete Shape\tDEL"
+msgstr "Delete Shape\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:408
+msgid "Move\tM"
+msgstr "Move\tM"
+
+#: flatcamGUI/FlatCAMGUI.py:410
+msgid "Buffer Tool\tB"
+msgstr "Buffer Tool\tB"
+
+#: flatcamGUI/FlatCAMGUI.py:413
+msgid "Paint Tool\tI"
+msgstr "Paint Tool\tI"
+
+#: flatcamGUI/FlatCAMGUI.py:416
+msgid "Transform Tool\tALT+R"
+msgstr "Transform Tool\tALT+R"
+
+#: flatcamGUI/FlatCAMGUI.py:420
+msgid "Toggle Corner Snap\tK"
+msgstr "Toggle Corner Snap\tK"
+
+#: flatcamGUI/FlatCAMGUI.py:423
+msgid ">Excellon Editor<"
+msgstr ">Excellon Editor<"
+
+#: flatcamGUI/FlatCAMGUI.py:427
+msgid "Add Drill Array\tA"
+msgstr "Add Drill Array\tA"
+
+#: flatcamGUI/FlatCAMGUI.py:429
+msgid "Add Drill\tD"
+msgstr "Add Drill\tD"
+
+#: flatcamGUI/FlatCAMGUI.py:433
+msgid "Resize Drill(S)\tR"
+msgstr "Resize Drill(S)\tR"
+
+#: flatcamGUI/FlatCAMGUI.py:435
+msgid "Copy\tC"
+msgstr "Copy\tC"
+
+#: flatcamGUI/FlatCAMGUI.py:437
+msgid "Delete\tDEL"
+msgstr "Delete\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:442
+msgid "Move Drill(s)\tM"
+msgstr "Move Drill(s)\tM"
+
+#: flatcamGUI/FlatCAMGUI.py:456
+msgid "Enable Plot"
+msgstr "Enable Plot"
+
+#: flatcamGUI/FlatCAMGUI.py:457
+msgid "Disable Plot"
+msgstr "Disable Plot"
+
+#: flatcamGUI/FlatCAMGUI.py:459
+msgid "Generate CNC"
+msgstr "Generate CNC"
+
+#: flatcamGUI/FlatCAMGUI.py:460
+msgid "View Source"
+msgstr "View Source"
+
+#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:1390
+msgid "Edit"
+msgstr "Edit"
+
+#: flatcamGUI/FlatCAMGUI.py:468 flatcamGUI/FlatCAMGUI.py:1396
+#: flatcamTools/ToolProperties.py:25
+msgid "Properties"
+msgstr "Properties"
+
+#: flatcamGUI/FlatCAMGUI.py:497
+msgid "File Toolbar"
+msgstr "File Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:501
+msgid "Edit Toolbar"
+msgstr "Edit Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:505
+msgid "View Toolbar"
+msgstr "View Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:509
+msgid "Shell Toolbar"
+msgstr "Shell Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:513
+msgid "Tools Toolbar"
+msgstr "Tools Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:517
+msgid "Excellon Editor Toolbar"
+msgstr "Excellon Editor Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:521
+msgid "Geometry Editor Toolbar"
+msgstr "Geometry Editor Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:525
+msgid "Grid Toolbar"
+msgstr "Grid Toolbar"
+
+#: flatcamGUI/FlatCAMGUI.py:544 flatcamGUI/FlatCAMGUI.py:1593
+msgid "Open project"
+msgstr "Open project"
+
+#: flatcamGUI/FlatCAMGUI.py:545 flatcamGUI/FlatCAMGUI.py:1594
+msgid "Save project"
+msgstr "Save project"
+
+#: flatcamGUI/FlatCAMGUI.py:548 flatcamGUI/FlatCAMGUI.py:1597
+msgid "New Blank Geometry"
+msgstr "New Blank Geometry"
+
+#: flatcamGUI/FlatCAMGUI.py:549 flatcamGUI/FlatCAMGUI.py:1598
+msgid "New Blank Excellon"
+msgstr "New Blank Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:551 flatcamGUI/FlatCAMGUI.py:1600
+msgid "Editor"
+msgstr "Editor"
+
+#: flatcamGUI/FlatCAMGUI.py:553 flatcamGUI/FlatCAMGUI.py:1602
+msgid "Save Object and close the Editor"
+msgstr "Save Object and close the Editor"
+
+#: flatcamGUI/FlatCAMGUI.py:557 flatcamGUI/FlatCAMGUI.py:1606
+msgid "&Delete"
+msgstr "&Delete"
+
+#: flatcamGUI/FlatCAMGUI.py:560 flatcamGUI/FlatCAMGUI.py:1609
+msgid "&Replot"
+msgstr "&Replot"
+
+#: flatcamGUI/FlatCAMGUI.py:561 flatcamGUI/FlatCAMGUI.py:1610
+msgid "&Clear plot"
+msgstr "&Clear plot"
+
+#: flatcamGUI/FlatCAMGUI.py:562 flatcamGUI/FlatCAMGUI.py:1611
+msgid "Zoom In"
+msgstr "Zoom In"
+
+#: flatcamGUI/FlatCAMGUI.py:563 flatcamGUI/FlatCAMGUI.py:1612
+msgid "Zoom Out"
+msgstr "Zoom Out"
+
+#: flatcamGUI/FlatCAMGUI.py:564 flatcamGUI/FlatCAMGUI.py:1370
+#: flatcamGUI/FlatCAMGUI.py:1613
+msgid "Zoom Fit"
+msgstr "Zoom Fit"
+
+#: flatcamGUI/FlatCAMGUI.py:569 flatcamGUI/FlatCAMGUI.py:1618
+msgid "&Command Line"
+msgstr "&Command Line"
+
+#: flatcamGUI/FlatCAMGUI.py:572 flatcamGUI/FlatCAMGUI.py:1621
+msgid "2Sided Tool"
+msgstr "2Sided Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:573 flatcamGUI/FlatCAMGUI.py:1622
+msgid "&Cutout Tool"
+msgstr "&Cutout Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:574 flatcamGUI/FlatCAMGUI.py:1623
+#: flatcamGUI/ObjectUI.py:463 flatcamTools/ToolNonCopperClear.py:283
+msgid "NCC Tool"
+msgstr "NCC Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:578 flatcamGUI/FlatCAMGUI.py:1627
+msgid "Panel Tool"
+msgstr "Panel Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:579 flatcamGUI/FlatCAMGUI.py:1628
+#: flatcamTools/ToolFilm.py:204
+msgid "Film Tool"
+msgstr "Film Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:580 flatcamGUI/FlatCAMGUI.py:1630
+msgid "SolderPaste Tool"
+msgstr "SolderPaste Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:583 flatcamGUI/FlatCAMGUI.py:1634
+msgid "Calculators Tool"
+msgstr "Calculators Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:587 flatcamGUI/FlatCAMGUI.py:601
+#: flatcamGUI/FlatCAMGUI.py:1638
+msgid "Select"
+msgstr "Select"
+
+#: flatcamGUI/FlatCAMGUI.py:588 flatcamGUI/FlatCAMGUI.py:1639
+msgid "Add Drill Hole"
+msgstr "Add Drill Hole"
+
+#: flatcamGUI/FlatCAMGUI.py:591 flatcamGUI/FlatCAMGUI.py:1642
+msgid "Resize Drill"
+msgstr "Resize Drill"
+
+#: flatcamGUI/FlatCAMGUI.py:594 flatcamGUI/FlatCAMGUI.py:1645
+msgid "Copy Drill"
+msgstr "Copy Drill"
+
+#: flatcamGUI/FlatCAMGUI.py:595 flatcamGUI/FlatCAMGUI.py:1647
+msgid "Delete Drill"
+msgstr "Delete Drill"
+
+#: flatcamGUI/FlatCAMGUI.py:598 flatcamGUI/FlatCAMGUI.py:1650
+msgid "Move Drill"
+msgstr "Move Drill"
+
+#: flatcamGUI/FlatCAMGUI.py:602 flatcamGUI/FlatCAMGUI.py:1654
+msgid "Add Circle"
+msgstr "Add Circle"
+
+#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1655
+msgid "Add Arc"
+msgstr "Add Arc"
+
+#: flatcamGUI/FlatCAMGUI.py:605 flatcamGUI/FlatCAMGUI.py:1657
+msgid "Add Rectangle"
+msgstr "Add Rectangle"
+
+#: flatcamGUI/FlatCAMGUI.py:608 flatcamGUI/FlatCAMGUI.py:1660
+msgid "Add Path"
+msgstr "Add Path"
+
+#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1662
+msgid "Add Polygon"
+msgstr "Add Polygon"
+
+#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1664
+msgid "Add Text"
+msgstr "Add Text"
+
+#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1666
+msgid "Add Buffer"
+msgstr "Add Buffer"
+
+#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1667
+msgid "Paint Shape"
+msgstr "Paint Shape"
+
+#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1670
+msgid "Polygon Union"
+msgstr "Polygon Union"
+
+#: flatcamGUI/FlatCAMGUI.py:618 flatcamGUI/FlatCAMGUI.py:1672
+msgid "Polygon Intersection"
+msgstr "Polygon Intersection"
+
+#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1674
+msgid "Polygon Subtraction"
+msgstr "Polygon Subtraction"
+
+#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1677
+msgid "Cut Path"
+msgstr "Cut Path"
+
+#: flatcamGUI/FlatCAMGUI.py:624
+msgid "Copy Shape(s)"
+msgstr "Copy Shape(s)"
+
+#: flatcamGUI/FlatCAMGUI.py:627
+msgid "Delete Shape '-'"
+msgstr "Delete Shape '-'"
+
+#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1682
+msgid "Transformations"
+msgstr "Transformations"
+
+#: flatcamGUI/FlatCAMGUI.py:631
+msgid "Move Objects "
+msgstr "Move Objects "
+
+#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1691
+msgid "Snap to grid"
+msgstr "Snap to grid"
+
+#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1694
+msgid "Grid X snapping distance"
+msgstr "Grid X snapping distance"
+
+#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1699
+msgid "Grid Y snapping distance"
+msgstr "Grid Y snapping distance"
+
+#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1705
+msgid ""
+"When active, value on Grid_X\n"
+"is copied to the Grid_Y value."
+msgstr ""
+"When active, value on Grid_X\n"
+"is copied to the Grid_Y value."
+
+#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1711
+msgid "Snap to corner"
+msgstr "Snap to corner"
+
+#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1715
+#: flatcamGUI/FlatCAMGUI.py:2787
+msgid "Max. magnet distance"
+msgstr "Max. magnet distance"
+
+#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1364
+msgid "Project"
+msgstr "Project"
+
+#: flatcamGUI/FlatCAMGUI.py:684
+msgid "Selected"
+msgstr "Selected"
+
+#: flatcamGUI/FlatCAMGUI.py:691
+msgid "Tool"
+msgstr "Tool"
+
+#: flatcamGUI/FlatCAMGUI.py:703 flatcamGUI/FlatCAMGUI.py:711
+msgid "Plot Area"
+msgstr "Plot Area"
+
+#: flatcamGUI/FlatCAMGUI.py:735
+msgid "General"
+msgstr "General"
+
+#: flatcamGUI/FlatCAMGUI.py:744
+msgid "APP.  DEFAULTS"
+msgstr "APP.  DEFAULTS"
+
+#: flatcamGUI/FlatCAMGUI.py:745
+msgid "PROJ. OPTIONS "
+msgstr "PROJ. OPTIONS "
+
+#: flatcamGUI/FlatCAMGUI.py:756
+msgid "GERBER"
+msgstr "GERBER"
+
+#: flatcamGUI/FlatCAMGUI.py:765
+msgid "EXCELLON"
+msgstr "EXCELLON"
+
+#: flatcamGUI/FlatCAMGUI.py:774
+msgid "GEOMETRY"
+msgstr "GEOMETRY"
+
+#: flatcamGUI/FlatCAMGUI.py:784
+msgid "CNC-JOB"
+msgstr "CNC-JOB"
+
+#: flatcamGUI/FlatCAMGUI.py:793
+msgid "TOOLS"
+msgstr "TOOLS"
+
+#: flatcamGUI/FlatCAMGUI.py:810
+msgid "Import Preferences"
+msgstr "Import Preferences"
+
+#: flatcamGUI/FlatCAMGUI.py:813
+msgid ""
+"Import a full set of FlatCAM settings from a file\n"
+"previously saved on HDD.\n"
+"\n"
+"FlatCAM automatically save a 'factory_defaults' file\n"
+"on the first start. Do not delete that file."
+msgstr ""
+"Import a full set of FlatCAM settings from a file\n"
+"previously saved on HDD.\n"
+"\n"
+"FlatCAM automatically save a 'factory_defaults' file\n"
+"on the first start. Do not delete that file."
+
+#: flatcamGUI/FlatCAMGUI.py:820
+msgid "Export Preferences"
+msgstr "Export Preferences"
+
+#: flatcamGUI/FlatCAMGUI.py:823
+msgid ""
+"Export a full set of FlatCAM settings in a file\n"
+"that is saved on HDD."
+msgstr ""
+"Export a full set of FlatCAM settings in a file\n"
+"that is saved on HDD."
+
+#: flatcamGUI/FlatCAMGUI.py:828
+msgid "Open Pref Folder"
+msgstr "Open Pref Folder"
+
+#: flatcamGUI/FlatCAMGUI.py:831
+msgid "Open the folder where FlatCAM save the preferences files."
+msgstr "Open the folder where FlatCAM save the preferences files."
+
+#: flatcamGUI/FlatCAMGUI.py:839
+msgid "Save Preferences"
+msgstr "Save Preferences"
+
+#: flatcamGUI/FlatCAMGUI.py:842
+msgid ""
+"Save the current settings in the 'current_defaults' file\n"
+"which is the file storing the working default preferences."
+msgstr ""
+"Save the current settings in the 'current_defaults' file\n"
+"which is the file storing the working default preferences."
+
+#: flatcamGUI/FlatCAMGUI.py:868
+msgid ""
+"<b>General Shortcut list</b><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>F3</strong></"
+"td>\n"
+"                        <td width=\"194\"><span style=\"color:"
+"#006400\"><strong>&nbsp;SHOW SHORTCUT LIST</strong></span></td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>1</strong></td>\n"
+"                        <td>&nbsp;Switch to Project Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>2</strong></td>\n"
+"                        <td>&nbsp;Switch to Selected Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>3</strong></td>\n"
+"                        <td>&nbsp;Switch to Tool Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Edit Object (if selected)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>G</strong></td>\n"
+"                        <td>&nbsp;Grid On/Off</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Coordinates</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>L</strong></td>\n"
+"                        <td>&nbsp;New Excellon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;New Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Set Origin</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Q</strong></td>\n"
+"                        <td>&nbsp;Change Units</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Open Properties Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Shell Toggle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a Tool (when in Geometry Selected Tab "
+"or in Tools NCC or Tools Paint)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>V</strong></td>\n"
+"                        <td>&nbsp;Zoom Fit</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip on X_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip on Y_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;=&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom Out</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;-&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom In</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+A</strong></td>\n"
+"                        <td>&nbsp;Select All</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+E</strong></td>\n"
+"                        <td>&nbsp;Open Excellon File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+G</strong></td>\n"
+"                        <td>&nbsp;Open Gerber File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+N</strong></td>\n"
+"                        <td>&nbsp;New Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+O</strong></td>\n"
+"                        <td>&nbsp;Open Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Project As</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Plot Area</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj_Name</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+E</strong></td>\n"
+"                        <td>&nbsp;Toggle Code Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+G</strong></td>\n"
+"                        <td>&nbsp;Toggle the axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+P</strong></td>\n"
+"                        <td>&nbsp;Open Preferences Window</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CCW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+S</strong></td>\n"
+"                        <td>&nbsp;Run a Script</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+W</strong></td>\n"
+"                        <td>&nbsp;Toggle the workspace</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+C</strong></td>\n"
+"                        <td>&nbsp;Calculators Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+D</strong></td>\n"
+"                        <td>&nbsp;2-Sided PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+K</strong></td>\n"
+"                        <td>&nbsp;Solder Paste Dispensing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+L</strong></td>\n"
+"                        <td>&nbsp;Film PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+N</strong></td>\n"
+"                        <td>&nbsp;Non-Copper Clearing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+P</strong></td>\n"
+"                        <td>&nbsp;Paint Area Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Transformations Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+S</strong></td>\n"
+"                        <td>&nbsp;View File Source</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+U</strong></td>\n"
+"                        <td>&nbsp;Cutout PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+1</strong></td>\n"
+"                        <td>&nbsp;Enable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+2</strong></td>\n"
+"                        <td>&nbsp;Disable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+3</strong></td>\n"
+"                        <td>&nbsp;Disable Non-selected Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Full Screen</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F1</strong></td>\n"
+"                        <td>&nbsp;Open Online Manual</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F4</strong></td>\n"
+"                        <td>&nbsp;Open Online Tutorials</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Object</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>'`'</strong></td>\n"
+"                        <td>&nbsp;(left to Key_1)Toogle Notebook Area (Left "
+"Side)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SPACE</strong></td>\n"
+"                        <td>&nbsp;En(Dis)able Obj Plot</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Escape</strong></td>\n"
+"                        <td>&nbsp;Deselects all objects</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"    \n"
+"            "
+msgstr ""
+"<b>General Shortcut list</b><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>F3</strong></"
+"td>\n"
+"                        <td width=\"194\"><span style=\"color:"
+"#006400\"><strong>&nbsp;SHOW SHORTCUT LIST</strong></span></td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>1</strong></td>\n"
+"                        <td>&nbsp;Switch to Project Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>2</strong></td>\n"
+"                        <td>&nbsp;Switch to Selected Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>3</strong></td>\n"
+"                        <td>&nbsp;Switch to Tool Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Edit Object (if selected)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>G</strong></td>\n"
+"                        <td>&nbsp;Grid On/Off</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Coordinates</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>L</strong></td>\n"
+"                        <td>&nbsp;New Excellon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;New Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Set Origin</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Q</strong></td>\n"
+"                        <td>&nbsp;Change Units</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Open Properties Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Shell Toggle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a Tool (when in Geometry Selected Tab "
+"or in Tools NCC or Tools Paint)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>V</strong></td>\n"
+"                        <td>&nbsp;Zoom Fit</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip on X_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip on Y_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;=&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom Out</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;-&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom In</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+A</strong></td>\n"
+"                        <td>&nbsp;Select All</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+E</strong></td>\n"
+"                        <td>&nbsp;Open Excellon File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+G</strong></td>\n"
+"                        <td>&nbsp;Open Gerber File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+N</strong></td>\n"
+"                        <td>&nbsp;New Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+O</strong></td>\n"
+"                        <td>&nbsp;Open Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Project As</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Plot Area</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj_Name</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+E</strong></td>\n"
+"                        <td>&nbsp;Toggle Code Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+G</strong></td>\n"
+"                        <td>&nbsp;Toggle the axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+P</strong></td>\n"
+"                        <td>&nbsp;Open Preferences Window</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CCW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+S</strong></td>\n"
+"                        <td>&nbsp;Run a Script</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+W</strong></td>\n"
+"                        <td>&nbsp;Toggle the workspace</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+C</strong></td>\n"
+"                        <td>&nbsp;Calculators Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+D</strong></td>\n"
+"                        <td>&nbsp;2-Sided PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+K</strong></td>\n"
+"                        <td>&nbsp;Solder Paste Dispensing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+L</strong></td>\n"
+"                        <td>&nbsp;Film PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+N</strong></td>\n"
+"                        <td>&nbsp;Non-Copper Clearing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+P</strong></td>\n"
+"                        <td>&nbsp;Paint Area Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Transformations Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+S</strong></td>\n"
+"                        <td>&nbsp;View File Source</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+U</strong></td>\n"
+"                        <td>&nbsp;Cutout PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+1</strong></td>\n"
+"                        <td>&nbsp;Enable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+2</strong></td>\n"
+"                        <td>&nbsp;Disable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+3</strong></td>\n"
+"                        <td>&nbsp;Disable Non-selected Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Full Screen</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F1</strong></td>\n"
+"                        <td>&nbsp;Open Online Manual</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F4</strong></td>\n"
+"                        <td>&nbsp;Open Online Tutorials</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Object</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>'`'</strong></td>\n"
+"                        <td>&nbsp;(left to Key_1)Toogle Notebook Area (Left "
+"Side)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SPACE</strong></td>\n"
+"                        <td>&nbsp;En(Dis)able Obj Plot</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Escape</strong></td>\n"
+"                        <td>&nbsp;Deselects all objects</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"    \n"
+"            "
+
+#: flatcamGUI/FlatCAMGUI.py:1145
+msgid ""
+"<b>Editor Shortcut list</b><br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#0000ff\">GEOMETRY EDITOR</span></"
+"strong><br>\n"
+"    \n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Draw an Arc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>B</strong></td>\n"
+"                        <td>&nbsp;Buffer Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Polygon Intersection Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>I</strong></td>\n"
+"                        <td>&nbsp;Paint Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>K</strong></td>\n"
+"                        <td>&nbsp;Toggle Corner Snap</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Draw a Polygon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Draw a Circle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Draw a Path</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Draw Rectangle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Polygon Substraction Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add Text Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>U</strong></td>\n"
+"                        <td>&nbsp;Polygon Union Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Editor Transformation Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+X</strong></td>\n"
+"                        <td>&nbsp;Offset shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+Y</strong></td>\n"
+"                        <td>&nbsp;Offset shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+X</strong></td>\n"
+"                        <td>&nbsp;Polygon Cut Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Space</strong></td>\n"
+"                        <td>&nbsp;Rotate Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ENTER</strong></td>\n"
+"                        <td>&nbsp;Finish drawing for certain tools</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Shape</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"            <br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#ff0000\">EXCELLON EDITOR</span></"
+"strong><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Add Drill Array</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>D</strong></td>\n"
+"                        <td>&nbsp;Add Drill</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Resize Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a new Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"                    "
+msgstr ""
+"<b>Editor Shortcut list</b><br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#0000ff\">GEOMETRY EDITOR</span></"
+"strong><br>\n"
+"    \n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Draw an Arc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>B</strong></td>\n"
+"                        <td>&nbsp;Buffer Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Polygon Intersection Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>I</strong></td>\n"
+"                        <td>&nbsp;Paint Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>K</strong></td>\n"
+"                        <td>&nbsp;Toggle Corner Snap</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Draw a Polygon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Draw a Circle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Draw a Path</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Draw Rectangle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Polygon Substraction Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add Text Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>U</strong></td>\n"
+"                        <td>&nbsp;Polygon Union Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Editor Transformation Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+X</strong></td>\n"
+"                        <td>&nbsp;Offset shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+Y</strong></td>\n"
+"                        <td>&nbsp;Offset shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+X</strong></td>\n"
+"                        <td>&nbsp;Polygon Cut Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Space</strong></td>\n"
+"                        <td>&nbsp;Rotate Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ENTER</strong></td>\n"
+"                        <td>&nbsp;Finish drawing for certain tools</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Shape</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"            <br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#ff0000\">EXCELLON EDITOR</span></"
+"strong><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Add Drill Array</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>D</strong></td>\n"
+"                        <td>&nbsp;Add Drill</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Resize Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a new Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"                    "
+
+#: flatcamGUI/FlatCAMGUI.py:1358
+msgid "Disable"
+msgstr "Disable"
+
+#: flatcamGUI/FlatCAMGUI.py:1360
+msgid "New"
+msgstr "New"
+
+#: flatcamGUI/FlatCAMGUI.py:1361
+msgid "Geometry"
+msgstr "Geometry"
+
+#: flatcamGUI/FlatCAMGUI.py:1362
+msgid "Excellon"
+msgstr "Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:1367
+msgid "Grids"
+msgstr "Grids"
+
+#: flatcamGUI/FlatCAMGUI.py:1369
+msgid "View"
+msgstr "View"
+
+#: flatcamGUI/FlatCAMGUI.py:1371
+msgid "Clear Plot"
+msgstr "Clear Plot"
+
+#: flatcamGUI/FlatCAMGUI.py:1372
+msgid "Replot"
+msgstr "Replot"
+
+#: flatcamGUI/FlatCAMGUI.py:1375
+msgid "Geo Editor"
+msgstr "Geo Editor"
+
+#: flatcamGUI/FlatCAMGUI.py:1376
+msgid "Line"
+msgstr "Line"
+
+#: flatcamGUI/FlatCAMGUI.py:1377
+msgid "Rectangle"
+msgstr "Rectangle"
+
+#: flatcamGUI/FlatCAMGUI.py:1378 flatcamGUI/FlatCAMGUI.py:4590
+#: flatcamGUI/ObjectUI.py:1431
+msgid "Cut"
+msgstr "Cut"
+
+#: flatcamGUI/FlatCAMGUI.py:1380 flatcamGUI/FlatCAMGUI.py:1395
+#: flatcamTools/ToolMove.py:26
+msgid "Move"
+msgstr "Move"
+
+#: flatcamGUI/FlatCAMGUI.py:1382
+msgid "Exc Editor"
+msgstr "Exc Editor"
+
+#: flatcamGUI/FlatCAMGUI.py:1383
+msgid "Add Drill"
+msgstr "Add Drill"
+
+#: flatcamGUI/FlatCAMGUI.py:1385
+msgid "Copy Drill(s)"
+msgstr "Copy Drill(s)"
+
+#: flatcamGUI/FlatCAMGUI.py:1391
+msgid "Save && Close Edit"
+msgstr "Save && Close Edit"
+
+#: flatcamGUI/FlatCAMGUI.py:1416
+msgid "Print Preview"
+msgstr "Print Preview"
+
+#: flatcamGUI/FlatCAMGUI.py:1417
+msgid "Print Code"
+msgstr "Print Code"
+
+#: flatcamGUI/FlatCAMGUI.py:1418
+msgid "Find in Code"
+msgstr "Find in Code"
+
+#: flatcamGUI/FlatCAMGUI.py:1423
+msgid "Replace With"
+msgstr "Replace With"
+
+#: flatcamGUI/FlatCAMGUI.py:1427 flatcamGUI/FlatCAMGUI.py:4588
+#: flatcamGUI/FlatCAMGUI.py:5089 flatcamGUI/ObjectUI.py:1429
+msgid "All"
+msgstr "All"
+
+#: flatcamGUI/FlatCAMGUI.py:1429
+msgid ""
+"When checked it will replace all instances in the 'Find' box\n"
+"with the text in the 'Replace' box.."
+msgstr ""
+"When checked it will replace all instances in the 'Find' box\n"
+"with the text in the 'Replace' box.."
+
+#: flatcamGUI/FlatCAMGUI.py:1432
+msgid "Open Code"
+msgstr "Open Code"
+
+#: flatcamGUI/FlatCAMGUI.py:1433
+msgid "Save Code"
+msgstr "Save Code"
+
+#: flatcamGUI/FlatCAMGUI.py:1468
+msgid ""
+"Relative neasurement.\n"
+"Reference is last click position"
+msgstr ""
+"Relative neasurement.\n"
+"Reference is last click position"
+
+#: flatcamGUI/FlatCAMGUI.py:1474
+msgid ""
+"Absolute neasurement.\n"
+"Reference is (X=0, Y= 0) position"
+msgstr ""
+"Absolute neasurement.\n"
+"Reference is (X=0, Y= 0) position"
+
+#: flatcamGUI/FlatCAMGUI.py:1641
+msgid "Add Drill Hole Array"
+msgstr "Add Drill Hole Array"
+
+#: flatcamGUI/FlatCAMGUI.py:1653
+msgid "Select 'Esc'"
+msgstr "Select 'Esc'"
+
+#: flatcamGUI/FlatCAMGUI.py:1678
+msgid "Copy Objects"
+msgstr "Copy Objects"
+
+#: flatcamGUI/FlatCAMGUI.py:1680
+msgid "Delete Shape"
+msgstr "Delete Shape"
+
+#: flatcamGUI/FlatCAMGUI.py:1685
+msgid "Move Objects"
+msgstr "Move Objects"
+
+#: flatcamGUI/FlatCAMGUI.py:2060
+msgid ""
+"Please first select a geometry item to be cutted\n"
+"then select the geometry item that will be cutted\n"
+"out of the first item. In the end press ~X~ key or\n"
+"the toolbar button."
+msgstr ""
+"Please first select a geometry item to be cutted\n"
+"then select the geometry item that will be cutted\n"
+"out of the first item. In the end press ~X~ key or\n"
+"the toolbar button."
+
+#: flatcamGUI/FlatCAMGUI.py:2067 flatcamGUI/FlatCAMGUI.py:2199
+#: flatcamGUI/FlatCAMGUI.py:2258 flatcamGUI/FlatCAMGUI.py:2278
+msgid "Warning"
+msgstr "Warning"
+
+#: flatcamGUI/FlatCAMGUI.py:2134 flatcamGUI/FlatCAMGUI.py:2328
+msgid "[WARNING_NOTCL]Cancelled."
+msgstr "[WARNING_NOTCL]Cancelled."
+
+#: flatcamGUI/FlatCAMGUI.py:2194
+msgid ""
+"Please select geometry items \n"
+"on which to perform Intersection Tool."
+msgstr ""
+"Please select geometry items \n"
+"on which to perform Intersection Tool."
+
+#: flatcamGUI/FlatCAMGUI.py:2253
+msgid ""
+"Please select geometry items \n"
+"on which to perform Substraction Tool."
+msgstr ""
+"Please select geometry items \n"
+"on which to perform Substraction Tool."
+
+#: flatcamGUI/FlatCAMGUI.py:2273
+msgid ""
+"Please select geometry items \n"
+"on which to perform union."
+msgstr ""
+"Please select geometry items \n"
+"on which to perform union."
+
+#: flatcamGUI/FlatCAMGUI.py:2345
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to delete."
+msgstr "[WARNING_NOTCL]Cancelled. Nothing selected to delete."
+
+#: flatcamGUI/FlatCAMGUI.py:2412
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to copy."
+msgstr "[WARNING_NOTCL]Cancelled. Nothing selected to copy."
+
+#: flatcamGUI/FlatCAMGUI.py:2458
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to move."
+msgstr "[WARNING_NOTCL]Cancelled. Nothing selected to move."
+
+#: flatcamGUI/FlatCAMGUI.py:2472
+msgid "New Tool ..."
+msgstr "New Tool ..."
+
+#: flatcamGUI/FlatCAMGUI.py:2473
+msgid "Enter a Tool Diameter:"
+msgstr "Enter a Tool Diameter:"
+
+#: flatcamGUI/FlatCAMGUI.py:2772
+msgid "Grid X value:"
+msgstr "Grid X value:"
+
+#: flatcamGUI/FlatCAMGUI.py:2774
+msgid "This is the Grid snap value on X axis."
+msgstr "This is the Grid snap value on X axis."
+
+#: flatcamGUI/FlatCAMGUI.py:2779
+msgid "Grid Y value:"
+msgstr "Grid Y value:"
+
+#: flatcamGUI/FlatCAMGUI.py:2781
+msgid "This is the Grid snap value on Y axis."
+msgstr "This is the Grid snap value on Y axis."
+
+#: flatcamGUI/FlatCAMGUI.py:2786
+msgid "Snap Max:"
+msgstr "Snap Max:"
+
+#: flatcamGUI/FlatCAMGUI.py:2791
+msgid "Workspace:"
+msgstr "Workspace:"
+
+#: flatcamGUI/FlatCAMGUI.py:2793
+msgid ""
+"Draw a delimiting rectangle on canvas.\n"
+"The purpose is to illustrate the limits for our work."
+msgstr ""
+"Draw a delimiting rectangle on canvas.\n"
+"The purpose is to illustrate the limits for our work."
+
+#: flatcamGUI/FlatCAMGUI.py:2796
+msgid "Wk. format:"
+msgstr "Wk. format:"
+
+#: flatcamGUI/FlatCAMGUI.py:2798
+msgid ""
+"Select the type of rectangle to be used on canvas,\n"
+"as valid workspace."
+msgstr ""
+"Select the type of rectangle to be used on canvas,\n"
+"as valid workspace."
+
+#: flatcamGUI/FlatCAMGUI.py:2811
+msgid "Plot Fill:"
+msgstr "Plot Fill:"
+
+#: flatcamGUI/FlatCAMGUI.py:2813
+msgid ""
+"Set the fill color for plotted objects.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Set the fill color for plotted objects.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+
+#: flatcamGUI/FlatCAMGUI.py:2827 flatcamGUI/FlatCAMGUI.py:2877
+#: flatcamGUI/FlatCAMGUI.py:2927
+msgid "Alpha Level:"
+msgstr "Alpha Level:"
+
+#: flatcamGUI/FlatCAMGUI.py:2829
+msgid "Set the fill transparency for plotted objects."
+msgstr "Set the fill transparency for plotted objects."
+
+#: flatcamGUI/FlatCAMGUI.py:2846
+msgid "Plot Line:"
+msgstr "Plot Line:"
+
+#: flatcamGUI/FlatCAMGUI.py:2848
+msgid "Set the line color for plotted objects."
+msgstr "Set the line color for plotted objects."
+
+#: flatcamGUI/FlatCAMGUI.py:2860
+msgid "Sel. Fill:"
+msgstr "Sel. Fill:"
+
+#: flatcamGUI/FlatCAMGUI.py:2862
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from left to right.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from left to right.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+
+#: flatcamGUI/FlatCAMGUI.py:2879
+msgid "Set the fill transparency for the 'left to right' selection box."
+msgstr "Set the fill transparency for the 'left to right' selection box."
+
+#: flatcamGUI/FlatCAMGUI.py:2896
+msgid "Sel. Line:"
+msgstr "Sel. Line:"
+
+#: flatcamGUI/FlatCAMGUI.py:2898
+msgid "Set the line color for the 'left to right' selection box."
+msgstr "Set the line color for the 'left to right' selection box."
+
+#: flatcamGUI/FlatCAMGUI.py:2910
+msgid "Sel2. Fill:"
+msgstr "Sel2. Fill:"
+
+#: flatcamGUI/FlatCAMGUI.py:2912
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from right to left.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from right to left.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+
+#: flatcamGUI/FlatCAMGUI.py:2929
+msgid "Set the fill transparency for selection 'right to left' box."
+msgstr "Set the fill transparency for selection 'right to left' box."
+
+#: flatcamGUI/FlatCAMGUI.py:2946
+msgid "Sel2. Line:"
+msgstr "Sel2. Line:"
+
+#: flatcamGUI/FlatCAMGUI.py:2948
+msgid "Set the line color for the 'right to left' selection box."
+msgstr "Set the line color for the 'right to left' selection box."
+
+#: flatcamGUI/FlatCAMGUI.py:2960
+msgid "Editor Draw:"
+msgstr "Editor Draw:"
+
+#: flatcamGUI/FlatCAMGUI.py:2962
+msgid "Set the color for the shape."
+msgstr "Set the color for the shape."
+
+#: flatcamGUI/FlatCAMGUI.py:2974
+msgid "Editor Draw Sel.:"
+msgstr "Editor Draw Sel.:"
+
+#: flatcamGUI/FlatCAMGUI.py:2976
+msgid "Set the color of the shape when selected."
+msgstr "Set the color of the shape when selected."
+
+#: flatcamGUI/FlatCAMGUI.py:3023
+msgid "GUI Settings"
+msgstr "GUI Settings"
+
+#: flatcamGUI/FlatCAMGUI.py:3030
+msgid "Layout:"
+msgstr "Layout:"
+
+#: flatcamGUI/FlatCAMGUI.py:3032
+msgid ""
+"Select an layout for FlatCAM.\n"
+"It is applied immediately."
+msgstr ""
+"Select an layout for FlatCAM.\n"
+"It is applied immediately."
+
+#: flatcamGUI/FlatCAMGUI.py:3048
+msgid "Style:"
+msgstr "Style:"
+
+#: flatcamGUI/FlatCAMGUI.py:3050
+msgid ""
+"Select an style for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+"Select an style for FlatCAM.\n"
+"It will be applied at the next app start."
+
+#: flatcamGUI/FlatCAMGUI.py:3061
+msgid "HDPI Support:"
+msgstr "HDPI Support:"
+
+#: flatcamGUI/FlatCAMGUI.py:3063
+msgid ""
+"Enable High DPI support for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+"Enable High DPI support for FlatCAM.\n"
+"It will be applied at the next app start."
+
+#: flatcamGUI/FlatCAMGUI.py:3076
+msgid "Clear GUI Settings:"
+msgstr "Clear GUI Settings:"
+
+#: flatcamGUI/FlatCAMGUI.py:3078
+msgid ""
+"Clear the GUI settings for FlatCAM,\n"
+"such as: layout, gui state, style, hdpi support etc."
+msgstr ""
+"Clear the GUI settings for FlatCAM,\n"
+"such as: layout, gui state, style, hdpi support etc."
+
+#: flatcamGUI/FlatCAMGUI.py:3081
+msgid "Clear"
+msgstr "Clear"
+
+#: flatcamGUI/FlatCAMGUI.py:3085
+msgid "Hover Shape:"
+msgstr "Hover Shape:"
+
+#: flatcamGUI/FlatCAMGUI.py:3087
+msgid ""
+"Enable display of a hover shape for FlatCAM objects.\n"
+"It is displayed whenever the mouse cursor is hovering\n"
+"over any kind of not-selected object."
+msgstr ""
+"Enable display of a hover shape for FlatCAM objects.\n"
+"It is displayed whenever the mouse cursor is hovering\n"
+"over any kind of not-selected object."
+
+#: flatcamGUI/FlatCAMGUI.py:3128
+msgid "Are you sure you want to delete the GUI Settings? \n"
+msgstr "Are you sure you want to delete the GUI Settings? \n"
+
+#: flatcamGUI/FlatCAMGUI.py:3131
+msgid "Clear GUI Settings"
+msgstr "Clear GUI Settings"
+
+#: flatcamGUI/FlatCAMGUI.py:3144
+msgid "[success] GUI settings deleted ..."
+msgstr "[success] GUI settings deleted ..."
+
+#: flatcamGUI/FlatCAMGUI.py:3151
+msgid "App Preferences"
+msgstr "App Preferences"
+
+#: flatcamGUI/FlatCAMGUI.py:3157
+msgid "<b>Units:</b>"
+msgstr "<b>Units:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3158
+msgid ""
+"The default value for FlatCAM units.\n"
+"Whatever is selected here is set every time\n"
+"FLatCAM is started."
+msgstr ""
+"The default value for FlatCAM units.\n"
+"Whatever is selected here is set every time\n"
+"FLatCAM is started."
+
+#: flatcamGUI/FlatCAMGUI.py:3165
+msgid "<b>APP. LEVEL:</b>"
+msgstr "<b>APP. LEVEL:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3166
+msgid ""
+"Choose the default level of usage for FlatCAM.\n"
+"BASIC level -> reduced functionality, best for beginner's.\n"
+"ADVANCED level -> full functionality.\n"
+"\n"
+"The choice here will influence the parameters in\n"
+"the Selected Tab for all kinds of FlatCAM objects."
+msgstr ""
+"Choose the default level of usage for FlatCAM.\n"
+"BASIC level -> reduced functionality, best for beginner's.\n"
+"ADVANCED level -> full functionality.\n"
+"\n"
+"The choice here will influence the parameters in\n"
+"the Selected Tab for all kinds of FlatCAM objects."
+
+#: flatcamGUI/FlatCAMGUI.py:3171 flatcamGUI/FlatCAMGUI.py:3775
+msgid "Basic"
+msgstr "Basic"
+
+#: flatcamGUI/FlatCAMGUI.py:3172
+msgid "Advanced"
+msgstr "Advanced"
+
+#: flatcamGUI/FlatCAMGUI.py:3175
+msgid "<b>Languages:</b>"
+msgstr "<b>Languages:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3176
+msgid "Set the language used throughout FlatCAM."
+msgstr "Set the language used throughout FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:3179
+msgid "Apply Language"
+msgstr "Apply Language"
+
+#: flatcamGUI/FlatCAMGUI.py:3182
+msgid "Shell at StartUp:"
+msgstr "Shell at StartUp:"
+
+#: flatcamGUI/FlatCAMGUI.py:3184 flatcamGUI/FlatCAMGUI.py:3189
+msgid ""
+"Check this box if you want the shell to\n"
+"start automatically at startup."
+msgstr ""
+"Check this box if you want the shell to\n"
+"start automatically at startup."
+
+#: flatcamGUI/FlatCAMGUI.py:3194
+msgid "Version Check:"
+msgstr "Version Check:"
+
+#: flatcamGUI/FlatCAMGUI.py:3196 flatcamGUI/FlatCAMGUI.py:3201
+msgid ""
+"Check this box if you want to check\n"
+"for a new version automatically at startup."
+msgstr ""
+"Check this box if you want to check\n"
+"for a new version automatically at startup."
+
+#: flatcamGUI/FlatCAMGUI.py:3206
+msgid "Send Stats:"
+msgstr "Send Stats:"
+
+#: flatcamGUI/FlatCAMGUI.py:3208 flatcamGUI/FlatCAMGUI.py:3213
+msgid ""
+"Check this box if you agree to send anonymous\n"
+"stats automatically at startup, to help improve FlatCAM."
+msgstr ""
+"Check this box if you agree to send anonymous\n"
+"stats automatically at startup, to help improve FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:3220
+msgid "<b>Pan Button:</b>"
+msgstr "<b>Pan Button:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3221
+msgid ""
+"Select the mouse button to use for panning:\n"
+"- MMB --> Middle Mouse Button\n"
+"- RMB --> Right Mouse Button"
+msgstr ""
+"Select the mouse button to use for panning:\n"
+"- MMB --> Middle Mouse Button\n"
+"- RMB --> Right Mouse Button"
+
+#: flatcamGUI/FlatCAMGUI.py:3224
+msgid "MMB"
+msgstr "MMB"
+
+#: flatcamGUI/FlatCAMGUI.py:3225
+msgid "RMB"
+msgstr "RMB"
+
+#: flatcamGUI/FlatCAMGUI.py:3228
+msgid "<b>Multiple Sel:</b>"
+msgstr "<b>Multiple Sel:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3229
+msgid "Select the key used for multiple selection."
+msgstr "Select the key used for multiple selection."
+
+#: flatcamGUI/FlatCAMGUI.py:3230
+msgid "CTRL"
+msgstr "CTRL"
+
+#: flatcamGUI/FlatCAMGUI.py:3231
+msgid "SHIFT"
+msgstr "SHIFT"
+
+#: flatcamGUI/FlatCAMGUI.py:3234
+msgid "Project at StartUp:"
+msgstr "Project at StartUp:"
+
+#: flatcamGUI/FlatCAMGUI.py:3236 flatcamGUI/FlatCAMGUI.py:3241
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"to be shown automatically at startup."
+msgstr ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"to be shown automatically at startup."
+
+#: flatcamGUI/FlatCAMGUI.py:3246
+msgid "Project AutoHide:"
+msgstr "Project AutoHide:"
+
+#: flatcamGUI/FlatCAMGUI.py:3248 flatcamGUI/FlatCAMGUI.py:3254
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"hide automatically when there are no objects loaded and\n"
+"to show whenever a new object is created."
+msgstr ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"hide automatically when there are no objects loaded and\n"
+"to show whenever a new object is created."
+
+#: flatcamGUI/FlatCAMGUI.py:3260
+msgid "<b>Enable ToolTips:</b>"
+msgstr "<b>Enable ToolTips:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3262 flatcamGUI/FlatCAMGUI.py:3267
+msgid ""
+"Check this box if you want to have toolTips displayed\n"
+"when hovering with mouse over items throughout the App."
+msgstr ""
+"Check this box if you want to have toolTips displayed\n"
+"when hovering with mouse over items throughout the App."
+
+#: flatcamGUI/FlatCAMGUI.py:3301
+msgid "Save Compressed Project"
+msgstr "Save Compressed Project"
+
+#: flatcamGUI/FlatCAMGUI.py:3303
+msgid ""
+"Whether to save a compressed or uncompressed project.\n"
+"When checked it will save a compressed FlatCAM project."
+msgstr ""
+"Whether to save a compressed or uncompressed project.\n"
+"When checked it will save a compressed FlatCAM project."
+
+#: flatcamGUI/FlatCAMGUI.py:3314
+msgid "Compression Level:"
+msgstr "Compression Level:"
+
+#: flatcamGUI/FlatCAMGUI.py:3316
+msgid ""
+"The level of compression used when saving\n"
+"a FlatCAM project. Higher value means better compression\n"
+"but require more RAM usage and more processing time."
+msgstr ""
+"The level of compression used when saving\n"
+"a FlatCAM project. Higher value means better compression\n"
+"but require more RAM usage and more processing time."
+
+#: flatcamGUI/FlatCAMGUI.py:3342 flatcamGUI/FlatCAMGUI.py:3583
+#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4562
+#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:576
+#: flatcamGUI/ObjectUI.py:901 flatcamGUI/ObjectUI.py:1415
+msgid "<b>Plot Options:</b>"
+msgstr "<b>Plot Options:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3349 flatcamGUI/FlatCAMGUI.py:3595
+#: flatcamGUI/ObjectUI.py:577
+msgid "Solid"
+msgstr "Solid"
+
+#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/ObjectUI.py:158
+msgid "Solid color polygons."
+msgstr "Solid color polygons."
+
+#: flatcamGUI/FlatCAMGUI.py:3356
+msgid "M-Color"
+msgstr "M-Color"
+
+#: flatcamGUI/FlatCAMGUI.py:3358 flatcamGUI/ObjectUI.py:166
+msgid "Draw polygons in different colors."
+msgstr "Draw polygons in different colors."
+
+#: flatcamGUI/FlatCAMGUI.py:3363 flatcamGUI/FlatCAMGUI.py:3589
+#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/ObjectUI.py:172
+msgid "Plot"
+msgstr "Plot"
+
+#: flatcamGUI/FlatCAMGUI.py:3365 flatcamGUI/FlatCAMGUI.py:4244
+#: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:617
+#: flatcamGUI/ObjectUI.py:947 flatcamGUI/ObjectUI.py:1502
+msgid "Plot (show) this object."
+msgstr "Plot (show) this object."
+
+#: flatcamGUI/FlatCAMGUI.py:3370 flatcamGUI/FlatCAMGUI.py:4251
+#: flatcamGUI/FlatCAMGUI.py:4598
+msgid "Circle Steps:"
+msgstr "Circle Steps:"
+
+#: flatcamGUI/FlatCAMGUI.py:3372
+msgid ""
+"The number of circle steps for Gerber \n"
+"circular aperture linear approximation."
+msgstr ""
+"The number of circle steps for Gerber \n"
+"circular aperture linear approximation."
+
+#: flatcamGUI/FlatCAMGUI.py:3387
+msgid "Gerber Options"
+msgstr "Gerber Options"
+
+#: flatcamGUI/FlatCAMGUI.py:3391 flatcamGUI/ObjectUI.py:322
+msgid "<b>Isolation Routing:</b>"
+msgstr "<b>Isolation Routing:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3393 flatcamGUI/ObjectUI.py:324
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut outside polygons."
+msgstr ""
+"Create a Geometry object with\n"
+"toolpaths to cut outside polygons."
+
+#: flatcamGUI/FlatCAMGUI.py:3404 flatcamGUI/FlatCAMGUI.py:3961
+#: flatcamGUI/FlatCAMGUI.py:4886 flatcamGUI/ObjectUI.py:856
+#: flatcamGUI/ObjectUI.py:872
+msgid "Diameter of the cutting tool."
+msgstr "Diameter of the cutting tool."
+
+#: flatcamGUI/FlatCAMGUI.py:3411
+msgid "Width (# passes):"
+msgstr "Width (# passes):"
+
+#: flatcamGUI/FlatCAMGUI.py:3413 flatcamGUI/ObjectUI.py:346
+msgid ""
+"Width of the isolation gap in\n"
+"number (integer) of tool widths."
+msgstr ""
+"Width of the isolation gap in\n"
+"number (integer) of tool widths."
+
+#: flatcamGUI/FlatCAMGUI.py:3421 flatcamGUI/ObjectUI.py:354
+msgid "Pass overlap:"
+msgstr "Pass overlap:"
+
+#: flatcamGUI/FlatCAMGUI.py:3423 flatcamGUI/ObjectUI.py:356
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means an overlap of 25%% from the tool diameter found "
+"above."
+msgstr ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means an overlap of 25%% from the tool diameter found "
+"above."
+
+#: flatcamGUI/FlatCAMGUI.py:3431 flatcamGUI/ObjectUI.py:366
+msgid "Milling Type:"
+msgstr "Milling Type:"
+
+#: flatcamGUI/FlatCAMGUI.py:3433 flatcamGUI/ObjectUI.py:368
+msgid ""
+"Milling type:\n"
+"- climb / best for precision milling and to reduce tool usage\n"
+"- conventional / useful when there is no backlash compensation"
+msgstr ""
+"Milling type:\n"
+"- climb / best for precision milling and to reduce tool usage\n"
+"- conventional / useful when there is no backlash compensation"
+
+#: flatcamGUI/FlatCAMGUI.py:3438 flatcamGUI/ObjectUI.py:373
+msgid "Climb"
+msgstr "Climb"
+
+#: flatcamGUI/FlatCAMGUI.py:3439 flatcamGUI/ObjectUI.py:374
+msgid "Conv."
+msgstr "Conv."
+
+#: flatcamGUI/FlatCAMGUI.py:3443
+msgid "Combine Passes"
+msgstr "Combine Passes"
+
+#: flatcamGUI/FlatCAMGUI.py:3445 flatcamGUI/ObjectUI.py:380
+msgid "Combine all passes into one object"
+msgstr "Combine all passes into one object"
+
+#: flatcamGUI/FlatCAMGUI.py:3450
+msgid "<b>Clear non-copper:</b>"
+msgstr "<b>Clear non-copper:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3452 flatcamGUI/FlatCAMGUI.py:4774
+#: flatcamGUI/ObjectUI.py:457
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut all non-copper regions."
+msgstr ""
+"Create a Geometry object with\n"
+"toolpaths to cut all non-copper regions."
+
+#: flatcamGUI/FlatCAMGUI.py:3461 flatcamGUI/FlatCAMGUI.py:3487
+#: flatcamGUI/ObjectUI.py:501 flatcamGUI/ObjectUI.py:535
+msgid "Boundary Margin:"
+msgstr "Boundary Margin:"
+
+#: flatcamGUI/FlatCAMGUI.py:3463 flatcamGUI/ObjectUI.py:503
+msgid ""
+"Specify the edge of the PCB\n"
+"by drawing a box around all\n"
+"objects with this minimum\n"
+"distance."
+msgstr ""
+"Specify the edge of the PCB\n"
+"by drawing a box around all\n"
+"objects with this minimum\n"
+"distance."
+
+#: flatcamGUI/FlatCAMGUI.py:3473 flatcamGUI/FlatCAMGUI.py:3496
+msgid "Rounded corners"
+msgstr "Rounded corners"
+
+#: flatcamGUI/FlatCAMGUI.py:3475
+msgid ""
+"Creates a Geometry objects with polygons\n"
+"covering the copper-free areas of the PCB."
+msgstr ""
+"Creates a Geometry objects with polygons\n"
+"covering the copper-free areas of the PCB."
+
+#: flatcamGUI/FlatCAMGUI.py:3481 flatcamGUI/ObjectUI.py:525
+msgid "<b>Bounding Box:</b>"
+msgstr "<b>Bounding Box:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3489 flatcamGUI/ObjectUI.py:537
+msgid ""
+"Distance of the edges of the box\n"
+"to the nearest polygon."
+msgstr ""
+"Distance of the edges of the box\n"
+"to the nearest polygon."
+
+#: flatcamGUI/FlatCAMGUI.py:3498 flatcamGUI/ObjectUI.py:547
+msgid ""
+"If the bounding box is \n"
+"to have rounded corners\n"
+"their radius is equal to\n"
+"the margin."
+msgstr ""
+"If the bounding box is \n"
+"to have rounded corners\n"
+"their radius is equal to\n"
+"the margin."
+
+#: flatcamGUI/FlatCAMGUI.py:3512
+msgid "Gerber Adv. Options"
+msgstr "Gerber Adv. Options"
+
+#: flatcamGUI/FlatCAMGUI.py:3516
+msgid "<b>Advanced Param.:</b>"
+msgstr "<b>Advanced Param.:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3518
+msgid ""
+"A list of Gerber advanced parameters.\n"
+"Those parameters are available only for\n"
+"Advanced App. Level."
+msgstr ""
+"A list of Gerber advanced parameters.\n"
+"Those parameters are available only for\n"
+"Advanced App. Level."
+
+#: flatcamGUI/FlatCAMGUI.py:3528 flatcamGUI/ObjectUI.py:385
+msgid "\"Follow\""
+msgstr "\"Follow\""
+
+#: flatcamGUI/FlatCAMGUI.py:3530 flatcamGUI/ObjectUI.py:387
+msgid ""
+"Generate a 'Follow' geometry.\n"
+"This means that it will cut through\n"
+"the middle of the trace."
+msgstr ""
+"Generate a 'Follow' geometry.\n"
+"This means that it will cut through\n"
+"the middle of the trace."
+
+#: flatcamGUI/FlatCAMGUI.py:3538
+msgid "Table Show/Hide"
+msgstr "Table Show/Hide"
+
+#: flatcamGUI/FlatCAMGUI.py:3540
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"Also, on hide, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"Also, on hide, it will delete all mark shapes\n"
+"that are drawn on canvas."
+
+#: flatcamGUI/FlatCAMGUI.py:3548
+msgid "Ap. Scale Factor:"
+msgstr "Ap. Scale Factor:"
+
+#: flatcamGUI/FlatCAMGUI.py:3550 flatcamGUI/ObjectUI.py:254
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+"Change the size of the selected apertures.\n"
+"Factor by which to multiply\n"
+"geometric features of this object."
+
+#: flatcamGUI/FlatCAMGUI.py:3560
+msgid "Ap. Buffer Factor:"
+msgstr "Ap. Buffer Factor:"
+
+#: flatcamGUI/FlatCAMGUI.py:3562 flatcamGUI/ObjectUI.py:275
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to expand/shrink\n"
+"geometric features of this object."
+msgstr ""
+"Change the size of the selected apertures.\n"
+"Factor by which to expand/shrink\n"
+"geometric features of this object."
+
+#: flatcamGUI/FlatCAMGUI.py:3580
+msgid "Excellon General"
+msgstr "Excellon General"
+
+#: flatcamGUI/FlatCAMGUI.py:3602
+msgid "<b>Excellon Format:</b>"
+msgstr "<b>Excellon Format:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3604
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period.\n"
+"\n"
+"Possible presets:\n"
+"\n"
+"PROTEUS 3:3 MM LZ\n"
+"DipTrace 5:2 MM TZ\n"
+"DipTrace 4:3 MM LZ\n"
+"\n"
+"EAGLE 3:3 MM TZ\n"
+"EAGLE 4:3 MM TZ\n"
+"EAGLE 2:5 INCH TZ\n"
+"EAGLE 3:5 INCH TZ\n"
+"\n"
+"ALTIUM 2:4 INCH LZ\n"
+"Sprint Layout 2:4 INCH LZ\n"
+"KiCAD 3:5 INCH TZ"
+msgstr ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period.\n"
+"\n"
+"Possible presets:\n"
+"\n"
+"PROTEUS 3:3 MM LZ\n"
+"DipTrace 5:2 MM TZ\n"
+"DipTrace 4:3 MM LZ\n"
+"\n"
+"EAGLE 3:3 MM TZ\n"
+"EAGLE 4:3 MM TZ\n"
+"EAGLE 2:5 INCH TZ\n"
+"EAGLE 3:5 INCH TZ\n"
+"\n"
+"ALTIUM 2:4 INCH LZ\n"
+"Sprint Layout 2:4 INCH LZ\n"
+"KiCAD 3:5 INCH TZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3629
+msgid "INCH:"
+msgstr "INCH:"
+
+#: flatcamGUI/FlatCAMGUI.py:3632
+msgid "Default values for INCH are 2:4"
+msgstr "Default values for INCH are 2:4"
+
+#: flatcamGUI/FlatCAMGUI.py:3640 flatcamGUI/FlatCAMGUI.py:3673
+#: flatcamGUI/FlatCAMGUI.py:4150
+msgid ""
+"This numbers signify the number of digits in\n"
+"the whole part of Excellon coordinates."
+msgstr ""
+"This numbers signify the number of digits in\n"
+"the whole part of Excellon coordinates."
+
+#: flatcamGUI/FlatCAMGUI.py:3654 flatcamGUI/FlatCAMGUI.py:3687
+#: flatcamGUI/FlatCAMGUI.py:4164
+msgid ""
+"This numbers signify the number of digits in\n"
+"the decimal part of Excellon coordinates."
+msgstr ""
+"This numbers signify the number of digits in\n"
+"the decimal part of Excellon coordinates."
+
+#: flatcamGUI/FlatCAMGUI.py:3662
+msgid "METRIC:"
+msgstr "METRIC:"
+
+#: flatcamGUI/FlatCAMGUI.py:3665
+msgid "Default values for METRIC are 3:3"
+msgstr "Default values for METRIC are 3:3"
+
+#: flatcamGUI/FlatCAMGUI.py:3696
+msgid "Default <b>Zeros</b>:"
+msgstr "Default <b>Zeros</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:3699 flatcamGUI/FlatCAMGUI.py:4199
+msgid ""
+"This sets the type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"This sets the type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+
+#: flatcamGUI/FlatCAMGUI.py:3707 flatcamGUI/FlatCAMGUI.py:4206
+msgid "LZ"
+msgstr "LZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3708 flatcamGUI/FlatCAMGUI.py:4207
+msgid "TZ"
+msgstr "TZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3710
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"This sets the default type of Excellon zeros.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+
+#: flatcamGUI/FlatCAMGUI.py:3724
+msgid "Default <b>Units</b>:"
+msgstr "Default <b>Units</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:3727
+msgid ""
+"This sets the default units of Excellon files.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+"This sets the default units of Excellon files.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+
+#: flatcamGUI/FlatCAMGUI.py:3735 flatcamGUI/FlatCAMGUI.py:4126
+msgid "INCH"
+msgstr "INCH"
+
+#: flatcamGUI/FlatCAMGUI.py:3736 flatcamGUI/FlatCAMGUI.py:4127
+msgid "MM"
+msgstr "MM"
+
+#: flatcamGUI/FlatCAMGUI.py:3738
+msgid ""
+"This sets the units of Excellon files.\n"
+"Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+"This sets the units of Excellon files.\n"
+"Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+
+#: flatcamGUI/FlatCAMGUI.py:3754
+msgid "<b>Excellon Optimization:</b>"
+msgstr "<b>Excellon Optimization:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3761
+msgid "Algorithm:   "
+msgstr "Algorithm:   "
+
+#: flatcamGUI/FlatCAMGUI.py:3764 flatcamGUI/FlatCAMGUI.py:3777
+msgid ""
+"This sets the optimization type for the Excellon drill path.\n"
+"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
+"Guided Local Path is used. Default search time is 3sec.\n"
+"Use set_sys excellon_search_time value Tcl Command to set other values.\n"
+"If Basic is checked then Google OR-Tools Basic algorithm is used.\n"
+"\n"
+"If DISABLED, then FlatCAM works in 32bit mode and it uses \n"
+"Travelling Salesman algorithm for path optimization."
+msgstr ""
+"This sets the optimization type for the Excellon drill path.\n"
+"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
+"Guided Local Path is used. Default search time is 3sec.\n"
+"Use set_sys excellon_search_time value Tcl Command to set other values.\n"
+"If Basic is checked then Google OR-Tools Basic algorithm is used.\n"
+"\n"
+"If DISABLED, then FlatCAM works in 32bit mode and it uses \n"
+"Travelling Salesman algorithm for path optimization."
+
+#: flatcamGUI/FlatCAMGUI.py:3774
+msgid "MH"
+msgstr "MH"
+
+#: flatcamGUI/FlatCAMGUI.py:3789
+msgid "Optimization Time:   "
+msgstr "Optimization Time:   "
+
+#: flatcamGUI/FlatCAMGUI.py:3792
+msgid ""
+"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
+"maximum threshold for how much time is spent doing the\n"
+"path optimization. This max duration is set here.\n"
+"In seconds."
+msgstr ""
+"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
+"maximum threshold for how much time is spent doing the\n"
+"path optimization. This max duration is set here.\n"
+"In seconds."
+
+#: flatcamGUI/FlatCAMGUI.py:3833
+msgid "Excellon Options"
+msgstr "Excellon Options"
+
+#: flatcamGUI/FlatCAMGUI.py:3836 flatcamGUI/ObjectUI.py:655
+msgid "<b>Create CNC Job</b>"
+msgstr "<b>Create CNC Job</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3838
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object."
+
+#: flatcamGUI/FlatCAMGUI.py:3846 flatcamGUI/FlatCAMGUI.py:4302
+#: flatcamGUI/FlatCAMGUI.py:5301 flatcamGUI/ObjectUI.py:666
+#: flatcamGUI/ObjectUI.py:1130 flatcamTools/ToolCalculators.py:108
+msgid "Cut Z:"
+msgstr "Cut Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:3848 flatcamGUI/ObjectUI.py:668
+msgid ""
+"Drill depth (negative)\n"
+"below the copper surface."
+msgstr ""
+"Drill depth (negative)\n"
+"below the copper surface."
+
+#: flatcamGUI/FlatCAMGUI.py:3855 flatcamGUI/FlatCAMGUI.py:4335
+#: flatcamGUI/ObjectUI.py:676 flatcamGUI/ObjectUI.py:1166
+msgid "Travel Z:"
+msgstr "Travel Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:3857 flatcamGUI/ObjectUI.py:678
+msgid ""
+"Tool height when travelling\n"
+"across the XY plane."
+msgstr ""
+"Tool height when travelling\n"
+"across the XY plane."
+
+#: flatcamGUI/FlatCAMGUI.py:3865 flatcamGUI/FlatCAMGUI.py:4345
+msgid "Tool change:"
+msgstr "Tool change:"
+
+#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:4347
+#: flatcamGUI/ObjectUI.py:688
+msgid ""
+"Include tool-change sequence\n"
+"in G-Code (Pause for tool change)."
+msgstr ""
+"Include tool-change sequence\n"
+"in G-Code (Pause for tool change)."
+
+#: flatcamGUI/FlatCAMGUI.py:3874 flatcamGUI/FlatCAMGUI.py:4355
+msgid "Toolchange Z:"
+msgstr "Toolchange Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:3876 flatcamGUI/FlatCAMGUI.py:4357
+msgid "Toolchange Z position."
+msgstr "Toolchange Z position."
+
+#: flatcamGUI/FlatCAMGUI.py:3882
+msgid "Feedrate:"
+msgstr "Feedrate:"
+
+#: flatcamGUI/FlatCAMGUI.py:3884
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute)."
+msgstr ""
+"Tool speed while drilling\n"
+"(in units per minute)."
+
+#: flatcamGUI/FlatCAMGUI.py:3892
+msgid "Spindle Speed:"
+msgstr "Spindle Speed:"
+
+#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:4387
+#: flatcamGUI/ObjectUI.py:752
+msgid ""
+"Speed of the spindle\n"
+"in RPM (optional)"
+msgstr ""
+"Speed of the spindle\n"
+"in RPM (optional)"
+
+#: flatcamGUI/FlatCAMGUI.py:3902 flatcamGUI/FlatCAMGUI.py:4395
+#: flatcamGUI/ObjectUI.py:760 flatcamGUI/ObjectUI.py:1289
+msgid "Dwell:"
+msgstr "Dwell:"
+
+#: flatcamGUI/FlatCAMGUI.py:3904 flatcamGUI/FlatCAMGUI.py:4397
+#: flatcamGUI/ObjectUI.py:762 flatcamGUI/ObjectUI.py:1292
+msgid ""
+"Pause to allow the spindle to reach its\n"
+"speed before cutting."
+msgstr ""
+"Pause to allow the spindle to reach its\n"
+"speed before cutting."
+
+#: flatcamGUI/FlatCAMGUI.py:3907 flatcamGUI/FlatCAMGUI.py:4400
+msgid "Duration:"
+msgstr "Duration:"
+
+#: flatcamGUI/FlatCAMGUI.py:3909 flatcamGUI/FlatCAMGUI.py:4402
+#: flatcamGUI/ObjectUI.py:767 flatcamGUI/ObjectUI.py:1299
+msgid "Number of milliseconds for spindle to dwell."
+msgstr "Number of milliseconds for spindle to dwell."
+
+#: flatcamGUI/FlatCAMGUI.py:3921 flatcamGUI/FlatCAMGUI.py:4412
+#: flatcamGUI/ObjectUI.py:775
+msgid "Postprocessor:"
+msgstr "Postprocessor:"
+
+#: flatcamGUI/FlatCAMGUI.py:3923
+msgid ""
+"The postprocessor file that dictates\n"
+"gcode output."
+msgstr ""
+"The postprocessor file that dictates\n"
+"gcode output."
+
+#: flatcamGUI/FlatCAMGUI.py:3933
+msgid "<b>Gcode:    </b>"
+msgstr "<b>Gcode:    </b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3935
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to drills."
+msgstr ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to drills."
+
+#: flatcamGUI/FlatCAMGUI.py:3940 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:823
+msgid "Drills"
+msgstr "Drills"
+
+#: flatcamGUI/FlatCAMGUI.py:3941 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:824
+msgid "Slots"
+msgstr "Slots"
+
+#: flatcamGUI/FlatCAMGUI.py:3942 flatcamGUI/ObjectUI.py:825
+msgid "Both"
+msgstr "Both"
+
+#: flatcamGUI/FlatCAMGUI.py:3951 flatcamGUI/ObjectUI.py:840
+msgid "<b>Mill Holes</b>"
+msgstr "<b>Mill Holes</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3953 flatcamGUI/ObjectUI.py:842
+msgid "Create Geometry for milling holes."
+msgstr "Create Geometry for milling holes."
+
+#: flatcamGUI/FlatCAMGUI.py:3959
+msgid "Drill Tool dia:"
+msgstr "Drill Tool dia:"
+
+#: flatcamGUI/FlatCAMGUI.py:3966
+msgid "Slot Tool dia:"
+msgstr "Slot Tool dia:"
+
+#: flatcamGUI/FlatCAMGUI.py:3968
+msgid ""
+"Diameter of the cutting tool\n"
+"when milling slots."
+msgstr ""
+"Diameter of the cutting tool\n"
+"when milling slots."
+
+#: flatcamGUI/FlatCAMGUI.py:3980
+msgid "Defaults"
+msgstr "Defaults"
+
+#: flatcamGUI/FlatCAMGUI.py:3993
+msgid "Excellon Adv. Options"
+msgstr "Excellon Adv. Options"
+
+#: flatcamGUI/FlatCAMGUI.py:3999 flatcamGUI/FlatCAMGUI.py:4435
+msgid "<b>Advanced Options:</b>"
+msgstr "<b>Advanced Options:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4001
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object that are shown when App Level is Advanced."
+msgstr ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object that are shown when App Level is Advanced."
+
+#: flatcamGUI/FlatCAMGUI.py:4009
+msgid "Offset Z:"
+msgstr "Offset Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:645
+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"
+"The value here can compensate the Cut Z parameter."
+msgstr ""
+"Some drill bits (the larger ones) need to drill deeper\n"
+"to create the desired exit hole diameter due of the tip shape.\n"
+"The value here can compensate the Cut Z parameter."
+
+#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:4446
+msgid "Toolchange X,Y:"
+msgstr "Toolchange X,Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:4020 flatcamGUI/FlatCAMGUI.py:4448
+msgid "Toolchange X,Y position."
+msgstr "Toolchange X,Y position."
+
+#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:4455
+#: flatcamGUI/ObjectUI.py:705
+msgid "Start move Z:"
+msgstr "Start move Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:4028
+msgid ""
+"Height of the tool just after start.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Height of the tool just after start.\n"
+"Delete the value if you don't need this feature."
+
+#: flatcamGUI/FlatCAMGUI.py:4035 flatcamGUI/FlatCAMGUI.py:4465
+#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1212
+msgid "End move Z:"
+msgstr "End move Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:4037 flatcamGUI/FlatCAMGUI.py:4467
+msgid ""
+"Height of the tool after\n"
+"the last move at the end of the job."
+msgstr ""
+"Height of the tool after\n"
+"the last move at the end of the job."
+
+#: flatcamGUI/FlatCAMGUI.py:4044 flatcamGUI/FlatCAMGUI.py:4475
+#: flatcamGUI/ObjectUI.py:736
+msgid "Feedrate Rapids:"
+msgstr "Feedrate Rapids:"
+
+#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/ObjectUI.py:738
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+
+#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/FlatCAMGUI.py:4499
+#: flatcamGUI/ObjectUI.py:786 flatcamGUI/ObjectUI.py:1321
+msgid "Probe Z depth:"
+msgstr "Probe Z depth:"
+
+#: flatcamGUI/FlatCAMGUI.py:4059 flatcamGUI/FlatCAMGUI.py:4501
+#: flatcamGUI/ObjectUI.py:788 flatcamGUI/ObjectUI.py:1324
+msgid ""
+"The maximum depth that the probe is allowed\n"
+"to probe. Negative value, in current units."
+msgstr ""
+"The maximum depth that the probe is allowed\n"
+"to probe. Negative value, in current units."
+
+#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4509
+#: flatcamGUI/ObjectUI.py:798 flatcamGUI/ObjectUI.py:1335
+msgid "Feedrate Probe:"
+msgstr "Feedrate Probe:"
+
+#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/FlatCAMGUI.py:4511
+#: flatcamGUI/ObjectUI.py:800 flatcamGUI/ObjectUI.py:1338
+msgid "The feedrate used while the probe is probing."
+msgstr "The feedrate used while the probe is probing."
+
+#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/FlatCAMGUI.py:4518
+msgid "Fast Plunge:"
+msgstr "Fast Plunge:"
+
+#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/FlatCAMGUI.py:4520
+msgid ""
+"By checking this, the vertical move from\n"
+"Z_Toolchange to Z_move is done with G0,\n"
+"meaning the fastest speed available.\n"
+"WARNING: the move is done at Toolchange X,Y coords."
+msgstr ""
+"By checking this, the vertical move from\n"
+"Z_Toolchange to Z_move is done with G0,\n"
+"meaning the fastest speed available.\n"
+"WARNING: the move is done at Toolchange X,Y coords."
+
+#: flatcamGUI/FlatCAMGUI.py:4086
+msgid "Fast Retract:"
+msgstr "Fast Retract:"
+
+#: flatcamGUI/FlatCAMGUI.py:4088
+msgid ""
+"Exit hole strategy.\n"
+" - When uncheked, while exiting the drilled hole the drill bit\n"
+"will travel slow, with set feedrate (G1), up to zero depth and then\n"
+"travel as fast as possible (G0) to the Z Move (travel height).\n"
+" - When checked the travel from Z cut (cut depth) to Z_move\n"
+"(travel height) is done as fast as possible (G0) in one move."
+msgstr ""
+"Exit hole strategy.\n"
+" - When uncheked, while exiting the drilled hole the drill bit\n"
+"will travel slow, with set feedrate (G1), up to zero depth and then\n"
+"travel as fast as possible (G0) to the Z Move (travel height).\n"
+" - When checked the travel from Z cut (cut depth) to Z_move\n"
+"(travel height) is done as fast as possible (G0) in one move."
+
+#: flatcamGUI/FlatCAMGUI.py:4107
+msgid "Excellon Export"
+msgstr "Excellon Export"
+
+#: flatcamGUI/FlatCAMGUI.py:4110
+msgid "<b>Export Options:</b>"
+msgstr "<b>Export Options:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4112
+msgid ""
+"The parameters set here are used in the file exported\n"
+"when using the File -> Export -> Export Excellon menu entry."
+msgstr ""
+"The parameters set here are used in the file exported\n"
+"when using the File -> Export -> Export Excellon menu entry."
+
+#: flatcamGUI/FlatCAMGUI.py:4121
+msgid "<b>Units</b>:"
+msgstr "<b>Units</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:4123 flatcamGUI/FlatCAMGUI.py:4129
+msgid "The units used in the Excellon file."
+msgstr "The units used in the Excellon file."
+
+#: flatcamGUI/FlatCAMGUI.py:4135
+msgid "<b>Int/Decimals:</b>"
+msgstr "<b>Int/Decimals:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4137
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period."
+msgstr ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period."
+
+#: flatcamGUI/FlatCAMGUI.py:4173
+msgid "<b>Format:</b>"
+msgstr "<b>Format:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4175 flatcamGUI/FlatCAMGUI.py:4185
+msgid ""
+"Select the kind of coordinates format used.\n"
+"Coordinates can be saved with decimal point or without.\n"
+"When there is no decimal point, it is required to specify\n"
+"the number of digits for integer part and the number of decimals.\n"
+"Also it will have to be specified if LZ = leading zeros are kept\n"
+"or TZ = trailing zeros are kept."
+msgstr ""
+"Select the kind of coordinates format used.\n"
+"Coordinates can be saved with decimal point or without.\n"
+"When there is no decimal point, it is required to specify\n"
+"the number of digits for integer part and the number of decimals.\n"
+"Also it will have to be specified if LZ = leading zeros are kept\n"
+"or TZ = trailing zeros are kept."
+
+#: flatcamGUI/FlatCAMGUI.py:4182
+msgid "Decimal"
+msgstr "Decimal"
+
+#: flatcamGUI/FlatCAMGUI.py:4183
+msgid "No-Decimal"
+msgstr "No-Decimal"
+
+#: flatcamGUI/FlatCAMGUI.py:4196
+msgid "<b>Zeros</b>:"
+msgstr "<b>Zeros</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:4209
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"This sets the default type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+
+#: flatcamGUI/FlatCAMGUI.py:4235
+msgid "Geometry General"
+msgstr "Geometry General"
+
+#: flatcamGUI/FlatCAMGUI.py:4253
+msgid ""
+"The number of circle steps for <b>Geometry</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+"The number of circle steps for <b>Geometry</b> \n"
+"circle and arc shapes linear approximation."
+
+#: flatcamGUI/FlatCAMGUI.py:4261
+msgid "<b>Tools</b>"
+msgstr "<b>Tools</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4268
+msgid "Tool dia:                   "
+msgstr "Tool dia:                   "
+
+#: flatcamGUI/FlatCAMGUI.py:4270
+msgid ""
+"The diameter of the cutting\n"
+"tool.."
+msgstr ""
+"The diameter of the cutting\n"
+"tool.."
+
+#: flatcamGUI/FlatCAMGUI.py:4285
+msgid "Geometry Options"
+msgstr "Geometry Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4290
+msgid "<b>Create CNC Job:</b>"
+msgstr "<b>Create CNC Job:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4292
+msgid ""
+"Create a CNC Job object\n"
+"tracing the contours of this\n"
+"Geometry object."
+msgstr ""
+"Create a CNC Job object\n"
+"tracing the contours of this\n"
+"Geometry object."
+
+#: flatcamGUI/FlatCAMGUI.py:4304 flatcamGUI/ObjectUI.py:1133
+msgid ""
+"Cutting depth (negative)\n"
+"below the copper surface."
+msgstr ""
+"Cutting depth (negative)\n"
+"below the copper surface."
+
+#: flatcamGUI/FlatCAMGUI.py:4312
+msgid "Multidepth"
+msgstr "Multidepth"
+
+#: flatcamGUI/FlatCAMGUI.py:4314
+msgid "Multidepth usage: True or False."
+msgstr "Multidepth usage: True or False."
+
+#: flatcamGUI/FlatCAMGUI.py:4319
+msgid "Depth/Pass:"
+msgstr "Depth/Pass:"
+
+#: flatcamGUI/FlatCAMGUI.py:4321
+msgid ""
+"The depth to cut on each pass,\n"
+"when multidepth is enabled.\n"
+"It has positive value although\n"
+"it is a fraction from the depth\n"
+"which has negative value."
+msgstr ""
+"The depth to cut on each pass,\n"
+"when multidepth is enabled.\n"
+"It has positive value although\n"
+"it is a fraction from the depth\n"
+"which has negative value."
+
+#: flatcamGUI/FlatCAMGUI.py:4337 flatcamGUI/ObjectUI.py:1169
+msgid ""
+"Height of the tool when\n"
+"moving without cutting."
+msgstr ""
+"Height of the tool when\n"
+"moving without cutting."
+
+#: flatcamGUI/FlatCAMGUI.py:4364 flatcamGUI/ObjectUI.py:1224
+msgid "Feed Rate X-Y:"
+msgstr "Feed Rate X-Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:4366 flatcamGUI/ObjectUI.py:1227
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute"
+msgstr ""
+"Cutting speed in the XY\n"
+"plane in units per minute"
+
+#: flatcamGUI/FlatCAMGUI.py:4374
+msgid "Feed Rate Z:"
+msgstr "Feed Rate Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:4376
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute.\n"
+"It is called also Plunge."
+msgstr ""
+"Cutting speed in the XY\n"
+"plane in units per minute.\n"
+"It is called also Plunge."
+
+#: flatcamGUI/FlatCAMGUI.py:4385 flatcamGUI/ObjectUI.py:750
+#: flatcamGUI/ObjectUI.py:1276
+msgid "Spindle speed:"
+msgstr "Spindle speed:"
+
+#: flatcamGUI/FlatCAMGUI.py:4414
+msgid ""
+"The postprocessor file that dictates\n"
+"Machine Code output."
+msgstr ""
+"The postprocessor file that dictates\n"
+"Machine Code output."
+
+#: flatcamGUI/FlatCAMGUI.py:4430
+msgid "Geometry Adv. Options"
+msgstr "Geometry Adv. Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4437
+msgid ""
+"Parameters to create a CNC Job object\n"
+"tracing the contours of a Geometry object."
+msgstr ""
+"Parameters to create a CNC Job object\n"
+"tracing the contours of a Geometry object."
+
+#: flatcamGUI/FlatCAMGUI.py:4457
+msgid ""
+"Height of the tool just after starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Height of the tool just after starting the work.\n"
+"Delete the value if you don't need this feature."
+
+#: flatcamGUI/FlatCAMGUI.py:4477
+msgid ""
+"Cutting speed in the XY plane\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Cutting speed in the XY plane\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+
+#: flatcamGUI/FlatCAMGUI.py:4489
+msgid "Re-cut 1st pt."
+msgstr "Re-cut 1st pt."
+
+#: flatcamGUI/FlatCAMGUI.py:4491 flatcamGUI/ObjectUI.py:1267
+msgid ""
+"In order to remove possible\n"
+"copper leftovers where first cut\n"
+"meet with last cut, we generate an\n"
+"extended cut over the first cut section."
+msgstr ""
+"In order to remove possible\n"
+"copper leftovers where first cut\n"
+"meet with last cut, we generate an\n"
+"extended cut over the first cut section."
+
+#: flatcamGUI/FlatCAMGUI.py:4530
+msgid "Seg. X size:"
+msgstr "Seg. X size:"
+
+#: flatcamGUI/FlatCAMGUI.py:4532
+msgid ""
+"The size of the trace segment on the X axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the X axis."
+msgstr ""
+"The size of the trace segment on the X axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the X axis."
+
+#: flatcamGUI/FlatCAMGUI.py:4541
+msgid "Seg. Y size:"
+msgstr "Seg. Y size:"
+
+#: flatcamGUI/FlatCAMGUI.py:4543
+msgid ""
+"The size of the trace segment on the Y axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the Y axis."
+msgstr ""
+"The size of the trace segment on the Y axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the Y axis."
+
+#: flatcamGUI/FlatCAMGUI.py:4559
+msgid "CNC Job General"
+msgstr "CNC Job General"
+
+#: flatcamGUI/FlatCAMGUI.py:4572 flatcamGUI/ObjectUI.py:615
+#: flatcamGUI/ObjectUI.py:945 flatcamGUI/ObjectUI.py:1499
+msgid "Plot Object"
+msgstr "Plot Object"
+
+#: flatcamGUI/FlatCAMGUI.py:4579
+msgid "Plot kind:"
+msgstr "Plot kind:"
+
+#: flatcamGUI/FlatCAMGUI.py:4581 flatcamGUI/ObjectUI.py:1421
+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"
+"above the work piece or it can be of type 'Cut',\n"
+"which means the moves that cut into the material."
+msgstr ""
+"This selects the kind of geometries on the canvas to plot.\n"
+"Those can be either of type 'Travel' which means the moves\n"
+"above the work piece or it can be of type 'Cut',\n"
+"which means the moves that cut into the material."
+
+#: flatcamGUI/FlatCAMGUI.py:4589 flatcamGUI/ObjectUI.py:1430
+msgid "Travel"
+msgstr "Travel"
+
+#: flatcamGUI/FlatCAMGUI.py:4600
+msgid ""
+"The number of circle steps for <b>GCode</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+"The number of circle steps for <b>GCode</b> \n"
+"circle and arc shapes linear approximation."
+
+#: flatcamGUI/FlatCAMGUI.py:4610
+msgid ""
+"Diameter of the tool to be\n"
+"rendered in the plot."
+msgstr ""
+"Diameter of the tool to be\n"
+"rendered in the plot."
+
+#: flatcamGUI/FlatCAMGUI.py:4618
+msgid "Coords dec.:"
+msgstr "Coords dec.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4620
+msgid ""
+"The number of decimals to be used for \n"
+"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
+msgstr ""
+"The number of decimals to be used for \n"
+"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
+
+#: flatcamGUI/FlatCAMGUI.py:4628
+msgid "Feedrate dec.:"
+msgstr "Feedrate dec.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4630
+msgid ""
+"The number of decimals to be used for \n"
+"the Feedrate parameter in CNC code (GCODE, etc.)"
+msgstr ""
+"The number of decimals to be used for \n"
+"the Feedrate parameter in CNC code (GCODE, etc.)"
+
+#: flatcamGUI/FlatCAMGUI.py:4645
+msgid "CNC Job Options"
+msgstr "CNC Job Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4648 flatcamGUI/FlatCAMGUI.py:4689
+msgid "<b>Export G-Code:</b>"
+msgstr "<b>Export G-Code:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:4691
+#: flatcamGUI/ObjectUI.py:1535
+msgid ""
+"Export and save G-Code to\n"
+"make this object to a file."
+msgstr ""
+"Export and save G-Code to\n"
+"make this object to a file."
+
+#: flatcamGUI/FlatCAMGUI.py:4656
+msgid "Prepend to G-Code:"
+msgstr "Prepend to G-Code:"
+
+#: flatcamGUI/FlatCAMGUI.py:4658
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add at the beginning of the G-Code file."
+msgstr ""
+"Type here any G-Code commands you would\n"
+"like to add at the beginning of the G-Code file."
+
+#: flatcamGUI/FlatCAMGUI.py:4667
+msgid "Append to G-Code:"
+msgstr "Append to G-Code:"
+
+#: flatcamGUI/FlatCAMGUI.py:4669 flatcamGUI/ObjectUI.py:1557
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to append to the generated file.\n"
+"I.e.: M2 (End of program)"
+msgstr ""
+"Type here any G-Code commands you would\n"
+"like to append to the generated file.\n"
+"I.e.: M2 (End of program)"
+
+#: flatcamGUI/FlatCAMGUI.py:4686
+msgid "CNC Job Adv. Options"
+msgstr "CNC Job Adv. Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/ObjectUI.py:1575
+msgid "Toolchange G-Code:"
+msgstr "Toolchange G-Code:"
+
+#: flatcamGUI/FlatCAMGUI.py:4699
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro."
+msgstr ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro."
+
+#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/ObjectUI.py:1597
+msgid "Use Toolchange Macro"
+msgstr "Use Toolchange Macro"
+
+#: flatcamGUI/FlatCAMGUI.py:4715 flatcamGUI/ObjectUI.py:1600
+msgid ""
+"Check this box if you want to use\n"
+"a Custom Toolchange GCode (macro)."
+msgstr ""
+"Check this box if you want to use\n"
+"a Custom Toolchange GCode (macro)."
+
+#: flatcamGUI/FlatCAMGUI.py:4727 flatcamGUI/ObjectUI.py:1616
+msgid ""
+"A list of the FlatCAM variables that can be used\n"
+"in the Toolchange event.\n"
+"They have to be surrounded by the '%' symbol"
+msgstr ""
+"A list of the FlatCAM variables that can be used\n"
+"in the Toolchange event.\n"
+"They have to be surrounded by the '%' symbol"
+
+#: flatcamGUI/FlatCAMGUI.py:4734 flatcamGUI/ObjectUI.py:1624
+msgid "Parameters"
+msgstr "Parameters"
+
+#: flatcamGUI/FlatCAMGUI.py:4737 flatcamGUI/ObjectUI.py:1627
+msgid "FlatCAM CNC parameters"
+msgstr "FlatCAM CNC parameters"
+
+#: flatcamGUI/FlatCAMGUI.py:4738 flatcamGUI/ObjectUI.py:1628
+msgid "tool = tool number"
+msgstr "tool = tool number"
+
+#: flatcamGUI/FlatCAMGUI.py:4739 flatcamGUI/ObjectUI.py:1629
+msgid "tooldia = tool diameter"
+msgstr "tooldia = tool diameter"
+
+#: flatcamGUI/FlatCAMGUI.py:4740 flatcamGUI/ObjectUI.py:1630
+msgid "t_drills = for Excellon, total number of drills"
+msgstr "t_drills = for Excellon, total number of drills"
+
+#: flatcamGUI/FlatCAMGUI.py:4741 flatcamGUI/ObjectUI.py:1631
+msgid "x_toolchange = X coord for Toolchange"
+msgstr "x_toolchange = X coord for Toolchange"
+
+#: flatcamGUI/FlatCAMGUI.py:4742 flatcamGUI/ObjectUI.py:1632
+msgid "y_toolchange = Y coord for Toolchange"
+msgstr "y_toolchange = Y coord for Toolchange"
+
+#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:1633
+msgid "z_toolchange = Z coord for Toolchange"
+msgstr "z_toolchange = Z coord for Toolchange"
+
+#: flatcamGUI/FlatCAMGUI.py:4744
+msgid "z_cut = Z depth for the cut"
+msgstr "z_cut = Z depth for the cut"
+
+#: flatcamGUI/FlatCAMGUI.py:4745
+msgid "z_move = Z height for travel"
+msgstr "z_move = Z height for travel"
+
+#: flatcamGUI/FlatCAMGUI.py:4746 flatcamGUI/ObjectUI.py:1636
+msgid "z_depthpercut = the step value for multidepth cut"
+msgstr "z_depthpercut = the step value for multidepth cut"
+
+#: flatcamGUI/FlatCAMGUI.py:4747 flatcamGUI/ObjectUI.py:1637
+msgid "spindlesspeed = the value for the spindle speed"
+msgstr "spindlesspeed = the value for the spindle speed"
+
+#: flatcamGUI/FlatCAMGUI.py:4748 flatcamGUI/ObjectUI.py:1638
+msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
+msgstr "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
+
+#: flatcamGUI/FlatCAMGUI.py:4769
+msgid "NCC Tool Options"
+msgstr "NCC Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4772 flatcamGUI/FlatCAMGUI.py:4873
+#: flatcamGUI/FlatCAMGUI.py:4943 flatcamGUI/FlatCAMGUI.py:5002
+#: flatcamGUI/FlatCAMGUI.py:5105 flatcamGUI/FlatCAMGUI.py:5166
+#: flatcamGUI/FlatCAMGUI.py:5365 flatcamGUI/FlatCAMGUI.py:5492
+msgid "<b>Parameters:</b>"
+msgstr "<b>Parameters:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4782 flatcamGUI/FlatCAMGUI.py:5503
+msgid "Tools dia:"
+msgstr "Tools dia:"
+
+#: flatcamGUI/FlatCAMGUI.py:4784
+msgid "Diameters of the cutting tools, separated by ','"
+msgstr "Diameters of the cutting tools, separated by ','"
+
+#: flatcamGUI/FlatCAMGUI.py:4792 flatcamTools/ToolNonCopperClear.py:166
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be cleared are still \n"
+"not cleared.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be cleared are still \n"
+"not cleared.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+
+#: flatcamGUI/FlatCAMGUI.py:4808 flatcamTools/ToolNonCopperClear.py:182
+msgid "Bounding box margin."
+msgstr "Bounding box margin."
+
+#: flatcamGUI/FlatCAMGUI.py:4817 flatcamTools/ToolNonCopperClear.py:191
+#: flatcamTools/ToolPaint.py:190
+msgid ""
+"Algorithm for non-copper clearing:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed.<BR><B>Line-based</B>: Parallel "
+"lines."
+msgstr ""
+"Algorithm for non-copper clearing:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed.<BR><B>Line-based</B>: Parallel "
+"lines."
+
+#: flatcamGUI/FlatCAMGUI.py:4849 flatcamTools/ToolNonCopperClear.py:223
+#: flatcamTools/ToolPaint.py:222
+msgid "Rest M.:"
+msgstr "Rest M.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4851
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool.\n"
+"If not checked, use the standard algorithm."
+
+#: flatcamGUI/FlatCAMGUI.py:4870
+msgid "Cutout Tool Options"
+msgstr "Cutout Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4875 flatcamGUI/ObjectUI.py:473
+msgid ""
+"Create toolpaths to cut around\n"
+"the PCB and separate it from\n"
+"the original board."
+msgstr ""
+"Create toolpaths to cut around\n"
+"the PCB and separate it from\n"
+"the original board."
+
+#: flatcamGUI/FlatCAMGUI.py:4894
+msgid ""
+"Distance from objects at which\n"
+"to draw the cutout."
+msgstr ""
+"Distance from objects at which\n"
+"to draw the cutout."
+
+#: flatcamGUI/FlatCAMGUI.py:4901 flatcamTools/ToolCutOut.py:96
+msgid "Gap size:"
+msgstr "Gap size:"
+
+#: flatcamGUI/FlatCAMGUI.py:4903
+msgid ""
+"Size of the gaps in the toolpath\n"
+"that will remain to hold the\n"
+"board in place."
+msgstr ""
+"Size of the gaps in the toolpath\n"
+"that will remain to hold the\n"
+"board in place."
+
+#: flatcamGUI/FlatCAMGUI.py:4911 flatcamTools/ToolCutOut.py:125
+msgid "Gaps:"
+msgstr "Gaps:"
+
+#: flatcamGUI/FlatCAMGUI.py:4913
+msgid ""
+"Number of bridge gaps used for the cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+"Number of bridge gaps used for the cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+
+#: flatcamGUI/FlatCAMGUI.py:4940
+msgid "2Sided Tool Options"
+msgstr "2Sided Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:4945
+msgid ""
+"A tool to help in creating a double sided\n"
+"PCB using alignment holes."
+msgstr ""
+"A tool to help in creating a double sided\n"
+"PCB using alignment holes."
+
+#: flatcamGUI/FlatCAMGUI.py:4955 flatcamTools/ToolDblSided.py:235
+msgid "Drill diam.:"
+msgstr "Drill diam.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4957 flatcamTools/ToolDblSided.py:226
+#: flatcamTools/ToolDblSided.py:237
+msgid "Diameter of the drill for the alignment holes."
+msgstr "Diameter of the drill for the alignment holes."
+
+#: flatcamGUI/FlatCAMGUI.py:4964
+msgid "X"
+msgstr "X"
+
+#: flatcamGUI/FlatCAMGUI.py:4965
+msgid "Y"
+msgstr "Y"
+
+#: flatcamGUI/FlatCAMGUI.py:4966 flatcamTools/ToolDblSided.py:120
+msgid "Mirror Axis:"
+msgstr "Mirror Axis:"
+
+#: flatcamGUI/FlatCAMGUI.py:4968 flatcamTools/ToolDblSided.py:122
+msgid "Mirror vertically (X) or horizontally (Y)."
+msgstr "Mirror vertically (X) or horizontally (Y)."
+
+#: flatcamGUI/FlatCAMGUI.py:4977
+msgid "Point"
+msgstr "Point"
+
+#: flatcamGUI/FlatCAMGUI.py:4978
+msgid "Box"
+msgstr "Box"
+
+#: flatcamGUI/FlatCAMGUI.py:4979 flatcamTools/ToolDblSided.py:133
+msgid "Axis Ref:"
+msgstr "Axis Ref:"
+
+#: flatcamGUI/FlatCAMGUI.py:4981
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a Geometry object) in \n"
+"the middle."
+msgstr ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a Geometry object) in \n"
+"the middle."
+
+#: flatcamGUI/FlatCAMGUI.py:4997
+msgid "Paint Tool Options"
+msgstr "Paint Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5004 flatcamGUI/ObjectUI.py:1370
+msgid ""
+"Creates tool paths to cover the\n"
+"whole area of a polygon (remove\n"
+"all copper). You will be asked\n"
+"to click on the desired polygon."
+msgstr ""
+"Creates tool paths to cover the\n"
+"whole area of a polygon (remove\n"
+"all copper). You will be asked\n"
+"to click on the desired polygon."
+
+#: flatcamGUI/FlatCAMGUI.py:5028
+msgid ""
+"How much (fraction) of the tool\n"
+"width to overlap each tool pass."
+msgstr ""
+"How much (fraction) of the tool\n"
+"width to overlap each tool pass."
+
+#: flatcamGUI/FlatCAMGUI.py:5082 flatcamTools/ToolPaint.py:237
+msgid "Selection:"
+msgstr "Selection:"
+
+#: flatcamGUI/FlatCAMGUI.py:5084
+msgid "How to select the polygons to paint."
+msgstr "How to select the polygons to paint."
+
+#: flatcamGUI/FlatCAMGUI.py:5088
+msgid "Single"
+msgstr "Single"
+
+#: flatcamGUI/FlatCAMGUI.py:5102
+msgid "Film Tool Options"
+msgstr "Film Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5107
+msgid ""
+"Create a PCB film from a Gerber or Geometry\n"
+"FlatCAM object.\n"
+"The file is saved in SVG format."
+msgstr ""
+"Create a PCB film from a Gerber or Geometry\n"
+"FlatCAM object.\n"
+"The file is saved in SVG format."
+
+#: flatcamGUI/FlatCAMGUI.py:5116
+msgid "Pos"
+msgstr "Pos"
+
+#: flatcamGUI/FlatCAMGUI.py:5117
+msgid "Neg"
+msgstr "Neg"
+
+#: flatcamGUI/FlatCAMGUI.py:5118 flatcamTools/ToolFilm.py:116
+msgid "Film Type:"
+msgstr "Film Type:"
+
+#: flatcamGUI/FlatCAMGUI.py:5120 flatcamTools/ToolFilm.py:118
+msgid ""
+"Generate a Positive black film or a Negative film.\n"
+"Positive means that it will print the features\n"
+"with black on a white canvas.\n"
+"Negative means that it will print the features\n"
+"with white on a black canvas.\n"
+"The Film format is SVG."
+msgstr ""
+"Generate a Positive black film or a Negative film.\n"
+"Positive means that it will print the features\n"
+"with black on a white canvas.\n"
+"Negative means that it will print the features\n"
+"with white on a black canvas.\n"
+"The Film format is SVG."
+
+#: flatcamGUI/FlatCAMGUI.py:5131 flatcamTools/ToolFilm.py:130
+msgid "Border:"
+msgstr "Border:"
+
+#: flatcamGUI/FlatCAMGUI.py:5133 flatcamTools/ToolFilm.py:132
+msgid ""
+"Specify a border around the object.\n"
+"Only for negative film.\n"
+"It helps if we use as a Box Object the same \n"
+"object as in Film Object. It will create a thick\n"
+"black bar around the actual print allowing for a\n"
+"better delimitation of the outline features which are of\n"
+"white color like the rest and which may confound with the\n"
+"surroundings if not for this border."
+msgstr ""
+"Specify a border around the object.\n"
+"Only for negative film.\n"
+"It helps if we use as a Box Object the same \n"
+"object as in Film Object. It will create a thick\n"
+"black bar around the actual print allowing for a\n"
+"better delimitation of the outline features which are of\n"
+"white color like the rest and which may confound with the\n"
+"surroundings if not for this border."
+
+#: flatcamGUI/FlatCAMGUI.py:5146 flatcamTools/ToolFilm.py:144
+msgid "Scale Stroke:"
+msgstr "Scale Stroke:"
+
+#: flatcamGUI/FlatCAMGUI.py:5148 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 "
+"thinner,\n"
+"therefore the fine features may be more affected by this parameter."
+msgstr ""
+"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 "
+"thinner,\n"
+"therefore the fine features may be more affected by this parameter."
+
+#: flatcamGUI/FlatCAMGUI.py:5163
+msgid "Panelize Tool Options"
+msgstr "Panelize Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5168
+msgid ""
+"Create an object that contains an array of (x, y) elements,\n"
+"each element is a copy of the source object spaced\n"
+"at a X distance, Y distance of each other."
+msgstr ""
+"Create an object that contains an array of (x, y) elements,\n"
+"each element is a copy of the source object spaced\n"
+"at a X distance, Y distance of each other."
+
+#: flatcamGUI/FlatCAMGUI.py:5179 flatcamTools/ToolPanelize.py:113
+msgid "Spacing cols:"
+msgstr "Spacing cols:"
+
+#: flatcamGUI/FlatCAMGUI.py:5181 flatcamTools/ToolPanelize.py:115
+msgid ""
+"Spacing between columns of the desired panel.\n"
+"In current units."
+msgstr ""
+"Spacing between columns of the desired panel.\n"
+"In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5189 flatcamTools/ToolPanelize.py:122
+msgid "Spacing rows:"
+msgstr "Spacing rows:"
+
+#: flatcamGUI/FlatCAMGUI.py:5191 flatcamTools/ToolPanelize.py:124
+msgid ""
+"Spacing between rows of the desired panel.\n"
+"In current units."
+msgstr ""
+"Spacing between rows of the desired panel.\n"
+"In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5199 flatcamTools/ToolPanelize.py:131
+msgid "Columns:"
+msgstr "Columns:"
+
+#: flatcamGUI/FlatCAMGUI.py:5201 flatcamTools/ToolPanelize.py:133
+msgid "Number of columns of the desired panel"
+msgstr "Number of columns of the desired panel"
+
+#: flatcamGUI/FlatCAMGUI.py:5208 flatcamTools/ToolPanelize.py:139
+msgid "Rows:"
+msgstr "Rows:"
+
+#: flatcamGUI/FlatCAMGUI.py:5210 flatcamTools/ToolPanelize.py:141
+msgid "Number of rows of the desired panel"
+msgstr "Number of rows of the desired panel"
+
+#: flatcamGUI/FlatCAMGUI.py:5216
+msgid "Gerber"
+msgstr "Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:5217
+msgid "Geo"
+msgstr "Geo"
+
+#: flatcamGUI/FlatCAMGUI.py:5218 flatcamTools/ToolPanelize.py:148
+msgid "Panel Type:"
+msgstr "Panel Type:"
+
+#: flatcamGUI/FlatCAMGUI.py:5220
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Gerber\n"
+"- Geometry"
+msgstr ""
+"Choose the type of object for the panel object:\n"
+"- Gerber\n"
+"- Geometry"
+
+#: flatcamGUI/FlatCAMGUI.py:5229
+msgid "Constrain within:"
+msgstr "Constrain within:"
+
+#: flatcamGUI/FlatCAMGUI.py:5231 flatcamTools/ToolPanelize.py:160
+msgid ""
+"Area define by DX and DY within to constrain the panel.\n"
+"DX and DY values are in current units.\n"
+"Regardless of how many columns and rows are desired,\n"
+"the final panel will have as many columns and rows as\n"
+"they fit completely within selected area."
+msgstr ""
+"Area define by DX and DY within to constrain the panel.\n"
+"DX and DY values are in current units.\n"
+"Regardless of how many columns and rows are desired,\n"
+"the final panel will have as many columns and rows as\n"
+"they fit completely within selected area."
+
+#: flatcamGUI/FlatCAMGUI.py:5240 flatcamTools/ToolPanelize.py:169
+msgid "Width (DX):"
+msgstr "Width (DX):"
+
+#: flatcamGUI/FlatCAMGUI.py:5242 flatcamTools/ToolPanelize.py:171
+msgid ""
+"The width (DX) within which the panel must fit.\n"
+"In current units."
+msgstr ""
+"The width (DX) within which the panel must fit.\n"
+"In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5249 flatcamTools/ToolPanelize.py:177
+msgid "Height (DY):"
+msgstr "Height (DY):"
+
+#: flatcamGUI/FlatCAMGUI.py:5251 flatcamTools/ToolPanelize.py:179
+msgid ""
+"The height (DY)within which the panel must fit.\n"
+"In current units."
+msgstr ""
+"The height (DY)within which the panel must fit.\n"
+"In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5265
+msgid "Calculators Tool Options"
+msgstr "Calculators Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5268
+msgid "<b>V-Shape Tool Calculator:</b>"
+msgstr "<b>V-Shape Tool Calculator:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5270
+msgid ""
+"Calculate the tool diameter for a given V-shape tool,\n"
+"having the tip diameter, tip angle and\n"
+"depth-of-cut as parameters."
+msgstr ""
+"Calculate the tool diameter for a given V-shape tool,\n"
+"having the tip diameter, tip angle and\n"
+"depth-of-cut as parameters."
+
+#: flatcamGUI/FlatCAMGUI.py:5281 flatcamTools/ToolCalculators.py:94
+msgid "Tip Diameter:"
+msgstr "Tip Diameter:"
+
+#: flatcamGUI/FlatCAMGUI.py:5283
+msgid ""
+"This is the tool tip diameter.\n"
+"It is specified by manufacturer."
+msgstr ""
+"This is the tool tip diameter.\n"
+"It is specified by manufacturer."
+
+#: flatcamGUI/FlatCAMGUI.py:5291
+msgid "Tip angle:"
+msgstr "Tip angle:"
+
+#: flatcamGUI/FlatCAMGUI.py:5293
+msgid ""
+"This is the angle on the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+"This is the angle on the tip of the tool.\n"
+"It is specified by manufacturer."
+
+#: flatcamGUI/FlatCAMGUI.py:5303
+msgid ""
+"This is depth to cut into material.\n"
+"In the CNCJob object it is the CutZ parameter."
+msgstr ""
+"This is depth to cut into material.\n"
+"In the CNCJob object it is the CutZ parameter."
+
+#: flatcamGUI/FlatCAMGUI.py:5310
+msgid "<b>ElectroPlating Calculator:</b>"
+msgstr "<b>ElectroPlating Calculator:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5312 flatcamTools/ToolCalculators.py:152
+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 "
+"chloride."
+msgstr ""
+"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 "
+"chloride."
+
+#: flatcamGUI/FlatCAMGUI.py:5322 flatcamTools/ToolCalculators.py:161
+msgid "Board Length:"
+msgstr "Board Length:"
+
+#: flatcamGUI/FlatCAMGUI.py:5324 flatcamTools/ToolCalculators.py:165
+msgid "This is the board length. In centimeters."
+msgstr "This is the board length. In centimeters."
+
+#: flatcamGUI/FlatCAMGUI.py:5330 flatcamTools/ToolCalculators.py:167
+msgid "Board Width:"
+msgstr "Board Width:"
+
+#: flatcamGUI/FlatCAMGUI.py:5332 flatcamTools/ToolCalculators.py:171
+msgid "This is the board width.In centimeters."
+msgstr "This is the board width.In centimeters."
+
+#: flatcamGUI/FlatCAMGUI.py:5337 flatcamTools/ToolCalculators.py:173
+msgid "Current Density:"
+msgstr "Current Density:"
+
+#: flatcamGUI/FlatCAMGUI.py:5340 flatcamTools/ToolCalculators.py:177
+msgid ""
+"Current density to pass through the board. \n"
+"In Amps per Square Feet ASF."
+msgstr ""
+"Current density to pass through the board. \n"
+"In Amps per Square Feet ASF."
+
+#: flatcamGUI/FlatCAMGUI.py:5346 flatcamTools/ToolCalculators.py:181
+msgid "Copper Growth:"
+msgstr "Copper Growth:"
+
+#: flatcamGUI/FlatCAMGUI.py:5349 flatcamTools/ToolCalculators.py:185
+msgid ""
+"How thick the copper growth is intended to be.\n"
+"In microns."
+msgstr ""
+"How thick the copper growth is intended to be.\n"
+"In microns."
+
+#: flatcamGUI/FlatCAMGUI.py:5362
+msgid "Transform Tool Options"
+msgstr "Transform Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5367
+msgid ""
+"Various transformations that can be applied\n"
+"on a FlatCAM object."
+msgstr ""
+"Various transformations that can be applied\n"
+"on a FlatCAM object."
+
+#: flatcamGUI/FlatCAMGUI.py:5377
+msgid "Rotate Angle:"
+msgstr "Rotate Angle:"
+
+#: flatcamGUI/FlatCAMGUI.py:5379
+msgid "Angle for rotation. In degrees."
+msgstr "Angle for rotation. In degrees."
+
+#: flatcamGUI/FlatCAMGUI.py:5386
+msgid "Skew_X angle:"
+msgstr "Skew_X angle:"
+
+#: flatcamGUI/FlatCAMGUI.py:5388
+msgid "Angle for Skew/Shear on X axis. In degrees."
+msgstr "Angle for Skew/Shear on X axis. In degrees."
+
+#: flatcamGUI/FlatCAMGUI.py:5395
+msgid "Skew_Y angle:"
+msgstr "Skew_Y angle:"
+
+#: flatcamGUI/FlatCAMGUI.py:5397
+msgid "Angle for Skew/Shear on Y axis. In degrees."
+msgstr "Angle for Skew/Shear on Y axis. In degrees."
+
+#: flatcamGUI/FlatCAMGUI.py:5404
+msgid "Scale_X factor:"
+msgstr "Scale_X factor:"
+
+#: flatcamGUI/FlatCAMGUI.py:5406
+msgid "Factor for scaling on X axis."
+msgstr "Factor for scaling on X axis."
+
+#: flatcamGUI/FlatCAMGUI.py:5413
+msgid "Scale_Y factor:"
+msgstr "Scale_Y factor:"
+
+#: flatcamGUI/FlatCAMGUI.py:5415
+msgid "Factor for scaling on Y axis."
+msgstr "Factor for scaling on Y axis."
+
+#: flatcamGUI/FlatCAMGUI.py:5423
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale_X factor for both axis."
+msgstr ""
+"Scale the selected object(s)\n"
+"using the Scale_X factor for both axis."
+
+#: flatcamGUI/FlatCAMGUI.py:5431 flatcamTools/ToolTransform.py:210
+msgid ""
+"Scale the selected object(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected objects when unchecked."
+msgstr ""
+"Scale the selected object(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected objects when unchecked."
+
+#: flatcamGUI/FlatCAMGUI.py:5440
+msgid "Offset_X val:"
+msgstr "Offset_X val:"
+
+#: flatcamGUI/FlatCAMGUI.py:5442
+msgid "Distance to offset on X axis. In current units."
+msgstr "Distance to offset on X axis. In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5449
+msgid "Offset_Y val:"
+msgstr "Offset_Y val:"
+
+#: flatcamGUI/FlatCAMGUI.py:5451
+msgid "Distance to offset on Y axis. In current units."
+msgstr "Distance to offset on Y axis. In current units."
+
+#: flatcamGUI/FlatCAMGUI.py:5457
+msgid "Mirror Reference"
+msgstr "Mirror Reference"
+
+#: flatcamGUI/FlatCAMGUI.py:5459 flatcamTools/ToolTransform.py:314
+msgid ""
+"Flip the selected object(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+"Flip the selected object(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+
+#: flatcamGUI/FlatCAMGUI.py:5470
+msgid " Mirror Ref. Point:"
+msgstr " Mirror Ref. Point:"
+
+#: flatcamGUI/FlatCAMGUI.py:5472 flatcamTools/ToolTransform.py:327
+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"
+"the 'y' in (x, y) will be used when using Flip on Y and"
+msgstr ""
+"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"
+"the 'y' in (x, y) will be used when using Flip on Y and"
+
+#: flatcamGUI/FlatCAMGUI.py:5489
+msgid "SolderPaste Tool Options"
+msgstr "SolderPaste Tool Options"
+
+#: flatcamGUI/FlatCAMGUI.py:5494
+msgid ""
+"A tool to create GCode for dispensing\n"
+"solder paste onto a PCB."
+msgstr ""
+"A tool to create GCode for dispensing\n"
+"solder paste onto a PCB."
+
+#: flatcamGUI/FlatCAMGUI.py:5505
+msgid "Diameters of nozzle tools, separated by ','"
+msgstr "Diameters of nozzle tools, separated by ','"
+
+#: flatcamGUI/FlatCAMGUI.py:5512
+msgid "<b>New Nozzle Dia:</b>"
+msgstr "<b>New Nozzle Dia:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5514 flatcamTools/ToolSolderPaste.py:103
+msgid "Diameter for the new Nozzle tool to add in the Tool Table"
+msgstr "Diameter for the new Nozzle tool to add in the Tool Table"
+
+#: flatcamGUI/FlatCAMGUI.py:5522 flatcamTools/ToolSolderPaste.py:166
+msgid "Z Dispense Start:"
+msgstr "Z Dispense Start:"
+
+#: flatcamGUI/FlatCAMGUI.py:5524 flatcamTools/ToolSolderPaste.py:168
+msgid "The height (Z) when solder paste dispensing starts."
+msgstr "The height (Z) when solder paste dispensing starts."
+
+#: flatcamGUI/FlatCAMGUI.py:5531 flatcamTools/ToolSolderPaste.py:174
+msgid "Z Dispense:"
+msgstr "Z Dispense:"
+
+#: flatcamGUI/FlatCAMGUI.py:5533 flatcamTools/ToolSolderPaste.py:176
+msgid "The height (Z) when doing solder paste dispensing."
+msgstr "The height (Z) when doing solder paste dispensing."
+
+#: flatcamGUI/FlatCAMGUI.py:5540 flatcamTools/ToolSolderPaste.py:183
+msgid "Z Dispense Stop:"
+msgstr "Z Dispense Stop:"
+
+#: flatcamGUI/FlatCAMGUI.py:5542 flatcamTools/ToolSolderPaste.py:185
+msgid "The height (Z) when solder paste dispensing stops."
+msgstr "The height (Z) when solder paste dispensing stops."
+
+#: flatcamGUI/FlatCAMGUI.py:5549 flatcamTools/ToolSolderPaste.py:191
+msgid "Z Travel:"
+msgstr "Z Travel:"
+
+#: flatcamGUI/FlatCAMGUI.py:5551 flatcamTools/ToolSolderPaste.py:193
+msgid ""
+"The height (Z) for travel between pads\n"
+"(without dispensing solder paste)."
+msgstr ""
+"The height (Z) for travel between pads\n"
+"(without dispensing solder paste)."
+
+#: flatcamGUI/FlatCAMGUI.py:5559 flatcamTools/ToolSolderPaste.py:200
+msgid "Z Toolchange:"
+msgstr "Z Toolchange:"
+
+#: flatcamGUI/FlatCAMGUI.py:5561 flatcamTools/ToolSolderPaste.py:202
+msgid "The height (Z) for tool (nozzle) change."
+msgstr "The height (Z) for tool (nozzle) change."
+
+#: flatcamGUI/FlatCAMGUI.py:5568 flatcamTools/ToolSolderPaste.py:208
+msgid "XY Toolchange:"
+msgstr "XY Toolchange:"
+
+#: flatcamGUI/FlatCAMGUI.py:5570 flatcamTools/ToolSolderPaste.py:210
+msgid ""
+"The X,Y location for tool (nozzle) change.\n"
+"The format is (x, y) where x and y are real numbers."
+msgstr ""
+"The X,Y location for tool (nozzle) change.\n"
+"The format is (x, y) where x and y are real numbers."
+
+#: flatcamGUI/FlatCAMGUI.py:5578 flatcamTools/ToolSolderPaste.py:217
+msgid "Feedrate X-Y:"
+msgstr "Feedrate X-Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:5580 flatcamTools/ToolSolderPaste.py:219
+msgid "Feedrate (speed) while moving on the X-Y plane."
+msgstr "Feedrate (speed) while moving on the X-Y plane."
+
+#: flatcamGUI/FlatCAMGUI.py:5587 flatcamTools/ToolSolderPaste.py:225
+msgid "Feedrate Z:"
+msgstr "Feedrate Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:5589 flatcamTools/ToolSolderPaste.py:227
+msgid ""
+"Feedrate (speed) while moving vertically\n"
+"(on Z plane)."
+msgstr ""
+"Feedrate (speed) while moving vertically\n"
+"(on Z plane)."
+
+#: flatcamGUI/FlatCAMGUI.py:5597 flatcamTools/ToolSolderPaste.py:234
+msgid "Feedrate Z Dispense:"
+msgstr "Feedrate Z Dispense:"
+
+#: flatcamGUI/FlatCAMGUI.py:5599 flatcamTools/ToolSolderPaste.py:236
+msgid ""
+"Feedrate (speed) while moving up vertically\n"
+" to Dispense position (on Z plane)."
+msgstr ""
+"Feedrate (speed) while moving up vertically\n"
+" to Dispense position (on Z plane)."
+
+#: flatcamGUI/FlatCAMGUI.py:5607 flatcamTools/ToolSolderPaste.py:243
+msgid "Spindle Speed FWD:"
+msgstr "Spindle Speed FWD:"
+
+#: flatcamGUI/FlatCAMGUI.py:5609 flatcamTools/ToolSolderPaste.py:245
+msgid ""
+"The dispenser speed while pushing solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+"The dispenser speed while pushing solder paste\n"
+"through the dispenser nozzle."
+
+#: flatcamGUI/FlatCAMGUI.py:5617 flatcamTools/ToolSolderPaste.py:252
+msgid "Dwell FWD:"
+msgstr "Dwell FWD:"
+
+#: flatcamGUI/FlatCAMGUI.py:5619 flatcamTools/ToolSolderPaste.py:254
+msgid "Pause after solder dispensing."
+msgstr "Pause after solder dispensing."
+
+#: flatcamGUI/FlatCAMGUI.py:5626 flatcamTools/ToolSolderPaste.py:260
+msgid "Spindle Speed REV:"
+msgstr "Spindle Speed REV:"
+
+#: flatcamGUI/FlatCAMGUI.py:5628 flatcamTools/ToolSolderPaste.py:262
+msgid ""
+"The dispenser speed while retracting solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+"The dispenser speed while retracting solder paste\n"
+"through the dispenser nozzle."
+
+#: flatcamGUI/FlatCAMGUI.py:5636 flatcamTools/ToolSolderPaste.py:269
+msgid "Dwell REV:"
+msgstr "Dwell REV:"
+
+#: flatcamGUI/FlatCAMGUI.py:5638 flatcamTools/ToolSolderPaste.py:271
+msgid ""
+"Pause after solder paste dispenser retracted,\n"
+"to allow pressure equilibrium."
+msgstr ""
+"Pause after solder paste dispenser retracted,\n"
+"to allow pressure equilibrium."
+
+#: flatcamGUI/FlatCAMGUI.py:5645 flatcamTools/ToolSolderPaste.py:277
+msgid "PostProcessors:"
+msgstr "PostProcessors:"
+
+#: flatcamGUI/FlatCAMGUI.py:5647 flatcamTools/ToolSolderPaste.py:279
+msgid "Files that control the GCode generation."
+msgstr "Files that control the GCode generation."
+
+#: flatcamGUI/FlatCAMGUI.py:5677 flatcamGUI/FlatCAMGUI.py:5683
+msgid "Idle."
+msgstr "Idle."
+
+#: flatcamGUI/FlatCAMGUI.py:5707
+msgid "Application started ..."
+msgstr "Application started ..."
+
+#: flatcamGUI/FlatCAMGUI.py:5708
+msgid "Hello!"
+msgstr "Hello!"
+
+#: flatcamGUI/ObjectUI.py:33
+msgid "FlatCAM Object"
+msgstr "FlatCAM Object"
+
+#: flatcamGUI/ObjectUI.py:58
+msgid ""
+"BASIC is suitable for a beginner. Many parameters\n"
+"are hidden from the user in this mode.\n"
+"ADVANCED mode will make available all parameters.\n"
+"\n"
+"To change the application LEVEL, go to:\n"
+"Edit -> Preferences -> General and check:\n"
+"'APP. LEVEL' radio button."
+msgstr ""
+"BASIC is suitable for a beginner. Many parameters\n"
+"are hidden from the user in this mode.\n"
+"ADVANCED mode will make available all parameters.\n"
+"\n"
+"To change the application LEVEL, go to:\n"
+"Edit -> Preferences -> General and check:\n"
+"'APP. LEVEL' radio button."
+
+#: flatcamGUI/ObjectUI.py:79
+msgid "<b>Scale:</b>"
+msgstr "<b>Scale:</b>"
+
+#: flatcamGUI/ObjectUI.py:81
+msgid "Change the size of the object."
+msgstr "Change the size of the object."
+
+#: flatcamGUI/ObjectUI.py:89
+msgid "Factor:"
+msgstr "Factor:"
+
+#: flatcamGUI/ObjectUI.py:91
+msgid ""
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+"Factor by which to multiply\n"
+"geometric features of this object."
+
+#: flatcamGUI/ObjectUI.py:102
+msgid "Perform scaling operation."
+msgstr "Perform scaling operation."
+
+#: flatcamGUI/ObjectUI.py:108
+msgid "<b>Offset:</b>"
+msgstr "<b>Offset:</b>"
+
+#: flatcamGUI/ObjectUI.py:110
+msgid "Change the position of this object."
+msgstr "Change the position of this object."
+
+#: flatcamGUI/ObjectUI.py:117
+msgid "Vector:"
+msgstr "Vector:"
+
+#: flatcamGUI/ObjectUI.py:119
+msgid ""
+"Amount by which to move the object\n"
+"in the x and y axes in (x, y) format."
+msgstr ""
+"Amount by which to move the object\n"
+"in the x and y axes in (x, y) format."
+
+#: flatcamGUI/ObjectUI.py:129
+msgid "Perform the offset operation."
+msgstr "Perform the offset operation."
+
+#: flatcamGUI/ObjectUI.py:143
+msgid "Gerber Object"
+msgstr "Gerber Object"
+
+#: flatcamGUI/ObjectUI.py:156
+msgid "Solid   "
+msgstr "Solid   "
+
+#: flatcamGUI/ObjectUI.py:164
+msgid "M-Color   "
+msgstr "M-Color   "
+
+#: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:588
+#: flatcamGUI/ObjectUI.py:907 flatcamGUI/ObjectUI.py:1437
+msgid "<b>Name:</b>"
+msgstr "<b>Name:</b>"
+
+#: flatcamGUI/ObjectUI.py:192
+msgid "<b>Apertures:</b>"
+msgstr "<b>Apertures:</b>"
+
+#: flatcamGUI/ObjectUI.py:194
+msgid "Apertures Table for the Gerber Object."
+msgstr "Apertures Table for the Gerber Object."
+
+#: flatcamGUI/ObjectUI.py:203
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+
+#: flatcamGUI/ObjectUI.py:214
+msgid "Mark All"
+msgstr "Mark All"
+
+#: flatcamGUI/ObjectUI.py:216
+msgid ""
+"When checked it will display all the apertures.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"When checked it will display all the apertures.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Code"
+msgstr "Code"
+
+#: flatcamGUI/ObjectUI.py:228 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517
+msgid "Type"
+msgstr "Type"
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Size"
+msgstr "Size"
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Dim"
+msgstr "Dim"
+
+#: flatcamGUI/ObjectUI.py:232
+msgid "Index"
+msgstr "Index"
+
+#: flatcamGUI/ObjectUI.py:234
+msgid "Aperture Code"
+msgstr "Aperture Code"
+
+#: flatcamGUI/ObjectUI.py:236
+msgid "Type of aperture: circular, rectangle, macros etc"
+msgstr "Type of aperture: circular, rectangle, macros etc"
+
+#: flatcamGUI/ObjectUI.py:238
+msgid "Aperture Size:"
+msgstr "Aperture Size:"
+
+#: flatcamGUI/ObjectUI.py:240
+msgid ""
+"Aperture Dimensions:\n"
+" - (width, height) for R, O type.\n"
+" - (dia, nVertices) for P type"
+msgstr ""
+"Aperture Dimensions:\n"
+" - (width, height) for R, O type.\n"
+" - (dia, nVertices) for P type"
+
+#: flatcamGUI/ObjectUI.py:244
+msgid "Mark the aperture instances on canvas."
+msgstr "Mark the aperture instances on canvas."
+
+#: flatcamGUI/ObjectUI.py:252
+msgid "Scale Factor:"
+msgstr "Scale Factor:"
+
+#: flatcamGUI/ObjectUI.py:267
+msgid "Perform scaling operation on the selected apertures."
+msgstr "Perform scaling operation on the selected apertures."
+
+#: flatcamGUI/ObjectUI.py:273
+msgid "Buffer Factor:"
+msgstr "Buffer Factor:"
+
+#: flatcamGUI/ObjectUI.py:286
+msgid "Buffer"
+msgstr "Buffer"
+
+#: flatcamGUI/ObjectUI.py:288
+msgid "Perform buffer operation on the selected apertures."
+msgstr "Perform buffer operation on the selected apertures."
+
+#: flatcamGUI/ObjectUI.py:296
+msgid "<b>Generate new Gerber Object:</b>"
+msgstr "<b>Generate new Gerber Object:</b>"
+
+#: flatcamGUI/ObjectUI.py:298
+msgid "Will generate a new Gerber object from the changed apertures."
+msgstr "Will generate a new Gerber object from the changed apertures."
+
+#: flatcamGUI/ObjectUI.py:304
+msgid "Go"
+msgstr "Go"
+
+#: flatcamGUI/ObjectUI.py:306
+msgid ""
+"Will generate a new Gerber object from the changed apertures.\n"
+"This new object can then be isolated etc."
+msgstr ""
+"Will generate a new Gerber object from the changed apertures.\n"
+"This new object can then be isolated etc."
+
+#: flatcamGUI/ObjectUI.py:333
+msgid ""
+"Diameter of the cutting tool.\n"
+"If you want to have an isolation path\n"
+"inside the actual shape of the Gerber\n"
+"feature, use a negative value for\n"
+"this parameter."
+msgstr ""
+"Diameter of the cutting tool.\n"
+"If you want to have an isolation path\n"
+"inside the actual shape of the Gerber\n"
+"feature, use a negative value for\n"
+"this parameter."
+
+#: flatcamGUI/ObjectUI.py:344
+msgid "Passes:"
+msgstr "Passes:"
+
+#: flatcamGUI/ObjectUI.py:378
+msgid "Combine"
+msgstr "Combine"
+
+#: flatcamGUI/ObjectUI.py:394
+msgid "<b>Generate Isolation Geometry:</b>"
+msgstr "<b>Generate Isolation Geometry:</b>"
+
+#: flatcamGUI/ObjectUI.py:396
+msgid ""
+"Create a Geometry object with toolpaths to cut \n"
+"isolation outside, inside or on both sides of the\n"
+"object. For a Gerber object outside means outside\n"
+"of the Gerber feature and inside means inside of\n"
+"the Gerber feature, if possible at all. This means\n"
+"that only if the Gerber feature has openings inside, they\n"
+"will be isolated. If what is wanted is to cut isolation\n"
+"inside the actual Gerber feature, use a negative tool\n"
+"diameter above."
+msgstr ""
+"Create a Geometry object with toolpaths to cut \n"
+"isolation outside, inside or on both sides of the\n"
+"object. For a Gerber object outside means outside\n"
+"of the Gerber feature and inside means inside of\n"
+"the Gerber feature, if possible at all. This means\n"
+"that only if the Gerber feature has openings inside, they\n"
+"will be isolated. If what is wanted is to cut isolation\n"
+"inside the actual Gerber feature, use a negative tool\n"
+"diameter above."
+
+#: flatcamGUI/ObjectUI.py:415
+msgid "FULL Geo"
+msgstr "FULL Geo"
+
+#: flatcamGUI/ObjectUI.py:417
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing. It contains both\n"
+"the interiors and exteriors geometry."
+msgstr ""
+"Create the Geometry Object\n"
+"for isolation routing. It contains both\n"
+"the interiors and exteriors geometry."
+
+#: flatcamGUI/ObjectUI.py:426
+msgid "Ext Geo"
+msgstr "Ext Geo"
+
+#: flatcamGUI/ObjectUI.py:428
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the exteriors geometry."
+msgstr ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the exteriors geometry."
+
+#: flatcamGUI/ObjectUI.py:435
+msgid "Int Geo"
+msgstr "Int Geo"
+
+#: flatcamGUI/ObjectUI.py:437
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the interiors geometry."
+msgstr ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the interiors geometry."
+
+#: flatcamGUI/ObjectUI.py:455
+msgid "<b>Clear N-copper:</b>"
+msgstr "<b>Clear N-copper:</b>"
+
+#: flatcamGUI/ObjectUI.py:465 flatcamTools/ToolNonCopperClear.py:239
+msgid ""
+"Create the Geometry Object\n"
+"for non-copper routing."
+msgstr ""
+"Create the Geometry Object\n"
+"for non-copper routing."
+
+#: flatcamGUI/ObjectUI.py:471
+msgid "<b>Board cutout:</b>"
+msgstr "<b>Board cutout:</b>"
+
+#: flatcamGUI/ObjectUI.py:479
+msgid "Cutout Tool"
+msgstr "Cutout Tool"
+
+#: flatcamGUI/ObjectUI.py:481
+msgid ""
+"Generate the geometry for\n"
+"the board cutout."
+msgstr ""
+"Generate the geometry for\n"
+"the board cutout."
+
+#: flatcamGUI/ObjectUI.py:487
+msgid "<b>Non-copper regions:</b>"
+msgstr "<b>Non-copper regions:</b>"
+
+#: flatcamGUI/ObjectUI.py:489
+msgid ""
+"Create polygons covering the\n"
+"areas without copper on the PCB.\n"
+"Equivalent to the inverse of this\n"
+"object. Can be used to remove all\n"
+"copper from a specified region."
+msgstr ""
+"Create polygons covering the\n"
+"areas without copper on the PCB.\n"
+"Equivalent to the inverse of this\n"
+"object. Can be used to remove all\n"
+"copper from a specified region."
+
+#: flatcamGUI/ObjectUI.py:514 flatcamGUI/ObjectUI.py:545
+msgid "Rounded Geo"
+msgstr "Rounded Geo"
+
+#: flatcamGUI/ObjectUI.py:516
+msgid "Resulting geometry will have rounded corners."
+msgstr "Resulting geometry will have rounded corners."
+
+#: flatcamGUI/ObjectUI.py:521 flatcamGUI/ObjectUI.py:555
+#: flatcamTools/ToolCutOut.py:159 flatcamTools/ToolCutOut.py:179
+#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolSolderPaste.py:127
+msgid "Generate Geo"
+msgstr "Generate Geo"
+
+#: flatcamGUI/ObjectUI.py:527
+msgid ""
+"Create a geometry surrounding the Gerber object.\n"
+"Square shape."
+msgstr ""
+"Create a geometry surrounding the Gerber object.\n"
+"Square shape."
+
+#: flatcamGUI/ObjectUI.py:557
+msgid "Generate the Geometry object."
+msgstr "Generate the Geometry object."
+
+#: flatcamGUI/ObjectUI.py:568
+msgid "Excellon Object"
+msgstr "Excellon Object"
+
+#: flatcamGUI/ObjectUI.py:579
+msgid "Solid circles."
+msgstr "Solid circles."
+
+#: flatcamGUI/ObjectUI.py:607 flatcamGUI/ObjectUI.py:926
+msgid "<b>Tools Table</b>"
+msgstr "<b>Tools Table</b>"
+
+#: flatcamGUI/ObjectUI.py:628
+msgid "Offset Z"
+msgstr "Offset Z"
+
+#: flatcamGUI/ObjectUI.py:632
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn in the Machine Code."
+msgstr ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn in the Machine Code."
+
+#: flatcamGUI/ObjectUI.py:636 flatcamGUI/ObjectUI.py:972
+#: flatcamTools/ToolNonCopperClear.py:96 flatcamTools/ToolPaint.py:94
+msgid ""
+"Tool Diameter. It's value (in current FlatCAM units) \n"
+"is the cut width into the material."
+msgstr ""
+"Tool Diameter. It's value (in current FlatCAM units) \n"
+"is the cut width into the material."
+
+#: flatcamGUI/ObjectUI.py:639
+msgid ""
+"The number of Drill holes. Holes that are drilled with\n"
+"a drill bit."
+msgstr ""
+"The number of Drill holes. Holes that are drilled with\n"
+"a drill bit."
+
+#: flatcamGUI/ObjectUI.py:642
+msgid ""
+"The number of Slot holes. Holes that are created by\n"
+"milling them with an endmill bit."
+msgstr ""
+"The number of Slot holes. Holes that are created by\n"
+"milling them with an endmill bit."
+
+#: flatcamGUI/ObjectUI.py:649
+msgid "Toggle display of the drills for the current tool."
+msgstr "Toggle display of the drills for the current tool."
+
+#: flatcamGUI/ObjectUI.py:657
+msgid ""
+"Create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+"Create a CNC Job object\n"
+"for this drill object."
+
+#: flatcamGUI/ObjectUI.py:686 flatcamGUI/ObjectUI.py:1186
+msgid "Tool change"
+msgstr "Tool change"
+
+#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1179
+msgid "Tool change Z:"
+msgstr "Tool change Z:"
+
+#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1182
+msgid ""
+"Z-axis position (height) for\n"
+"tool change."
+msgstr ""
+"Z-axis position (height) for\n"
+"tool change."
+
+#: flatcamGUI/ObjectUI.py:707
+msgid ""
+"Tool height just before starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Tool height just before starting the work.\n"
+"Delete the value if you don't need this feature."
+
+#: flatcamGUI/ObjectUI.py:717
+msgid ""
+"Z-axis position (height) for\n"
+"the last move."
+msgstr ""
+"Z-axis position (height) for\n"
+"the last move."
+
+#: flatcamGUI/ObjectUI.py:725
+msgid "Feedrate (Plunge):"
+msgstr "Feedrate (Plunge):"
+
+#: flatcamGUI/ObjectUI.py:727
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for linear move G01."
+msgstr ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for linear move G01."
+
+#: flatcamGUI/ObjectUI.py:777
+msgid ""
+"The json file that dictates\n"
+"gcode output."
+msgstr ""
+"The json file that dictates\n"
+"gcode output."
+
+#: flatcamGUI/ObjectUI.py:809
+msgid ""
+"Select from the Tools Table above\n"
+"the tools you want to include."
+msgstr ""
+"Select from the Tools Table above\n"
+"the tools you want to include."
+
+#: flatcamGUI/ObjectUI.py:816
+msgid "<b>Type:    </b>"
+msgstr "<b>Type:    </b>"
+
+#: flatcamGUI/ObjectUI.py:818
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to a series of drills."
+msgstr ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to a series of drills."
+
+#: flatcamGUI/ObjectUI.py:833
+msgid "Create GCode"
+msgstr "Create GCode"
+
+#: flatcamGUI/ObjectUI.py:835
+msgid "Generate the CNC Job."
+msgstr "Generate the CNC Job."
+
+#: flatcamGUI/ObjectUI.py:847
+msgid ""
+"Select from the Tools Table above\n"
+" the hole dias that are to be milled."
+msgstr ""
+"Select from the Tools Table above\n"
+" the hole dias that are to be milled."
+
+#: flatcamGUI/ObjectUI.py:854
+msgid "Drills Tool dia:"
+msgstr "Drills Tool dia:"
+
+#: flatcamGUI/ObjectUI.py:861
+msgid "Mill Drills Geo"
+msgstr "Mill Drills Geo"
+
+#: flatcamGUI/ObjectUI.py:863
+msgid ""
+"Create the Geometry Object\n"
+"for milling DRILLS toolpaths."
+msgstr ""
+"Create the Geometry Object\n"
+"for milling DRILLS toolpaths."
+
+#: flatcamGUI/ObjectUI.py:870
+msgid "Slots Tool dia:"
+msgstr "Slots Tool dia:"
+
+#: flatcamGUI/ObjectUI.py:877
+msgid "Mill Slots Geo"
+msgstr "Mill Slots Geo"
+
+#: flatcamGUI/ObjectUI.py:879
+msgid ""
+"Create the Geometry Object\n"
+"for milling SLOTS toolpaths."
+msgstr ""
+"Create the Geometry Object\n"
+"for milling SLOTS toolpaths."
+
+#: flatcamGUI/ObjectUI.py:897
+msgid "Geometry Object"
+msgstr "Geometry Object"
+
+#: flatcamGUI/ObjectUI.py:928
+msgid ""
+"Tools in this Geometry object used for cutting.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V). \n"
+"When V-shaped is selected the 'Type' entry is automatically \n"
+"set to Isolation, the CutZ parameter in the UI form is\n"
+"grayed out and Cut Z is automatically calculated from the newly \n"
+"showed UI form entries named V-Tip Dia and V-Tip Angle."
+msgstr ""
+"Tools in this Geometry object used for cutting.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V). \n"
+"When V-shaped is selected the 'Type' entry is automatically \n"
+"set to Isolation, the CutZ parameter in the UI form is\n"
+"grayed out and Cut Z is automatically calculated from the newly \n"
+"showed UI form entries named V-Tip Dia and V-Tip Angle."
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "Dia"
+msgstr "Dia"
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "TT"
+msgstr "TT"
+
+#: flatcamGUI/ObjectUI.py:966
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn"
+msgstr ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn"
+
+#: flatcamGUI/ObjectUI.py:977
+msgid ""
+"The value for the Offset can be:\n"
+"- Path -> There is no offset, the tool cut will be done through the geometry "
+"line.\n"
+"- In(side) -> The tool cut will follow the geometry inside. It will create a "
+"'pocket'.\n"
+"- Out(side) -> The tool cut will follow the geometry line on the outside."
+msgstr ""
+"The value for the Offset can be:\n"
+"- Path -> There is no offset, the tool cut will be done through the geometry "
+"line.\n"
+"- In(side) -> The tool cut will follow the geometry inside. It will create a "
+"'pocket'.\n"
+"- Out(side) -> The tool cut will follow the geometry line on the outside."
+
+#: flatcamGUI/ObjectUI.py:984
+msgid ""
+"The (Operation) Type has only informative value. Usually the UI form "
+"values \n"
+"are choosed based on the operation type and this will serve as a reminder.\n"
+"Can be 'Roughing', 'Finishing' or 'Isolation'.\n"
+"For Roughing we may choose a lower Feedrate and multiDepth cut.\n"
+"For Finishing we may choose a higher Feedrate, without multiDepth.\n"
+"For Isolation we need a lower Feedrate as it use a milling bit with a fine "
+"tip."
+msgstr ""
+"The (Operation) Type has only informative value. Usually the UI form "
+"values \n"
+"are choosed based on the operation type and this will serve as a reminder.\n"
+"Can be 'Roughing', 'Finishing' or 'Isolation'.\n"
+"For Roughing we may choose a lower Feedrate and multiDepth cut.\n"
+"For Finishing we may choose a higher Feedrate, without multiDepth.\n"
+"For Isolation we need a lower Feedrate as it use a milling bit with a fine "
+"tip."
+
+#: flatcamGUI/ObjectUI.py:993
+msgid ""
+"The Tool Type (TT) can be:\n"
+"- Circular with 1 ... 4 teeth -> it is informative only. Being circular the "
+"cut width in material\n"
+"is exactly the tool diameter.\n"
+"- Ball -> informative only and make reference to the Ball type endmill.\n"
+"- V-Shape -> it will disable de Z-Cut parameter in the UI form and enable "
+"two additional UI form\n"
+"fields: V-Tip Dia and V-Tip Angle. Adjusting those two values will adjust "
+"the Z-Cut parameter such\n"
+"as the cut width into material will be equal with the value in the Tool "
+"Diameter column of this table.\n"
+"Choosing the V-Shape Tool Type automatically will select the Operation Type "
+"as Isolation."
+msgstr ""
+"The Tool Type (TT) can be:\n"
+"- Circular with 1 ... 4 teeth -> it is informative only. Being circular the "
+"cut width in material\n"
+"is exactly the tool diameter.\n"
+"- Ball -> informative only and make reference to the Ball type endmill.\n"
+"- V-Shape -> it will disable de Z-Cut parameter in the UI form and enable "
+"two additional UI form\n"
+"fields: V-Tip Dia and V-Tip Angle. Adjusting those two values will adjust "
+"the Z-Cut parameter such\n"
+"as the cut width into material will be equal with the value in the Tool "
+"Diameter column of this table.\n"
+"Choosing the V-Shape Tool Type automatically will select the Operation Type "
+"as Isolation."
+
+#: flatcamGUI/ObjectUI.py:1004
+msgid ""
+"Plot column. It is visible only for MultiGeo geometries, meaning geometries "
+"that holds the geometry\n"
+"data into the tools. For those geometries, deleting the tool will delete the "
+"geometry data also,\n"
+"so be WARNED. From the checkboxes on each row it can be enabled/disabled the "
+"plot on canvas\n"
+"for the corresponding tool."
+msgstr ""
+"Plot column. It is visible only for MultiGeo geometries, meaning geometries "
+"that holds the geometry\n"
+"data into the tools. For those geometries, deleting the tool will delete the "
+"geometry data also,\n"
+"so be WARNED. From the checkboxes on each row it can be enabled/disabled the "
+"plot on canvas\n"
+"for the corresponding tool."
+
+#: flatcamGUI/ObjectUI.py:1017
+msgid "Tool Offset:"
+msgstr "Tool Offset:"
+
+#: flatcamGUI/ObjectUI.py:1020
+msgid ""
+"The value to offset the cut when \n"
+"the Offset type selected is 'Offset'.\n"
+"The value can be positive for 'outside'\n"
+"cut and negative for 'inside' cut."
+msgstr ""
+"The value to offset the cut when \n"
+"the Offset type selected is 'Offset'.\n"
+"The value can be positive for 'outside'\n"
+"cut and negative for 'inside' cut."
+
+#: flatcamGUI/ObjectUI.py:1043
+msgid "<b>Tool Dia:</b>"
+msgstr "<b>Tool Dia:</b>"
+
+#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolNonCopperClear.py:135
+#: flatcamTools/ToolPaint.py:133
+msgid ""
+"Add a new tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+"Add a new tool to the Tool Table\n"
+"with the diameter specified above."
+
+#: flatcamGUI/ObjectUI.py:1070
+msgid ""
+"Copy a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+"Copy a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+
+#: flatcamGUI/ObjectUI.py:1078
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+
+#: flatcamGUI/ObjectUI.py:1094
+msgid "<b>Tool Data</b>"
+msgstr "<b>Tool Data</b>"
+
+#: flatcamGUI/ObjectUI.py:1097
+msgid ""
+"The data used for creating GCode.\n"
+"Each tool store it's own set of such data."
+msgstr ""
+"The data used for creating GCode.\n"
+"Each tool store it's own set of such data."
+
+#: flatcamGUI/ObjectUI.py:1107
+msgid "V-Tip Dia:"
+msgstr "V-Tip Dia:"
+
+#: flatcamGUI/ObjectUI.py:1110
+msgid "The tip diameter for V-Shape Tool"
+msgstr "The tip diameter for V-Shape Tool"
+
+#: flatcamGUI/ObjectUI.py:1118
+msgid "V-Tip Angle:"
+msgstr "V-Tip Angle:"
+
+#: flatcamGUI/ObjectUI.py:1121
+msgid ""
+"The tip angle for V-Shape Tool.\n"
+"In degree."
+msgstr ""
+"The tip angle for V-Shape Tool.\n"
+"In degree."
+
+#: flatcamGUI/ObjectUI.py:1142
+msgid "Multi-Depth:"
+msgstr "Multi-Depth:"
+
+#: flatcamGUI/ObjectUI.py:1145
+msgid ""
+"Use multiple passes to limit\n"
+"the cut depth in each pass. Will\n"
+"cut multiple times until Cut Z is\n"
+"reached.\n"
+"To the right, input the depth of \n"
+"each pass (positive value)."
+msgstr ""
+"Use multiple passes to limit\n"
+"the cut depth in each pass. Will\n"
+"cut multiple times until Cut Z is\n"
+"reached.\n"
+"To the right, input the depth of \n"
+"each pass (positive value)."
+
+#: flatcamGUI/ObjectUI.py:1158
+msgid "Depth of each pass (positive)."
+msgstr "Depth of each pass (positive)."
+
+#: flatcamGUI/ObjectUI.py:1189
+msgid ""
+"Include tool-change sequence\n"
+"in the Machine Code (Pause for tool change)."
+msgstr ""
+"Include tool-change sequence\n"
+"in the Machine Code (Pause for tool change)."
+
+#: flatcamGUI/ObjectUI.py:1215
+msgid ""
+"This is the height (Z) at which the CNC\n"
+"will go as the last move."
+msgstr ""
+"This is the height (Z) at which the CNC\n"
+"will go as the last move."
+
+#: flatcamGUI/ObjectUI.py:1236
+msgid "Feed Rate Z (Plunge):"
+msgstr "Feed Rate Z (Plunge):"
+
+#: flatcamGUI/ObjectUI.py:1239
+msgid ""
+"Cutting speed in the Z\n"
+"plane in units per minute"
+msgstr ""
+"Cutting speed in the Z\n"
+"plane in units per minute"
+
+#: flatcamGUI/ObjectUI.py:1248
+msgid "Feed Rate Rapids:"
+msgstr "Feed Rate Rapids:"
+
+#: flatcamGUI/ObjectUI.py:1251
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Cutting speed in the XY\n"
+"plane in units per minute\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+
+#: flatcamGUI/ObjectUI.py:1264
+msgid "Cut over 1st pt"
+msgstr "Cut over 1st pt"
+
+#: flatcamGUI/ObjectUI.py:1279
+msgid ""
+"Speed of the spindle in RPM (optional).\n"
+"If LASER postprocessor is used,\n"
+"this value is the power of laser."
+msgstr ""
+"Speed of the spindle in RPM (optional).\n"
+"If LASER postprocessor is used,\n"
+"this value is the power of laser."
+
+#: flatcamGUI/ObjectUI.py:1308
+msgid "PostProcessor:"
+msgstr "PostProcessor:"
+
+#: flatcamGUI/ObjectUI.py:1311
+msgid ""
+"The Postprocessor file that dictates\n"
+"the Machine Code (like GCode, RML, HPGL) output."
+msgstr ""
+"The Postprocessor file that dictates\n"
+"the Machine Code (like GCode, RML, HPGL) output."
+
+#: flatcamGUI/ObjectUI.py:1349
+msgid ""
+"Add at least one tool in the tool-table.\n"
+"Click the header to select all, or Ctrl + LMB\n"
+"for custom selection of tools."
+msgstr ""
+"Add at least one tool in the tool-table.\n"
+"Click the header to select all, or Ctrl + LMB\n"
+"for custom selection of tools."
+
+#: flatcamGUI/ObjectUI.py:1356
+msgid "Generate"
+msgstr "Generate"
+
+#: flatcamGUI/ObjectUI.py:1359
+msgid "Generate the CNC Job object."
+msgstr "Generate the CNC Job object."
+
+#: flatcamGUI/ObjectUI.py:1367
+msgid "<b>Paint Area:</b>"
+msgstr "<b>Paint Area:</b>"
+
+#: flatcamGUI/ObjectUI.py:1382
+msgid "Launch Paint Tool in Tools Tab."
+msgstr "Launch Paint Tool in Tools Tab."
+
+#: flatcamGUI/ObjectUI.py:1399
+msgid "CNC Job Object"
+msgstr "CNC Job Object"
+
+#: flatcamGUI/ObjectUI.py:1418
+msgid "<b>Plot kind:</b>"
+msgstr "<b>Plot kind:</b>"
+
+#: flatcamGUI/ObjectUI.py:1443
+msgid "<b>Travelled dist.:</b>"
+msgstr "<b>Travelled dist.:</b>"
+
+#: flatcamGUI/ObjectUI.py:1446 flatcamGUI/ObjectUI.py:1453
+msgid ""
+"This is the total travelled distance on X-Y plane.\n"
+"In current units."
+msgstr ""
+"This is the total travelled distance on X-Y plane.\n"
+"In current units."
+
+#: flatcamGUI/ObjectUI.py:1481
+msgid "<b>CNC Tools Table</b>"
+msgstr "<b>CNC Tools Table</b>"
+
+#: flatcamGUI/ObjectUI.py:1484
+msgid ""
+"Tools in this CNCJob object used for cutting.\n"
+"The tool diameter is used for plotting on canvas.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V)."
+msgstr ""
+"Tools in this CNCJob object used for cutting.\n"
+"The tool diameter is used for plotting on canvas.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V)."
+
+#: flatcamGUI/ObjectUI.py:1518
+msgid "P"
+msgstr "P"
+
+#: flatcamGUI/ObjectUI.py:1524
+msgid "Update Plot"
+msgstr "Update Plot"
+
+#: flatcamGUI/ObjectUI.py:1526
+msgid "Update the plot."
+msgstr "Update the plot."
+
+#: flatcamGUI/ObjectUI.py:1533
+msgid "<b>Export CNC Code:</b>"
+msgstr "<b>Export CNC Code:</b>"
+
+#: flatcamGUI/ObjectUI.py:1541
+msgid "Prepend to CNC Code:"
+msgstr "Prepend to CNC Code:"
+
+#: flatcamGUI/ObjectUI.py:1544
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add to the beginning of the generated file."
+msgstr ""
+"Type here any G-Code commands you would\n"
+"like to add to the beginning of the generated file."
+
+#: flatcamGUI/ObjectUI.py:1554
+msgid "Append to CNC Code"
+msgstr "Append to CNC Code"
+
+#: flatcamGUI/ObjectUI.py:1578
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro.\n"
+"The FlatCAM variables are surrounded by '%' symbol.\n"
+"\n"
+"WARNING: it can be used only with a postprocessor file\n"
+"that has 'toolchange_custom' in it's name and this is built\n"
+"having as template the 'Toolchange Custom' posprocessor file."
+msgstr ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro.\n"
+"The FlatCAM variables are surrounded by '%' symbol.\n"
+"\n"
+"WARNING: it can be used only with a postprocessor file\n"
+"that has 'toolchange_custom' in it's name and this is built\n"
+"having as template the 'Toolchange Custom' posprocessor file."
+
+#: flatcamGUI/ObjectUI.py:1634
+msgid "z_cut = depth where to cut"
+msgstr "z_cut = depth where to cut"
+
+#: flatcamGUI/ObjectUI.py:1635
+msgid "z_move = height where to travel"
+msgstr "z_move = height where to travel"
+
+#: flatcamGUI/ObjectUI.py:1656
+msgid "View CNC Code"
+msgstr "View CNC Code"
+
+#: flatcamGUI/ObjectUI.py:1659
+msgid ""
+"Opens TAB to view/modify/print G-Code\n"
+"file."
+msgstr ""
+"Opens TAB to view/modify/print G-Code\n"
+"file."
+
+#: flatcamGUI/ObjectUI.py:1665
+msgid "Save CNC Code"
+msgstr "Save CNC Code"
+
+#: flatcamGUI/ObjectUI.py:1668
+msgid ""
+"Opens dialog to save G-Code\n"
+"file."
+msgstr ""
+"Opens dialog to save G-Code\n"
+"file."
+
+#: flatcamTools/ToolCalculators.py:24
+msgid "Calculators"
+msgstr "Calculators"
+
+#: flatcamTools/ToolCalculators.py:25
+msgid "V-Shape Tool Calculator"
+msgstr "V-Shape Tool Calculator"
+
+#: flatcamTools/ToolCalculators.py:26
+msgid "Units Calculator"
+msgstr "Units Calculator"
+
+#: flatcamTools/ToolCalculators.py:27
+msgid "ElectroPlating Calculator"
+msgstr "ElectroPlating Calculator"
+
+#: flatcamTools/ToolCalculators.py:68
+msgid "Here you enter the value to be converted from INCH to MM"
+msgstr "Here you enter the value to be converted from INCH to MM"
+
+#: flatcamTools/ToolCalculators.py:73
+msgid "Here you enter the value to be converted from MM to INCH"
+msgstr "Here you enter the value to be converted from MM to INCH"
+
+#: flatcamTools/ToolCalculators.py:98
+msgid ""
+"This is the diameter of the tool tip.\n"
+"The manufacturer specifies it."
+msgstr ""
+"This is the diameter of the tool tip.\n"
+"The manufacturer specifies it."
+
+#: flatcamTools/ToolCalculators.py:101
+msgid "Tip Angle:"
+msgstr "Tip Angle:"
+
+#: flatcamTools/ToolCalculators.py:105
+msgid ""
+"This is the angle of the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+"This is the angle of the tip of the tool.\n"
+"It is specified by manufacturer."
+
+#: flatcamTools/ToolCalculators.py:112
+msgid ""
+"This is the depth to cut into the material.\n"
+"In the CNCJob is the CutZ parameter."
+msgstr ""
+"This is the depth to cut into the material.\n"
+"In the CNCJob is the CutZ parameter."
+
+#: flatcamTools/ToolCalculators.py:115
+msgid "Tool Diameter:"
+msgstr "Tool Diameter:"
+
+#: flatcamTools/ToolCalculators.py:119
+msgid ""
+"This is the tool diameter to be entered into\n"
+"FlatCAM Gerber section.\n"
+"In the CNCJob section it is called >Tool dia<."
+msgstr ""
+"This is the tool diameter to be entered into\n"
+"FlatCAM Gerber section.\n"
+"In the CNCJob section it is called >Tool dia<."
+
+#: flatcamTools/ToolCalculators.py:131 flatcamTools/ToolCalculators.py:214
+msgid "Calculate"
+msgstr "Calculate"
+
+#: flatcamTools/ToolCalculators.py:134
+msgid ""
+"Calculate either the Cut Z or the effective tool diameter,\n"
+"  depending on which is desired and which is known. "
+msgstr ""
+"Calculate either the Cut Z or the effective tool diameter,\n"
+"  depending on which is desired and which is known. "
+
+#: flatcamTools/ToolCalculators.py:190
+msgid "Current Value:"
+msgstr "Current Value:"
+
+#: flatcamTools/ToolCalculators.py:194
+msgid ""
+"This is the current intensity value\n"
+"to be set on the Power Supply. In Amps."
+msgstr ""
+"This is the current intensity value\n"
+"to be set on the Power Supply. In Amps."
+
+#: flatcamTools/ToolCalculators.py:198
+msgid "Time:"
+msgstr "Time:"
+
+#: flatcamTools/ToolCalculators.py:202
+msgid ""
+"This is the calculated time required for the procedure.\n"
+"In minutes."
+msgstr ""
+"This is the calculated time required for the procedure.\n"
+"In minutes."
+
+#: flatcamTools/ToolCalculators.py:217
+msgid ""
+"Calculate the current intensity value and the procedure time,\n"
+"  depending on the parameters above"
+msgstr ""
+"Calculate the current intensity value and the procedure time,\n"
+"  depending on the parameters above"
+
+#: flatcamTools/ToolCutOut.py:17
+msgid "Cutout PCB"
+msgstr "Cutout PCB"
+
+#: flatcamTools/ToolCutOut.py:53
+msgid "Obj Type:"
+msgstr "Obj Type:"
+
+#: flatcamTools/ToolCutOut.py:55
+msgid ""
+"Specify the type of object to be cutout.\n"
+"It can be of type: Gerber or Geometry.\n"
+"What is selected here will dictate the kind\n"
+"of objects that will populate the 'Object' combobox."
+msgstr ""
+"Specify the type of object to be cutout.\n"
+"It can be of type: Gerber or Geometry.\n"
+"What is selected here will dictate the kind\n"
+"of objects that will populate the 'Object' combobox."
+
+#: flatcamTools/ToolCutOut.py:69 flatcamTools/ToolPanelize.py:71
+msgid "Object:"
+msgstr "Object:"
+
+#: flatcamTools/ToolCutOut.py:71
+msgid "Object to be cutout.                        "
+msgstr "Object to be cutout.                        "
+
+#: flatcamTools/ToolCutOut.py:79
+msgid ""
+"Diameter of the tool used to cutout\n"
+"the PCB shape out of the surrounding material."
+msgstr ""
+"Diameter of the tool used to cutout\n"
+"the PCB shape out of the surrounding material."
+
+#: flatcamTools/ToolCutOut.py:88
+msgid ""
+"Margin over bounds. A positive value here\n"
+"will make the cutout of the PCB further from\n"
+"the actual PCB border"
+msgstr ""
+"Margin over bounds. A positive value here\n"
+"will make the cutout of the PCB further from\n"
+"the actual PCB border"
+
+#: flatcamTools/ToolCutOut.py:98
+msgid ""
+"The size of the bridge gaps in the cutout\n"
+"used to keep the board connected to\n"
+"the surrounding material (the one \n"
+"from which the PCB is cutout)."
+msgstr ""
+"The size of the bridge gaps in the cutout\n"
+"used to keep the board connected to\n"
+"the surrounding material (the one \n"
+"from which the PCB is cutout)."
+
+#: flatcamTools/ToolCutOut.py:114
+msgid "A. Automatic Bridge Gaps"
+msgstr "A. Automatic Bridge Gaps"
+
+#: flatcamTools/ToolCutOut.py:116
+msgid "This section handle creation of automatic bridge gaps."
+msgstr "This section handle creation of automatic bridge gaps."
+
+#: flatcamTools/ToolCutOut.py:127
+msgid ""
+"Number of gaps used for the Automatic cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+"Number of gaps used for the Automatic cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+
+#: flatcamTools/ToolCutOut.py:150
+msgid "FreeForm:"
+msgstr "FreeForm:"
+
+#: flatcamTools/ToolCutOut.py:152
+msgid ""
+"The cutout shape can be of ny shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+"The cutout shape can be of ny shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+
+#: flatcamTools/ToolCutOut.py:161
+msgid ""
+"Cutout the selected object.\n"
+"The cutout shape can be of any shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+"Cutout the selected object.\n"
+"The cutout shape can be of any shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+
+#: flatcamTools/ToolCutOut.py:170
+msgid "Rectangular:"
+msgstr "Rectangular:"
+
+#: flatcamTools/ToolCutOut.py:172
+msgid ""
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+
+#: flatcamTools/ToolCutOut.py:181
+msgid ""
+"Cutout the selected object.\n"
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+"Cutout the selected object.\n"
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+
+#: flatcamTools/ToolCutOut.py:189
+msgid "B. Manual Bridge Gaps"
+msgstr "B. Manual Bridge Gaps"
+
+#: flatcamTools/ToolCutOut.py:191
+msgid ""
+"This section handle creation of manual bridge gaps.\n"
+"This is done by mouse clicking on the perimeter of the\n"
+"Geometry object that is used as a cutout object. "
+msgstr ""
+"This section handle creation of manual bridge gaps.\n"
+"This is done by mouse clicking on the perimeter of the\n"
+"Geometry object that is used as a cutout object. "
+
+#: flatcamTools/ToolCutOut.py:207
+msgid "Geo Obj:"
+msgstr "Geo Obj:"
+
+#: flatcamTools/ToolCutOut.py:209
+msgid "Geometry object used to create the manual cutout."
+msgstr "Geometry object used to create the manual cutout."
+
+#: flatcamTools/ToolCutOut.py:220
+msgid "Manual Geo:"
+msgstr "Manual Geo:"
+
+#: flatcamTools/ToolCutOut.py:222 flatcamTools/ToolCutOut.py:232
+msgid ""
+"If the object to be cutout is a Gerber\n"
+"first create a Geometry that surrounds it,\n"
+"to be used as the cutout, if one doesn't exist yet.\n"
+"Select the source Gerber file in the top object combobox."
+msgstr ""
+"If the object to be cutout is a Gerber\n"
+"first create a Geometry that surrounds it,\n"
+"to be used as the cutout, if one doesn't exist yet.\n"
+"Select the source Gerber file in the top object combobox."
+
+#: flatcamTools/ToolCutOut.py:242
+msgid "Manual Add Bridge Gaps:"
+msgstr "Manual Add Bridge Gaps:"
+
+#: flatcamTools/ToolCutOut.py:244
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material."
+msgstr ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material."
+
+#: flatcamTools/ToolCutOut.py:251
+msgid "Generate Gap"
+msgstr "Generate Gap"
+
+#: flatcamTools/ToolCutOut.py:253
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material.\n"
+"The LMB click has to be done on the perimeter of\n"
+"the Geometry object used as a cutout geometry."
+msgstr ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material.\n"
+"The LMB click has to be done on the perimeter of\n"
+"the Geometry object used as a cutout geometry."
+
+#: flatcamTools/ToolCutOut.py:329 flatcamTools/ToolCutOut.py:468
+#: flatcamTools/ToolNonCopperClear.py:659 flatcamTools/ToolPaint.py:757
+#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve object: %s"
+msgstr "[ERROR_NOTCL]Could not retrieve object: %s"
+
+#: flatcamTools/ToolCutOut.py:333
+msgid ""
+"[ERROR_NOTCL]There is no object selected for Cutout.\n"
+"Select one and try again."
+msgstr ""
+"[ERROR_NOTCL]There is no object selected for Cutout.\n"
+"Select one and try again."
+
+#: flatcamTools/ToolCutOut.py:349
+msgid ""
+"[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+"[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+
+#: flatcamTools/ToolCutOut.py:359 flatcamTools/ToolCutOut.py:496
+#: flatcamTools/ToolCutOut.py:721
+msgid ""
+"[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry."
+
+#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:507
+#: flatcamTools/ToolCutOut.py:616
+msgid ""
+"[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry."
+
+#: flatcamTools/ToolCutOut.py:377 flatcamTools/ToolCutOut.py:514
+msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."
+msgstr "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."
+
+#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:518
+msgid ""
+"[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 "
+"or 8. Fill in a correct value and retry. "
+msgstr ""
+"[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 "
+"or 8. Fill in a correct value and retry. "
+
+#: flatcamTools/ToolCutOut.py:386 flatcamTools/ToolCutOut.py:523
+msgid ""
+"[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+"Optionally, this Multi-geo Geometry can be converted to Single-geo "
+"Geometry,\n"
+"and after that perform Cutout."
+msgstr ""
+"[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+"Optionally, this Multi-geo Geometry can be converted to Single-geo "
+"Geometry,\n"
+"and after that perform Cutout."
+
+#: flatcamTools/ToolCutOut.py:452 flatcamTools/ToolCutOut.py:586
+msgid "[success] Any form CutOut operation finished."
+msgstr "[success] Any form CutOut operation finished."
+
+#: flatcamTools/ToolCutOut.py:472 flatcamTools/ToolPaint.py:761
+#: flatcamTools/ToolPanelize.py:299
+#, python-format
+msgid "[ERROR_NOTCL]Object not found: %s"
+msgstr "[ERROR_NOTCL]Object not found: %s"
+
+#: flatcamTools/ToolCutOut.py:486 flatcamTools/ToolCutOut.py:606
+#: flatcamTools/ToolCutOut.py:711
+msgid ""
+"[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+"[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+
+#: flatcamTools/ToolCutOut.py:591
+msgid ""
+"Click on the selected geometry object perimeter to create a bridge gap ..."
+msgstr ""
+"Click on the selected geometry object perimeter to create a bridge gap ..."
+
+#: flatcamTools/ToolCutOut.py:632
+msgid "Making manual bridge gap..."
+msgstr "Making manual bridge gap..."
+
+#: flatcamTools/ToolCutOut.py:655
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Geoemtry object: %s"
+msgstr "[ERROR_NOTCL]Could not retrieve Geoemtry object: %s"
+
+#: flatcamTools/ToolCutOut.py:659
+#, python-format
+msgid "[ERROR_NOTCL]Geometry object for manual cutout not found: %s"
+msgstr "[ERROR_NOTCL]Geometry object for manual cutout not found: %s"
+
+#: flatcamTools/ToolCutOut.py:669
+msgid "[success] Added manual Bridge Gap."
+msgstr "[success] Added manual Bridge Gap."
+
+#: flatcamTools/ToolCutOut.py:686
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Gerber object: %s"
+msgstr "[ERROR_NOTCL]Could not retrieve Gerber object: %s"
+
+#: flatcamTools/ToolCutOut.py:690
+msgid ""
+"[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
+"Select one and try again."
+msgstr ""
+"[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
+"Select one and try again."
+
+#: flatcamTools/ToolCutOut.py:695
+msgid ""
+"[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
+"Select a Gerber file and try again."
+msgstr ""
+"[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
+"Select a Gerber file and try again."
+
+#: flatcamTools/ToolDblSided.py:18
+msgid "2-Sided PCB"
+msgstr "2-Sided PCB"
+
+#: flatcamTools/ToolDblSided.py:52 flatcamTools/ToolDblSided.py:76
+#: flatcamTools/ToolDblSided.py:100
+msgid "Mirror"
+msgstr "Mirror"
+
+#: flatcamTools/ToolDblSided.py:54 flatcamTools/ToolDblSided.py:78
+#: flatcamTools/ToolDblSided.py:102
+msgid ""
+"Mirrors (flips) the specified object around \n"
+"the specified axis. Does not create a new \n"
+"object, but modifies it."
+msgstr ""
+"Mirrors (flips) the specified object around \n"
+"the specified axis. Does not create a new \n"
+"object, but modifies it."
+
+#: flatcamTools/ToolDblSided.py:73
+msgid "Excellon Object to be mirrored."
+msgstr "Excellon Object to be mirrored."
+
+#: flatcamTools/ToolDblSided.py:97
+msgid "Geometry Obj to be mirrored."
+msgstr "Geometry Obj to be mirrored."
+
+#: flatcamTools/ToolDblSided.py:135
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a FlatCAM object) through \n"
+"the center."
+msgstr ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a FlatCAM object) through \n"
+"the center."
+
+#: flatcamTools/ToolDblSided.py:152
+msgid "Point/Box Reference:"
+msgstr "Point/Box Reference:"
+
+#: flatcamTools/ToolDblSided.py:154
+msgid ""
+"If 'Point' is selected above it store the coordinates (x, y) through which\n"
+"the mirroring axis passes.\n"
+"If 'Box' is selected above, select here a FlatCAM object (Gerber, Exc or "
+"Geo).\n"
+"Through the center of this object pass the mirroring axis selected above."
+msgstr ""
+"If 'Point' is selected above it store the coordinates (x, y) through which\n"
+"the mirroring axis passes.\n"
+"If 'Box' is selected above, select here a FlatCAM object (Gerber, Exc or "
+"Geo).\n"
+"Through the center of this object pass the mirroring axis selected above."
+
+#: flatcamTools/ToolDblSided.py:162
+msgid ""
+"Add the coordinates in format <b>(x, y)</b> through which the mirroring "
+"axis \n"
+" selected in 'MIRROR AXIS' pass.\n"
+"The (x, y) coordinates are captured by pressing SHIFT key\n"
+"and left mouse button click on canvas or you can enter the coords manually."
+msgstr ""
+"Add the coordinates in format <b>(x, y)</b> through which the mirroring "
+"axis \n"
+" selected in 'MIRROR AXIS' pass.\n"
+"The (x, y) coordinates are captured by pressing SHIFT key\n"
+"and left mouse button click on canvas or you can enter the coords manually."
+
+#: flatcamTools/ToolDblSided.py:182
+msgid "Gerber   Reference Box Object"
+msgstr "Gerber   Reference Box Object"
+
+#: flatcamTools/ToolDblSided.py:183
+msgid "Excellon Reference Box Object"
+msgstr "Excellon Reference Box Object"
+
+#: flatcamTools/ToolDblSided.py:184
+msgid "Geometry Reference Box Object"
+msgstr "Geometry Reference Box Object"
+
+#: flatcamTools/ToolDblSided.py:193
+msgid "Alignment Drill Coordinates:"
+msgstr "Alignment Drill Coordinates:"
+
+#: flatcamTools/ToolDblSided.py:195
+msgid ""
+"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For "
+"each set of (x, y) coordinates\n"
+"entered here, a pair of drills will be created:\n"
+"\n"
+"- one drill at the coordinates from the field\n"
+"- one drill in mirror position over the axis selected above in the 'Mirror "
+"Axis'."
+msgstr ""
+"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For "
+"each set of (x, y) coordinates\n"
+"entered here, a pair of drills will be created:\n"
+"\n"
+"- one drill at the coordinates from the field\n"
+"- one drill in mirror position over the axis selected above in the 'Mirror "
+"Axis'."
+
+#: flatcamTools/ToolDblSided.py:210
+msgid ""
+"Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
+"on one side of the mirror axis.\n"
+"\n"
+"The coordinates set can be obtained:\n"
+"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then CTRL+V in the "
+"field.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the "
+"field and click Paste.\n"
+"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..."
+msgstr ""
+"Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
+"on one side of the mirror axis.\n"
+"\n"
+"The coordinates set can be obtained:\n"
+"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then CTRL+V in the "
+"field.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the "
+"field and click Paste.\n"
+"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..."
+
+#: flatcamTools/ToolDblSided.py:224
+msgid "Alignment Drill Diameter"
+msgstr "Alignment Drill Diameter"
+
+#: flatcamTools/ToolDblSided.py:247
+msgid "Create Excellon Object"
+msgstr "Create Excellon Object"
+
+#: flatcamTools/ToolDblSided.py:249
+msgid ""
+"Creates an Excellon Object containing the\n"
+"specified alignment holes and their mirror\n"
+"images."
+msgstr ""
+"Creates an Excellon Object containing the\n"
+"specified alignment holes and their mirror\n"
+"images."
+
+#: flatcamTools/ToolDblSided.py:255
+msgid "Reset"
+msgstr "Reset"
+
+#: flatcamTools/ToolDblSided.py:257
+msgid "Resets all the fields."
+msgstr "Resets all the fields."
+
+#: flatcamTools/ToolDblSided.py:302
+msgid "2-Sided Tool"
+msgstr "2-Sided Tool"
+
+#: flatcamTools/ToolDblSided.py:327
+msgid ""
+"[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates are "
+"missing. Add them and retry."
+msgstr ""
+"[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates are "
+"missing. Add them and retry."
+
+#: flatcamTools/ToolDblSided.py:346
+msgid ""
+"[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry."
+msgstr ""
+"[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry."
+
+#: flatcamTools/ToolDblSided.py:368
+msgid ""
+"[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry."
+
+#: flatcamTools/ToolDblSided.py:375
+msgid ""
+"[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them "
+"and retry."
+msgstr ""
+"[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them "
+"and retry."
+
+#: flatcamTools/ToolDblSided.py:397
+msgid "[success] Excellon object with alignment drills created..."
+msgstr "[success] Excellon object with alignment drills created..."
+
+#: flatcamTools/ToolDblSided.py:406
+msgid "[WARNING_NOTCL] There is no Gerber object loaded ..."
+msgstr "[WARNING_NOTCL] There is no Gerber object loaded ..."
+
+#: flatcamTools/ToolDblSided.py:410 flatcamTools/ToolDblSided.py:453
+#: flatcamTools/ToolDblSided.py:497
+msgid ""
+"[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."
+msgstr ""
+"[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."
+
+#: flatcamTools/ToolDblSided.py:420
+msgid ""
+"[WARNING_NOTCL] 'Point' coordinates missing. Using Origin (0, 0) as "
+"mirroring reference."
+msgstr ""
+"[WARNING_NOTCL] 'Point' coordinates missing. Using Origin (0, 0) as "
+"mirroring reference."
+
+#: flatcamTools/ToolDblSided.py:430 flatcamTools/ToolDblSided.py:474
+#: flatcamTools/ToolDblSided.py:511
+msgid "[WARNING_NOTCL] There is no Box object loaded ..."
+msgstr "[WARNING_NOTCL] There is no Box object loaded ..."
+
+#: flatcamTools/ToolDblSided.py:440
+#, python-format
+msgid "[success] Gerber %s was mirrored..."
+msgstr "[success] Gerber %s was mirrored..."
+
+#: flatcamTools/ToolDblSided.py:449
+msgid "[WARNING_NOTCL] There is no Excellon object loaded ..."
+msgstr "[WARNING_NOTCL] There is no Excellon object loaded ..."
+
+#: flatcamTools/ToolDblSided.py:464
+msgid ""
+"[WARNING_NOTCL] There are no Point coordinates in the Point field. Add "
+"coords and try again ..."
+msgstr ""
+"[WARNING_NOTCL] There are no Point coordinates in the Point field. Add "
+"coords and try again ..."
+
+#: flatcamTools/ToolDblSided.py:484
+#, python-format
+msgid "[success] Excellon %s was mirrored..."
+msgstr "[success] Excellon %s was mirrored..."
+
+#: flatcamTools/ToolDblSided.py:493
+msgid "[WARNING_NOTCL] There is no Geometry object loaded ..."
+msgstr "[WARNING_NOTCL] There is no Geometry object loaded ..."
+
+#: flatcamTools/ToolDblSided.py:521
+#, python-format
+msgid "[success] Geometry %s was mirrored..."
+msgstr "[success] Geometry %s was mirrored..."
+
+#: flatcamTools/ToolFilm.py:25
+msgid "Film PCB"
+msgstr "Film PCB"
+
+#: flatcamTools/ToolFilm.py:56 flatcamTools/ToolImage.py:53
+#: flatcamTools/ToolPanelize.py:56
+msgid "Object Type:"
+msgstr "Object Type:"
+
+#: flatcamTools/ToolFilm.py:58
+msgid ""
+"Specify the type of object for which to create the film.\n"
+"The object can be of type: Gerber or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Film Object combobox."
+msgstr ""
+"Specify the type of object for which to create the film.\n"
+"The object can be of type: Gerber or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Film Object combobox."
+
+#: flatcamTools/ToolFilm.py:71
+msgid "Film Object:"
+msgstr "Film Object:"
+
+#: flatcamTools/ToolFilm.py:73
+msgid "Object for which to create the film."
+msgstr "Object for which to create the film."
+
+#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89
+msgid "Box Type:"
+msgstr "Box Type:"
+
+#: flatcamTools/ToolFilm.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"film creation. It can be: Gerber or Geometry type.The selection here decide "
+"the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+"Specify the type of object to be used as an container for\n"
+"film creation. It can be: Gerber or Geometry type.The selection here decide "
+"the type of objects that will be\n"
+"in the Box Object combobox."
+
+#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104
+msgid "Box Object:"
+msgstr "Box Object:"
+
+#: flatcamTools/ToolFilm.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object for which we create the film.\n"
+"Usually it is the PCB outline but it can be also the\n"
+"same object for which the film is created."
+msgstr ""
+"The actual object that is used a container for the\n"
+" selected object for which we create the film.\n"
+"Usually it is the PCB outline but it can be also the\n"
+"same object for which the film is created."
+
+#: flatcamTools/ToolFilm.py:157
+msgid "Save Film"
+msgstr "Save Film"
+
+#: flatcamTools/ToolFilm.py:159
+msgid ""
+"Create a Film for the selected object, within\n"
+"the specified box. Does not create a new \n"
+" FlatCAM object, but directly save it in SVG format\n"
+"which can be opened with Inkscape."
+msgstr ""
+"Create a Film for the selected object, within\n"
+"the specified box. Does not create a new \n"
+" FlatCAM object, but directly save it in SVG format\n"
+"which can be opened with Inkscape."
+
+#: flatcamTools/ToolFilm.py:225
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry."
+msgstr ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry."
+
+#: flatcamTools/ToolFilm.py:231
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry."
+msgstr ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry."
+
+#: flatcamTools/ToolFilm.py:255
+msgid "Generating Film ..."
+msgstr "Generating Film ..."
+
+#: flatcamTools/ToolFilm.py:260 flatcamTools/ToolFilm.py:264
+msgid "Export SVG positive"
+msgstr "Export SVG positive"
+
+#: flatcamTools/ToolFilm.py:269
+msgid "[WARNING_NOTCL]Export SVG positive cancelled."
+msgstr "[WARNING_NOTCL]Export SVG positive cancelled."
+
+#: flatcamTools/ToolFilm.py:276 flatcamTools/ToolFilm.py:280
+msgid "Export SVG negative"
+msgstr "Export SVG negative"
+
+#: flatcamTools/ToolFilm.py:285
+msgid "[WARNING_NOTCL]Export SVG negative cancelled."
+msgstr "[WARNING_NOTCL]Export SVG negative cancelled."
+
+#: flatcamTools/ToolImage.py:25
+msgid "Image as Object"
+msgstr "Image as Object"
+
+#: flatcamTools/ToolImage.py:31
+msgid "Image to PCB"
+msgstr "Image to PCB"
+
+#: flatcamTools/ToolImage.py:55
+msgid ""
+"Specify the type of object to create from the image.\n"
+"It can be of type: Gerber or Geometry."
+msgstr ""
+"Specify the type of object to create from the image.\n"
+"It can be of type: Gerber or Geometry."
+
+#: flatcamTools/ToolImage.py:63
+msgid "DPI value:"
+msgstr "DPI value:"
+
+#: flatcamTools/ToolImage.py:65
+msgid "Specify a DPI value for the image."
+msgstr "Specify a DPI value for the image."
+
+#: flatcamTools/ToolImage.py:72
+msgid "Level of detail"
+msgstr "Level of detail"
+
+#: flatcamTools/ToolImage.py:81
+msgid "Image type"
+msgstr "Image type"
+
+#: flatcamTools/ToolImage.py:83
+msgid ""
+"Choose a method for the image interpretation.\n"
+"B/W means a black & white image. Color means a colored image."
+msgstr ""
+"Choose a method for the image interpretation.\n"
+"B/W means a black & white image. Color means a colored image."
+
+#: flatcamTools/ToolImage.py:90 flatcamTools/ToolImage.py:103
+#: flatcamTools/ToolImage.py:114 flatcamTools/ToolImage.py:125
+msgid "Mask value"
+msgstr "Mask value"
+
+#: flatcamTools/ToolImage.py:92
+msgid ""
+"Mask for monochrome image.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry.\n"
+"0 means no detail and 255 means everything \n"
+"(which is totally black)."
+msgstr ""
+"Mask for monochrome image.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry.\n"
+"0 means no detail and 255 means everything \n"
+"(which is totally black)."
+
+#: flatcamTools/ToolImage.py:105
+msgid ""
+"Mask for RED color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Mask for RED color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+
+#: flatcamTools/ToolImage.py:116
+msgid ""
+"Mask for GREEN color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Mask for GREEN color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+
+#: flatcamTools/ToolImage.py:127
+msgid ""
+"Mask for BLUE color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Mask for BLUE color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+
+#: flatcamTools/ToolImage.py:139
+msgid "Import image"
+msgstr "Import image"
+
+#: flatcamTools/ToolImage.py:141
+msgid "Open a image of raster type and then import it in FlatCAM."
+msgstr "Open a image of raster type and then import it in FlatCAM."
+
+#: flatcamTools/ToolImage.py:170
+msgid "Image Tool"
+msgstr "Image Tool"
+
+#: flatcamTools/ToolImage.py:200 flatcamTools/ToolImage.py:203
+msgid "Import IMAGE"
+msgstr "Import IMAGE"
+
+#: flatcamTools/ToolMeasurement.py:26
+msgid "Measurement"
+msgstr "Measurement"
+
+#: flatcamTools/ToolMeasurement.py:47
+msgid "Start"
+msgstr "Start"
+
+#: flatcamTools/ToolMeasurement.py:47 flatcamTools/ToolMeasurement.py:50
+msgid "Coords"
+msgstr "Coords"
+
+#: flatcamTools/ToolMeasurement.py:48 flatcamTools/ToolMeasurement.py:99
+msgid "This is measuring Start point coordinates."
+msgstr "This is measuring Start point coordinates."
+
+#: flatcamTools/ToolMeasurement.py:50
+msgid "Stop"
+msgstr "Stop"
+
+#: flatcamTools/ToolMeasurement.py:51 flatcamTools/ToolMeasurement.py:104
+msgid "This is the measuring Stop point coordinates."
+msgstr "This is the measuring Stop point coordinates."
+
+#: flatcamTools/ToolMeasurement.py:54 flatcamTools/ToolMeasurement.py:109
+msgid "This is the distance measured over the X axis."
+msgstr "This is the distance measured over the X axis."
+
+#: flatcamTools/ToolMeasurement.py:57 flatcamTools/ToolMeasurement.py:115
+msgid "This is the distance measured over the Y axis."
+msgstr "This is the distance measured over the Y axis."
+
+#: flatcamTools/ToolMeasurement.py:59
+msgid "DISTANCE"
+msgstr "DISTANCE"
+
+#: flatcamTools/ToolMeasurement.py:60 flatcamTools/ToolMeasurement.py:121
+msgid "This is the point to point Euclidian distance."
+msgstr "This is the point to point Euclidian distance."
+
+#: flatcamTools/ToolMeasurement.py:63 flatcamTools/ToolMeasurement.py:70
+#: flatcamTools/ToolMeasurement.py:77 flatcamTools/ToolMeasurement.py:84
+#: flatcamTools/ToolMeasurement.py:91
+msgid "Those are the units in which the distance is measured."
+msgstr "Those are the units in which the distance is measured."
+
+#: flatcamTools/ToolMeasurement.py:124
+msgid "Measure"
+msgstr "Measure"
+
+#: flatcamTools/ToolMeasurement.py:183
+msgid "Meas. Tool"
+msgstr "Meas. Tool"
+
+#: flatcamTools/ToolMeasurement.py:276
+msgid "MEASURING: Click on the Start point ..."
+msgstr "MEASURING: Click on the Start point ..."
+
+#: flatcamTools/ToolMeasurement.py:305
+msgid "MEASURING: Click on the Destination point ..."
+msgstr "MEASURING: Click on the Destination point ..."
+
+#: flatcamTools/ToolMeasurement.py:326
+#, python-brace-format
+msgid "MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}"
+msgstr "MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}"
+
+#: flatcamTools/ToolMove.py:81
+msgid "MOVE: Click on the Start point ..."
+msgstr "MOVE: Click on the Start point ..."
+
+#: flatcamTools/ToolMove.py:88
+msgid "[WARNING_NOTCL] MOVE action cancelled. No object(s) to move."
+msgstr "[WARNING_NOTCL] MOVE action cancelled. No object(s) to move."
+
+#: flatcamTools/ToolMove.py:110
+msgid "MOVE: Click on the Destination point ..."
+msgstr "MOVE: Click on the Destination point ..."
+
+#: flatcamTools/ToolMove.py:128
+msgid "Moving ..."
+msgstr "Moving ..."
+
+#: flatcamTools/ToolMove.py:135
+msgid "[WARNING_NOTCL] No object(s) selected."
+msgstr "[WARNING_NOTCL] No object(s) selected."
+
+#: flatcamTools/ToolMove.py:158
+#, python-format
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> %s"
+msgstr "[ERROR_NOTCL] ToolMove.on_left_click() --> %s"
+
+#: flatcamTools/ToolMove.py:164
+#, python-format
+msgid "[success]%s object was moved ..."
+msgstr "[success]%s object was moved ..."
+
+#: flatcamTools/ToolMove.py:174
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> Error when mouse left click."
+msgstr ""
+"[ERROR_NOTCL] ToolMove.on_left_click() --> Error when mouse left click."
+
+#: flatcamTools/ToolMove.py:202
+msgid "[WARNING_NOTCL]Move action cancelled."
+msgstr "[WARNING_NOTCL]Move action cancelled."
+
+#: flatcamTools/ToolMove.py:214
+msgid "[WARNING_NOTCL]Object(s) not selected"
+msgstr "[WARNING_NOTCL]Object(s) not selected"
+
+#: flatcamTools/ToolNonCopperClear.py:25
+msgid "Non-Copper Clearing"
+msgstr "Non-Copper Clearing"
+
+#: flatcamTools/ToolNonCopperClear.py:63
+msgid "Gerber object to be cleared of excess copper.                        "
+msgstr "Gerber object to be cleared of excess copper.                        "
+
+#: flatcamTools/ToolNonCopperClear.py:73
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for copper clearing."
+msgstr ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for copper clearing."
+
+#: flatcamTools/ToolNonCopperClear.py:88
+msgid ""
+"This is the Tool Number.\n"
+"Non copper clearing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more tools.\n"
+"Only tools that create NCC clearing geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+"This is the Tool Number.\n"
+"Non copper clearing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more tools.\n"
+"Only tools that create NCC clearing geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+
+#: flatcamTools/ToolNonCopperClear.py:100 flatcamTools/ToolPaint.py:98
+msgid ""
+"The Tool Type (TT) can be:<BR>- <B>Circular</B> with 1 ... 4 teeth -> it is "
+"informative only. Being circular, <BR>the cut width in material is exactly "
+"the tool diameter.<BR>- <B>Ball</B> -> informative only and make reference "
+"to the Ball type endmill.<BR>- <B>V-Shape</B> -> it will disable de Z-Cut "
+"parameter in the resulting geometry UI form and enable two additional UI "
+"form fields in the resulting geometry: V-Tip Dia and V-Tip Angle. Adjusting "
+"those two values will adjust the Z-Cut parameter such as the cut width into "
+"material will be equal with the value in the Tool Diameter column of this "
+"table.<BR>Choosing the <B>V-Shape</B> Tool Type automatically will select "
+"the Operation Type in the resulting geometry as Isolation."
+msgstr ""
+"The Tool Type (TT) can be:<BR>- <B>Circular</B> with 1 ... 4 teeth -> it is "
+"informative only. Being circular, <BR>the cut width in material is exactly "
+"the tool diameter.<BR>- <B>Ball</B> -> informative only and make reference "
+"to the Ball type endmill.<BR>- <B>V-Shape</B> -> it will disable de Z-Cut "
+"parameter in the resulting geometry UI form and enable two additional UI "
+"form fields in the resulting geometry: V-Tip Dia and V-Tip Angle. Adjusting "
+"those two values will adjust the Z-Cut parameter such as the cut width into "
+"material will be equal with the value in the Tool Diameter column of this "
+"table.<BR>Choosing the <B>V-Shape</B> Tool Type automatically will select "
+"the Operation Type in the resulting geometry as Isolation."
+
+#: flatcamTools/ToolNonCopperClear.py:119 flatcamTools/ToolPaint.py:117
+msgid "Tool Dia"
+msgstr "Tool Dia"
+
+#: flatcamTools/ToolNonCopperClear.py:121
+msgid "Diameter for the new tool to add in the Tool Table"
+msgstr "Diameter for the new tool to add in the Tool Table"
+
+#: flatcamTools/ToolNonCopperClear.py:147 flatcamTools/ToolPaint.py:145
+#: flatcamTools/ToolSolderPaste.py:123
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row(s) in the Tool Table."
+msgstr ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row(s) in the Tool Table."
+
+#: flatcamTools/ToolNonCopperClear.py:225
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"If not checked, use the standard algorithm."
+
+#: flatcamTools/ToolNonCopperClear.py:237
+msgid "Generate Geometry"
+msgstr "Generate Geometry"
+
+#: flatcamTools/ToolNonCopperClear.py:483 flatcamTools/ToolPaint.py:543
+#: flatcamTools/ToolSolderPaste.py:760
+msgid "[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."
+msgstr "[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."
+
+#: flatcamTools/ToolNonCopperClear.py:511 flatcamTools/ToolPaint.py:567
+msgid "[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."
+msgstr "[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."
+
+#: flatcamTools/ToolNonCopperClear.py:516 flatcamTools/ToolPaint.py:572
+msgid "[success] New tool added to Tool Table."
+msgstr "[success] New tool added to Tool Table."
+
+#: flatcamTools/ToolNonCopperClear.py:549
+msgid "[ERROR_NOTCL] Wrong value format entered, use a number."
+msgstr "[ERROR_NOTCL] Wrong value format entered, use a number."
+
+#: flatcamTools/ToolNonCopperClear.py:558 flatcamTools/ToolPaint.py:615
+msgid "[success] Tool from Tool Table was edited."
+msgstr "[success] Tool from Tool Table was edited."
+
+#: flatcamTools/ToolNonCopperClear.py:569 flatcamTools/ToolPaint.py:626
+#: flatcamTools/ToolSolderPaste.py:846
+msgid ""
+"[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool "
+"Table."
+msgstr ""
+"[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool "
+"Table."
+
+#: flatcamTools/ToolNonCopperClear.py:608 flatcamTools/ToolPaint.py:723
+msgid "[WARNING_NOTCL]Delete failed. Select a tool to delete."
+msgstr "[WARNING_NOTCL]Delete failed. Select a tool to delete."
+
+#: flatcamTools/ToolNonCopperClear.py:613 flatcamTools/ToolPaint.py:728
+msgid "[success] Tool(s) deleted from Tool Table."
+msgstr "[success] Tool(s) deleted from Tool Table."
+
+#: flatcamTools/ToolNonCopperClear.py:666
+msgid "[ERROR_NOTCL]No Gerber file available."
+msgstr "[ERROR_NOTCL]No Gerber file available."
+
+#: flatcamTools/ToolNonCopperClear.py:704
+#: flatcamTools/ToolNonCopperClear.py:826
+msgid "Clearing Non-Copper areas."
+msgstr "Clearing Non-Copper areas."
+
+#: flatcamTools/ToolNonCopperClear.py:722
+#, python-format
+msgid "[success] Non-Copper Clearing with ToolDia = %s started."
+msgstr "[success] Non-Copper Clearing with ToolDia = %s started."
+
+#: flatcamTools/ToolNonCopperClear.py:791
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s"
+msgstr "[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s"
+
+#: flatcamTools/ToolNonCopperClear.py:796
+msgid "[success] NCC Tool finished."
+msgstr "[success] NCC Tool finished."
+
+#: flatcamTools/ToolNonCopperClear.py:798
+msgid ""
+"[WARNING_NOTCL] NCC Tool finished but some PCB features could not be "
+"cleared. Check the result."
+msgstr ""
+"[WARNING_NOTCL] NCC Tool finished but some PCB features could not be "
+"cleared. Check the result."
+
+#: flatcamTools/ToolNonCopperClear.py:844
+#, python-format
+msgid "[success] Non-Copper Rest Clearing with ToolDia = %s started."
+msgstr "[success] Non-Copper Rest Clearing with ToolDia = %s started."
+
+#: flatcamTools/ToolNonCopperClear.py:942
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s"
+msgstr "[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s"
+
+#: flatcamTools/ToolNonCopperClear.py:950
+msgid ""
+"[ERROR_NOTCL] NCC Tool finished but could not clear the object with current "
+"settings."
+msgstr ""
+"[ERROR_NOTCL] NCC Tool finished but could not clear the object with current "
+"settings."
+
+#: flatcamTools/ToolPaint.py:24
+msgid "Paint Area"
+msgstr "Paint Area"
+
+#: flatcamTools/ToolPaint.py:60
+msgid "Geometry:"
+msgstr "Geometry:"
+
+#: flatcamTools/ToolPaint.py:62
+msgid "Geometry object to be painted.                        "
+msgstr "Geometry object to be painted.                        "
+
+#: flatcamTools/ToolPaint.py:71
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for painting."
+msgstr ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for painting."
+
+#: flatcamTools/ToolPaint.py:86
+msgid ""
+"This is the Tool Number.\n"
+"Painting will start with the tool with the biggest diameter,\n"
+"continuing until there are no more tools.\n"
+"Only tools that create painting geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+"This is the Tool Number.\n"
+"Painting will start with the tool with the biggest diameter,\n"
+"continuing until there are no more tools.\n"
+"Only tools that create painting geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+
+#: flatcamTools/ToolPaint.py:119
+msgid "Diameter for the new tool."
+msgstr "Diameter for the new tool."
+
+#: flatcamTools/ToolPaint.py:224
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"\n"
+"If not checked, use the standard algorithm."
+
+#: flatcamTools/ToolPaint.py:239
+msgid ""
+"How to select the polygons to paint.<BR>Options:<BR>- <B>Single</B>: left "
+"mouse click on the polygon to be painted.<BR>- <B>All</B>: paint all "
+"polygons."
+msgstr ""
+"How to select the polygons to paint.<BR>Options:<BR>- <B>Single</B>: left "
+"mouse click on the polygon to be painted.<BR>- <B>All</B>: paint all "
+"polygons."
+
+#: flatcamTools/ToolPaint.py:254
+msgid "Create Paint Geometry"
+msgstr "Create Paint Geometry"
+
+#: flatcamTools/ToolPaint.py:256
+msgid ""
+"After clicking here, click inside<BR>the polygon you wish to be painted if "
+"<B>Single</B> is selected.<BR>If <B>All</B>  is selected then the Paint will "
+"start after click.<BR>A new Geometry object with the tool<BR>paths will be "
+"created."
+msgstr ""
+"After clicking here, click inside<BR>the polygon you wish to be painted if "
+"<B>Single</B> is selected.<BR>If <B>All</B>  is selected then the Paint will "
+"start after click.<BR>A new Geometry object with the tool<BR>paths will be "
+"created."
+
+#: flatcamTools/ToolPaint.py:732
+msgid "geometry_on_paint_button"
+msgstr "geometry_on_paint_button"
+
+#: flatcamTools/ToolPaint.py:735 flatcamTools/ToolPaint.py:780
+msgid "[WARNING_NOTCL]Click inside the desired polygon."
+msgstr "[WARNING_NOTCL]Click inside the desired polygon."
+
+#: flatcamTools/ToolPaint.py:767
+msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."
+msgstr "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."
+
+#: flatcamTools/ToolPaint.py:789 flatcamTools/ToolPaint.py:992
+msgid "Painting polygon..."
+msgstr "Painting polygon..."
+
+#: flatcamTools/ToolPaint.py:840
+msgid "[WARNING] No polygon found."
+msgstr "[WARNING] No polygon found."
+
+#: flatcamTools/ToolPaint.py:843
+msgid "Painting polygon."
+msgstr "Painting polygon."
+
+#: flatcamTools/ToolPaint.py:885
+msgid "[ERROR_NOTCL] Geometry could not be painted completely"
+msgstr "[ERROR_NOTCL] Geometry could not be painted completely"
+
+#: flatcamTools/ToolPaint.py:911
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different strategy of paint\n"
+"%s"
+msgstr ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different strategy of paint\n"
+"%s"
+
+#: flatcamTools/ToolPaint.py:953
+#, python-format
+msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
+msgstr "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
+
+#: flatcamTools/ToolPaint.py:959 flatcamTools/ToolPaint.py:1251
+msgid "Polygon Paint started ..."
+msgstr "Polygon Paint started ..."
+
+#: flatcamTools/ToolPaint.py:1107 flatcamTools/ToolPaint.py:1196
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint All. Try a different combination of parameters. "
+"Or a different Method of paint\n"
+"%s"
+msgstr ""
+"[ERROR] Could not do Paint All. Try a different combination of parameters. "
+"Or a different Method of paint\n"
+"%s"
+
+#: flatcamTools/ToolPaint.py:1131
+msgid ""
+"[ERROR] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+"[ERROR] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+
+#: flatcamTools/ToolPaint.py:1140
+msgid "[success] Paint All Done."
+msgstr "[success] Paint All Done."
+
+#: flatcamTools/ToolPaint.py:1226
+msgid ""
+"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+
+#: flatcamTools/ToolPaint.py:1235
+msgid "[success] Paint All with Rest-Machining done."
+msgstr "[success] Paint All with Rest-Machining done."
+
+#: flatcamTools/ToolPanelize.py:25
+msgid "Panelize PCB"
+msgstr "Panelize PCB"
+
+#: flatcamTools/ToolPanelize.py:58
+msgid ""
+"Specify the type of object to be panelized\n"
+"It can be of type: Gerber, Excellon or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Object combobox."
+msgstr ""
+"Specify the type of object to be panelized\n"
+"It can be of type: Gerber, Excellon or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Object combobox."
+
+#: flatcamTools/ToolPanelize.py:73
+msgid ""
+"Object to be panelized. This means that it will\n"
+"be duplicated in an array of rows and columns."
+msgstr ""
+"Object to be panelized. This means that it will\n"
+"be duplicated in an array of rows and columns."
+
+#: flatcamTools/ToolPanelize.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"panelization. It can be: Gerber or Geometry type.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+"Specify the type of object to be used as an container for\n"
+"panelization. It can be: Gerber or Geometry type.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Box Object combobox."
+
+#: flatcamTools/ToolPanelize.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object that is to be panelized."
+msgstr ""
+"The actual object that is used a container for the\n"
+" selected object that is to be panelized."
+
+#: flatcamTools/ToolPanelize.py:150
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Geometry\n"
+"- Gerber"
+msgstr ""
+"Choose the type of object for the panel object:\n"
+"- Geometry\n"
+"- Gerber"
+
+#: flatcamTools/ToolPanelize.py:158
+msgid "Constrain panel within:"
+msgstr "Constrain panel within:"
+
+#: flatcamTools/ToolPanelize.py:192
+msgid "Panelize Object"
+msgstr "Panelize Object"
+
+#: flatcamTools/ToolPanelize.py:194
+msgid ""
+"Panelize the specified object around the specified box.\n"
+"In other words it creates multiple copies of the source object,\n"
+"arranged in a 2D array of rows and columns."
+msgstr ""
+"Panelize the specified object around the specified box.\n"
+"In other words it creates multiple copies of the source object,\n"
+"arranged in a 2D array of rows and columns."
+
+#: flatcamTools/ToolPanelize.py:311
+#, python-format
+msgid "[WARNING]No object Box. Using instead %s"
+msgstr "[WARNING]No object Box. Using instead %s"
+
+#: flatcamTools/ToolPanelize.py:392
+msgid ""
+"[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive "
+"integer."
+msgstr ""
+"[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive "
+"integer."
+
+#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526
+msgid "Generating panel ... Please wait."
+msgstr "Generating panel ... Please wait."
+
+#: flatcamTools/ToolPanelize.py:520
+msgid "[success]Panel done..."
+msgstr "[success]Panel done..."
+
+#: flatcamTools/ToolPanelize.py:523
+#, python-brace-format
+msgid ""
+"[WARNING] Too big for the constrain area. Final panel has {col} columns and "
+"{row} rows"
+msgstr ""
+"[WARNING] Too big for the constrain area. Final panel has {col} columns and "
+"{row} rows"
+
+#: flatcamTools/ToolPanelize.py:531
+msgid "[success]Panel created successfully."
+msgstr "[success]Panel created successfully."
+
+#: flatcamTools/ToolProperties.py:103
+msgid "[ERROR_NOTCL] Properties Tool was not displayed. No object selected."
+msgstr "[ERROR_NOTCL] Properties Tool was not displayed. No object selected."
+
+#: flatcamTools/ToolProperties.py:110
+msgid "[success] Object Properties are displayed."
+msgstr "[success] Object Properties are displayed."
+
+#: flatcamTools/ToolProperties.py:111
+msgid "Properties Tool"
+msgstr "Properties Tool"
+
+#: flatcamTools/ToolShell.py:69
+msgid "...proccessing..."
+msgstr "...proccessing..."
+
+#: flatcamTools/ToolShell.py:71
+#, python-format
+msgid "...proccessing... [%s]"
+msgstr "...proccessing... [%s]"
+
+#: flatcamTools/ToolSolderPaste.py:37
+msgid "Solder Paste Tool"
+msgstr "Solder Paste Tool"
+
+#: flatcamTools/ToolSolderPaste.py:65
+msgid "Gerber Solder paste object.                        "
+msgstr "Gerber Solder paste object.                        "
+
+#: flatcamTools/ToolSolderPaste.py:72
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for dispensing solder paste."
+msgstr ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for dispensing solder paste."
+
+#: flatcamTools/ToolSolderPaste.py:87
+msgid ""
+"This is the Tool Number.\n"
+"The solder dispensing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more Nozzle tools.\n"
+"If there are no longer tools but there are still pads not covered\n"
+" with solder paste, the app will issue a warning message box."
+msgstr ""
+"This is the Tool Number.\n"
+"The solder dispensing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more Nozzle tools.\n"
+"If there are no longer tools but there are still pads not covered\n"
+" with solder paste, the app will issue a warning message box."
+
+#: flatcamTools/ToolSolderPaste.py:94
+msgid ""
+"Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
+"is the width of the solder paste dispensed."
+msgstr ""
+"Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
+"is the width of the solder paste dispensed."
+
+#: flatcamTools/ToolSolderPaste.py:101
+msgid "New Nozzle Tool"
+msgstr "New Nozzle Tool"
+
+#: flatcamTools/ToolSolderPaste.py:117
+msgid ""
+"Add a new nozzle tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+"Add a new nozzle tool to the Tool Table\n"
+"with the diameter specified above."
+
+#: flatcamTools/ToolSolderPaste.py:129
+msgid "Generate solder paste dispensing geometry."
+msgstr "Generate solder paste dispensing geometry."
+
+#: flatcamTools/ToolSolderPaste.py:142
+msgid "STEP 1"
+msgstr "STEP 1"
+
+#: flatcamTools/ToolSolderPaste.py:144
+msgid ""
+"First step is to select a number of nozzle tools for usage\n"
+"and then optionally modify the GCode parameters bellow."
+msgstr ""
+"First step is to select a number of nozzle tools for usage\n"
+"and then optionally modify the GCode parameters bellow."
+
+#: flatcamTools/ToolSolderPaste.py:147
+msgid ""
+"Select tools.\n"
+"Modify parameters."
+msgstr ""
+"Select tools.\n"
+"Modify parameters."
+
+#: flatcamTools/ToolSolderPaste.py:290
+msgid "Generate GCode"
+msgstr "Generate GCode"
+
+#: flatcamTools/ToolSolderPaste.py:292
+msgid ""
+"Generate GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+"Generate GCode for Solder Paste dispensing\n"
+"on PCB pads."
+
+#: flatcamTools/ToolSolderPaste.py:308
+msgid "STEP 2:"
+msgstr "STEP 2:"
+
+#: flatcamTools/ToolSolderPaste.py:310
+msgid ""
+"Second step is to create a solder paste dispensing\n"
+"geometry out of an Solder Paste Mask Gerber file."
+msgstr ""
+"Second step is to create a solder paste dispensing\n"
+"geometry out of an Solder Paste Mask Gerber file."
+
+#: flatcamTools/ToolSolderPaste.py:326
+msgid "Geo Result:"
+msgstr "Geo Result:"
+
+#: flatcamTools/ToolSolderPaste.py:328
+msgid ""
+"Geometry Solder Paste object.\n"
+"The name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+"Geometry Solder Paste object.\n"
+"The name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+
+#: flatcamTools/ToolSolderPaste.py:337
+msgid "STEP 3:"
+msgstr "STEP 3:"
+
+#: flatcamTools/ToolSolderPaste.py:339
+msgid ""
+"Third step is to select a solder paste dispensing geometry,\n"
+"and then generate a CNCJob object.\n"
+"\n"
+"REMEMBER: if you want to create a CNCJob with new parameters,\n"
+"first you need to generate a geometry with those new params,\n"
+"and only after that you can generate an updated CNCJob."
+msgstr ""
+"Third step is to select a solder paste dispensing geometry,\n"
+"and then generate a CNCJob object.\n"
+"\n"
+"REMEMBER: if you want to create a CNCJob with new parameters,\n"
+"first you need to generate a geometry with those new params,\n"
+"and only after that you can generate an updated CNCJob."
+
+#: flatcamTools/ToolSolderPaste.py:359
+msgid "CNC Result:"
+msgstr "CNC Result:"
+
+#: flatcamTools/ToolSolderPaste.py:361
+msgid ""
+"CNCJob Solder paste object.\n"
+"In order to enable the GCode save section,\n"
+"the name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+"CNCJob Solder paste object.\n"
+"In order to enable the GCode save section,\n"
+"the name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+
+#: flatcamTools/ToolSolderPaste.py:371
+msgid "View GCode"
+msgstr "View GCode"
+
+#: flatcamTools/ToolSolderPaste.py:373
+msgid ""
+"View the generated GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+"View the generated GCode for Solder Paste dispensing\n"
+"on PCB pads."
+
+#: flatcamTools/ToolSolderPaste.py:377
+msgid "Save GCode"
+msgstr "Save GCode"
+
+#: flatcamTools/ToolSolderPaste.py:379
+msgid ""
+"Save the generated GCode for Solder Paste dispensing\n"
+"on PCB pads, to a file."
+msgstr ""
+"Save the generated GCode for Solder Paste dispensing\n"
+"on PCB pads, to a file."
+
+#: flatcamTools/ToolSolderPaste.py:383
+msgid "STEP 4:"
+msgstr "STEP 4:"
+
+#: flatcamTools/ToolSolderPaste.py:385
+msgid ""
+"Fourth step (and last) is to select a CNCJob made from \n"
+"a solder paste dispensing geometry, and then view/save it's GCode."
+msgstr ""
+"Fourth step (and last) is to select a CNCJob made from \n"
+"a solder paste dispensing geometry, and then view/save it's GCode."
+
+#: flatcamTools/ToolSolderPaste.py:413
+msgid "Delete Object"
+msgstr "Delete Object"
+
+#: flatcamTools/ToolSolderPaste.py:788
+msgid ""
+"[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table."
+msgstr ""
+"[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table."
+
+#: flatcamTools/ToolSolderPaste.py:793
+msgid "[success] New Nozzle tool added to Tool Table."
+msgstr "[success] New Nozzle tool added to Tool Table."
+
+#: flatcamTools/ToolSolderPaste.py:835
+msgid "[success] Nozzle tool from Tool Table was edited."
+msgstr "[success] Nozzle tool from Tool Table was edited."
+
+#: flatcamTools/ToolSolderPaste.py:891
+msgid "[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete."
+msgstr "[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete."
+
+#: flatcamTools/ToolSolderPaste.py:896
+msgid "[success] Nozzle tool(s) deleted from Tool Table."
+msgstr "[success] Nozzle tool(s) deleted from Tool Table."
+
+#: flatcamTools/ToolSolderPaste.py:951
+msgid "[WARNING_NOTCL] No SolderPaste mask Gerber object loaded."
+msgstr "[WARNING_NOTCL] No SolderPaste mask Gerber object loaded."
+
+#: flatcamTools/ToolSolderPaste.py:968
+msgid "Creating Solder Paste dispensing geometry."
+msgstr "Creating Solder Paste dispensing geometry."
+
+#: flatcamTools/ToolSolderPaste.py:980
+msgid "[WARNING_NOTCL] No Nozzle tools in the tool table."
+msgstr "[WARNING_NOTCL] No Nozzle tools in the tool table."
+
+#: flatcamTools/ToolSolderPaste.py:1106 flatcamTools/ToolSolderPaste.py:1161
+msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
+msgstr "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
+
+#: flatcamTools/ToolSolderPaste.py:1109
+msgid "[success] Solder Paste geometry generated successfully..."
+msgstr "[success] Solder Paste geometry generated successfully..."
+
+#: flatcamTools/ToolSolderPaste.py:1115
+msgid ""
+"[WARNING_NOTCL] Some or all pads have no solder due of inadequate nozzle "
+"diameters..."
+msgstr ""
+"[WARNING_NOTCL] Some or all pads have no solder due of inadequate nozzle "
+"diameters..."
+
+#: flatcamTools/ToolSolderPaste.py:1129
+msgid "Generating Solder Paste dispensing geometry..."
+msgstr "Generating Solder Paste dispensing geometry..."
+
+#: flatcamTools/ToolSolderPaste.py:1149
+msgid "[WARNING_NOTCL] There is no Geometry object available."
+msgstr "[WARNING_NOTCL] There is no Geometry object available."
+
+#: flatcamTools/ToolSolderPaste.py:1153
+msgid ""
+"[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool "
+"geometry."
+msgstr ""
+"[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool "
+"geometry."
+
+#: flatcamTools/ToolSolderPaste.py:1258
+#, python-format
+msgid "[success] ToolSolderPaste CNCjob created: %s"
+msgstr "[success] ToolSolderPaste CNCjob created: %s"
+
+#: flatcamTools/ToolSolderPaste.py:1290 flatcamTools/ToolSolderPaste.py:1294
+#: flatcamTools/ToolSolderPaste.py:1345
+msgid ""
+"[WARNING_NOTCL] This CNCJob object can't be processed. NOT a "
+"solder_paste_tool CNCJob object."
+msgstr ""
+"[WARNING_NOTCL] This CNCJob object can't be processed. NOT a "
+"solder_paste_tool CNCJob object."
+
+#: flatcamTools/ToolSolderPaste.py:1317
+msgid "[ERROR_NOTCL] No Gcode in the object..."
+msgstr "[ERROR_NOTCL] No Gcode in the object..."
+
+#: flatcamTools/ToolSolderPaste.py:1326
+#, python-format
+msgid "[ERROR] ToolSolderPaste.on_view_gcode() -->%s"
+msgstr "[ERROR] ToolSolderPaste.on_view_gcode() -->%s"
+
+#: flatcamTools/ToolSolderPaste.py:1355
+msgid "Export GCode ..."
+msgstr "Export GCode ..."
+
+#: flatcamTools/ToolSolderPaste.py:1363
+msgid "[WARNING_NOTCL] Export Machine Code cancelled ..."
+msgstr "[WARNING_NOTCL] Export Machine Code cancelled ..."
+
+#: flatcamTools/ToolSolderPaste.py:1393
+#, python-format
+msgid "[success] Solder paste dispenser GCode file saved to: %s"
+msgstr "[success] Solder paste dispenser GCode file saved to: %s"
+
+#: flatcamTools/ToolTransform.py:23
+msgid "Object Transform"
+msgstr "Object Transform"
+
+#: flatcamTools/ToolTransform.py:84
+msgid ""
+"Rotate the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+"Rotate the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+
+#: flatcamTools/ToolTransform.py:120 flatcamTools/ToolTransform.py:138
+msgid ""
+"Skew/shear the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+"Skew/shear the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+
+#: flatcamTools/ToolTransform.py:176 flatcamTools/ToolTransform.py:193
+msgid ""
+"Scale the selected object(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+"Scale the selected object(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+
+#: flatcamTools/ToolTransform.py:202
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+"Scale the selected object(s)\n"
+"using the Scale Factor X for both axis."
+
+#: flatcamTools/ToolTransform.py:250 flatcamTools/ToolTransform.py:267
+msgid ""
+"Offset the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects.\n"
+msgstr ""
+"Offset the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects.\n"
+
+#: flatcamTools/ToolTransform.py:297 flatcamTools/ToolTransform.py:305
+msgid ""
+"Flip the selected object(s) over the X axis.\n"
+"Does not create a new object.\n"
+" "
+msgstr ""
+"Flip the selected object(s) over the X axis.\n"
+"Does not create a new object.\n"
+" "
+
+#: flatcamTools/ToolTransform.py:637
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to rotate!"
+msgstr "[WARNING_NOTCL] No object selected. Please Select an object to rotate!"
+
+#: flatcamTools/ToolTransform.py:665
+msgid "CNCJob objects can't be rotated."
+msgstr "CNCJob objects can't be rotated."
+
+#: flatcamTools/ToolTransform.py:674
+msgid "[success]Rotate done ..."
+msgstr "[success]Rotate done ..."
+
+#: flatcamTools/ToolTransform.py:689
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!"
+msgstr "[WARNING_NOTCL] No object selected. Please Select an object to flip!"
+
+#: flatcamTools/ToolTransform.py:724
+msgid "CNCJob objects can't be mirrored/flipped."
+msgstr "CNCJob objects can't be mirrored/flipped."
+
+#: flatcamTools/ToolTransform.py:735
+msgid "[success]Flip on the Y axis done ..."
+msgstr "[success]Flip on the Y axis done ..."
+
+#: flatcamTools/ToolTransform.py:745
+msgid "[success]Flip on the X axis done ..."
+msgstr "[success]Flip on the X axis done ..."
+
+#: flatcamTools/ToolTransform.py:759
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"
+msgstr ""
+"[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"
+
+#: flatcamTools/ToolTransform.py:781
+msgid "CNCJob objects can't be skewed."
+msgstr "CNCJob objects can't be skewed."
+
+#: flatcamTools/ToolTransform.py:793
+#, python-format
+msgid "[success]Skew on the %s axis done ..."
+msgstr "[success]Skew on the %s axis done ..."
+
+#: flatcamTools/ToolTransform.py:808
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!"
+msgstr "[WARNING_NOTCL] No object selected. Please Select an object to scale!"
+
+#: flatcamTools/ToolTransform.py:841
+msgid "CNCJob objects can't be scaled."
+msgstr "CNCJob objects can't be scaled."
+
+#: flatcamTools/ToolTransform.py:861
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!"
+msgstr "[WARNING_NOTCL] No object selected. Please Select an object to offset!"
+
+#: flatcamTools/ToolTransform.py:882
+msgid "CNCJob objects can't be offseted."
+msgstr "CNCJob objects can't be offseted."
+
+#: flatcamTools/ToolTransform.py:894
+#, python-format
+msgid "[success]Offset on the %s axis done ..."
+msgstr "[success]Offset on the %s axis done ..."
+
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25\\% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25\\% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+
+#| msgid "z_toolchange = Z coord for Toolchange"
+msgid "z_cut = Z coord for Toolchange"
+msgstr "z_cut = Z coord for Toolchange"
+
+#| msgid "z_toolchange = Z coord for Toolchange"
+msgid "z_move = Z coord for Toolchange"
+msgstr "z_move = Z coord for Toolchange"
+
+msgid "%s/Project_%s"
+msgstr "%s/Project_%s"
+
+msgid "tool_tab"
+msgstr "tool_tab"

BIN
locale/ro/LC_MESSAGES/strings.mo


+ 10496 - 0
locale/ro/LC_MESSAGES/strings.po

@@ -0,0 +1,10496 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR ORGANIZATION
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2019-03-17 23:06+0200\n"
+"PO-Revision-Date: 2019-03-18 01:21+0200\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Generator: Poedit 2.2.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
+"%100<=19) ? 1 : 2);\n"
+"X-Poedit-Basepath: ../../..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: FlatCAMApp.py:844
+msgid "[ERROR] Could not find the Language files. The App strings are missing."
+msgstr ""
+"[ERROR]Nu am gasit fişierele cu traduceri. Mesajele aplicatiei lipsesc."
+
+#: FlatCAMApp.py:1672 ObjectCollection.py:80 flatcamTools/ToolImage.py:213
+msgid "Open cancelled."
+msgstr "Deschidere anulata."
+
+#: FlatCAMApp.py:1686
+msgid "Open Config file failed."
+msgstr "Deshciderea fişierului de configurare a esuat."
+
+#: FlatCAMApp.py:1871
+msgid ""
+"[WARNING_NOTCL] Editing a MultiGeo Geometry is not possible for the moment."
+msgstr ""
+"[WARNING_NOTCL] Editarea unei Geometrii tip multigeo nu este posibila "
+"momentan."
+
+#: FlatCAMApp.py:1892
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to edit."
+msgstr ""
+"[WARNING_NOTCL] Selectează un obiect tip Geometrie sau Excellon pentru "
+"editare."
+
+#: FlatCAMApp.py:1903
+msgid "[WARNING_NOTCL]Editor is activated ..."
+msgstr "[WARNING_NOTCL] Editorul este activ. .."
+
+#: FlatCAMApp.py:1942
+msgid "[WARNING] Object empty after edit."
+msgstr "[WARNING] Obiectul nu are date dupa editare."
+
+#: FlatCAMApp.py:1951
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to update."
+msgstr ""
+"[WARNING_NOTCL] Selectează un obiect tip Geometrie sau Excellon pentru "
+"salvare."
+
+#: FlatCAMApp.py:1964
+#, python-format
+msgid "[selected] %s is updated, returning to App..."
+msgstr "[selected] %s  este actualizat, intoarcere la aplicatie."
+
+#: FlatCAMApp.py:2287
+msgid "[ERROR] Could not load defaults file."
+msgstr "[ERROR] Nu am putut incarca fişierul cu valori default."
+
+#: FlatCAMApp.py:2299
+msgid "[ERROR] Failed to parse defaults file."
+msgstr "[ERROR] Parsarea fişierului cu valori default a esuat."
+
+#: FlatCAMApp.py:2320 FlatCAMApp.py:2323
+msgid "Import FlatCAM Preferences"
+msgstr "Importa Preferințele FlatCAM"
+
+#: FlatCAMApp.py:2328
+msgid "[WARNING_NOTCL]FlatCAM preferences import cancelled."
+msgstr "[WARNING_NOTCL] Importul preferințelor FlatCAM a esuat."
+
+#: FlatCAMApp.py:2336 FlatCAMApp.py:2810
+msgid "[ERROR_NOTCL] Could not load defaults file."
+msgstr ""
+"[ERROR_NOTCL] Nu a fost posibila incarcarea fişierului cu valori default."
+
+#: FlatCAMApp.py:2344 FlatCAMApp.py:2819
+msgid "[ERROR_NOTCL] Failed to parse defaults file."
+msgstr "[ERROR_NOTCL] Parsarea fişierului cu valori default a esuat."
+
+#: FlatCAMApp.py:2347
+#, python-format
+msgid "[success]Imported Defaults from %s"
+msgstr "[success] Valorile default au fost importate din  %s"
+
+#: FlatCAMApp.py:2357 FlatCAMApp.py:2361
+msgid "Export FlatCAM Preferences"
+msgstr "Exporta Preferințele FlatCAM"
+
+#: FlatCAMApp.py:2367
+msgid "[WARNING_NOTCL]FlatCAM preferences export cancelled."
+msgstr "[WARNING_NOTCL] Exportul preferințelor FlatCAM este anulat."
+
+#: FlatCAMApp.py:2383
+msgid "[ERROR_NOTCL]Could not load defaults file."
+msgstr ""
+"[ERROR_NOTCL] Nu a fost posibila incarcarea fişierului cu valori default."
+
+#: FlatCAMApp.py:2402 FlatCAMApp.py:2833
+msgid "[ERROR_NOTCL] Failed to write defaults to file."
+msgstr "[ERROR_NOTCL] Salvarea valorilor default intr-un fişier a esuat."
+
+#: FlatCAMApp.py:2454
+msgid "[ERROR_NOTCL]Failed to open recent files file for writing."
+msgstr ""
+"[ERROR_NOTCL] Deschiderea fişierului cu >fişiere recente< pentru a fi salvat "
+"a esuat."
+
+#: FlatCAMApp.py:2539 camlib.py:4229
+msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
+msgstr ""
+"[ERROR_NOTCL] A aparut o eroare interna. Verifică in TCL Shell pt mai multe "
+"detalii.\n"
+
+#: FlatCAMApp.py:2540
+#, python-brace-format
+msgid ""
+"Object ({kind}) failed because: {error} \n"
+"\n"
+msgstr ""
+"Obiectul ({kind}) a esuat din cauza: {error} \n"
+"\n"
+
+#: FlatCAMApp.py:2560
+msgid "Converting units to "
+msgstr "Se convertesc unitatile la "
+
+#: FlatCAMApp.py:2618 FlatCAMApp.py:2621 FlatCAMApp.py:2624 FlatCAMApp.py:2627
+#, python-brace-format
+msgid ""
+"[selected]{kind} created/selected: <span style=\"color:{color};\">{name}</"
+"span>"
+msgstr ""
+"[selected]{kind} creat/selectat: <span style=\"color:{color};\">{name}</span>"
+
+#: FlatCAMApp.py:2865
+msgid "[success]Defaults saved."
+msgstr "[success] Valorile default au fost salvate."
+
+#: FlatCAMApp.py:2886
+msgid "[ERROR_NOTCL] Could not load factory defaults file."
+msgstr ""
+"[ERROR_NOTCL] Fişierul cu valori default de fabrica nu a putut fi deschis."
+
+#: FlatCAMApp.py:2895
+msgid "[ERROR_NOTCL] Failed to parse factory defaults file."
+msgstr ""
+"[ERROR_NOTCL] Parsarea fişierului cu valori default de fabrica a esuat."
+
+#: FlatCAMApp.py:2909
+msgid "[ERROR_NOTCL] Failed to write factory defaults to file."
+msgstr ""
+"[ERROR_NOTCL]] Salvarea fişierului cu valori default de fabrica intr-un "
+"fişier a esuat."
+
+#: FlatCAMApp.py:2913
+msgid "Factory defaults saved."
+msgstr "Valori default de fabrica au fost salvate."
+
+#: FlatCAMApp.py:2918
+msgid ""
+"There are files/objects modified in FlatCAM. \n"
+"Do you want to Save the project?"
+msgstr ""
+"FlatCAM are fişiere/obiecte care au fost modificate. \n"
+"Dorești să Salvezi proiectul?"
+
+#: FlatCAMApp.py:2921 FlatCAMApp.py:5190
+msgid "Save changes"
+msgstr "Salvează modificarile."
+
+#: FlatCAMApp.py:2981
+msgid ""
+"[ERROR] 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] Fuziune esuata. Obiectele Geometrii sunt de tipuri diferite.\n"
+"Cel putin unul este de tip Multigeo și celalalt este tip SinglGeo. O "
+"posibilitate este să convertesti dintr-unul in celalalt și să reincerci "
+"fuzionarea \n"
+"dar un cazul conversiei de la MultiGeo to SingleGeo, se pot pierde "
+"informatii și rezultatul ar putea să nu fie cel dorit. \n"
+"Verifică codul G-Code generat."
+
+#: FlatCAMApp.py:3022
+msgid "[ERROR_NOTCL]Failed. Excellon joining works only on Excellon objects."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Fuzionarea Excellon functionează doar cu obiecte de tip "
+"Excellon."
+
+#: FlatCAMApp.py:3044
+msgid "[ERROR_NOTCL]Failed. Gerber joining works only on Gerber objects."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Fuzionarea Gerber functionează doar cu obiecte de tip "
+"Gerber ."
+
+#: FlatCAMApp.py:3059 FlatCAMApp.py:3084
+msgid "[ERROR_NOTCL]Failed. Select a Geometry Object and try again."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Selectează un obiect Geometrie și încearcă din nou."
+
+#: FlatCAMApp.py:3063 FlatCAMApp.py:3088
+#, python-format
+msgid "[ERROR_NOTCL]Expected a FlatCAMGeometry, got %s"
+msgstr "[ERROR_NOTCL] Se astepta o Geometrie FlatCAM, s-a primit %s"
+
+#: FlatCAMApp.py:3076
+msgid "[success] A Geometry object was converted to MultiGeo type."
+msgstr "[success] Un obiect Geometrie a fost convertit la tipul MultiGeo."
+
+#: FlatCAMApp.py:3102
+msgid "[success] A Geometry object was converted to SingleGeo type."
+msgstr "[success] Un obiect Geometrie a fost convertit la tipul SingleGeo ."
+
+#: FlatCAMApp.py:3286
+#, python-format
+msgid "[success]Converted units to %s"
+msgstr "[success] Conversie unitati la %s"
+
+#: FlatCAMApp.py:3297
+msgid "[WARNING_NOTCL]Units conversion cancelled."
+msgstr "[WARNING_NOTCL] Conversia unitatilor este anulata."
+
+#: FlatCAMApp.py:3862
+msgid "Open file"
+msgstr "Deschide fişierul ..."
+
+#: FlatCAMApp.py:3913 FlatCAMApp.py:3918
+msgid "Export G-Code ..."
+msgstr "Exporta G-Code ..."
+
+#: FlatCAMApp.py:3921
+msgid "[WARNING_NOTCL]Export Code cancelled."
+msgstr "[WARNING_NOTCL Exportul GCode este anulat."
+
+#: FlatCAMApp.py:3931
+msgid "[WARNING] No such file or directory"
+msgstr "[WARNING] Nu exista un asa fişier sau director"
+
+#: FlatCAMApp.py:3938
+#, python-format
+msgid "Saved to: %s"
+msgstr "Salvat in: %s"
+
+#: FlatCAMApp.py:4001 FlatCAMApp.py:4033 FlatCAMApp.py:4044 FlatCAMApp.py:4055
+#: flatcamTools/ToolNonCopperClear.py:487 flatcamTools/ToolSolderPaste.py:764
+msgid ""
+"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
+"format."
+msgstr ""
+"[WARNING_NOTCL] Introdu un diametru al uneltei valid: valoare ne-nula in "
+"format Real."
+
+#: FlatCAMApp.py:4006 FlatCAMApp.py:4038 FlatCAMApp.py:4049 FlatCAMApp.py:4060
+#: flatcamGUI/FlatCAMGUI.py:2484
+msgid "[WARNING_NOTCL] Adding Tool cancelled ..."
+msgstr "[WARNING_NOTCL] Adaugarea unei unelte anulata ..."
+
+#: FlatCAMApp.py:4009
+msgid ""
+"Adding Tool works only when Advanced is checked.\n"
+"Go to Preferences -> General - Show Advanced Options."
+msgstr ""
+"Adaugarea de unelte noi functionează doar in modul Avansat.\n"
+"Pentru aceasta mergi in Preferințe -> General - Activează Modul Avansat."
+
+#: FlatCAMApp.py:4114
+msgid "Object(s) deleted ..."
+msgstr "Obiect(ele) sters(e)."
+
+#: FlatCAMApp.py:4118
+msgid "Failed. No object(s) selected..."
+msgstr "Esuat. Nici-un obiect nu este selectat."
+
+#: FlatCAMApp.py:4120
+msgid "Save the work in Editor and try again ..."
+msgstr "Salvează continutul din Editor și încearcă din nou."
+
+#: FlatCAMApp.py:4133
+msgid "Click to set the origin ..."
+msgstr "Click pentru a seta originea..."
+
+#: FlatCAMApp.py:4145
+msgid "Jump to ..."
+msgstr "Sari la ..."
+
+#: FlatCAMApp.py:4146
+msgid "Enter the coordinates in format X,Y:"
+msgstr "Introduceți coordonatele in format X,Y:"
+
+#: FlatCAMApp.py:4153
+msgid "Wrong coordinates. Enter coordinates in format: X,Y"
+msgstr "Coordonate gresite. Introduceți coordonatele in format X,Y."
+
+#: FlatCAMApp.py:4168
+msgid "Done."
+msgstr "Executat."
+
+#: FlatCAMApp.py:4300
+msgid "[success] Origin set ..."
+msgstr "[success] Originea a fost setata ..."
+
+#: FlatCAMApp.py:4318
+msgid "Preferences"
+msgstr "Preferințe"
+
+#: FlatCAMApp.py:4338
+msgid "[WARNING_NOTCL] No object selected to Flip on Y axis."
+msgstr ""
+"[WARNING_NOTCL] Nu sete nici-un obiect selectat pentru oglindire pe axa Y."
+
+#: FlatCAMApp.py:4363
+msgid "[success] Flip on Y axis done."
+msgstr "[success] Oglindire pe axa Y executata."
+
+#: FlatCAMApp.py:4365 FlatCAMApp.py:4405 FlatCAMEditor.py:1340
+#: flatcamTools/ToolTransform.py:750
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed."
+msgstr "[ERROR_NOTCL] Datorita %s, oglindirea a esuat."
+
+#: FlatCAMApp.py:4378
+msgid "[WARNING_NOTCL] No object selected to Flip on X axis."
+msgstr ""
+"[WARNING_NOTCL] Nu sete nici-un obiect selectat pentru oglindire pe axa X."
+
+#: FlatCAMApp.py:4403
+msgid "[success] Flip on X axis done."
+msgstr "[success] Oglindirea pe axa X executata."
+
+#: FlatCAMApp.py:4418
+msgid "[WARNING_NOTCL] No object selected to Rotate."
+msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Rotatie."
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Transform"
+msgstr "Transformare"
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Enter the Angle value:"
+msgstr "Introduceți valoaea Unghiului:"
+
+#: FlatCAMApp.py:4451
+msgid "[success] Rotation done."
+msgstr "[success] Rotatie executata."
+
+#: FlatCAMApp.py:4453 FlatCAMEditor.py:1283 flatcamTools/ToolTransform.py:678
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
+msgstr "[ERROR_NOTCL] Datorita %s, Rotatia a esuat."
+
+#: FlatCAMApp.py:4464
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
+msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Deformare pe axa X."
+
+#: FlatCAMApp.py:4485
+msgid "[success] Skew on X axis done."
+msgstr "[success] Deformare pe axa X executata."
+
+#: FlatCAMApp.py:4495
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
+msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru Deformare pe axa Y."
+
+#: FlatCAMApp.py:4516
+msgid "[success] Skew on Y axis done."
+msgstr "[success] Deformare pe axa Y executata."
+
+#: FlatCAMApp.py:4612 FlatCAMApp.py:4639
+msgid ""
+"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
+"format."
+msgstr ""
+"[WARNING_NOTCL] Introduceți o valoare pentru Grila ne-nula și in format Real."
+
+#: FlatCAMApp.py:4618
+msgid "[success] New Grid added ..."
+msgstr "[success] O noua valoare pt Grila a fost adaugata..."
+
+#: FlatCAMApp.py:4621
+msgid "[WARNING_NOTCL] Grid already exists ..."
+msgstr "[WARNING_NOTCL] Grila exista deja."
+
+#: FlatCAMApp.py:4624
+msgid "[WARNING_NOTCL] Adding New Grid cancelled ..."
+msgstr "[WARNING_NOTCL] Adaugarea unei valori de Grila a fost anulata ..."
+
+#: FlatCAMApp.py:4646
+msgid "[ERROR_NOTCL] Grid Value does not exist ..."
+msgstr "[ERROR_NOTCL] Valoarea Grilei nu exista ..."
+
+#: FlatCAMApp.py:4649
+msgid "[success] Grid Value deleted ..."
+msgstr "[success] Valoarea Grila a fost stearsa."
+
+#: FlatCAMApp.py:4652
+msgid "[WARNING_NOTCL] Delete Grid value cancelled ..."
+msgstr "[WARNING_NOTCL] Stergera unei valori de Grila a fost anulata ..."
+
+#: FlatCAMApp.py:4691
+msgid "[WARNING_NOTCL]No object selected to copy it's name"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat pentru i se copia valoarea"
+
+#: FlatCAMApp.py:4695
+msgid "Name copied on clipboard ..."
+msgstr "Numele a fost copiat pe Clipboard ..."
+
+#: FlatCAMApp.py:4990 FlatCAMApp.py:4993 FlatCAMApp.py:4996 FlatCAMApp.py:4999
+#: FlatCAMApp.py:5013 FlatCAMApp.py:5016 FlatCAMApp.py:5019 FlatCAMApp.py:5022
+#: FlatCAMApp.py:5061 FlatCAMApp.py:5064 FlatCAMApp.py:5067 FlatCAMApp.py:5070
+#: ObjectCollection.py:696 ObjectCollection.py:699 ObjectCollection.py:702
+#: ObjectCollection.py:705
+#, python-brace-format
+msgid "[selected]<span style=\"color:{color};\">{name}</span> selected"
+msgstr "[selected]<span style=\"color:{color};\">{name}</span> selectat"
+
+#: FlatCAMApp.py:5187
+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 ""
+"Exista fişiere/obiecte deschide in FlatCAM.\n"
+"Crearea unui nou Proiect le va sterge..\n"
+"Doriti să Salvati proiectul curentt?"
+
+#: FlatCAMApp.py:5205
+msgid "[success] New Project created..."
+msgstr "[success] Un nou Proiect a fost creat..."
+
+#: FlatCAMApp.py:5286
+msgid ""
+"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
+msgstr ""
+"[WARNING_NOTCL] Selectati un obiect Gerber sau Excellon pentru a-i vedea "
+"codul sursa."
+
+#: FlatCAMApp.py:5293
+msgid ""
+"[WARNING_NOTCL] There is no selected object for which to see it's source "
+"file code."
+msgstr "[WARNING_NOTCL] Nici-un obiect selectat pentru a-i vedea codul sursa."
+
+#: FlatCAMApp.py:5297 FlatCAMApp.py:6728 FlatCAMObj.py:5398
+msgid "Code Editor"
+msgstr "Editor Cod"
+
+#: FlatCAMApp.py:5310
+#, python-format
+msgid "[ERROR]App.on_view_source() -->%s"
+msgstr "[ERROR]App.on_view_source() -->%s"
+
+#: FlatCAMApp.py:5348 FlatCAMApp.py:5351 flatcamGUI/FlatCAMGUI.py:541
+#: flatcamGUI/FlatCAMGUI.py:1590
+msgid "Open Gerber"
+msgstr "Incarca Gerber"
+
+#: FlatCAMApp.py:5356
+msgid "[WARNING_NOTCL] Open Gerber cancelled."
+msgstr "[WARNING_NOTCL] Incarcarea unui fişier Gerber este anulata."
+
+#: FlatCAMApp.py:5377 FlatCAMApp.py:5380 flatcamGUI/FlatCAMGUI.py:542
+#: flatcamGUI/FlatCAMGUI.py:1591
+msgid "Open Excellon"
+msgstr "Incarca Excellon"
+
+#: FlatCAMApp.py:5385
+msgid "[WARNING_NOTCL]Open Excellon cancelled."
+msgstr "[WARNING_NOTCL] Incarcarea unui fişier Excellon este anulata."
+
+#: FlatCAMApp.py:5407 FlatCAMApp.py:5410
+msgid "Open G-Code"
+msgstr "Incarca G-Code"
+
+#: FlatCAMApp.py:5415
+msgid "[WARNING_NOTCL]Open G-Code cancelled."
+msgstr "[WARNING_NOTCL]Incarcarea unui fişier G-Code este anulata."
+
+#: FlatCAMApp.py:5433 FlatCAMApp.py:5436
+msgid "Open Project"
+msgstr "Incarca Project"
+
+#: FlatCAMApp.py:5444
+msgid "[WARNING_NOTCL]Open Project cancelled."
+msgstr "[WARNING_NOTCL] Incarcarea unui Proiect a fost anulata."
+
+#: FlatCAMApp.py:5463 FlatCAMApp.py:5466
+msgid "Open Configuration File"
+msgstr "Incarca un fişier de Configurare"
+
+#: FlatCAMApp.py:5470
+msgid "[WARNING_NOTCL]Open Config cancelled."
+msgstr "[WARNING_NOTCL] Incarcarea unui fişier de Configurare este anulata."
+
+#: FlatCAMApp.py:5485 FlatCAMApp.py:5682 FlatCAMApp.py:7588 FlatCAMApp.py:7608
+#: FlatCAMApp.py:7629 FlatCAMApp.py:7651
+msgid "[WARNING_NOTCL] No object selected."
+msgstr "[WARNING_NOTCL] Nici-un obiect selectat."
+
+#: FlatCAMApp.py:5486 FlatCAMApp.py:5683
+msgid "Please Select a Geometry object to export"
+msgstr "Selectează un obiect Geometrie pentru export"
+
+#: FlatCAMApp.py:5497
+msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
+msgstr ""
+"[ERROR_NOTCL] Doar obiectele Geometrie, Gerber și CNCJob pot fi folosite."
+
+#: FlatCAMApp.py:5510 FlatCAMApp.py:5514
+msgid "Export SVG"
+msgstr "Exporta SVG"
+
+#: FlatCAMApp.py:5519
+msgid "[WARNING_NOTCL]Export SVG cancelled."
+msgstr "[WARNING_NOTCL] Exportul SVG este anulat."
+
+#: FlatCAMApp.py:5533
+msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
+msgstr ""
+"[[WARNING_NOTCL]] Datele trebuie să fie organizate intr-o arie 3D cu ultima "
+"dimensiune cu valoarea 3 sau 4."
+
+#: FlatCAMApp.py:5539 FlatCAMApp.py:5543
+msgid "Export PNG Image"
+msgstr "Exporta imagine PNG"
+
+#: FlatCAMApp.py:5548
+msgid "Export PNG cancelled."
+msgstr "Exportul imagine PNG este anulat."
+
+#: FlatCAMApp.py:5565
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Gerber pentru "
+"export."
+
+#: FlatCAMApp.py:5570
+msgid ""
+"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Doar obiectele tip Gerber pot fi salvate ca fişiere "
+"Gerber..."
+
+#: FlatCAMApp.py:5582
+msgid "Save Gerber source file"
+msgstr "Salvează codul sursa Gerber ca fişier"
+
+#: FlatCAMApp.py:5587
+msgid "[WARNING_NOTCL] Save Gerber source file cancelled."
+msgstr "[WARNING_NOTCL] Salvarea codului sursa Gerber este anulata."
+
+#: FlatCAMApp.py:5604
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Excellon object to "
+"export."
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon "
+"pentru export."
+
+#: FlatCAMApp.py:5609 FlatCAMApp.py:5648
+msgid ""
+"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Doar obiectele tip Excellon pot fi salvate ca fişiere "
+"Excellon ..."
+
+#: FlatCAMApp.py:5617 FlatCAMApp.py:5621
+msgid "Save Excellon source file"
+msgstr "Salvează codul sursa Excellon ca fişier"
+
+#: FlatCAMApp.py:5626
+msgid "[WARNING_NOTCL] Saving Excellon source file cancelled."
+msgstr "[WARNING_NOTCL] Salvarea codului sursa Excellon este anulata."
+
+#: FlatCAMApp.py:5643
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
+"export."
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect selectat. Selectează un obiect Excellon "
+"pentru export."
+
+#: FlatCAMApp.py:5656 FlatCAMApp.py:5660
+msgid "Export Excellon"
+msgstr "Exporta Excellon"
+
+#: FlatCAMApp.py:5665
+msgid "[WARNING_NOTCL]Export Excellon cancelled."
+msgstr "[WARNING_NOTCL] Exportul Excellon anulat."
+
+#: FlatCAMApp.py:5693
+msgid "[ERROR_NOTCL] Only Geometry objects can be used."
+msgstr "[ERROR_NOTCL] Doar obiecte tip Geometrie pot fi folosite."
+
+#: FlatCAMApp.py:5706 FlatCAMApp.py:5710
+msgid "Export DXF"
+msgstr "Exporta DXF"
+
+#: FlatCAMApp.py:5715
+msgid "[WARNING_NOTCL] Export DXF cancelled."
+msgstr "[WARNING_NOTCL] Exportul DXF anulat."
+
+#: FlatCAMApp.py:5733 FlatCAMApp.py:5736
+msgid "Import SVG"
+msgstr "Importa SVG"
+
+#: FlatCAMApp.py:5744
+msgid "[WARNING_NOTCL] Open SVG cancelled."
+msgstr "[WARNING_NOTCL] Importul SVG anulat."
+
+#: FlatCAMApp.py:5763 FlatCAMApp.py:5766
+msgid "Import DXF"
+msgstr "Importa DXF"
+
+#: FlatCAMApp.py:5774
+msgid "[WARNING_NOTCL]Open DXF cancelled."
+msgstr "[WARNING_NOTCL] Incarcarea fişier DXF anulata."
+
+#: FlatCAMApp.py:5792 FlatCAMApp.py:5795
+msgid "Open TCL script"
+msgstr "Incarca TCL script"
+
+#: FlatCAMApp.py:5803
+msgid "[WARNING_NOTCL]Open TCL script cancelled."
+msgstr "[WARNING_NOTCL]Incarcarea TCL script anulata."
+
+#: FlatCAMApp.py:5851 FlatCAMApp.py:5855
+msgid "Save Project As ..."
+msgstr "Salvează Proiectul ca ..."
+
+#: FlatCAMApp.py:5852
+#, python-brace-format
+msgid "{l_save}/Project_{date}"
+msgstr "{l_save}/Proiect_{date}"
+
+#: FlatCAMApp.py:5860
+msgid "[WARNING_NOTCL] Save Project cancelled."
+msgstr "[WARNING_NOTCL] Salvarea Proiect anulata."
+
+#: FlatCAMApp.py:5905
+msgid "Exporting SVG"
+msgstr "SVG in curs de export"
+
+#: FlatCAMApp.py:5938 FlatCAMApp.py:6043 FlatCAMApp.py:6157
+#, python-format
+msgid "[success] SVG file exported to %s"
+msgstr "[success] Fişier SVG exportat in %s"
+
+#: FlatCAMApp.py:5969 FlatCAMApp.py:6089
+#, python-format
+msgid "[WARNING_NOTCL]No object Box. Using instead %s"
+msgstr ""
+"[WARNING_NOTCL] Nu este nici-un container Box pentru obiect. Se foloseşte %s"
+
+#: FlatCAMApp.py:6046 FlatCAMApp.py:6160
+msgid "Generating Film ... Please wait."
+msgstr "Filmul se generează ... Asteapta!"
+
+#: FlatCAMApp.py:6307
+#, python-format
+msgid "[success] Excellon file exported to %s"
+msgstr "[success] Fişierul Excellon exportat in %s"
+
+#: FlatCAMApp.py:6314
+msgid "Exporting Excellon"
+msgstr "Excellon in curs de export"
+
+#: FlatCAMApp.py:6319 FlatCAMApp.py:6326
+msgid "[ERROR_NOTCL] Could not export Excellon file."
+msgstr "[ERROR_NOTCL] Fişierul Excellon nu a putut fi exportat."
+
+#: FlatCAMApp.py:6365
+#, python-format
+msgid "[success] DXF file exported to %s"
+msgstr "[success] Fişierul DXF exportat in %s"
+
+#: FlatCAMApp.py:6371
+msgid "Exporting DXF"
+msgstr "DXF in curs de export"
+
+#: FlatCAMApp.py:6376 FlatCAMApp.py:6383
+msgid "[[WARNING_NOTCL]] Could not export DXF file."
+msgstr "[[WARNING_NOTCL]] Fişierul DXF nu a putut fi exportat."
+
+#: FlatCAMApp.py:6403 FlatCAMApp.py:6445 FlatCAMApp.py:6486
+msgid ""
+"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
+"Gerber are supported"
+msgstr ""
+"[ERROR_NOTCL] Typul parametrului nu este compatibil. Doar Geometrie is "
+"Gerber sunt acceptate."
+
+#: FlatCAMApp.py:6413
+msgid "Importing SVG"
+msgstr "SVG in curs de ia fi importat"
+
+#: FlatCAMApp.py:6424 FlatCAMApp.py:6466 FlatCAMApp.py:6506 FlatCAMApp.py:6582
+#: FlatCAMApp.py:6649 FlatCAMApp.py:6714
+#, python-format
+msgid "[success] Opened: %s"
+msgstr "[success] Incarcat: %s"
+
+#: FlatCAMApp.py:6455
+msgid "Importing DXF"
+msgstr "DXF in curs de a fi importat"
+
+#: FlatCAMApp.py:6494
+msgid "Importing Image"
+msgstr "Imaginea in curs de a fi importata"
+
+#: FlatCAMApp.py:6535 FlatCAMApp.py:6537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open file: %s"
+msgstr "[ERROR_NOTCL] Esec in incarcarea fişierului %s"
+
+#: FlatCAMApp.py:6540
+#, python-brace-format
+msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
+msgstr "[ERROR_NOTCL] Esec in parsarea fişierului: {name}. {error}"
+
+#: FlatCAMApp.py:6546 FlatCAMEditor.py:5802 FlatCAMObj.py:4104
+msgid "[ERROR] An internal error has ocurred. See shell.\n"
+msgstr ""
+"[ERROR]  A aparut o eroare interna. Verifică in TCL Shell pt mai multe "
+"detalii.\n"
+
+#: FlatCAMApp.py:6555
+msgid ""
+"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
+msgstr ""
+"[ERROR_NOTCL] Obiectul nu estetip Gerber sau este gol. Se anulează crearea "
+"obiectului."
+
+#: FlatCAMApp.py:6563
+msgid "Opening Gerber"
+msgstr "Gerber in curs de incarcare"
+
+#: FlatCAMApp.py:6573
+msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
+msgstr ""
+"[ERROR_NOTCL] Incarcarea Gerber a esuat. Probabil nu este de tip Gerber."
+
+#: FlatCAMApp.py:6608
+msgid "[ERROR_NOTCL] This is not Excellon file."
+msgstr "[ERROR_NOTCL] Acesta nu este un fişier Excellon."
+
+#: FlatCAMApp.py:6611
+#, python-format
+msgid "[ERROR_NOTCL] Cannot open file: %s"
+msgstr "[ERROR_NOTCL] Fişierul %s nu se poate incarca."
+
+#: FlatCAMApp.py:6616
+msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
+msgstr ""
+"[ERROR_NOTCL]  A aparut o eroare interna. Verifică in TCL Shell pt mai multe "
+"detalii.\n"
+
+#: FlatCAMApp.py:6632
+#, python-format
+msgid "[ERROR_NOTCL] No geometry found in file: %s"
+msgstr ""
+"[ERROR_NOTCL] Nici-o informatie de tip geometrie nu s-a gasit in fişierul: %s"
+
+#: FlatCAMApp.py:6635
+msgid "Opening Excellon."
+msgstr "Excellon in curs de incarcare"
+
+#: FlatCAMApp.py:6642
+msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
+msgstr ""
+"[ERROR_NOTCL] Incarcarea Excellon a esuat. Probabil nu este de tip Excellon."
+
+#: FlatCAMApp.py:6681
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open %s"
+msgstr "[ERROR_NOTCL] Incarcarea fişierului %s a esuat."
+
+#: FlatCAMApp.py:6691
+msgid "[ERROR_NOTCL] This is not GCODE"
+msgstr "[ERROR_NOTCL] Acest obiect nu este de tip GCode"
+
+#: FlatCAMApp.py:6697
+msgid "Opening G-Code."
+msgstr "G-Code in curs de incarcare"
+
+#: FlatCAMApp.py:6705
+msgid ""
+"[ERROR_NOTCL] 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] Esec in crearea unui obiect CNCJob. Probabil nu este un fişier "
+"GCode.\n"
+"Incercarea de a crea un obiect CNCJob din  G-Code a esuat in timpul "
+"procesarii."
+
+#: FlatCAMApp.py:6745
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open config file: %s"
+msgstr "[ERROR_NOTCL] Esec in incarcarea fişierului de configurare: %s"
+
+#: FlatCAMApp.py:6770 FlatCAMApp.py:6787
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open project file: %s"
+msgstr "[ERROR_NOTCL] Esec in incarcarea fişierului de configurare: %s"
+
+#: FlatCAMApp.py:6777
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse project file: %s"
+msgstr "[ERROR_NOTCL] Esec in incarcarea fişierului de configurare: %s"
+
+#: FlatCAMApp.py:6813
+#, python-format
+msgid "[success] Project loaded from: %s"
+msgstr "[success] Proeictul a fost incarcat din: %s"
+
+#: FlatCAMApp.py:6943
+msgid "Available commands:\n"
+msgstr "Comenzi disponibile:\n"
+
+#: FlatCAMApp.py:6945
+msgid ""
+"\n"
+"\n"
+"Type help <command_name> for usage.\n"
+" Example: help open_gerber"
+msgstr ""
+"\n"
+"\n"
+"Introduceți help <nume_comanda> pentru utilizare.\n"
+"Exemplu: help open_gerber"
+
+#: FlatCAMApp.py:7093
+msgid "Shows list of commands."
+msgstr "Arata o lista de comenzi."
+
+#: FlatCAMApp.py:7146
+msgid "[ERROR_NOTCL] Failed to load recent item list."
+msgstr "[ERROR_NOTCL] Esec in incarcarea listei cu obiecte recente."
+
+#: FlatCAMApp.py:7153
+msgid "[ERROR_NOTCL] Failed to parse recent item list."
+msgstr "[ERROR_NOTCL] Esec in parsarea listei cu obiecte recente."
+
+#: FlatCAMApp.py:7214 flatcamGUI/FlatCAMGUI.py:856
+msgid "<b>Shortcut Key List</b>"
+msgstr "<b>Lista cu taste Shortcut</b>"
+
+#: FlatCAMApp.py:7221
+msgid ""
+"\n"
+"<p><span style=\"font-size:14px\"><strong>Selected Tab - Choose an Item from "
+"Project Tab</strong></span></p>\n"
+"\n"
+"<p><span style=\"font-size:10px\"><strong>Details</strong>:<br />\n"
+"The normal flow when working in FlatCAM is the following:</span></p>\n"
+"\n"
+"<ol>\n"
+"\t<li><span style=\"font-size:10px\">Loat/Import a Gerber, Excellon, Gcode, "
+"DXF, Raster Image or SVG file into FlatCAM using either the menu&#39;s, "
+"toolbars, key shortcuts or even dragging and dropping the files on the GUI."
+"<br />\n"
+"\t<br />\n"
+"\tYou can also load a <strong>FlatCAM project</strong> by double clicking on "
+"the project file, drag &amp; drop of the file into the FLATCAM GUI or "
+"through the menu/toolbar links offered within the app.</span><br />\n"
+"\t&nbsp;</li>\n"
+"\t<li><span style=\"font-size:10px\">Once an object is available in the "
+"Project Tab, by selecting it and then focusing on <strong>SELECTED TAB </"
+"strong>(more simpler is to double click the object name in the Project Tab), "
+"<strong>SELECTED TAB </strong>will be updated with the object properties "
+"according to it&#39;s kind: Gerber, Excellon, Geometry or CNCJob object.<br /"
+">\n"
+"\t<br />\n"
+"\tIf the selection of the object is done on the canvas by single click "
+"instead, and the <strong>SELECTED TAB</strong> is in focus, again the object "
+"properties will be displayed into the Selected Tab. Alternatively, double "
+"clicking on the object on the canvas will bring the <strong>SELECTED TAB</"
+"strong> and populate it even if it was out of focus.<br />\n"
+"\t<br />\n"
+"\tYou can change the parameters in this screen and the flow direction is "
+"like this:<br />\n"
+"\t<br />\n"
+"\t<strong>Gerber/Excellon Object</strong> -&gt; Change Param -&gt; Generate "
+"Geometry -&gt;<strong> Geometry Object </strong>-&gt; Add tools (change "
+"param in Selected Tab) -&gt; Generate CNCJob -&gt;<strong> CNCJob Object </"
+"strong>-&gt; Verify GCode (through Edit CNC Code) and/or append/prepend to "
+"GCode (again, done in <strong>SELECTED TAB)&nbsp;</strong>-&gt; Save GCode</"
+"span></li>\n"
+"</ol>\n"
+"\n"
+"<p><span style=\"font-size:10px\">A list of key shortcuts is available "
+"through an menu entry in <strong>Help -&gt; Shortcuts List</strong>&nbsp;or "
+"through it&#39;s own key shortcut: <strng>F3</strong>.</span></p>\n"
+"\n"
+"        "
+msgstr ""
+"\n"
+"<p><span style=\"font-size:14px\"><strong>Tab Selectat - Alege o intrare din "
+"Tab-ul Proiect</strong></span></p>\n"
+"\n"
+"<p><span style=\"font-size:10px\"><strong>Detalii</strong>:<br />\n"
+"Fluxul normal când se lucrează in FlatCAM este urmatorul:</span></p>\n"
+"\n"
+"<ol>\n"
+"\t<li><span style=\"font-size:10px\">Incarca/Importa un fişier Gerber, "
+"Excellon, Gcode, DXF, Imagine Raster sau SVG in FlatCAM folosind ori "
+"meniurile, toolbarurile, tastele shortcut sau chiar tragerea și eliberarea "
+"fişierelor in fereastra FlatCAM.<br />\n"
+"\t<br />\n"
+"\tPoti să incarci și un <strong>proiect FlatCAM</strong> prin dublu click pe "
+"fişierul proiect, tragerea și eliberarea fişierului peste FLATCAM GUI sau "
+"prin sistemul de meniuri/toolbaruri oferit in cadrul aplicatiei.</span><br /"
+">\n"
+"\t&nbsp;</li>\n"
+"\t<li><span style=\"font-size:10px\">Odata ce un obiect este disponibil in "
+"Tab-ul Proiect, prin selectarea și focalizarea in <strong>Tab-ul SELECTAT</"
+"strong>(mai simplu prin dublu click pe numele obiectului in lista dinTab-ul "
+"Proiect), <strong>Tab-ul SELECTAT </strong>va fi updatat conform cu tipul "
+"sau: Gerber, Excellon, Geometrie sau CNCJob.<br />\n"
+"\t<br />\n"
+"\tDaca selectia este efectuata pe Canvas prin simplu click și <strong>Tab-ul "
+"SELECTAT</strong> este in focus, din nou, proprietatile obiectului vor fi "
+"afisate in Tab-ul SELECTAT. Alternativ, prin dublu click pe obiect in Canvas "
+"se va aduce <strong>Tab-ul SELECTAT</strong> in focus și va fi actualizat cu "
+"informatie chair daca initial nu era focalizat.<br />\n"
+"\t<br />\n"
+"\tO suma de parametri se pot schimba in acest Tab and directia in lucru este "
+"urmatoarea:<br />\n"
+"\t<br />\n"
+"\t<strong>Obiectul Gerber/Excellon</strong> -&gt; Schimba Parametru -&gt; "
+"Generează Geometrie -&gt;<strong>Obiectul Geometrie </strong>-&gt; Adaugă "
+"unelte (prin schimbare parametru in Tab-ul SELECTAT) -&gt; Generează CNCJob -"
+"&gt;<strong> Obiect CNCJob</strong>-&gt; Verifică GCode (folosind Editare "
+"cod CNC) și/sau Adaugă cod GCode la inceput/la sfarsit (din nou, efectuat in "
+"<strong>Tab-ul SELECTAT)&nbsp;</strong>-&gt; Salvează GCode</span></li>\n"
+"</ol>\n"
+"\n"
+"<p><span style=\"font-size:10px\">O lista cu tastele shortcut este "
+"disponibila ca și meniu  in <strong>Help -&gt;Lista Shortcut-uri</"
+"strong>&nbsp;sau prin propria tasta shortcutt: <strng>F3</strong>.</span></"
+"p>\n"
+"\n"
+"        "
+
+#: FlatCAMApp.py:7325
+msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
+msgstr ""
+"[WARNING_NOTCL] Verificarea pentru ultima versiune a esuat. Nu a fost "
+"posibila conectarea la server."
+
+#: FlatCAMApp.py:7332
+msgid "[ERROR_NOTCL] Could not parse information about latest version."
+msgstr ""
+"[ERROR_NOTCL] Informatia cu privire la ultima versiune nu s-a putut "
+"interpreta."
+
+#: FlatCAMApp.py:7342
+msgid "[success] FlatCAM is up to date!"
+msgstr "[success] FlatCAM este la ultima versiune!"
+
+#: FlatCAMApp.py:7347
+msgid "Newer Version Available"
+msgstr "O noua versiune este disponibila"
+
+#: FlatCAMApp.py:7348
+msgid ""
+"There is a newer version of FlatCAM available for download:\n"
+"\n"
+msgstr ""
+"O noua versiune de FlatCAM este disponibila pentru download::\n"
+"\n"
+
+#: FlatCAMApp.py:7350
+msgid "info"
+msgstr "Informatie"
+
+#: FlatCAMApp.py:7369
+msgid "[success]All plots disabled."
+msgstr "[success] Toate afisarile sunt dezactivate."
+
+#: FlatCAMApp.py:7375
+msgid "[success]All non selected plots disabled."
+msgstr "[success] Toate afisarile care nu sunt selectate sunt dezactivate."
+
+#: FlatCAMApp.py:7381
+msgid "[success]All plots enabled."
+msgstr "[success] Toate afisarile sunt activate."
+
+#: FlatCAMApp.py:7491
+msgid "Saving FlatCAM Project"
+msgstr "Proiectul FlatCAM este in curs de salvare"
+
+#: FlatCAMApp.py:7512 FlatCAMApp.py:7543
+#, python-format
+msgid "[success] Project saved to: %s"
+msgstr "[success] Proiectul s-a salvat in: %s"
+
+#: FlatCAMApp.py:7530
+#, python-format
+msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
+msgstr ""
+"[ERROR_NOTCL] Verificarea proiectului salvat a esuat: %s. Incearcă să il "
+"salvezi din nou."
+
+#: FlatCAMApp.py:7537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
+msgstr ""
+"[ERROR_NOTCL] Parsarea proiectului salvat a esuat: %s. Incearcă să il "
+"salvezi din nou."
+
+#: FlatCAMApp.py:7545
+#, python-format
+msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
+msgstr ""
+"[ERROR_NOTCL] Salvarea proiectului a esuat: %s. Incearcă să il salvezi din "
+"nou."
+
+#: FlatCAMEditor.py:76
+msgid "Buffer distance:"
+msgstr "Distanta pt bufer:"
+
+#: FlatCAMEditor.py:77
+msgid "Buffer corner:"
+msgstr "Coltul pt bufer:"
+
+#: FlatCAMEditor.py:79
+msgid ""
+"There are 3 types of corners:\n"
+" - 'Round': the corner is rounded for exterior buffer.\n"
+" - 'Square:' the corner is met in a sharp angle for exterior buffer.\n"
+" - 'Beveled:' the corner is a line that directly connects the features "
+"meeting in the corner"
+msgstr ""
+"Sunt disponibile 3 tipuri de colțuri:\n"
+" - 'Rotund': coltul este rotunjit in cazul buferului exterior.\n"
+" - 'Patrat:' colțurile formează unghi de 90 grade pt buferul exterior\n"
+" - 'Beveled:' coltul este inlocuit cu o linie care uneste capetele liniilor "
+"care formează coltul"
+
+#: FlatCAMEditor.py:85
+msgid "Round"
+msgstr "Rotund"
+
+#: FlatCAMEditor.py:86
+msgid "Square"
+msgstr "Patrat"
+
+#: FlatCAMEditor.py:87
+msgid "Beveled"
+msgstr "Beveled"
+
+#: FlatCAMEditor.py:94
+msgid "Buffer Interior"
+msgstr "Bufer interior"
+
+#: FlatCAMEditor.py:96
+msgid "Buffer Exterior"
+msgstr "Bufer Exterior"
+
+#: FlatCAMEditor.py:102
+msgid "Full Buffer"
+msgstr "Bufer complet"
+
+#: FlatCAMEditor.py:123 FlatCAMEditor.py:2623
+msgid "Buffer Tool"
+msgstr "Unealta Bufer"
+
+#: FlatCAMEditor.py:134 FlatCAMEditor.py:151 FlatCAMEditor.py:168
+#: FlatCAMEditor.py:2641 FlatCAMEditor.py:2667 FlatCAMEditor.py:2693
+msgid ""
+"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Valoarea distantei bufer lipseste sau este intr-un format "
+"gresit. Adaugă din nou și reîncearcă."
+
+#: FlatCAMEditor.py:416 flatcamGUI/FlatCAMGUI.py:3402
+#: flatcamGUI/FlatCAMGUI.py:4608 flatcamGUI/FlatCAMGUI.py:4884
+#: flatcamGUI/FlatCAMGUI.py:5015 flatcamGUI/ObjectUI.py:331
+msgid "Tool dia:"
+msgstr "Dia unealta:"
+
+#: FlatCAMEditor.py:418 flatcamGUI/FlatCAMGUI.py:5017
+msgid ""
+"Diameter of the tool to\n"
+"be used in the operation."
+msgstr ""
+"Diametrul uneltei care este utilizata in operatie. \n"
+"Este și lăţimea de tăiere pentru uneltele cilindrice."
+
+#: FlatCAMEditor.py:427 flatcamGUI/FlatCAMGUI.py:4790
+#: flatcamGUI/FlatCAMGUI.py:5026 flatcamTools/ToolNonCopperClear.py:164
+#: flatcamTools/ToolPaint.py:160
+msgid "Overlap:"
+msgstr "Suprapunere:"
+
+#: FlatCAMEditor.py:429 flatcamTools/ToolPaint.py:162
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+"Cat de mult (fractie) din diametrul uneltei să se suprapună la fiecare "
+"trecere a uneltei.\n"
+"Exemplu:\n"
+"O valoare aici de 0.25 inseamna 25% din diametrul uneltei de mai sus.\n"
+"\n"
+"Ajustează valoarea incepand de la valori mici și pe urma creste daca ariile "
+"care ar trebui\n"
+" >pictate< inca nu sunt procesate.\n"
+"Valori scazute = procesare rapida,executie rapida a PCB-ului.\n"
+"Valori mari= procesare lenta cat și o executie la fel de lenta a PCB-ului,\n"
+"datorita numărului mai mare de treceri-tăiere."
+
+#: FlatCAMEditor.py:445 flatcamGUI/FlatCAMGUI.py:4806
+#: flatcamGUI/FlatCAMGUI.py:4892 flatcamGUI/FlatCAMGUI.py:5036
+#: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:180
+#: flatcamTools/ToolPaint.py:177
+msgid "Margin:"
+msgstr "Margine:"
+
+#: FlatCAMEditor.py:447 flatcamGUI/FlatCAMGUI.py:5038
+#: flatcamTools/ToolPaint.py:179
+msgid ""
+"Distance by which to avoid\n"
+"the edges of the polygon to\n"
+"be painted."
+msgstr ""
+"Distanta fata de marginile\n"
+"poligonului care trebuie\n"
+"să fie >pictat<."
+
+#: FlatCAMEditor.py:456 flatcamGUI/FlatCAMGUI.py:4815
+#: flatcamGUI/FlatCAMGUI.py:5047 flatcamTools/ToolNonCopperClear.py:189
+#: flatcamTools/ToolPaint.py:188
+msgid "Method:"
+msgstr "Metoda:"
+
+#: FlatCAMEditor.py:458 flatcamGUI/FlatCAMGUI.py:5049
+msgid ""
+"Algorithm to paint the polygon:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed."
+msgstr ""
+"Algoritm pentru a picta poligonul<BR><B>Standard</B>: Pas fix spre interior."
+"<BR><B>Samanta</B>: Spre exterior pornind de la un punct-samanta."
+
+#: FlatCAMEditor.py:464 flatcamGUI/FlatCAMGUI.py:4824
+#: flatcamGUI/FlatCAMGUI.py:5055
+msgid "Standard"
+msgstr "Standard"
+
+#: FlatCAMEditor.py:465 flatcamGUI/FlatCAMGUI.py:4825
+#: flatcamGUI/FlatCAMGUI.py:5056
+msgid "Seed-based"
+msgstr "Punct-samanta"
+
+#: FlatCAMEditor.py:466 flatcamGUI/FlatCAMGUI.py:4826
+#: flatcamGUI/FlatCAMGUI.py:5057
+msgid "Straight lines"
+msgstr "Linii drepte"
+
+#: FlatCAMEditor.py:471 flatcamGUI/FlatCAMGUI.py:4831
+#: flatcamGUI/FlatCAMGUI.py:5062 flatcamTools/ToolNonCopperClear.py:205
+#: flatcamTools/ToolPaint.py:204
+msgid "Connect:"
+msgstr "Conectează:"
+
+#: FlatCAMEditor.py:473 flatcamGUI/FlatCAMGUI.py:4833
+#: flatcamGUI/FlatCAMGUI.py:5064 flatcamTools/ToolNonCopperClear.py:207
+#: flatcamTools/ToolPaint.py:206
+msgid ""
+"Draw lines between resulting\n"
+"segments to minimize tool lifts."
+msgstr ""
+"Desenează linii între segmentele\n"
+"rezultate pentru a minimiza miscarile\n"
+"de ridicare a uneltei."
+
+#: FlatCAMEditor.py:480 flatcamGUI/FlatCAMGUI.py:4840
+#: flatcamGUI/FlatCAMGUI.py:5072 flatcamTools/ToolNonCopperClear.py:214
+#: flatcamTools/ToolPaint.py:213
+msgid "Contour:"
+msgstr "Contur:"
+
+#: FlatCAMEditor.py:482 flatcamGUI/FlatCAMGUI.py:4842
+#: flatcamGUI/FlatCAMGUI.py:5074 flatcamTools/ToolNonCopperClear.py:216
+#: flatcamTools/ToolPaint.py:215
+msgid ""
+"Cut around the perimeter of the polygon\n"
+"to trim rough edges."
+msgstr ""
+"Taie de-a lungul perimetrului poligonului\n"
+"pentru a elimina bavurile."
+
+#: FlatCAMEditor.py:494
+msgid "Paint"
+msgstr "Pictează"
+
+#: FlatCAMEditor.py:512 flatcamGUI/FlatCAMGUI.py:575
+#: flatcamGUI/FlatCAMGUI.py:1624 flatcamGUI/ObjectUI.py:1379
+#: flatcamTools/ToolPaint.py:340
+msgid "Paint Tool"
+msgstr "Unealta Paint"
+
+#: FlatCAMEditor.py:548
+msgid "[WARNING_NOTCL] Paint cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Operatie Paint anulata. Nici-o forma selectata."
+
+#: FlatCAMEditor.py:559 flatcamTools/ToolCutOut.py:343
+#: flatcamTools/ToolCutOut.py:481 flatcamTools/ToolCutOut.py:601
+#: flatcamTools/ToolCutOut.py:706 flatcamTools/ToolDblSided.py:363
+msgid ""
+"[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Diametrul uneltei lipseste sau este intr-un format "
+"incompatibil. Adaugă-l și reîncearcă."
+
+#: FlatCAMEditor.py:570
+msgid ""
+"[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Valoarea de suprapunere a uneltei lipseste sau este intr-un "
+"format incompatibil. Adaugă-o și reîncearcă."
+
+#: FlatCAMEditor.py:582
+msgid ""
+"[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+"[WARNING_NOTCL] Valoarea de margine lipseste sau este intr-un format "
+"incompatibil. Adaugă-o și reîncearcă."
+
+#: FlatCAMEditor.py:591 FlatCAMEditor.py:2648 FlatCAMEditor.py:2674
+#: FlatCAMEditor.py:2700 flatcamTools/ToolNonCopperClear.py:806
+#: flatcamTools/ToolProperties.py:104
+msgid "Tools"
+msgstr "Unelte"
+
+#: FlatCAMEditor.py:602 FlatCAMEditor.py:975 flatcamGUI/FlatCAMGUI.py:584
+#: flatcamGUI/FlatCAMGUI.py:1635 flatcamTools/ToolTransform.py:398
+msgid "Transform Tool"
+msgstr "Unealta Transformare"
+
+#: FlatCAMEditor.py:603 FlatCAMEditor.py:664 flatcamTools/ToolTransform.py:24
+#: flatcamTools/ToolTransform.py:82
+msgid "Rotate"
+msgstr "Rotatie"
+
+#: FlatCAMEditor.py:604 flatcamTools/ToolTransform.py:25
+msgid "Skew/Shear"
+msgstr "Deformare"
+
+#: FlatCAMEditor.py:605 flatcamGUI/ObjectUI.py:100 flatcamGUI/ObjectUI.py:265
+#: flatcamTools/ToolTransform.py:26
+msgid "Scale"
+msgstr "Scalare"
+
+#: FlatCAMEditor.py:606 flatcamTools/ToolTransform.py:27
+msgid "Mirror (Flip)"
+msgstr "Oglindire"
+
+#: FlatCAMEditor.py:607 flatcamGUI/ObjectUI.py:127 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517 flatcamTools/ToolTransform.py:28
+msgid "Offset"
+msgstr "Ofset"
+
+#: FlatCAMEditor.py:618
+#, python-format
+msgid "Editor %s"
+msgstr "Editor %s"
+
+#: FlatCAMEditor.py:650 FlatCAMEditor.py:4851 FlatCAMEditor.py:4887
+#: flatcamTools/ToolTransform.py:68
+msgid "Angle:"
+msgstr "Unghi:"
+
+#: FlatCAMEditor.py:652 flatcamTools/ToolTransform.py:70
+msgid ""
+"Angle for Rotation action, in degrees.\n"
+"Float number between -360 and 359.\n"
+"Positive numbers for CW motion.\n"
+"Negative numbers for CCW motion."
+msgstr ""
+"Unghiul pentru Rotatie, in grade. Număr Real cu valori între -360 și  359.\n"
+"Numerele pozitive inseamna o miscare in sens ace ceasornic.\n"
+"Numerele negative inseamna o miscare in sens invers ace ceasornic."
+
+#: FlatCAMEditor.py:666
+msgid ""
+"Rotate the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+"Roteste formele selectate.\n"
+"Punctul de referinţă este mijlocul\n"
+"formei înconjurătoare care cuprinde\n"
+"toate formele selectate."
+
+#: FlatCAMEditor.py:689 flatcamTools/ToolTransform.py:107
+msgid "Angle X:"
+msgstr "Unghi X:"
+
+#: FlatCAMEditor.py:691 FlatCAMEditor.py:709 flatcamTools/ToolTransform.py:109
+#: flatcamTools/ToolTransform.py:127
+msgid ""
+"Angle for Skew action, in degrees.\n"
+"Float number between -360 and 359."
+msgstr ""
+"Valoarea unghiului de Deformare, in grade.\n"
+"Ia valori Reale între -360 and 359 grade."
+
+#: FlatCAMEditor.py:700 flatcamTools/ToolTransform.py:118
+msgid "Skew X"
+msgstr "Deformare X"
+
+#: FlatCAMEditor.py:702 FlatCAMEditor.py:720
+msgid ""
+"Skew/shear the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+"Deformează formele selectate.\n"
+"Punctul de referinţă este mijlocul\n"
+"formei înconjurătoare care cuprinde\n"
+"toate formele selectate."
+
+#: FlatCAMEditor.py:707 flatcamTools/ToolTransform.py:125
+msgid "Angle Y:"
+msgstr "Unghi Y:"
+
+#: FlatCAMEditor.py:718 flatcamTools/ToolTransform.py:136
+msgid "Skew Y"
+msgstr "Deformare Y"
+
+#: FlatCAMEditor.py:746 flatcamTools/ToolTransform.py:164
+msgid "Factor X:"
+msgstr "Factor X:"
+
+#: FlatCAMEditor.py:748 flatcamTools/ToolTransform.py:166
+msgid "Factor for Scale action over X axis."
+msgstr "Factor pentru scalarea pe axa X"
+
+#: FlatCAMEditor.py:756 flatcamTools/ToolTransform.py:174
+msgid "Scale X"
+msgstr "Scalează X"
+
+#: FlatCAMEditor.py:758 FlatCAMEditor.py:775
+msgid ""
+"Scale the selected shape(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+"Scalează formele selectate.\n"
+"Punctul de referinţă depinde de  \n"
+"starea checkbox-ului >Referința scalare<."
+
+#: FlatCAMEditor.py:763 flatcamTools/ToolTransform.py:181
+msgid "Factor Y:"
+msgstr "Factor Y:"
+
+#: FlatCAMEditor.py:765 flatcamTools/ToolTransform.py:183
+msgid "Factor for Scale action over Y axis."
+msgstr "Factor pentru scalarea pe axa Y."
+
+#: FlatCAMEditor.py:773 flatcamTools/ToolTransform.py:191
+msgid "Scale Y"
+msgstr "Scalează Y"
+
+#: FlatCAMEditor.py:782 flatcamGUI/FlatCAMGUI.py:5421
+#: flatcamTools/ToolTransform.py:200
+msgid "Link"
+msgstr "Legatura"
+
+#: FlatCAMEditor.py:784
+msgid ""
+"Scale the selected shape(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+"Scalează formele selectate\n"
+"folsoind factorul: Factor X pentru ambele axe."
+
+#: FlatCAMEditor.py:790 flatcamGUI/FlatCAMGUI.py:5429
+#: flatcamTools/ToolTransform.py:208
+msgid "Scale Reference"
+msgstr "Referința scalare"
+
+#: FlatCAMEditor.py:792
+msgid ""
+"Scale the selected shape(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected shapes when unchecked."
+msgstr ""
+"Scalează formele selectate.\n"
+"Punctul de referinţă este mijlocul\n"
+"formei înconjurătoare care cuprinde\n"
+"toate formele selectate când nu este\n"
+"bifat și este originea când este bifat."
+
+#: FlatCAMEditor.py:820 flatcamTools/ToolTransform.py:238
+msgid "Value X:"
+msgstr "Valoare X:"
+
+#: FlatCAMEditor.py:822 flatcamTools/ToolTransform.py:240
+msgid "Value for Offset action on X axis."
+msgstr "Valoare pentru deplasarea pe axa X."
+
+#: FlatCAMEditor.py:830 flatcamTools/ToolTransform.py:248
+msgid "Offset X"
+msgstr "Ofset pe X"
+
+#: FlatCAMEditor.py:832 FlatCAMEditor.py:850
+msgid ""
+"Offset the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes.\n"
+msgstr ""
+"Deplasează formele selectate\n"
+"Punctul de referinţă este mijlocul\n"
+"formei înconjurătoare care cuprinde\n"
+"toate formele selectate.\n"
+
+#: FlatCAMEditor.py:838 flatcamTools/ToolTransform.py:255
+msgid "Value Y:"
+msgstr "Valoare Y:"
+
+#: FlatCAMEditor.py:840 flatcamTools/ToolTransform.py:257
+msgid "Value for Offset action on Y axis."
+msgstr "Valoare pentru deplasarea pe axa Y."
+
+#: FlatCAMEditor.py:848 flatcamTools/ToolTransform.py:265
+msgid "Offset Y"
+msgstr "Ofset pe Y"
+
+#: FlatCAMEditor.py:879 flatcamTools/ToolTransform.py:295
+msgid "Flip on X"
+msgstr "Oglindeste pe X"
+
+#: FlatCAMEditor.py:881 FlatCAMEditor.py:889
+msgid ""
+"Flip the selected shape(s) over the X axis.\n"
+"Does not create a new shape."
+msgstr ""
+"Oglindeste formele selectate peste axa X\n"
+"Nu crează noi forme."
+
+#: FlatCAMEditor.py:887 flatcamTools/ToolTransform.py:303
+msgid "Flip on Y"
+msgstr "Oglindeste pe Y"
+
+#: FlatCAMEditor.py:896 flatcamTools/ToolTransform.py:312
+msgid "Ref Pt"
+msgstr "Pt ref"
+
+#: FlatCAMEditor.py:898
+msgid ""
+"Flip the selected shape(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+"Oglindeste formele selectate\n"
+"in jurul punctului din câmpul >Punct<\n"
+"\n"
+"Coordonatele punctului pot fi obtinute\n"
+"prin click pe canvas in timp ce se tine apasata\n"
+"tasta SHIFT.\n"
+"Apoi click pe butonul >Adaugă< pentru a insera\n"
+"coordonatele.\n"
+"Alternativ se pot introduce manual in formatul (x, y). \n"
+"La final click pe >Oglindeste pe X(Y)<."
+
+#: FlatCAMEditor.py:910 flatcamTools/ToolTransform.py:325
+msgid "Point:"
+msgstr "Punct:"
+
+#: FlatCAMEditor.py:912
+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"
+"the 'y' in (x, y) will be used when using Flip on Y."
+msgstr ""
+"Coordonatele in format (x, y) folosite pentru oglindire.\n"
+"Valoarea 'x' in (x, y) va fi folosita când se face oglindire pe X\n"
+"și valoarea 'y' in (x, y) va fi folosita când se face oglindire pe Y."
+
+#: FlatCAMEditor.py:922 flatcamGUI/ObjectUI.py:1059
+#: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:208
+#: flatcamTools/ToolNonCopperClear.py:133 flatcamTools/ToolPaint.py:131
+#: flatcamTools/ToolSolderPaste.py:115 flatcamTools/ToolSolderPaste.py:478
+#: flatcamTools/ToolTransform.py:337
+msgid "Add"
+msgstr "Adaugă"
+
+#: FlatCAMEditor.py:924 flatcamTools/ToolTransform.py:339
+msgid ""
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. Then click Add button to insert."
+msgstr ""
+"Coordonatele punctului se pot obtine\n"
+"prin click pe canvas in timp ce se tine apasata\n"
+"tasta SHIFT.\n"
+"La final, apasa butonul >Adaugă< pt a le insera."
+
+#: FlatCAMEditor.py:1039
+msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Transformare anulata. Nici-o forma nu este selectata."
+
+#: FlatCAMEditor.py:1060 flatcamTools/ToolTransform.py:468
+msgid "[ERROR_NOTCL]Wrong value format entered for Rotate, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Rotatie, foloseşte un număr "
+"Real."
+
+#: FlatCAMEditor.py:1097 flatcamTools/ToolTransform.py:502
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew X, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Deformare X, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1118 flatcamTools/ToolTransform.py:520
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew Y, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Deformare Y, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1139 flatcamTools/ToolTransform.py:538
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale X, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Scalare X, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1176 flatcamTools/ToolTransform.py:572
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale Y, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Scalare Y, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1208 flatcamTools/ToolTransform.py:601
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset X, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Ofset pe X, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1229 flatcamTools/ToolTransform.py:619
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset Y, use a number."
+msgstr ""
+"[ERROR_NOTCL] Valoare incorecta intodusa pentru Ofset pe Y, foloseşte un "
+"număr Real."
+
+#: FlatCAMEditor.py:1247
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma nu este selectata. Selectează o forma pentru a "
+"putea face Rotatie!"
+
+#: FlatCAMEditor.py:1250 flatcamTools/ToolTransform.py:640
+msgid "Appying Rotate"
+msgstr "Executie Rotatie"
+
+#: FlatCAMEditor.py:1278
+msgid "[success] Done. Rotate completed."
+msgstr "[success] Executat. Rotatie finalizata."
+
+#: FlatCAMEditor.py:1294
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma nu este selectata. Selectează o forma pentru a "
+"putea face Oglindire!"
+
+#: FlatCAMEditor.py:1297 flatcamTools/ToolTransform.py:692
+msgid "Applying Flip"
+msgstr "Executie Oglindire"
+
+#: FlatCAMEditor.py:1327
+msgid "[success] Flip on the Y axis done ..."
+msgstr "Oglindirea pe axa X efectuata ..."
+
+#: FlatCAMEditor.py:1330
+msgid "[success] Flip on the X axis done ..."
+msgstr "Oglindirea pe axa Y efectuata ..."
+
+#: FlatCAMEditor.py:1349
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma nu este selectata. Selectează o forma pentru a "
+"putea face Deformare!"
+
+#: FlatCAMEditor.py:1352 flatcamTools/ToolTransform.py:762
+msgid "Applying Skew"
+msgstr "Executie Deformare"
+
+#: FlatCAMEditor.py:1377
+#, python-format
+msgid "[success] Skew on the %s axis done ..."
+msgstr "[success] Deformarea pe axa %s executata ..."
+
+#: FlatCAMEditor.py:1381 flatcamTools/ToolTransform.py:797
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed."
+msgstr "[ERROR_NOTCL] Datorita erorii: %s, Deformarea a fost anulata."
+
+#: FlatCAMEditor.py:1392
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma nu este selectata. Selectează o forma pentru a "
+"putea face Scalare!"
+
+#: FlatCAMEditor.py:1395 flatcamTools/ToolTransform.py:811
+msgid "Applying Scale"
+msgstr "Executie Scalare"
+
+#: FlatCAMEditor.py:1428 flatcamTools/ToolTransform.py:849
+#, python-format
+msgid "[success] Scale on the %s axis done ..."
+msgstr "[success] Scalarea pe axa %s executata ..."
+
+#: FlatCAMEditor.py:1431 flatcamTools/ToolTransform.py:852
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed."
+msgstr "[ERROR_NOTCL] Datorita erorii: %s, Scalarea a fost anulata ..."
+
+#: FlatCAMEditor.py:1440
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma nu este selectata. Selectează o forma pentru a "
+"putea face Ofset!"
+
+#: FlatCAMEditor.py:1443 flatcamTools/ToolTransform.py:864
+msgid "Applying Offset"
+msgstr "Executie Ofset"
+
+#: FlatCAMEditor.py:1467
+#, python-format
+msgid "[success] Offset on the %s axis done ..."
+msgstr "[success] Deplasarea pe axa %s executata ..."
+
+#: FlatCAMEditor.py:1471 flatcamTools/ToolTransform.py:898
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed."
+msgstr "[ERROR_NOTCL] Datorita erorii: %s, Deplasarea a fost anulata."
+
+#: FlatCAMEditor.py:1475
+msgid "Rotate ..."
+msgstr "Rotatie ..."
+
+#: FlatCAMEditor.py:1476 FlatCAMEditor.py:1533 FlatCAMEditor.py:1550
+msgid "Enter an Angle Value (degrees):"
+msgstr "Introdu o valoare in grade pt Unghi:"
+
+#: FlatCAMEditor.py:1485
+msgid "[success] Geometry shape rotate done..."
+msgstr "[success] Rotatia formei geometrice executata ..."
+
+#: FlatCAMEditor.py:1490
+msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..."
+msgstr "[WARNING_NOTCL] Rotatia formei geometrice anulata ..."
+
+#: FlatCAMEditor.py:1496
+msgid "Offset on X axis ..."
+msgstr "Ofset pe axa X ..."
+
+#: FlatCAMEditor.py:1497 FlatCAMEditor.py:1516
+#, python-format
+msgid "Enter a distance Value (%s):"
+msgstr "Introdu of valoare pt Distanta (%s):"
+
+#: FlatCAMEditor.py:1506
+msgid "[success] Geometry shape offset on X axis done..."
+msgstr "[success] Deplasarea formei geometrice pe axa X executata ..."
+
+#: FlatCAMEditor.py:1510
+msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..."
+msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa X anulata ..."
+
+#: FlatCAMEditor.py:1515
+msgid "Offset on Y axis ..."
+msgstr "Ofset pe axa Y ..."
+
+#: FlatCAMEditor.py:1525
+msgid "[success] Geometry shape offset on Y axis done..."
+msgstr "[success] Deplasarea formei geometrice pe axa Y executata ..."
+
+#: FlatCAMEditor.py:1529
+msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
+msgstr "[WARNING_NOTCL] Deplasarea formei geometrice pe axa Y anulata ..."
+
+#: FlatCAMEditor.py:1532
+msgid "Skew on X axis ..."
+msgstr "Deformare pe axa X ..."
+
+#: FlatCAMEditor.py:1542
+msgid "[success] Geometry shape skew on X axis done..."
+msgstr "[success] Deformarea formei geometrice pe axa X executata ..."
+
+#: FlatCAMEditor.py:1546
+msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..."
+msgstr "[WARNING_NOTCL] Deformarea formei geometrice pe axa X anulata ..."
+
+#: FlatCAMEditor.py:1549
+msgid "Skew on Y axis ..."
+msgstr "Deformare pe axa Y ..."
+
+#: FlatCAMEditor.py:1559
+msgid "[success] Geometry shape skew on Y axis done..."
+msgstr "[success] Deformarea formei geometrice pe axa Y executata ..."
+
+#: FlatCAMEditor.py:1563
+msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
+msgstr "[success] Deformarea formei geometrice pe axa Y executata ..."
+
+#: FlatCAMEditor.py:1894 FlatCAMEditor.py:1933
+msgid "Click on CENTER ..."
+msgstr "Click in Centru ..."
+
+#: FlatCAMEditor.py:1901
+msgid "Click on Circle perimeter point to complete ..."
+msgstr "Click pe un punct aflat pe circumferinta Cercului pentru terminare ..."
+
+#: FlatCAMEditor.py:1925
+msgid "[success]Done. Adding Circle completed."
+msgstr "[success] Executat. Adaugarea unei forme Cerc terminata."
+
+#: FlatCAMEditor.py:1952
+msgid "Click on Start arc point ..."
+msgstr "Click pe punctul de Start al Arcului ..."
+
+#: FlatCAMEditor.py:1956
+msgid "Click on End arc point to complete ..."
+msgstr "Click pe punctul de End al Arcului pentru terminare ..."
+
+#: FlatCAMEditor.py:2111
+msgid "[success]Done. Arc completed."
+msgstr "[success] Executat. Adaugarea unei forme Arc terminata."
+
+#: FlatCAMEditor.py:2123
+msgid "Click on 1st corner ..."
+msgstr "Click pe primul colt ..."
+
+#: FlatCAMEditor.py:2163
+msgid "Click on 1st point ..."
+msgstr "Click pe primul punct ..."
+
+#: FlatCAMEditor.py:2170
+msgid "Click on next Point or click Right mouse button to complete ..."
+msgstr ""
+"Click pe punctul urmator sau click buton dreapta al mousului pentru "
+"terminare ..."
+
+#: FlatCAMEditor.py:2193
+msgid "[success]Done. Polygon completed."
+msgstr "[success] Executat. Adaugarea unei forme Poligon terminata."
+
+#: FlatCAMEditor.py:2212
+msgid "[success]Done. Path completed."
+msgstr "[success] Executata. Adaugarea unei forme tip Cale terminata."
+
+#: FlatCAMEditor.py:2472 FlatCAMEditor.py:4034
+msgid "[WARNING_NOTCL] Move cancelled. No shape selected."
+msgstr "[WARNING_NOTCL] Mutare anulata. Nici-o forma nu este selectata."
+
+#: FlatCAMEditor.py:2476
+msgid "Click on reference point."
+msgstr "Click pe punctul de referinţă."
+
+#: FlatCAMEditor.py:2479
+msgid "Click on destination point."
+msgstr "Click pe punctul de Destinatie."
+
+#: FlatCAMEditor.py:2510
+msgid "[success]Done. Geometry(s) Move completed."
+msgstr "[success] Executat. Mutarea Geometriilor terminata."
+
+#: FlatCAMEditor.py:2555
+msgid "[success]Done. Geometry(s) Copy completed."
+msgstr "[success] Executat. Copierea Geometriilor terminata."
+
+#: FlatCAMEditor.py:2567
+msgid "Click on the Destination point..."
+msgstr "Click pe punctul de Destinatie ..."
+
+#: FlatCAMEditor.py:2581
+#, python-format
+msgid ""
+"[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are "
+"supported. Error: %s"
+msgstr ""
+"[ERROR] Fontul nu este compatibil. Doar cele tip: Regular, Bold, Italic și "
+"BoldItalic sunt acceptate. Eroarea:: %s"
+
+#: FlatCAMEditor.py:2591
+msgid "[success]Done. Adding Text completed."
+msgstr "[success] Executat. Adaugarea de Text terminata."
+
+#: FlatCAMEditor.py:2619
+msgid "Create buffer geometry ..."
+msgstr "Crează o geometrie de tipe Bufer ..."
+
+#: FlatCAMEditor.py:2630 FlatCAMEditor.py:2656 FlatCAMEditor.py:2682
+msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected."
+msgstr ""
+"[WARNING_NOTCL] Crearea de geometrie Bufer anulata. Nici-o forma geometrică "
+"nu este selectata."
+
+#: FlatCAMEditor.py:2652
+msgid "[success]Done. Buffer Tool completed."
+msgstr "[success] Executat. Unealta Bufer terminat."
+
+#: FlatCAMEditor.py:2678
+msgid "[success]Done. Buffer Int Tool completed."
+msgstr "[success] Executat. Unealta Bufer Intern terminat."
+
+#: FlatCAMEditor.py:2704
+msgid "[success]Done. Buffer Ext Tool completed."
+msgstr "[success] Executat. Unealta Bufer Extern terminat."
+
+#: FlatCAMEditor.py:2737
+msgid "Create Paint geometry ..."
+msgstr "Crează o geometrie Paint ..."
+
+#: FlatCAMEditor.py:2751
+msgid "Shape transformations ..."
+msgstr "Transformari de forme geometrice ..."
+
+#: FlatCAMEditor.py:2776
+msgid "[WARNING_NOTCL] To add a drill first select a tool"
+msgstr ""
+"[WARNING_NOTCL] Pentru a adăuga o operatie de găurire mai intai selectează "
+"un burghiu (unealta)"
+
+#: FlatCAMEditor.py:2785 FlatCAMEditor.py:2875 FlatCAMEditor.py:3148
+#: FlatCAMEditor.py:3173
+msgid "Click on target location ..."
+msgstr "Click pe locatia tinta ..."
+
+#: FlatCAMEditor.py:2825
+msgid "[success]Done. Drill added."
+msgstr "[success] Executat. Operatie de găurire adaugata."
+
+#: FlatCAMEditor.py:2867
+msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table"
+msgstr ""
+"[WARNING_NOTCL] Pentru a adăuga o arie de operatii de găurire mai intai "
+"selectează un burghiu (unealta)"
+
+#: FlatCAMEditor.py:2892
+msgid "Click on the Drill Circular Array Start position"
+msgstr "Click pe punctul de Start al ariei de operatii de găurire"
+
+#: FlatCAMEditor.py:2914
+msgid ""
+"[ERROR_NOTCL] The value is not Float. Check for comma instead of dot "
+"separator."
+msgstr ""
+"[ERROR_NOTCL] Valoarea nu este număr Real. Verifică să nu fi folosit virgula "
+"in loc de punct ca și separator decimal."
+
+#: FlatCAMEditor.py:2917
+msgid "[ERROR_NOTCL] The value is mistyped. Check the value."
+msgstr "[ERROR_NOTCL] Valoarea este gresita. Verifică ce ai introdus."
+
+#: FlatCAMEditor.py:3010
+msgid "[WARNING_NOTCL]Too many drills for the selected spacing angle."
+msgstr ""
+"[WARNING_NOTCL] Prea multe operatii de găurire pentru unghiul selectat."
+
+#: FlatCAMEditor.py:3027
+msgid "[success]Done. Drill Array added."
+msgstr "[success] Executat. Aria de operatii de găurire a fost adaugata."
+
+#: FlatCAMEditor.py:3038
+msgid "Click on the Drill(s) to resize ..."
+msgstr ""
+"Click pe operatiile de găurire care se doreste să fie redimensionate ..."
+
+#: FlatCAMEditor.py:3058
+msgid ""
+"[ERROR_NOTCL]Resize drill(s) failed. Please enter a diameter for resize."
+msgstr ""
+"[ERROR_NOTCL] Redimensionarea operatiilor de găurire a esuat. Adaugă o "
+"valoare pentru dimetrul la care se face redimensionarea."
+
+#: FlatCAMEditor.py:3130
+msgid "[success]Done. Drill Resize completed."
+msgstr "[success]Executat. Redimensionare găurire terminata."
+
+#: FlatCAMEditor.py:3150
+msgid "Click on reference location ..."
+msgstr "Click pe locatia de referinţă ..."
+
+#: FlatCAMEditor.py:3205
+msgid "[success]Done. Drill(s) Move completed."
+msgstr "[success]Executat. Operatiile de găurire au fost mutate."
+
+#: FlatCAMEditor.py:3258
+msgid "[success]Done. Drill(s) copied."
+msgstr "[success]Executat. Operatiile de găurire au fost copiate."
+
+#: FlatCAMEditor.py:3908 flatcamGUI/FlatCAMGUI.py:2114
+#: flatcamGUI/FlatCAMGUI.py:2126
+msgid "[success]Done."
+msgstr "[success]Executat."
+
+#: FlatCAMEditor.py:4041
+msgid "[WARNING_NOTCL] Copy cancelled. No shape selected."
+msgstr ""
+"[WARNING_NOTCL] Copiere anulata. Nici-o forma geometrică nu este selectata."
+
+#: FlatCAMEditor.py:4048 flatcamGUI/FlatCAMGUI.py:2406
+#: flatcamGUI/FlatCAMGUI.py:2418 flatcamGUI/FlatCAMGUI.py:2452
+msgid "Click on target point."
+msgstr "Click pe punctul tinta."
+
+#: FlatCAMEditor.py:4289
+msgid ""
+"[WARNING_NOTCL]A selection of at least 2 geo items is required to do "
+"Intersection."
+msgstr ""
+"[WARNING_NOTCL] Cel putin o selecţie de doua forme geometrice este necesară "
+"pentru a face o Intersecţie."
+
+#: FlatCAMEditor.py:4327 FlatCAMEditor.py:4364 FlatCAMEditor.py:4436
+msgid ""
+"[ERROR_NOTCL]Negative buffer value is not accepted. Use Buffer interior to "
+"generate an 'inside' shape"
+msgstr ""
+"[ERROR_NOTCL] O valoare de bufer negativă nu se accepta. Folosete Bufer "
+"Interior pentru a genera o forma geo. interioara."
+
+#: FlatCAMEditor.py:4335 FlatCAMEditor.py:4373 FlatCAMEditor.py:4444
+msgid "[WARNING_NOTCL] Nothing selected for buffering."
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma geometrică nu este selectata pentru a face "
+"Bufer."
+
+#: FlatCAMEditor.py:4339 FlatCAMEditor.py:4377 FlatCAMEditor.py:4448
+msgid "[WARNING_NOTCL] Invalid distance for buffering."
+msgstr "[WARNING_NOTCL] Distanta invalida pentru a face Bufer."
+
+#: FlatCAMEditor.py:4349 FlatCAMEditor.py:4457
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a different buffer value."
+msgstr ""
+"[ERROR_NOTCL] Esuat, rezultatul este gol. Foloseşte o valoare diferita "
+"pentru Bufer."
+
+#: FlatCAMEditor.py:4357
+msgid "[success]Full buffer geometry created."
+msgstr "[success] Geometrie tip Bufer Complet creata."
+
+#: FlatCAMEditor.py:4386
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a smaller buffer value."
+msgstr ""
+"[ERROR_NOTCL] Esuat, rezultatul este gol. Foloseşte of valoare mai mica pt. "
+"Bufer."
+
+#: FlatCAMEditor.py:4398 FlatCAMEditor.py:4469
+msgid "[success]Exterior buffer geometry created."
+msgstr "[success] Geometrie Bufer Exterior creata."
+
+#: FlatCAMEditor.py:4533
+msgid "[WARNING_NOTCL]Nothing selected for painting."
+msgstr ""
+"[WARNING_NOTCL] Nici-o forma geometrică nu este selectata pentru Paint."
+
+#: FlatCAMEditor.py:4539
+msgid "[WARNING] Invalid value for {}"
+msgstr "[WARNING] Valoare invalida pentru {}"
+
+#: FlatCAMEditor.py:4545
+msgid ""
+"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
+"(100%)."
+msgstr ""
+"[ERROR_NOTCL] Nu se poate face Paint. Valoarea de suprapunere trebuie să fie "
+"mai putin de 1.00 (100%)."
+
+#: FlatCAMEditor.py:4604
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different method of Paint\n"
+"%s"
+msgstr ""
+"[ERROR] Nu se poate face Paint. Incearcă o combinatie diferita de parametri. "
+"Or o metoda diferita de Paint\n"
+"%s"
+
+#: FlatCAMEditor.py:4615
+msgid "[success] Paint done."
+msgstr "[success] Paint executat."
+
+#: FlatCAMEditor.py:4647
+msgid "Excellon Editor"
+msgstr "Editor Excellon"
+
+#: FlatCAMEditor.py:4654
+msgid "Name:"
+msgstr "Nume:"
+
+#: FlatCAMEditor.py:4674 flatcamTools/ToolNonCopperClear.py:71
+#: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70
+msgid "Tools Table"
+msgstr "Tabela Unelte"
+
+#: FlatCAMEditor.py:4676 flatcamGUI/ObjectUI.py:609
+msgid ""
+"Tools in this Excellon object\n"
+"when are used for drilling."
+msgstr ""
+"Burghie (unelte) in acest obiect Excellon\n"
+"când se face găurire."
+
+#: FlatCAMEditor.py:4685 FlatCAMEditor.py:5745 FlatCAMObj.py:2203
+#: FlatCAMObj.py:2297 FlatCAMObj.py:2408 flatcamGUI/ObjectUI.py:627
+#: flatcamTools/ToolNonCopperClear.py:82 flatcamTools/ToolPaint.py:80
+#: flatcamTools/ToolSolderPaste.py:81
+msgid "Diameter"
+msgstr "Diametru"
+
+#: FlatCAMEditor.py:4693
+msgid "Add/Delete Tool"
+msgstr "Adaugă/Sterge Unealta"
+
+#: FlatCAMEditor.py:4695
+msgid ""
+"Add/Delete a tool to the tool list\n"
+"for this Excellon object."
+msgstr ""
+"Adaugă/Sterge o unealta la lista de unelte\n"
+"pentru acest obiect Excellon."
+
+#: FlatCAMEditor.py:4703 flatcamTools/ToolCutOut.py:77
+msgid "Tool Dia:"
+msgstr "Dia. Unealta:"
+
+#: FlatCAMEditor.py:4705 flatcamGUI/ObjectUI.py:1046
+msgid "Diameter for the new tool"
+msgstr "Diametru pentru noua unealta (burghiu, freza)"
+
+#: FlatCAMEditor.py:4714
+msgid "Add Tool"
+msgstr "Adaugă Unealta"
+
+#: FlatCAMEditor.py:4716
+msgid ""
+"Add a new tool to the tool list\n"
+"with the diameter specified above."
+msgstr ""
+"Adaugă o unealta noua la lista de unelte\n"
+"cu diametrul specificat deasupra."
+
+#: FlatCAMEditor.py:4726
+msgid "Delete Tool"
+msgstr "Sterge Unealta"
+
+#: FlatCAMEditor.py:4728
+msgid ""
+"Delete a tool in the tool list\n"
+"by selecting a row in the tool table."
+msgstr ""
+"Sterge o unealta in lista de unelte\n"
+"prin selectarea unei linii in tabela de unelte."
+
+#: FlatCAMEditor.py:4746
+msgid "Resize Drill(s)"
+msgstr "Redimensionare operatii de găurire"
+
+#: FlatCAMEditor.py:4748
+msgid "Resize a drill or a selection of drills."
+msgstr ""
+"Redimensionează o operatie de găurire sau o selecţie de operatii de găurire."
+
+#: FlatCAMEditor.py:4755
+msgid "Resize Dia:"
+msgstr "Redimensionare Dia:"
+
+#: FlatCAMEditor.py:4757
+msgid "Diameter to resize to."
+msgstr "Diametrul la care se face redimensionarea."
+
+#: FlatCAMEditor.py:4765
+msgid "Resize"
+msgstr "Redimensionează"
+
+#: FlatCAMEditor.py:4767
+msgid "Resize drill(s)"
+msgstr "Redimensionează op. de găurire."
+
+#: FlatCAMEditor.py:4789 flatcamGUI/FlatCAMGUI.py:1384
+msgid "Add Drill Array"
+msgstr "Adaugă o arie de op. găurire"
+
+#: FlatCAMEditor.py:4791
+msgid "Add an array of drills (linear or circular array)"
+msgstr "Adaugă o arie de operatii de găurire (arie lineara sau circulara)."
+
+#: FlatCAMEditor.py:4797
+msgid ""
+"Select the type of drills array to create.\n"
+"It can be Linear X(Y) or Circular"
+msgstr ""
+"Selectează tipul de arii de operatii de găurire.\n"
+"Poate fi Liniar X(Y) sau Circular."
+
+#: FlatCAMEditor.py:4800
+msgid "Linear"
+msgstr "Liniar"
+
+#: FlatCAMEditor.py:4801
+msgid "Circular"
+msgstr "Circular"
+
+#: FlatCAMEditor.py:4808
+msgid "Nr of drills:"
+msgstr "Nr. op. găurire"
+
+#: FlatCAMEditor.py:4810
+msgid "Specify how many drills to be in the array."
+msgstr "Specifica cate operatii de găurire să fie incluse in arie."
+
+#: FlatCAMEditor.py:4827 FlatCAMEditor.py:4872
+msgid "Direction:"
+msgstr "Direcţie:"
+
+#: FlatCAMEditor.py:4829
+msgid ""
+"Direction on which the linear array is oriented:\n"
+"- 'X' - horizontal axis \n"
+"- 'Y' - vertical axis or \n"
+"- 'Angle' - a custom angle for the array inclination"
+msgstr ""
+"Directia in care aria lineara este orientata:\n"
+"- 'X' - pe axa orizontala \n"
+"- 'Y' - pe axa verticala sau \n"
+"- 'Unghi' - un unghi particular pentru inclinatia ariei"
+
+#: FlatCAMEditor.py:4838
+msgid "Angle"
+msgstr "Unghi"
+
+#: FlatCAMEditor.py:4842
+msgid "Pitch:"
+msgstr "Pas:"
+
+#: FlatCAMEditor.py:4844
+msgid "Pitch = Distance between elements of the array."
+msgstr "Pas = Distanta între elementele ariei."
+
+#: FlatCAMEditor.py:4853
+msgid ""
+"Angle at which the linear array is placed.\n"
+"The precision is of max 2 decimals.\n"
+"Min value is: -359.99 degrees.\n"
+"Max value is:  360.00 degrees."
+msgstr ""
+"Unghiul global la care aria lineara este plasata.\n"
+"Precizia este de max 2 zecimale.\n"
+"Val minima este: -359.99 grade.\n"
+"Val maxima este:  360.00 grade."
+
+#: FlatCAMEditor.py:4874
+msgid ""
+"Direction for circular array.Can be CW = clockwise or CCW = counter "
+"clockwise."
+msgstr ""
+"Directia pentru aria circulara. Poate fi CW = in sensul acelor de ceasornic "
+"sau CCW = invers acelor de ceasornic"
+
+#: FlatCAMEditor.py:4889
+msgid "Angle at which each element in circular array is placed."
+msgstr ""
+"Unghiul la care fiecare element al ariei circulare este plasat fata de "
+"originea ariei."
+
+#: FlatCAMEditor.py:5210 FlatCAMObj.py:1725
+msgid "Total Drills"
+msgstr "Nr. Tot. Op. Găurire"
+
+#: FlatCAMEditor.py:5242 FlatCAMObj.py:1751
+msgid "Total Slots"
+msgstr "Nr. Tot. Sloturi"
+
+#: FlatCAMEditor.py:5316 FlatCAMObj.py:1958 FlatCAMObj.py:3221
+#: FlatCAMObj.py:3527 FlatCAMObj.py:3714 FlatCAMObj.py:3727 FlatCAMObj.py:3844
+#: FlatCAMObj.py:4252 FlatCAMObj.py:4485 FlatCAMObj.py:4891
+#: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318
+#: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345
+#: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372
+#: flatcamTools/ToolCalculators.py:383 flatcamTools/ToolCalculators.py:394
+#: flatcamTools/ToolCalculators.py:405 flatcamTools/ToolFilm.py:241
+#: flatcamTools/ToolFilm.py:248 flatcamTools/ToolNonCopperClear.py:478
+#: flatcamTools/ToolNonCopperClear.py:625
+#: flatcamTools/ToolNonCopperClear.py:637 flatcamTools/ToolPaint.py:537
+#: flatcamTools/ToolPaint.py:607 flatcamTools/ToolPaint.py:743
+#: flatcamTools/ToolPaint.py:833 flatcamTools/ToolPaint.py:988
+#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335
+#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361
+#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384
+#: flatcamTools/ToolSolderPaste.py:755 flatcamTools/ToolSolderPaste.py:826
+msgid "[ERROR_NOTCL]Wrong value format entered, use a number."
+msgstr "[ERROR_NOTCL] Valoare in format incorect, foloseşte un număr."
+
+#: FlatCAMEditor.py:5329
+msgid ""
+"[WARNING_NOTCL]Tool already in the original or actual tool list.\n"
+"Save and reedit Excellon if you need to add this tool. "
+msgstr ""
+"[WARNING_NOTCL] Unealta este deja in lista originala sau actuala de unelte.\n"
+"Salvează și reeditează obiectul Excellon daca ai nevoie să adaugi aceasta "
+"unealta."
+
+#: FlatCAMEditor.py:5338 flatcamGUI/FlatCAMGUI.py:2481
+#, python-brace-format
+msgid "[success]Added new tool with dia: {dia} {units}"
+msgstr "[success] O noua unealta este adaugata cu diametrul: {dia} {units}"
+
+#: FlatCAMEditor.py:5369
+msgid "[WARNING_NOTCL]Select a tool in Tool Table"
+msgstr "[WARNING_NOTCL] Selectează o unealta in Tabela de Unelte"
+
+#: FlatCAMEditor.py:5402
+#, python-brace-format
+msgid "[success]Deleted tool with dia: {del_dia} {units}"
+msgstr "[success] Unealta stearsa cu diametrul: {del_dia} {units}"
+
+#: FlatCAMEditor.py:5799
+msgid ""
+"[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon "
+"creation."
+msgstr ""
+"[ERROR_NOTCL] Nu exista definitii de unelte in fişier. Se anulează crearea "
+"de obiect Excellon."
+
+#: FlatCAMEditor.py:5808
+msgid "Creating Excellon."
+msgstr "In curs de creere Excellon."
+
+#: FlatCAMEditor.py:5817
+msgid "[success]Excellon editing finished."
+msgstr "[success] Editarea Excellon a fost terminata."
+
+#: FlatCAMEditor.py:5834
+msgid "[WARNING_NOTCL]Cancelled. There is no Tool/Drill selected"
+msgstr ""
+"[WARNING_NOTCL] Anulata. Nu este selectata nici-o unealta sau op. de găurire."
+
+#: FlatCAMEditor.py:6316
+msgid "[success]Done. Drill(s) deleted."
+msgstr "[success] Executat. Operatiile de găurire sterse."
+
+#: FlatCAMEditor.py:6386
+msgid "Click on the circular array Center position"
+msgstr "Click pe punctul de Centru al ariei circulare."
+
+#: FlatCAMObj.py:193
+#, python-brace-format
+msgid "[success]Name changed from {old} to {new}"
+msgstr "[success] Numele schimbat din {old} in {new}"
+
+#: FlatCAMObj.py:532 FlatCAMObj.py:1886 FlatCAMObj.py:3149 FlatCAMObj.py:5296
+msgid "<span style=\"color:green;\"><b>Basic</b></span>"
+msgstr "<span style=\"color:green;\"><b>Baza</b></span>"
+
+#: FlatCAMObj.py:544 FlatCAMObj.py:1902 FlatCAMObj.py:3171 FlatCAMObj.py:5302
+msgid "<span style=\"color:red;\"><b>Advanced</b></span>"
+msgstr "<span style=\"color:red;\"><b>Avansat</b></span>"
+
+#: FlatCAMObj.py:899 FlatCAMObj.py:954
+#, python-format
+msgid "[success]Isolation geometry created: %s"
+msgstr "[success] Geometria de izolare creata: %s"
+
+#: FlatCAMObj.py:1029
+msgid ""
+"[ERROR_NOTCL] The aperture scale factor value is missing or wrong format."
+msgstr ""
+"[ERROR_NOTCL] Factorul de scalare a aperturii lipseste sau este in format "
+"gresit."
+
+#: FlatCAMObj.py:1044 FlatCAMObj.py:1079
+msgid ""
+"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
+"again."
+msgstr ""
+"[WARNING_NOTCL] Nici-o apertura sel. pt scalare. Selectează cel putin o "
+"apertura și încearcă din nou."
+
+#: FlatCAMObj.py:1064
+msgid "[ERROR_NOTCL] The aperture buffer value is missing or wrong format."
+msgstr "[ERROR_NOTCL] Valoarea pt bufer apertura lipseste "
+
+#: FlatCAMObj.py:1136
+msgid "Generating Gerber"
+msgstr "Gerber in curs de creare"
+
+#: FlatCAMObj.py:1144
+msgid "[ERROR_NOTCL] Cretion of Gerber failed."
+msgstr "[ERROR_NOTCL] Crearea unui fişier Gerber a esuat."
+
+#: FlatCAMObj.py:1151
+#, python-format
+msgid "[success] Created: %s"
+msgstr "[success] Creat: %s"
+
+#: FlatCAMObj.py:1271
+msgid "Plotting Apertures"
+msgstr "Aperturile sunt in curs de afișare"
+
+#: FlatCAMObj.py:2182 FlatCAMObj.py:2273 FlatCAMObj.py:2388
+msgid ""
+"[ERROR_NOTCL]Please select one or more tools from the list and try again."
+msgstr ""
+"[ERROR_NOTCL] Selectează una sau mai multe unelte din lista și încearcă din "
+"nou."
+
+#: FlatCAMObj.py:2189
+msgid ""
+"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
+msgstr ""
+"[ERROR_NOTCL] Anulat. Freza pt frezarea găurilor este mai mare decat "
+"diametrul găurii."
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Tool_nr"
+msgstr "Nr. Unealta"
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Drills_Nr"
+msgstr "Nr. gaura"
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Slots_Nr"
+msgstr "Nr. slot"
+
+#: FlatCAMObj.py:2283
+msgid ""
+"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
+msgstr ""
+"[ERROR_NOTCL] Anulat. Freza este mai mare decat diametrul slotului de frezat."
+
+#: FlatCAMObj.py:2446 FlatCAMObj.py:4140 FlatCAMObj.py:4351 FlatCAMObj.py:4666
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"z_pdepth\"] or self."
+"options[\"z_pdepth\"]"
+msgstr ""
+"[ERROR_NOTCL] Valoare gresita pt self.defaults[\"z_pdepth\"] sau self."
+"options[\"z_pdepth\"]"
+
+#: FlatCAMObj.py:2458 FlatCAMObj.py:4152 FlatCAMObj.py:4363 FlatCAMObj.py:4678
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"feedrate_probe\"] or "
+"self.options[\"feedrate_probe\"]"
+msgstr ""
+"[ERROR_NOTCL] Valoare gresita pt self.defaults[\"feedrate_probe\"] sau self."
+"options[\"feedrate_probe\"]"
+
+#: FlatCAMObj.py:2490 FlatCAMObj.py:4553 FlatCAMObj.py:4558 FlatCAMObj.py:4704
+msgid "Generating CNC Code"
+msgstr "CNC Code in curs de generare"
+
+#: FlatCAMObj.py:2516 FlatCAMObj.py:4850 camlib.py:4929 camlib.py:5365
+#: camlib.py:5636
+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] Parametrul >Schimbare Unealta X, Y< in Editare -> Peferinte trebuie "
+"să fie in formatul (x, y) \n"
+"dar are o singura valoare in loc de doua. "
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3105 FlatCAMObj.py:3390
+msgid "Path"
+msgstr "Pe cale"
+
+#: FlatCAMObj.py:2863
+msgid "In"
+msgstr "În"
+
+#: FlatCAMObj.py:2863
+msgid "Out"
+msgstr "Afară"
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3186 FlatCAMObj.py:3759
+msgid "Custom"
+msgstr "Personalizat"
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3770 FlatCAMObj.py:3771 FlatCAMObj.py:3780
+msgid "Iso"
+msgstr "Izo."
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3107 FlatCAMObj.py:3392
+msgid "Rough"
+msgstr "Grosier"
+
+#: FlatCAMObj.py:2864
+msgid "Finish"
+msgstr "Finisare"
+
+#: FlatCAMObj.py:3142 flatcamGUI/FlatCAMGUI.py:463
+#: flatcamGUI/FlatCAMGUI.py:1388 flatcamGUI/ObjectUI.py:1067
+msgid "Copy"
+msgstr "Copiaza"
+
+#: FlatCAMObj.py:3144 flatcamGUI/FlatCAMGUI.py:464
+#: flatcamGUI/FlatCAMGUI.py:1389 flatcamGUI/ObjectUI.py:1075
+#: flatcamTools/ToolNonCopperClear.py:145 flatcamTools/ToolPaint.py:143
+#: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:480
+msgid "Delete"
+msgstr "Sterge"
+
+#: FlatCAMObj.py:3362
+msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
+msgstr "[ERROR_NOTCL] Introdu diametrul dorit pt unealta in format Real."
+
+#: FlatCAMObj.py:3437
+msgid "[success] Tool added in Tool Table."
+msgstr "[success] Unealta adaugata in Tabela de Unelte."
+
+#: FlatCAMObj.py:3442
+msgid "[ERROR_NOTCL]Default Tool added. Wrong value format entered."
+msgstr ""
+"[ERROR_NOTCL] Unealta implicita adaugatadar valoarea are un format gresit."
+
+#: FlatCAMObj.py:3472 FlatCAMObj.py:3482
+msgid "[WARNING_NOTCL]Failed. Select a tool to copy."
+msgstr "[WARNING_NOTCL] Esuat. Selectează o unealta pt copiere."
+
+#: FlatCAMObj.py:3511
+msgid "[success] Tool was copied in Tool Table."
+msgstr "[success] Unealta a fost copiata in Tabela de Unelte."
+
+#: FlatCAMObj.py:3544
+msgid "[success] Tool was edited in Tool Table."
+msgstr "[success] Unealta a fost editata in Tabela de Unelte."
+
+#: FlatCAMObj.py:3575 FlatCAMObj.py:3585
+msgid "[WARNING_NOTCL]Failed. Select a tool to delete."
+msgstr "[WARNING_NOTCL] Esuat. Selectează o unealta pentru stergere."
+
+#: FlatCAMObj.py:3609
+msgid "[success] Tool was deleted in Tool Table."
+msgstr "[success] Unealta a fost stearsa din Tabela de Unelte."
+
+#: FlatCAMObj.py:4023
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This Geometry can't be processed because it is %s geometry."
+msgstr ""
+"[WARNING_NOTCL] Acest obiect Geometrie nu poate fi procesar decoarece este "
+"Geometrie %s."
+
+#: FlatCAMObj.py:4040
+msgid "[ERROR_NOTCL]Wrong Tool Dia value format entered, use a number."
+msgstr ""
+"[ERROR_NOTCL] Diametrul uneltei este in format gresit, foloseşte un număr "
+"Real."
+
+#: FlatCAMObj.py:4067
+msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
+msgstr ""
+"[ERROR_NOTCL] Esuat. Nici-o unealta nu este selectata in Tabela de Unelte ..."
+
+#: FlatCAMObj.py:4105
+#, python-format
+msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
+msgstr "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
+
+#: FlatCAMObj.py:4261 FlatCAMObj.py:4494
+msgid ""
+"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
+"Add a Tool Offset or change the Offset Type."
+msgstr ""
+"[WARNING] Un ofset pt unealta este selectat in Tabela de Unelte dar nici-o "
+"val. nu este oferita.\n"
+"Adaugă un ofset pt unealta sau schimba Tipul Ofset."
+
+#: FlatCAMObj.py:4375
+msgid "[ERROR_NOTCL]Cancelled. Empty file, it has no geometry..."
+msgstr "[ERROR_NOTCL] Anulat. Fişier gol, nu are geometrie ..."
+
+#: FlatCAMObj.py:4737 FlatCAMObj.py:4747 camlib.py:3229 camlib.py:3238
+msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
+msgstr ""
+"[ERROR_NOTCL] Factorul de scalare trebuie să fie un număr: natural sau real."
+
+#: FlatCAMObj.py:4785
+msgid "[success]Geometry Scale done."
+msgstr "[success] Scalare Geometrie executata."
+
+#: FlatCAMObj.py:4802 camlib.py:3300
+msgid ""
+"[ERROR_NOTCL]An (x,y) pair of values are needed. Probable you entered only "
+"one value in the Offset field."
+msgstr ""
+"[ERROR_NOTCL] O pereche de valori (x,y) este necesară. Probabil că ai "
+"introdus numai o singura valoare in câmpul Offset."
+
+#: FlatCAMObj.py:4822
+msgid "[success]Geometry Offset done."
+msgstr "[success] Ofset Geometrie executat."
+
+#: FlatCAMObj.py:5364 FlatCAMObj.py:5369 flatcamTools/ToolSolderPaste.py:1360
+msgid "Export Machine Code ..."
+msgstr "Exporta CNC Cod Masina ..."
+
+#: FlatCAMObj.py:5375
+msgid "[WARNING_NOTCL]Export Machine Code cancelled ..."
+msgstr "[WARNING_NOTCL] Exportul de cod CNC a fost anulat ..."
+
+#: FlatCAMObj.py:5386
+#, python-format
+msgid "[success] Machine Code file saved to: %s"
+msgstr "[success] Fişierul cu cod CNC este salvat in: %s"
+
+#: FlatCAMObj.py:5417
+#, python-format
+msgid "[ERROR]FlatCAMCNNJob.on_modifygcode_button_click() -->%s"
+msgstr "[ERROR]FlatCAMCNNJob.on_modifygcode_button_click() -->%s"
+
+#: FlatCAMObj.py:5523
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This CNCJob object can't be processed because it is a %s "
+"CNCJob object."
+msgstr ""
+"[WARNING_NOTCL] Acest obiect CNCJob nu poate fi procesar deoarece este un "
+"obiect CNCJob tip %s."
+
+#: FlatCAMObj.py:5576
+msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
+msgstr "[ERROR_NOTCL] G-code nu contine codul pt unitati: G20 sau G21"
+
+#: FlatCAMObj.py:5589
+msgid ""
+"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
+"empty."
+msgstr ""
+"[ERROR_NOTCL] Anulat. Codul G-Code din Macro-ul Schimbare unealta este "
+"activat dar nuc contine nimic."
+
+#: FlatCAMObj.py:5596
+msgid "[success] Toolchange G-code was replaced by a custom code."
+msgstr ""
+"[success] G-Code-ul pt schimbare unealta a fost inlocuit cu un cod "
+"pesonalizat."
+
+#: FlatCAMObj.py:5611 flatcamTools/ToolSolderPaste.py:1389
+msgid "[WARNING_NOTCL] No such file or directory"
+msgstr "[WARNING_NOTCL] Nu exista un asemenea fişier sau director"
+
+#: FlatCAMObj.py:5630 FlatCAMObj.py:5642
+msgid ""
+"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
+"'toolchange_custom'"
+msgstr ""
+"[WARNING_NOTCL] Postprocesorul folosit trebuie să aibă in numele sau: "
+"'toolchange_custom'"
+
+#: FlatCAMObj.py:5648
+msgid "[ERROR] There is no postprocessor file."
+msgstr "[ERROR] Nu exista nici-un fişier postprocesor."
+
+#: ObjectCollection.py:402
+#, python-brace-format
+msgid "Object renamed from {old} to {new}"
+msgstr "Obiectul este redenumit din {old} in {new}."
+
+#: ObjectCollection.py:736
+#, python-format
+msgid "[ERROR] Cause of error: %s"
+msgstr "[ERROR] Motivul erorii: %s"
+
+#: camlib.py:200
+msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list."
+msgstr ""
+"[ERROR_NOTCL] self.solid_geometry nu este tip BaseGeometry sau tip lista."
+
+#: camlib.py:1387
+msgid "[success]Object was mirrored ..."
+msgstr "[success] Obiectul a fost oglindit ..."
+
+#: camlib.py:1389
+msgid "[ERROR_NOTCL] Failed to mirror. No object selected"
+msgstr "[ERROR_NOTCL] Oglindire esuata. Nici-un obiect nu este selectat ..."
+
+#: camlib.py:1425
+msgid "[success]Object was rotated ..."
+msgstr "[success] Obiectul a fost rotit ..."
+
+#: camlib.py:1427
+msgid "[ERROR_NOTCL] Failed to rotate. No object selected"
+msgstr "[ERROR_NOTCL] Rotatie esuata. Nici-un obiect nu este selectat ..."
+
+#: camlib.py:1461
+msgid "[success]Object was skewed ..."
+msgstr "[success] Obiectul a fost deformat ..."
+
+#: camlib.py:1463
+msgid "[ERROR_NOTCL] Failed to skew. No object selected"
+msgstr "[ERROR_NOTCL] Deformare esuata. Nici-un obiect nu este selectat ..."
+
+#: camlib.py:2647 camlib.py:2727
+#, python-format
+msgid "[WARNING] Coordinates missing, line ignored: %s"
+msgstr "[WARNING] Coordonatele lipsesc, linia este ignorata: %s"
+
+#: camlib.py:2648 camlib.py:2728
+msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
+msgstr ""
+"[WARNING_NOTCL] Fişierul Gerber poate fi corrupt. Verificati fişierul!!!"
+
+#: camlib.py:2696
+#, python-format
+msgid ""
+"[ERROR] Region does not have enough points. File will be processed but there "
+"are parser errors. Line number: %s"
+msgstr ""
+"[ERROR] Regiunea Gerber nu are suficiente puncte. Fişierul va fi procesat "
+"dar sunt erori de parsare. Numărul liniei: %s"
+
+#: camlib.py:3051
+#, python-format
+msgid ""
+"[ERROR]Gerber Parser ERROR.\n"
+"%s:"
+msgstr ""
+"[ERROR] Eroare in parserul Gerber.\n"
+"%s:"
+
+#: camlib.py:3267
+msgid "[success]Gerber Scale done."
+msgstr "[success] Scalarea Gerber efectuata."
+
+#: camlib.py:3324
+msgid "[success]Gerber Offset done."
+msgstr "[success] Offsetare Gerber efectuata."
+
+#: camlib.py:3700
+#, python-format
+msgid "[ERROR_NOTCL] This is GCODE mark: %s"
+msgstr "[ERROR_NOTCL] Acesta este un marcaj Gerber: %s"
+
+#: camlib.py:4230
+#, python-brace-format
+msgid ""
+"[ERROR] Excellon Parser error.\n"
+"Parsing Failed. Line {l_nr}: {line}\n"
+msgstr ""
+"[ERROR] Eroare in parserul Excellon.\n"
+"Parsare esuata. Linia {l_nr}: {line}\n"
+"\n"
+
+#: camlib.py:4307
+msgid ""
+"[WARNING] 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() -> o locatie de găurire a fost sarita "
+"deoarece nu are o unealta asociata.\n"
+"Verifică codul G-Code rezultat."
+
+#: camlib.py:4843
+#, python-format
+msgid "[ERROR] There is no such parameter: %s"
+msgstr "[ERROR] Nu exista un asemenea parametru: %s"
+
+#: camlib.py:4908
+msgid ""
+"[WARNING] 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] Parametrul >Z tăiere< are o valoare pozitivă. Reprezinta adâncimea "
+"de tăiere in material prin urmare poate fi numai negativ.\n"
+"Se presupune că este o eroare de tastare astfel ca aplicaţia va converti "
+"intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat."
+
+#: camlib.py:4915 camlib.py:5388 camlib.py:5659
+#, python-format
+msgid ""
+"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
+msgstr ""
+"[WARNING] Parametrul >Z tăiere< este nul. Nu va fi nici-o tăiere prin urmare "
+"nu procesam fişierul %s"
+
+#: camlib.py:5131 camlib.py:5226 camlib.py:5277
+msgid "[ERROR_NOTCL]The loaded Excellon file has no drills ..."
+msgstr "[ERROR_NOTCL] Fişierul Excellon incarcat nu are găuri ..."
+
+#: camlib.py:5231
+msgid "[ERROR_NOTCL] Wrong optimization type selected."
+msgstr "[ERROR_NOTCL] Un tip de optimizare incorrect  a fost selectat."
+
+#: camlib.py:5376 camlib.py:5647
+msgid ""
+"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
+"combinations of other parameters."
+msgstr ""
+"[ERROR_NOTCL] Parametrul >Z tăiere< este None sau zero. Cel mai probabil o "
+"combinatie nefericita de parametri."
+
+#: camlib.py:5381 camlib.py:5652
+msgid ""
+"[WARNING] 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] Parametrul >Z tăiere< are o valoare pozitivă. Reprezinta adâncimea "
+"de tăiere in material prin urmare poate fi numai negativ.\n"
+"Se presupune că este o eroare de tastare astfel ca aplicaţia va converti "
+"intr-o valoare negativă. Verifică codul masina (G-Code etc) rezultat."
+
+#: camlib.py:5393 camlib.py:5664
+msgid "[ERROR_NOTCL] Travel Z parameter is None or zero."
+msgstr "[ERROR_NOTCL] Parametrul >Z deplasare< este None sau zero."
+
+#: camlib.py:5397 camlib.py:5668
+msgid ""
+"[WARNING] 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] Parametrul >Z deplasare< are o valoare negativă. Reprezinta "
+"Înălţimea la care unealta se deplasează fără să taie prin urmare poate fi "
+"numai pozitiv.\n"
+"Se presupune că este o eroare de tastare astfel ca aplicaţia va converti "
+"intr-o valoare pozitivă. Verifică codul masina (G-Code etc) rezultat."
+
+#: camlib.py:5404 camlib.py:5675
+#, python-format
+msgid ""
+"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
+msgstr ""
+"[WARNING] Parametrul >Z deplasare< este zero. Aceasta este periculos, prin "
+"urmare fişierul %s nu se procesează."
+
+#: camlib.py:5534
+#, python-format
+msgid "[ERROR]Expected a Geometry, got %s"
+msgstr "[ERROR] Se astepta o Geometrie, am primit in schimb %s"
+
+#: camlib.py:5540
+msgid ""
+"[ERROR_NOTCL]Trying to generate a CNC Job from a Geometry object without "
+"solid_geometry."
+msgstr ""
+"[ERROR_NOTCL] Se încearcă generarea unui CNC Job dintr-un obiect Geometrie "
+"fără atributul solid_geometry."
+
+#: camlib.py:5579
+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] Valoarea pentru >Offset unealta< este prea negativă pentru a "
+"fi folosita. \n"
+"Mareste valoarea absoluta și încearcă din nou."
+
+#: camlib.py:5801
+msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
+msgstr ""
+"[ERROR_NOTCL] Nu exista date cu privier la unealta in geometria SolderPaste."
+
+#: flatcamGUI/FlatCAMGUI.py:50
+msgid "&File"
+msgstr "&Fişiere"
+
+#: flatcamGUI/FlatCAMGUI.py:55
+msgid "&New Project ...\tCTRL+N"
+msgstr "&Proiect Nou...\tCTRL+N"
+
+#: flatcamGUI/FlatCAMGUI.py:57
+msgid "Will create a new, blank project"
+msgstr "Se va crea un proiect nou, fără continut"
+
+#: flatcamGUI/FlatCAMGUI.py:62
+msgid "&New"
+msgstr "&Nou"
+
+#: flatcamGUI/FlatCAMGUI.py:65
+msgid "Geometry\tN"
+msgstr "Geometrie\tN"
+
+#: flatcamGUI/FlatCAMGUI.py:67
+msgid "Will create a new, empty Geometry Object."
+msgstr "Va crea un obiect nou de tip Geometrie, fără continut."
+
+#: flatcamGUI/FlatCAMGUI.py:69
+msgid "Excellon\tL"
+msgstr "Excellon\tL"
+
+#: flatcamGUI/FlatCAMGUI.py:71
+msgid "Will create a new, empty Excellon Object."
+msgstr "Va crea un obiect nou de tip Excellon, fără continut."
+
+#: flatcamGUI/FlatCAMGUI.py:74
+msgid "Open"
+msgstr "Incarca"
+
+#: flatcamGUI/FlatCAMGUI.py:79
+msgid "Open &Gerber ...\tCTRL+G"
+msgstr "Incarca &Gerber ...\tCTRL+G"
+
+#: flatcamGUI/FlatCAMGUI.py:86
+msgid "Open &Excellon ...\tCTRL+E"
+msgstr "Incarca  &Excellon ...\tCTRL+E"
+
+#: flatcamGUI/FlatCAMGUI.py:91
+msgid "Open G-&Code ..."
+msgstr "Incarca G-&Code ..."
+
+#: flatcamGUI/FlatCAMGUI.py:95
+msgid "Open &Project ..."
+msgstr "Incarca &Project ..."
+
+#: flatcamGUI/FlatCAMGUI.py:101
+msgid "Open Config ..."
+msgstr "Incarca Config ..."
+
+#: flatcamGUI/FlatCAMGUI.py:105
+msgid "Recent files"
+msgstr "Fişierele Recente"
+
+#: flatcamGUI/FlatCAMGUI.py:111
+msgid "Run Script ...\tSHIFT+S"
+msgstr "Rulează Script ...\tSHIFT+S"
+
+#: flatcamGUI/FlatCAMGUI.py:114
+msgid ""
+"Will run the opened Tcl Script thus\n"
+"enabling the automation of certain\n"
+"functions of FlatCAM."
+msgstr ""
+"Va rula un script TCL astfel oferind\n"
+"o automatizare a anumitor functii\n"
+"din FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:124
+msgid "Import"
+msgstr "Import"
+
+#: flatcamGUI/FlatCAMGUI.py:126
+msgid "&SVG as Geometry Object ..."
+msgstr "&SVG ca și obiect Geometrie ..."
+
+#: flatcamGUI/FlatCAMGUI.py:129
+msgid "&SVG as Gerber Object ..."
+msgstr "&SVG ca și obiect Gerber ..."
+
+#: flatcamGUI/FlatCAMGUI.py:134
+msgid "&DXF as Geometry Object ..."
+msgstr "&DXF ca și obiect Geometrie ..."
+
+#: flatcamGUI/FlatCAMGUI.py:137
+msgid "&DXF as Gerber Object ..."
+msgstr "&DXF ca și obiect Gerber ..."
+
+#: flatcamGUI/FlatCAMGUI.py:142
+msgid "Export"
+msgstr "Export"
+
+#: flatcamGUI/FlatCAMGUI.py:145
+msgid "Export &SVG ..."
+msgstr "Exporta &SVG ..."
+
+#: flatcamGUI/FlatCAMGUI.py:148
+msgid "Export DXF ..."
+msgstr "Exporta DXF ..."
+
+#: flatcamGUI/FlatCAMGUI.py:153
+msgid "Export &PNG ..."
+msgstr "Exporta &PNG ..."
+
+#: flatcamGUI/FlatCAMGUI.py:155
+msgid ""
+"Will export an image in PNG format,\n"
+"the saved image will contain the visual \n"
+"information currently in FlatCAM Plot Area."
+msgstr ""
+"Va exporta o imagine in format PNG,\n"
+"imagina salvata va contine elementele vizuale\n"
+"afisate in zona de afișare."
+
+#: flatcamGUI/FlatCAMGUI.py:163
+msgid "Export &Excellon ..."
+msgstr "Exporta Excellon ..."
+
+#: flatcamGUI/FlatCAMGUI.py:166
+msgid ""
+"Will export an Excellon Object as Excellon file,\n"
+"the coordinates format, the file units and zeros\n"
+"are set in Preferences -> Excellon Export."
+msgstr ""
+"Va exporta un obiect Excellon intr-un fişier Excellon.\n"
+"Formatul coordonatelor, unitatile de masura și tipul\n"
+"de zerouri se vor seta in Preferințe -> Export Excellon."
+
+#: flatcamGUI/FlatCAMGUI.py:177
+msgid "Save &Defaults"
+msgstr "Salvează valori &Default"
+
+#: flatcamGUI/FlatCAMGUI.py:183 flatcamGUI/FlatCAMGUI.py:465
+msgid "Save"
+msgstr "Salvează"
+
+#: flatcamGUI/FlatCAMGUI.py:185
+msgid "&Save Project ..."
+msgstr "&Salvează Proiect ..."
+
+#: flatcamGUI/FlatCAMGUI.py:190
+msgid "Save Project &As ...\tCTRL+S"
+msgstr "Salvează Proiect &ca ...\tCTRL+S"
+
+#: flatcamGUI/FlatCAMGUI.py:194
+msgid "Save Project C&opy ..."
+msgstr "Salvează o C&opie Proiect..."
+
+#: flatcamGUI/FlatCAMGUI.py:202
+msgid "E&xit"
+msgstr "Iesire"
+
+#: flatcamGUI/FlatCAMGUI.py:208
+msgid "&Edit"
+msgstr "&Editare"
+
+#: flatcamGUI/FlatCAMGUI.py:211
+msgid "Edit Object\tE"
+msgstr "Editare Obiect\tE"
+
+#: flatcamGUI/FlatCAMGUI.py:212
+msgid "Save && Close Editor\tCTRL+S"
+msgstr "Salvează && Inchide Editor\tCTRL+S"
+
+#: flatcamGUI/FlatCAMGUI.py:220
+msgid "Conversion"
+msgstr "Conversii"
+
+#: flatcamGUI/FlatCAMGUI.py:222
+msgid "&Join Geo/Gerber/Exc -> Geo"
+msgstr "&Fuzionează Geo/Gerber/Exc -> Geo"
+
+#: flatcamGUI/FlatCAMGUI.py:224
+msgid ""
+"Merge a selection of objects, which can be of type:\n"
+"- Gerber\n"
+"- Excellon\n"
+"- Geometry\n"
+"into a new combo Geometry object."
+msgstr ""
+"Fuzionează o selecţie de obiecte care pot fi de tipul:\n"
+"- Gerber\n"
+"- Excellon\n"
+"- Geometrie\n"
+"intr-un nou obiect tip Geometrie >combo<."
+
+#: flatcamGUI/FlatCAMGUI.py:231
+msgid "Join Excellon(s) -> Excellon"
+msgstr "Fuzionează Excellon(s) -> Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:233
+msgid "Merge a selection of Excellon objects into a new combo Excellon object."
+msgstr ""
+"Fuzionează o selecţie de obiecte Excellon intr-un nou obiect Excellon >combo<"
+
+#: flatcamGUI/FlatCAMGUI.py:236
+msgid "Join Gerber(s) -> Gerber"
+msgstr "Fuzionează Gerber(s) -> Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:238
+msgid "Merge a selection of Gerber objects into a new combo Gerber object."
+msgstr ""
+"Fuzionează o selecţie de obiecte Gerber intr-un nou obiect Gerber >combo<"
+
+#: flatcamGUI/FlatCAMGUI.py:243
+msgid "Convert Single to MultiGeo"
+msgstr "Converteste SingleGeo in MultiGeo"
+
+#: flatcamGUI/FlatCAMGUI.py:245
+msgid ""
+"Will convert a Geometry object from single_geometry type\n"
+"to a multi_geometry type."
+msgstr ""
+"Va converti un obiect Geometrie din tipul simpla geometrie (SingleGeo)\n"
+"la tipul geometrie complexa (MultiGeo)."
+
+#: flatcamGUI/FlatCAMGUI.py:249
+msgid "Convert Multi to SingleGeo"
+msgstr "Converteste MultiGeo in SingleGeo"
+
+#: flatcamGUI/FlatCAMGUI.py:251
+msgid ""
+"Will convert a Geometry object from multi_geometry type\n"
+"to a single_geometry type."
+msgstr ""
+"Va converti un obiect Geometrie din tipul geometrie complexa (MultiGeo)\n"
+"la tipul geometrie simpla (SingleGeo)."
+
+#: flatcamGUI/FlatCAMGUI.py:258
+msgid "&Copy Object\tCTRL+C"
+msgstr "&Copiaza Obiect\tCTRL+C"
+
+#: flatcamGUI/FlatCAMGUI.py:260
+msgid "Copy as &Geom"
+msgstr "Copiaza ca &Geo"
+
+#: flatcamGUI/FlatCAMGUI.py:263
+msgid "&Delete\tDEL"
+msgstr "&Sterge\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:267
+msgid "Se&t Origin\tO"
+msgstr "Se&tează Originea\tO"
+
+#: flatcamGUI/FlatCAMGUI.py:268
+msgid "Jump to Location\tJ"
+msgstr "Sari la Locatie\tJ"
+
+#: flatcamGUI/FlatCAMGUI.py:273
+msgid "Toggle Units\tQ"
+msgstr "Comuta Unitati\tQ"
+
+#: flatcamGUI/FlatCAMGUI.py:275
+msgid "&Select All\tCTRL+A"
+msgstr "&Selectează Tot\tCTRL+A"
+
+#: flatcamGUI/FlatCAMGUI.py:279
+msgid "&Preferences\tSHIFT+P"
+msgstr "&Preferințe\tSHIFT+P"
+
+#: flatcamGUI/FlatCAMGUI.py:282
+msgid "&Options"
+msgstr "&Opțiuni"
+
+#: flatcamGUI/FlatCAMGUI.py:297
+msgid "&Rotate Selection\tSHIFT+(R)"
+msgstr "&Roteste Selectia\tSHIFT+(R)"
+
+#: flatcamGUI/FlatCAMGUI.py:302
+msgid "&Skew on X axis\tSHIFT+X"
+msgstr "&Deformează pe axa X\tSHIFT+X"
+
+#: flatcamGUI/FlatCAMGUI.py:304
+msgid "S&kew on Y axis\tSHIFT+Y"
+msgstr "Deformează pe axa Y\tSHIFT+Y"
+
+#: flatcamGUI/FlatCAMGUI.py:309
+msgid "Flip on &X axis\tX"
+msgstr "Oglindeste pe axa &X\tX"
+
+#: flatcamGUI/FlatCAMGUI.py:311
+msgid "Flip on &Y axis\tY"
+msgstr "Oglindeste pe axa &Y\tY"
+
+#: flatcamGUI/FlatCAMGUI.py:316
+msgid "View source\tALT+S"
+msgstr "Vezi sursa\tALT+S"
+
+#: flatcamGUI/FlatCAMGUI.py:321
+msgid "&View"
+msgstr "&Vizualizare"
+
+#: flatcamGUI/FlatCAMGUI.py:322
+msgid "Enable all plots\tALT+1"
+msgstr "Activează toate afisarile\tALT+1"
+
+#: flatcamGUI/FlatCAMGUI.py:324
+msgid "Disable all plots\tALT+2"
+msgstr "Dezactivează toate afisarile\tALT+2"
+
+#: flatcamGUI/FlatCAMGUI.py:326
+msgid "Disable non-selected\tALT+3"
+msgstr "Dezactivează non-selectate\tALT+3"
+
+#: flatcamGUI/FlatCAMGUI.py:329
+msgid "&Zoom Fit\tV"
+msgstr "&Mareste și potriveste\tV"
+
+#: flatcamGUI/FlatCAMGUI.py:330
+msgid "&Zoom In\t-"
+msgstr "&Mareste\t-"
+
+#: flatcamGUI/FlatCAMGUI.py:331
+msgid "&Zoom Out\t="
+msgstr "&Micsorează\t="
+
+#: flatcamGUI/FlatCAMGUI.py:335
+msgid "Toggle Code Editor\tCTRL+E"
+msgstr "Comuta Editorul de cod\tCTRL+E"
+
+#: flatcamGUI/FlatCAMGUI.py:338
+msgid "&Toggle FullScreen\tALT+F10"
+msgstr "Comuta FullScreen\tALT+F10"
+
+#: flatcamGUI/FlatCAMGUI.py:340
+msgid "&Toggle Plot Area\tCTRL+F10"
+msgstr "Comuta Aria de Afișare\tCTRL+F10"
+
+#: flatcamGUI/FlatCAMGUI.py:342
+msgid "&Toggle Project/Sel/Tool\t`"
+msgstr "Comuta Proiect/Sel/Unealta\t`"
+
+#: flatcamGUI/FlatCAMGUI.py:345
+msgid "&Toggle Grid Snap\tG"
+msgstr "Comuta Grid\tG"
+
+#: flatcamGUI/FlatCAMGUI.py:347
+msgid "&Toggle Axis\tSHIFT+G"
+msgstr "Comuta Axe\tSHIFT+G"
+
+#: flatcamGUI/FlatCAMGUI.py:350
+msgid "Toggle Workspace\tSHIFT+W"
+msgstr "Comuta Suprafata de lucru\tSHIFT+W"
+
+#: flatcamGUI/FlatCAMGUI.py:354
+msgid "&Tool"
+msgstr "Unelte"
+
+#: flatcamGUI/FlatCAMGUI.py:356
+msgid "&Command Line\tS"
+msgstr "&Linie de comanda\tS"
+
+#: flatcamGUI/FlatCAMGUI.py:359
+msgid "&Help"
+msgstr "Ajutor"
+
+#: flatcamGUI/FlatCAMGUI.py:360
+msgid "Help\tF1"
+msgstr "Ajutor\tF1"
+
+#: flatcamGUI/FlatCAMGUI.py:361
+msgid "FlatCAM.org"
+msgstr "FlatCAM.org"
+
+#: flatcamGUI/FlatCAMGUI.py:364
+msgid "Shortcuts List\tF3"
+msgstr "Lista shortcut-uri\tF3"
+
+#: flatcamGUI/FlatCAMGUI.py:365
+msgid "YouTube Channel\tF4"
+msgstr "YouTube \tF4"
+
+#: flatcamGUI/FlatCAMGUI.py:367
+msgid "About"
+msgstr "Despre"
+
+#: flatcamGUI/FlatCAMGUI.py:378
+msgid "Add Circle\tO"
+msgstr "Adaugă Cerc\tO"
+
+#: flatcamGUI/FlatCAMGUI.py:380
+msgid "Add Arc\tA"
+msgstr "Adaugă Arc\tA"
+
+#: flatcamGUI/FlatCAMGUI.py:383
+msgid "Add Rectangle\tR"
+msgstr "Adaugă Patrulater\tR"
+
+#: flatcamGUI/FlatCAMGUI.py:386
+msgid "Add Polygon\tN"
+msgstr "Adaugă Poligon\tN"
+
+#: flatcamGUI/FlatCAMGUI.py:388
+msgid "Add Path\tP"
+msgstr "Adaugă Cale\tP"
+
+#: flatcamGUI/FlatCAMGUI.py:390
+msgid "Add Text\tT"
+msgstr "Adaugă Text\tT"
+
+#: flatcamGUI/FlatCAMGUI.py:393
+msgid "Polygon Union\tU"
+msgstr "Uniune Poligoane\tU"
+
+#: flatcamGUI/FlatCAMGUI.py:395
+msgid "Polygon Intersection\tE"
+msgstr "Intersecţie Poligoane\tE"
+
+#: flatcamGUI/FlatCAMGUI.py:397
+msgid "Polygon Subtraction\tS"
+msgstr "Substractie Poligoane\tS"
+
+#: flatcamGUI/FlatCAMGUI.py:401
+msgid "Cut Path\tX"
+msgstr "Tăiere Cale\tX"
+
+#: flatcamGUI/FlatCAMGUI.py:403
+msgid "Copy Geom\tC"
+msgstr "Copiaza Geo\tC"
+
+#: flatcamGUI/FlatCAMGUI.py:405
+msgid "Delete Shape\tDEL"
+msgstr "Sterge forma Geo.\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:408
+msgid "Move\tM"
+msgstr "Muta\tM"
+
+#: flatcamGUI/FlatCAMGUI.py:410
+msgid "Buffer Tool\tB"
+msgstr "Unealta Bufer\tB"
+
+#: flatcamGUI/FlatCAMGUI.py:413
+msgid "Paint Tool\tI"
+msgstr "Unealta Paint\t"
+
+#: flatcamGUI/FlatCAMGUI.py:416
+msgid "Transform Tool\tALT+R"
+msgstr "Unealta Transformare\tALT+R"
+
+#: flatcamGUI/FlatCAMGUI.py:420
+msgid "Toggle Corner Snap\tK"
+msgstr "Comuta lipire colt\tK"
+
+#: flatcamGUI/FlatCAMGUI.py:423
+msgid ">Excellon Editor<"
+msgstr ">Editor Excellon<"
+
+#: flatcamGUI/FlatCAMGUI.py:427
+msgid "Add Drill Array\tA"
+msgstr "Adaugă Arie Găuriri\tA"
+
+#: flatcamGUI/FlatCAMGUI.py:429
+msgid "Add Drill\tD"
+msgstr "Adaugă Găurire\tD"
+
+#: flatcamGUI/FlatCAMGUI.py:433
+msgid "Resize Drill(S)\tR"
+msgstr "Redimens. Găuriri\tR"
+
+#: flatcamGUI/FlatCAMGUI.py:435
+msgid "Copy\tC"
+msgstr "Copiaza\tC"
+
+#: flatcamGUI/FlatCAMGUI.py:437
+msgid "Delete\tDEL"
+msgstr "Sterge\tDEL"
+
+#: flatcamGUI/FlatCAMGUI.py:442
+msgid "Move Drill(s)\tM"
+msgstr "Muta Găuriri\tM"
+
+#: flatcamGUI/FlatCAMGUI.py:456
+msgid "Enable Plot"
+msgstr "Activează Afișare"
+
+#: flatcamGUI/FlatCAMGUI.py:457
+msgid "Disable Plot"
+msgstr "Dezactivează Afișare"
+
+#: flatcamGUI/FlatCAMGUI.py:459
+msgid "Generate CNC"
+msgstr "Generează CNC"
+
+#: flatcamGUI/FlatCAMGUI.py:460
+msgid "View Source"
+msgstr "Vizualiz. Sursa"
+
+#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:1390
+msgid "Edit"
+msgstr "Editează"
+
+#: flatcamGUI/FlatCAMGUI.py:468 flatcamGUI/FlatCAMGUI.py:1396
+#: flatcamTools/ToolProperties.py:25
+msgid "Properties"
+msgstr "Proprietati"
+
+#: flatcamGUI/FlatCAMGUI.py:497
+msgid "File Toolbar"
+msgstr "Toolbar Fişiere"
+
+#: flatcamGUI/FlatCAMGUI.py:501
+msgid "Edit Toolbar"
+msgstr "Toolbar Editare"
+
+#: flatcamGUI/FlatCAMGUI.py:505
+msgid "View Toolbar"
+msgstr "Toolbar Vizualizare"
+
+#: flatcamGUI/FlatCAMGUI.py:509
+msgid "Shell Toolbar"
+msgstr "Toolbar Linie de comanda"
+
+#: flatcamGUI/FlatCAMGUI.py:513
+msgid "Tools Toolbar"
+msgstr "Toolbar Unelte"
+
+#: flatcamGUI/FlatCAMGUI.py:517
+msgid "Excellon Editor Toolbar"
+msgstr "Toolbar Editor Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:521
+msgid "Geometry Editor Toolbar"
+msgstr "Toolbar Editor Geometrii"
+
+#: flatcamGUI/FlatCAMGUI.py:525
+msgid "Grid Toolbar"
+msgstr "Toolbar Grid-uri"
+
+#: flatcamGUI/FlatCAMGUI.py:544 flatcamGUI/FlatCAMGUI.py:1593
+msgid "Open project"
+msgstr "Incarca Proiect"
+
+#: flatcamGUI/FlatCAMGUI.py:545 flatcamGUI/FlatCAMGUI.py:1594
+msgid "Save project"
+msgstr "Salvează Proiect"
+
+#: flatcamGUI/FlatCAMGUI.py:548 flatcamGUI/FlatCAMGUI.py:1597
+msgid "New Blank Geometry"
+msgstr "Geometrie Noua (goala)"
+
+#: flatcamGUI/FlatCAMGUI.py:549 flatcamGUI/FlatCAMGUI.py:1598
+msgid "New Blank Excellon"
+msgstr "Excellon nou (gol)"
+
+#: flatcamGUI/FlatCAMGUI.py:551 flatcamGUI/FlatCAMGUI.py:1600
+msgid "Editor"
+msgstr "Editor"
+
+#: flatcamGUI/FlatCAMGUI.py:553 flatcamGUI/FlatCAMGUI.py:1602
+msgid "Save Object and close the Editor"
+msgstr "Salvează Obiectul și inchide Editorul"
+
+#: flatcamGUI/FlatCAMGUI.py:557 flatcamGUI/FlatCAMGUI.py:1606
+msgid "&Delete"
+msgstr "&Sterge"
+
+#: flatcamGUI/FlatCAMGUI.py:560 flatcamGUI/FlatCAMGUI.py:1609
+msgid "&Replot"
+msgstr "&Reafișare"
+
+#: flatcamGUI/FlatCAMGUI.py:561 flatcamGUI/FlatCAMGUI.py:1610
+msgid "&Clear plot"
+msgstr "&Sterge Afișare"
+
+#: flatcamGUI/FlatCAMGUI.py:562 flatcamGUI/FlatCAMGUI.py:1611
+msgid "Zoom In"
+msgstr "Marire"
+
+#: flatcamGUI/FlatCAMGUI.py:563 flatcamGUI/FlatCAMGUI.py:1612
+msgid "Zoom Out"
+msgstr "Micsorare"
+
+#: flatcamGUI/FlatCAMGUI.py:564 flatcamGUI/FlatCAMGUI.py:1370
+#: flatcamGUI/FlatCAMGUI.py:1613
+msgid "Zoom Fit"
+msgstr "Marire și ajustare"
+
+#: flatcamGUI/FlatCAMGUI.py:569 flatcamGUI/FlatCAMGUI.py:1618
+msgid "&Command Line"
+msgstr "&Linie de comanda"
+
+#: flatcamGUI/FlatCAMGUI.py:572 flatcamGUI/FlatCAMGUI.py:1621
+msgid "2Sided Tool"
+msgstr "Unealta 2-fețe"
+
+#: flatcamGUI/FlatCAMGUI.py:573 flatcamGUI/FlatCAMGUI.py:1622
+msgid "&Cutout Tool"
+msgstr "Unealta Decupare"
+
+#: flatcamGUI/FlatCAMGUI.py:574 flatcamGUI/FlatCAMGUI.py:1623
+#: flatcamGUI/ObjectUI.py:463 flatcamTools/ToolNonCopperClear.py:283
+msgid "NCC Tool"
+msgstr "Unealta NCC"
+
+#: flatcamGUI/FlatCAMGUI.py:578 flatcamGUI/FlatCAMGUI.py:1627
+msgid "Panel Tool"
+msgstr "Unealta Panel"
+
+#: flatcamGUI/FlatCAMGUI.py:579 flatcamGUI/FlatCAMGUI.py:1628
+#: flatcamTools/ToolFilm.py:204
+msgid "Film Tool"
+msgstr "Unealta Film"
+
+#: flatcamGUI/FlatCAMGUI.py:580 flatcamGUI/FlatCAMGUI.py:1630
+msgid "SolderPaste Tool"
+msgstr "Unealta Dispenser SP"
+
+#: flatcamGUI/FlatCAMGUI.py:583 flatcamGUI/FlatCAMGUI.py:1634
+msgid "Calculators Tool"
+msgstr "Unealta Calculatoare"
+
+#: flatcamGUI/FlatCAMGUI.py:587 flatcamGUI/FlatCAMGUI.py:601
+#: flatcamGUI/FlatCAMGUI.py:1638
+msgid "Select"
+msgstr "Selectează"
+
+#: flatcamGUI/FlatCAMGUI.py:588 flatcamGUI/FlatCAMGUI.py:1639
+msgid "Add Drill Hole"
+msgstr "Adaugă o Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:591 flatcamGUI/FlatCAMGUI.py:1642
+msgid "Resize Drill"
+msgstr "Redimens. Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:594 flatcamGUI/FlatCAMGUI.py:1645
+msgid "Copy Drill"
+msgstr "Copiaza Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:595 flatcamGUI/FlatCAMGUI.py:1647
+msgid "Delete Drill"
+msgstr "Sterge Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:598 flatcamGUI/FlatCAMGUI.py:1650
+msgid "Move Drill"
+msgstr "Muta Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:602 flatcamGUI/FlatCAMGUI.py:1654
+msgid "Add Circle"
+msgstr "Adaugă Cerc"
+
+#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1655
+msgid "Add Arc"
+msgstr "Adaugă Arc"
+
+#: flatcamGUI/FlatCAMGUI.py:605 flatcamGUI/FlatCAMGUI.py:1657
+msgid "Add Rectangle"
+msgstr "Adaugă Patrulater"
+
+#: flatcamGUI/FlatCAMGUI.py:608 flatcamGUI/FlatCAMGUI.py:1660
+msgid "Add Path"
+msgstr "Adaugă Cale"
+
+#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1662
+msgid "Add Polygon"
+msgstr "Adaugă Poligon"
+
+#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1664
+msgid "Add Text"
+msgstr "Adaugă Text"
+
+#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1666
+msgid "Add Buffer"
+msgstr "Adaugă Bufer"
+
+#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1667
+msgid "Paint Shape"
+msgstr "Paint o forma"
+
+#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1670
+msgid "Polygon Union"
+msgstr "Uniune Poligoane"
+
+#: flatcamGUI/FlatCAMGUI.py:618 flatcamGUI/FlatCAMGUI.py:1672
+msgid "Polygon Intersection"
+msgstr "Intersecţie Poligoane"
+
+#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1674
+msgid "Polygon Subtraction"
+msgstr "Substractie Poligoane"
+
+#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1677
+msgid "Cut Path"
+msgstr "Taie Cale"
+
+#: flatcamGUI/FlatCAMGUI.py:624
+msgid "Copy Shape(s)"
+msgstr "Copiaza forme geo."
+
+#: flatcamGUI/FlatCAMGUI.py:627
+msgid "Delete Shape '-'"
+msgstr "Sterge forme geo."
+
+#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1682
+msgid "Transformations"
+msgstr "Transformari"
+
+#: flatcamGUI/FlatCAMGUI.py:631
+msgid "Move Objects "
+msgstr "Muta obiecte"
+
+#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1691
+msgid "Snap to grid"
+msgstr "Lipire la grid"
+
+#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1694
+msgid "Grid X snapping distance"
+msgstr "Distanta de lipire la grid pe axa X"
+
+#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1699
+msgid "Grid Y snapping distance"
+msgstr "Distanta de lipire la grid pe axa Y"
+
+#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1705
+msgid ""
+"When active, value on Grid_X\n"
+"is copied to the Grid_Y value."
+msgstr ""
+"când este activ, valoarea de pe Grid_X\n"
+"este copiata și in Grid_Y"
+
+#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1711
+msgid "Snap to corner"
+msgstr "Lipire la colt"
+
+#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1715
+#: flatcamGUI/FlatCAMGUI.py:2787
+msgid "Max. magnet distance"
+msgstr "Distanta magnetica maxima"
+
+#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1364
+msgid "Project"
+msgstr "Proiect"
+
+#: flatcamGUI/FlatCAMGUI.py:684
+msgid "Selected"
+msgstr "Selectat"
+
+#: flatcamGUI/FlatCAMGUI.py:691
+msgid "Tool"
+msgstr "Unealta"
+
+#: flatcamGUI/FlatCAMGUI.py:703 flatcamGUI/FlatCAMGUI.py:711
+msgid "Plot Area"
+msgstr "Arie Afișare"
+
+#: flatcamGUI/FlatCAMGUI.py:735
+msgid "General"
+msgstr "General"
+
+#: flatcamGUI/FlatCAMGUI.py:744
+msgid "APP.  DEFAULTS"
+msgstr "Default for App"
+
+#: flatcamGUI/FlatCAMGUI.py:745
+msgid "PROJ. OPTIONS "
+msgstr "Opțiuni Proiect"
+
+#: flatcamGUI/FlatCAMGUI.py:756
+msgid "GERBER"
+msgstr "GERBER"
+
+#: flatcamGUI/FlatCAMGUI.py:765
+msgid "EXCELLON"
+msgstr "EXCELLON"
+
+#: flatcamGUI/FlatCAMGUI.py:774
+msgid "GEOMETRY"
+msgstr "GEOMETRIE"
+
+#: flatcamGUI/FlatCAMGUI.py:784
+msgid "CNC-JOB"
+msgstr "CNCJob"
+
+#: flatcamGUI/FlatCAMGUI.py:793
+msgid "TOOLS"
+msgstr "Unelte"
+
+#: flatcamGUI/FlatCAMGUI.py:810
+msgid "Import Preferences"
+msgstr "Importa Preferințele"
+
+#: flatcamGUI/FlatCAMGUI.py:813
+msgid ""
+"Import a full set of FlatCAM settings from a file\n"
+"previously saved on HDD.\n"
+"\n"
+"FlatCAM automatically save a 'factory_defaults' file\n"
+"on the first start. Do not delete that file."
+msgstr ""
+"Importa un set complet de setari ale FlatCAM dintr-un fişier\n"
+"care a fost anterior salvat pe HDD..\n"
+"\n"
+"FlatCAM salvează automat un fişier numit 'factory_defaults'\n"
+"la prima pornire. Nu sterge acel fişier."
+
+#: flatcamGUI/FlatCAMGUI.py:820
+msgid "Export Preferences"
+msgstr "Exporta Preferințele"
+
+#: flatcamGUI/FlatCAMGUI.py:823
+msgid ""
+"Export a full set of FlatCAM settings in a file\n"
+"that is saved on HDD."
+msgstr ""
+"Exporta un set complet de setari ale FlatCAM\n"
+"intr-un fişier care se salvează pe HDD."
+
+#: flatcamGUI/FlatCAMGUI.py:828
+msgid "Open Pref Folder"
+msgstr "Deschide Pref Dir"
+
+#: flatcamGUI/FlatCAMGUI.py:831
+msgid "Open the folder where FlatCAM save the preferences files."
+msgstr "Deschide directorul unde FlatCAM salvează fişierele cu setari."
+
+#: flatcamGUI/FlatCAMGUI.py:839
+msgid "Save Preferences"
+msgstr "Salvează Pref"
+
+#: flatcamGUI/FlatCAMGUI.py:842
+msgid ""
+"Save the current settings in the 'current_defaults' file\n"
+"which is the file storing the working default preferences."
+msgstr ""
+"Salvează setarile curente in fişierul numit: 'current_defaults'\n"
+"fişier care este cel unde se salvează preferințele cu care se va lucra."
+
+#: flatcamGUI/FlatCAMGUI.py:868
+msgid ""
+"<b>General Shortcut list</b><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>F3</strong></"
+"td>\n"
+"                        <td width=\"194\"><span style=\"color:"
+"#006400\"><strong>&nbsp;SHOW SHORTCUT LIST</strong></span></td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>1</strong></td>\n"
+"                        <td>&nbsp;Switch to Project Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>2</strong></td>\n"
+"                        <td>&nbsp;Switch to Selected Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>3</strong></td>\n"
+"                        <td>&nbsp;Switch to Tool Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Edit Object (if selected)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>G</strong></td>\n"
+"                        <td>&nbsp;Grid On/Off</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Coordinates</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>L</strong></td>\n"
+"                        <td>&nbsp;New Excellon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;New Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Set Origin</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Q</strong></td>\n"
+"                        <td>&nbsp;Change Units</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Open Properties Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Shell Toggle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a Tool (when in Geometry Selected Tab "
+"or in Tools NCC or Tools Paint)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>V</strong></td>\n"
+"                        <td>&nbsp;Zoom Fit</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip on X_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip on Y_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;=&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom Out</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;-&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom In</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+A</strong></td>\n"
+"                        <td>&nbsp;Select All</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+E</strong></td>\n"
+"                        <td>&nbsp;Open Excellon File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+G</strong></td>\n"
+"                        <td>&nbsp;Open Gerber File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+N</strong></td>\n"
+"                        <td>&nbsp;New Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+O</strong></td>\n"
+"                        <td>&nbsp;Open Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Project As</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Plot Area</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj_Name</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+E</strong></td>\n"
+"                        <td>&nbsp;Toggle Code Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+G</strong></td>\n"
+"                        <td>&nbsp;Toggle the axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+P</strong></td>\n"
+"                        <td>&nbsp;Open Preferences Window</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CCW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+S</strong></td>\n"
+"                        <td>&nbsp;Run a Script</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+W</strong></td>\n"
+"                        <td>&nbsp;Toggle the workspace</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+C</strong></td>\n"
+"                        <td>&nbsp;Calculators Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+D</strong></td>\n"
+"                        <td>&nbsp;2-Sided PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+K</strong></td>\n"
+"                        <td>&nbsp;Solder Paste Dispensing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+L</strong></td>\n"
+"                        <td>&nbsp;Film PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+N</strong></td>\n"
+"                        <td>&nbsp;Non-Copper Clearing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+P</strong></td>\n"
+"                        <td>&nbsp;Paint Area Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Transformations Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+S</strong></td>\n"
+"                        <td>&nbsp;View File Source</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+U</strong></td>\n"
+"                        <td>&nbsp;Cutout PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+1</strong></td>\n"
+"                        <td>&nbsp;Enable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+2</strong></td>\n"
+"                        <td>&nbsp;Disable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+3</strong></td>\n"
+"                        <td>&nbsp;Disable Non-selected Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Full Screen</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F1</strong></td>\n"
+"                        <td>&nbsp;Open Online Manual</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F4</strong></td>\n"
+"                        <td>&nbsp;Open Online Tutorials</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Object</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>'`'</strong></td>\n"
+"                        <td>&nbsp;(left to Key_1)Toogle Notebook Area (Left "
+"Side)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SPACE</strong></td>\n"
+"                        <td>&nbsp;En(Dis)able Obj Plot</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Escape</strong></td>\n"
+"                        <td>&nbsp;Deselects all objects</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"    \n"
+"            "
+msgstr ""
+"<b>General Shortcut list</b><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>F3</strong></"
+"td>\n"
+"                        <td width=\"194\"><span style=\"color:"
+"#006400\"><strong>&nbsp;Afisează Lista de Shortcut-uri</strong></span></td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>1</strong></td>\n"
+"                        <td>&nbsp;Focus in Tab-ul Proiect</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>2</strong></td>\n"
+"                        <td>&nbsp;Focus in Tab-ul Selectat</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>3</strong></td>\n"
+"                        <td>&nbsp;Focus in Tab-ul Unelte</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Editează Obiectul (daca este selectat)</"
+"td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>G</strong></td>\n"
+"                        <td>&nbsp;Grid On/Off</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Sari la Coordinate</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>L</strong></td>\n"
+"                        <td>&nbsp;Excellon Nou</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Muta Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Geometrie Noua</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Setează Originea</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Q</strong></td>\n"
+"                        <td>&nbsp;Schimba Unitatile</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Deschide Unealta de Proprietati</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Roteste cu 90 grade CW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Comuta Shell (linia de comanda)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Adaugă o Unealta (când focus-ul este in "
+"Tab-ul Selectat pt Geo, sau in Unealta NCC sau unealta Paint)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>V</strong></td>\n"
+"                        <td>&nbsp;Mareste și potriveste</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Oglindeste pe axa X</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Oglindeste pe axa Y</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;=&#39;</strong></td>\n"
+"                        <td>&nbsp;Micsorează</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;-&#39;</strong></td>\n"
+"                        <td>&nbsp;Mareste</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+A</strong></td>\n"
+"                        <td>&nbsp;Selectează Tot</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+C</strong></td>\n"
+"                        <td>&nbsp;Copiaza Obiect</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+E</strong></td>\n"
+"                        <td>&nbsp;Deschide fişier Excellon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+G</strong></td>\n"
+"                        <td>&nbsp;Deschide fişier Gerber</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+N</strong></td>\n"
+"                        <td>&nbsp;Proiect Nou</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Unealta de Masurare</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+O</strong></td>\n"
+"                        <td>&nbsp;Deschide Proiect</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Salvează Proiect ca</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+F10</strong></td>\n"
+"                        <td>&nbsp;Comuta Aria de Afișare</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+C</strong></td>\n"
+"                        <td>&nbsp;Copiaza Nume Obiect</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+E</strong></td>\n"
+"                        <td>&nbsp;Comuta Editor Cod</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+G</strong></td>\n"
+"                        <td>&nbsp;Comuta Axele</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+P</strong></td>\n"
+"                        <td>&nbsp;Deschide Preferințe</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+R</strong></td>\n"
+"                        <td>&nbsp;Roteste cu 90 grade CCW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+S</strong></td>\n"
+"                        <td>&nbsp;Rulează un Script</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+W</strong></td>\n"
+"                        <td>&nbsp;Comuta Spatiul de Lucru</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Deformează pe axa X</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Deformează pe axa Y</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+C</strong></td>\n"
+"                        <td>&nbsp;Unealta Calculatoare</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+D</strong></td>\n"
+"                        <td>&nbsp;Unealta 2-Layer</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+K</strong></td>\n"
+"                        <td>&nbsp;Unealta Dispensare Pasta Fludor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+L</strong></td>\n"
+"                        <td>&nbsp;Unealta Film PCB</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+N</strong></td>\n"
+"                        <td>&nbsp;Unealta de curățare zone cupru</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+P</strong></td>\n"
+"                        <td>&nbsp;Unealta Paint</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Unealta Transformari</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+S</strong></td>\n"
+"                        <td>&nbsp;Vizualiz. Codul Sursa</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+U</strong></td>\n"
+"                        <td>&nbsp;Unealta de Decupare</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+1</strong></td>\n"
+"                        <td>&nbsp;Activează toate Afisarile</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+2</strong></td>\n"
+"                        <td>&nbsp;Dezactivează toate afisarile/td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+3</strong></td>\n"
+"                        <td>&nbsp;Dezactivează toate afisarile neselectate</"
+"td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+F10</strong></td>\n"
+"                        <td>&nbsp;Comuta Full Screen</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F1</strong></td>\n"
+"                        <td>&nbsp;Deschide Manualul Online</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F4</strong></td>\n"
+"                        <td>&nbsp;Deschide Tutoriale Online</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Sterge Obiectul</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternativ: Sterge Unealta</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>'`'</strong></td>\n"
+"                        <td>&nbsp;(in stânga Tasta_1)Comuta Aria Notebook "
+"(in stânga)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SPACE</strong></td>\n"
+"                        <td>&nbsp;(Dez)Activează afișare obiect</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Escape</strong></td>\n"
+"                        <td>&nbsp;Deselectează toate obiectele</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"    \n"
+"            "
+
+#: flatcamGUI/FlatCAMGUI.py:1145
+msgid ""
+"<b>Editor Shortcut list</b><br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#0000ff\">GEOMETRY EDITOR</span></"
+"strong><br>\n"
+"    \n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Draw an Arc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>B</strong></td>\n"
+"                        <td>&nbsp;Buffer Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Polygon Intersection Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>I</strong></td>\n"
+"                        <td>&nbsp;Paint Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>K</strong></td>\n"
+"                        <td>&nbsp;Toggle Corner Snap</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Draw a Polygon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Draw a Circle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Draw a Path</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Draw Rectangle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Polygon Substraction Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add Text Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>U</strong></td>\n"
+"                        <td>&nbsp;Polygon Union Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Editor Transformation Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+X</strong></td>\n"
+"                        <td>&nbsp;Offset shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+Y</strong></td>\n"
+"                        <td>&nbsp;Offset shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+X</strong></td>\n"
+"                        <td>&nbsp;Polygon Cut Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Space</strong></td>\n"
+"                        <td>&nbsp;Rotate Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ENTER</strong></td>\n"
+"                        <td>&nbsp;Finish drawing for certain tools</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Shape</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"            <br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#ff0000\">EXCELLON EDITOR</span></"
+"strong><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Add Drill Array</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>D</strong></td>\n"
+"                        <td>&nbsp;Add Drill</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Resize Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a new Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"                    "
+msgstr ""
+"<b>Editor Shortcut list</b><br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#0000ff\">EDITORUL DE GEOMETRII</"
+"span></strong><br>\n"
+"    \n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Desenează un Arc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>B</strong></td>\n"
+"                        <td>&nbsp;Unealta Bufer</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copiaza o geometrie</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Unealta Intersecţie Poligoane</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>I</strong></td>\n"
+"                        <td>&nbsp;Unealta Paint</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Sari la Locatie (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>K</strong></td>\n"
+"                        <td>&nbsp;Comuta lipire colt</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Muta forma geometrică</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Desenează un Poligon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Desenează un Cerc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Desenează o Cale</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Desenează un Patrulater</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Unealta Substractie Poligoane</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Unealta de adaugare Text</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>U</strong></td>\n"
+"                        <td>&nbsp;Unealta de Uniune Poligoane</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Oglindeste forma geo pe axa X</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Oglindeste forma geo pe axa Y</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Deformează forma geo pe axa X/td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Deformează forma geo pe axa Y</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Unealta de Trasformari din Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+X</strong></td>\n"
+"                        <td>&nbsp;Deplasează forma geo pe axa X</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+Y</strong></td>\n"
+"                        <td>&nbsp;Deplasează forma geo pe axa Y</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Unealta de Masurare</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Salvează obiectul și iesi din Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+X</strong></td>\n"
+"                        <td>&nbsp;Unealta de tăiere Poligoane</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Space</strong></td>\n"
+"                        <td>&nbsp;Roteste forma geometrică</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ENTER</strong></td>\n"
+"                        <td>&nbsp;Termina desenatul pentru anumite unelte</"
+"td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Renunta și intoarce-te la Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Sterge forma geometrică</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"            <br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#ff0000\">EDITORUL EXCELLON</span></"
+"strong><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Adaugă o arie de găuriri</"
+"td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copiaza Găuriri</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>D</strong></td>\n"
+"                        <td>&nbsp;Adaugă găurire</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Sari la Locatie (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Muta Găuriri</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Redimensionează găuriri</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Adaugă o noua Unealta</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Sterge Găuriri</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternatic: Sterge Unelte</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Renunta și intoarce-te la Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Salvează obiectul și iesi din Editor</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"                    "
+
+#: flatcamGUI/FlatCAMGUI.py:1358
+msgid "Disable"
+msgstr "Dezactivează"
+
+#: flatcamGUI/FlatCAMGUI.py:1360
+msgid "New"
+msgstr "Nou"
+
+#: flatcamGUI/FlatCAMGUI.py:1361
+msgid "Geometry"
+msgstr "Geometrie"
+
+#: flatcamGUI/FlatCAMGUI.py:1362
+msgid "Excellon"
+msgstr "Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:1367
+msgid "Grids"
+msgstr "Grid-uri"
+
+#: flatcamGUI/FlatCAMGUI.py:1369
+msgid "View"
+msgstr "Vizualizare"
+
+#: flatcamGUI/FlatCAMGUI.py:1371
+msgid "Clear Plot"
+msgstr "Sterge Afișare"
+
+#: flatcamGUI/FlatCAMGUI.py:1372
+msgid "Replot"
+msgstr "Reafișare"
+
+#: flatcamGUI/FlatCAMGUI.py:1375
+msgid "Geo Editor"
+msgstr "Editor Geometrii"
+
+#: flatcamGUI/FlatCAMGUI.py:1376
+msgid "Line"
+msgstr "Linie"
+
+#: flatcamGUI/FlatCAMGUI.py:1377
+msgid "Rectangle"
+msgstr "Patrulater"
+
+#: flatcamGUI/FlatCAMGUI.py:1378 flatcamGUI/FlatCAMGUI.py:4590
+#: flatcamGUI/ObjectUI.py:1431
+msgid "Cut"
+msgstr "Tăiere"
+
+#: flatcamGUI/FlatCAMGUI.py:1380 flatcamGUI/FlatCAMGUI.py:1395
+#: flatcamTools/ToolMove.py:26
+msgid "Move"
+msgstr "Mutare"
+
+#: flatcamGUI/FlatCAMGUI.py:1382
+msgid "Exc Editor"
+msgstr "Editor EXC."
+
+#: flatcamGUI/FlatCAMGUI.py:1383
+msgid "Add Drill"
+msgstr "Adaugă găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:1385
+msgid "Copy Drill(s)"
+msgstr "Copiaza Găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:1391
+msgid "Save && Close Edit"
+msgstr "Salvează && Inchide Edit"
+
+#: flatcamGUI/FlatCAMGUI.py:1416
+msgid "Print Preview"
+msgstr "Preview tiparire"
+
+#: flatcamGUI/FlatCAMGUI.py:1417
+msgid "Print Code"
+msgstr "Tipareste Cod"
+
+#: flatcamGUI/FlatCAMGUI.py:1418
+msgid "Find in Code"
+msgstr "Cauta in Cod"
+
+#: flatcamGUI/FlatCAMGUI.py:1423
+msgid "Replace With"
+msgstr "Inlocuieste cu"
+
+#: flatcamGUI/FlatCAMGUI.py:1427 flatcamGUI/FlatCAMGUI.py:4588
+#: flatcamGUI/FlatCAMGUI.py:5089 flatcamGUI/ObjectUI.py:1429
+msgid "All"
+msgstr "Toate"
+
+#: flatcamGUI/FlatCAMGUI.py:1429
+msgid ""
+"When checked it will replace all instances in the 'Find' box\n"
+"with the text in the 'Replace' box.."
+msgstr ""
+"Când este bifat, va inlocui toate cuvintele gasite conform ce este in "
+"'Cauta'\n"
+"cu textul din casuta 'Inlocuieste'"
+
+#: flatcamGUI/FlatCAMGUI.py:1432
+msgid "Open Code"
+msgstr "Deschide Cod"
+
+#: flatcamGUI/FlatCAMGUI.py:1433
+msgid "Save Code"
+msgstr "Salvează Cod"
+
+#: flatcamGUI/FlatCAMGUI.py:1468
+msgid ""
+"Relative neasurement.\n"
+"Reference is last click position"
+msgstr ""
+"Masuratoare relativa.\n"
+"Referința este poziţia ultimului click pe canvas."
+
+#: flatcamGUI/FlatCAMGUI.py:1474
+msgid ""
+"Absolute neasurement.\n"
+"Reference is (X=0, Y= 0) position"
+msgstr ""
+"Masuratoare absoluta.\n"
+"Referința este originea (0, 0)."
+
+#: flatcamGUI/FlatCAMGUI.py:1641
+msgid "Add Drill Hole Array"
+msgstr "Adaugă o arie de Găuriri"
+
+#: flatcamGUI/FlatCAMGUI.py:1653
+msgid "Select 'Esc'"
+msgstr "Select"
+
+#: flatcamGUI/FlatCAMGUI.py:1678
+msgid "Copy Objects"
+msgstr "Copiaza Obiecte"
+
+#: flatcamGUI/FlatCAMGUI.py:1680
+msgid "Delete Shape"
+msgstr "Sterge forme geo"
+
+#: flatcamGUI/FlatCAMGUI.py:1685
+msgid "Move Objects"
+msgstr "Muta Obiecte"
+
+#: flatcamGUI/FlatCAMGUI.py:2060
+msgid ""
+"Please first select a geometry item to be cutted\n"
+"then select the geometry item that will be cutted\n"
+"out of the first item. In the end press ~X~ key or\n"
+"the toolbar button."
+msgstr ""
+"Mai intai selectează o forma geometrică care trebuie taiata\n"
+"apoi selectează forma geo. taietoare. La final apasa tasta ~X~ sau\n"
+"butonul corespunzator din Toolbar."
+
+#: flatcamGUI/FlatCAMGUI.py:2067 flatcamGUI/FlatCAMGUI.py:2199
+#: flatcamGUI/FlatCAMGUI.py:2258 flatcamGUI/FlatCAMGUI.py:2278
+msgid "Warning"
+msgstr "Atentie"
+
+#: flatcamGUI/FlatCAMGUI.py:2134 flatcamGUI/FlatCAMGUI.py:2328
+msgid "[WARNING_NOTCL]Cancelled."
+msgstr "[WARNING_NOTCL] Anulat."
+
+#: flatcamGUI/FlatCAMGUI.py:2194
+msgid ""
+"Please select geometry items \n"
+"on which to perform Intersection Tool."
+msgstr ""
+"Selectează forma geometrică asupra careia să se\n"
+"aplice Unealta Intersecţie."
+
+#: flatcamGUI/FlatCAMGUI.py:2253
+msgid ""
+"Please select geometry items \n"
+"on which to perform Substraction Tool."
+msgstr ""
+"Selectează forma geometrică asupra careia să se\n"
+"aplice Unealta Substractie."
+
+#: flatcamGUI/FlatCAMGUI.py:2273
+msgid ""
+"Please select geometry items \n"
+"on which to perform union."
+msgstr ""
+"Selectează forma geometrică asupra careia să se\n"
+"aplice Unealta Uniune."
+
+#: flatcamGUI/FlatCAMGUI.py:2345
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to delete."
+msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru stergere."
+
+#: flatcamGUI/FlatCAMGUI.py:2412
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to copy."
+msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru copiere."
+
+#: flatcamGUI/FlatCAMGUI.py:2458
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to move."
+msgstr "[WARNING_NOTCL] Anulat. Nimic nu este selectat pentru mutare."
+
+#: flatcamGUI/FlatCAMGUI.py:2472
+msgid "New Tool ..."
+msgstr "O noua Unealta ..."
+
+#: flatcamGUI/FlatCAMGUI.py:2473
+msgid "Enter a Tool Diameter:"
+msgstr "Introdu un Diametru de Unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:2772
+msgid "Grid X value:"
+msgstr "Valoarea Grid_X:"
+
+#: flatcamGUI/FlatCAMGUI.py:2774
+msgid "This is the Grid snap value on X axis."
+msgstr "Aceasta este valoare pentru lipire pe Grid pe axa X."
+
+#: flatcamGUI/FlatCAMGUI.py:2779
+msgid "Grid Y value:"
+msgstr "Valoarea Grid_Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:2781
+msgid "This is the Grid snap value on Y axis."
+msgstr "Aceasta este valoare pentru lipire pe Grid pe axa Y."
+
+#: flatcamGUI/FlatCAMGUI.py:2786
+msgid "Snap Max:"
+msgstr "Lipire Max:"
+
+#: flatcamGUI/FlatCAMGUI.py:2791
+msgid "Workspace:"
+msgstr "Spatiu de lucru:"
+
+#: flatcamGUI/FlatCAMGUI.py:2793
+msgid ""
+"Draw a delimiting rectangle on canvas.\n"
+"The purpose is to illustrate the limits for our work."
+msgstr ""
+"Desenează un patrulater care delimitează o asuprafata de lucru.\n"
+"Scopul este de a ilustra limitele suprafetei noastre de lucru."
+
+#: flatcamGUI/FlatCAMGUI.py:2796
+msgid "Wk. format:"
+msgstr "Format SL:"
+
+#: flatcamGUI/FlatCAMGUI.py:2798
+msgid ""
+"Select the type of rectangle to be used on canvas,\n"
+"as valid workspace."
+msgstr ""
+"Selectează tipul de patrulater care va fi desenat pe canvas,\n"
+"pentru a delimita suprafata de lucru disponibila (SL)."
+
+#: flatcamGUI/FlatCAMGUI.py:2811
+msgid "Plot Fill:"
+msgstr "Culoare Afișare:"
+
+#: flatcamGUI/FlatCAMGUI.py:2813
+msgid ""
+"Set the fill color for plotted objects.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Setează culoarea pentru obiectele afisate.\n"
+"Primii 6 digiti sunt culoarea efectiva și ultimii\n"
+"doi sunt pentru nivelul de transparenţă (alfa)."
+
+#: flatcamGUI/FlatCAMGUI.py:2827 flatcamGUI/FlatCAMGUI.py:2877
+#: flatcamGUI/FlatCAMGUI.py:2927
+msgid "Alpha Level:"
+msgstr "Nivel Alfa:"
+
+#: flatcamGUI/FlatCAMGUI.py:2829
+msgid "Set the fill transparency for plotted objects."
+msgstr "Setează nivelul de transparenţa pentru obiectele afisate."
+
+#: flatcamGUI/FlatCAMGUI.py:2846
+msgid "Plot Line:"
+msgstr "Culoare contur:"
+
+#: flatcamGUI/FlatCAMGUI.py:2848
+msgid "Set the line color for plotted objects."
+msgstr "Setează culoarea conturului."
+
+#: flatcamGUI/FlatCAMGUI.py:2860
+msgid "Sel. Fill:"
+msgstr "Culoare Selecţie:"
+
+#: flatcamGUI/FlatCAMGUI.py:2862
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from left to right.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Setează culoarea pentru forma de selectare in cazul\n"
+"in care selectia se face de la stânga la dreapta.\n"
+"Primii 6 digiti sunt culoarea efectiva și ultimii\n"
+"doi sunt pentru nivelul de transparenţă (alfa)."
+
+#: flatcamGUI/FlatCAMGUI.py:2879
+msgid "Set the fill transparency for the 'left to right' selection box."
+msgstr ""
+"Setează transparenţa formei de selecţie când selectia\n"
+"se face de la stânga la dreapta."
+
+#: flatcamGUI/FlatCAMGUI.py:2896
+msgid "Sel. Line:"
+msgstr "Contur Selecţie:"
+
+#: flatcamGUI/FlatCAMGUI.py:2898
+msgid "Set the line color for the 'left to right' selection box."
+msgstr ""
+"Setează transparenţa conturului formei de selecţie\n"
+"când selectia se face de la stânga la dreapta."
+
+#: flatcamGUI/FlatCAMGUI.py:2910
+msgid "Sel2. Fill:"
+msgstr "Culoare Selecţie 2:"
+
+#: flatcamGUI/FlatCAMGUI.py:2912
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from right to left.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+"Setează culoarea pentru forma de selectare in cazul\n"
+"in care selectia se face de la dreapta la stânga.\n"
+"Primii 6 digiti sunt culoarea efectiva și ultimii\n"
+"doi sunt pentru nivelul de transparenţă (alfa)."
+
+#: flatcamGUI/FlatCAMGUI.py:2929
+msgid "Set the fill transparency for selection 'right to left' box."
+msgstr ""
+"Setează transparenţa formei de selecţie când selectia\n"
+"se face de la dreapta la stânga."
+
+#: flatcamGUI/FlatCAMGUI.py:2946
+msgid "Sel2. Line:"
+msgstr "Contur Selecţie 2:"
+
+#: flatcamGUI/FlatCAMGUI.py:2948
+msgid "Set the line color for the 'right to left' selection box."
+msgstr ""
+"Setează transparenţa conturului formei de selecţie\n"
+"când selectia se face de la dreapta la stânga."
+
+#: flatcamGUI/FlatCAMGUI.py:2960
+msgid "Editor Draw:"
+msgstr "Desen Editor:"
+
+#: flatcamGUI/FlatCAMGUI.py:2962
+msgid "Set the color for the shape."
+msgstr "Setează culoarea pentru forma geometrică din Editor."
+
+#: flatcamGUI/FlatCAMGUI.py:2974
+msgid "Editor Draw Sel.:"
+msgstr "Sel. Desen Editor:"
+
+#: flatcamGUI/FlatCAMGUI.py:2976
+msgid "Set the color of the shape when selected."
+msgstr ""
+"Setează culoarea formei geometrice in Editor\n"
+"când se face o selecţie."
+
+#: flatcamGUI/FlatCAMGUI.py:3023
+msgid "GUI Settings"
+msgstr "Setari GUI"
+
+#: flatcamGUI/FlatCAMGUI.py:3030
+msgid "Layout:"
+msgstr "Amplasare:"
+
+#: flatcamGUI/FlatCAMGUI.py:3032
+msgid ""
+"Select an layout for FlatCAM.\n"
+"It is applied immediately."
+msgstr ""
+"Selectează un stil de amplasare a elementelor GUI in FlatCAM.\n"
+"Se aplica imediat."
+
+#: flatcamGUI/FlatCAMGUI.py:3048
+msgid "Style:"
+msgstr "Stil:"
+
+#: flatcamGUI/FlatCAMGUI.py:3050
+msgid ""
+"Select an style for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+"Selectează un stil pentru FlatCAM.\n"
+"Se va aplica la urmatoarea pornire a aplicatiei."
+
+#: flatcamGUI/FlatCAMGUI.py:3061
+msgid "HDPI Support:"
+msgstr "Suport H-DPI:"
+
+#: flatcamGUI/FlatCAMGUI.py:3063
+msgid ""
+"Enable High DPI support for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+"Activează capabilitatea de DPI cu valoare mare.\n"
+"Util pentru monitoarele 4k.\n"
+"Va fi aplicata la urmatorea pornire a aplicatiei."
+
+#: flatcamGUI/FlatCAMGUI.py:3076
+msgid "Clear GUI Settings:"
+msgstr "Sterge setarile GUI:"
+
+#: flatcamGUI/FlatCAMGUI.py:3078
+msgid ""
+"Clear the GUI settings for FlatCAM,\n"
+"such as: layout, gui state, style, hdpi support etc."
+msgstr ""
+"Sterge setarile GUI pentru FlatCAM,\n"
+"cum ar fi: amplasare, stare UI, suport HDPI sau traducerea."
+
+#: flatcamGUI/FlatCAMGUI.py:3081
+msgid "Clear"
+msgstr "Sterge"
+
+#: flatcamGUI/FlatCAMGUI.py:3085
+msgid "Hover Shape:"
+msgstr "Forma Hover:"
+
+#: flatcamGUI/FlatCAMGUI.py:3087
+msgid ""
+"Enable display of a hover shape for FlatCAM objects.\n"
+"It is displayed whenever the mouse cursor is hovering\n"
+"over any kind of not-selected object."
+msgstr ""
+"Activează o forma când se tine mouse-ul deasupra unui obiect\n"
+"in canvas-ul FlatCAM. Forma este afișată doar daca obiectul \n"
+"nu este selectat."
+
+#: flatcamGUI/FlatCAMGUI.py:3128
+msgid "Are you sure you want to delete the GUI Settings? \n"
+msgstr "Esti sigur că dorești să stergi setarile GUI?\n"
+
+#: flatcamGUI/FlatCAMGUI.py:3131
+msgid "Clear GUI Settings"
+msgstr "Sterge Setarile GUI"
+
+#: flatcamGUI/FlatCAMGUI.py:3144
+msgid "[success] GUI settings deleted ..."
+msgstr "[success] Setarile GUI au fost sterse ..."
+
+#: flatcamGUI/FlatCAMGUI.py:3151
+msgid "App Preferences"
+msgstr "Preferințele Aplicatie"
+
+#: flatcamGUI/FlatCAMGUI.py:3157
+msgid "<b>Units:</b>"
+msgstr "<b>Unitati:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3158
+msgid ""
+"The default value for FlatCAM units.\n"
+"Whatever is selected here is set every time\n"
+"FLatCAM is started."
+msgstr ""
+"Unitatea de masura pt FlatCAM.\n"
+"Este setata la fiecare pornire a programului."
+
+#: flatcamGUI/FlatCAMGUI.py:3165
+msgid "<b>APP. LEVEL:</b>"
+msgstr "<b>Nivel aplic.:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3166
+msgid ""
+"Choose the default level of usage for FlatCAM.\n"
+"BASIC level -> reduced functionality, best for beginner's.\n"
+"ADVANCED level -> full functionality.\n"
+"\n"
+"The choice here will influence the parameters in\n"
+"the Selected Tab for all kinds of FlatCAM objects."
+msgstr ""
+"Nivelul default de utilizare pt FlatCAM.\n"
+"Nivel BAZA -> functionalitate simplificata, potrivit pt incepatori\n"
+"Nivel AVANSAT -> functionalitate completa.\n"
+"\n"
+"Alegerea efectuata aici va influenta ce aparamtri sunt disponibili\n"
+"in Tab-ul SELECTAT dar și in alte parti ale FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:3171 flatcamGUI/FlatCAMGUI.py:3775
+msgid "Basic"
+msgstr "Baza"
+
+#: flatcamGUI/FlatCAMGUI.py:3172
+msgid "Advanced"
+msgstr "Avansat"
+
+#: flatcamGUI/FlatCAMGUI.py:3175
+msgid "<b>Languages:</b>"
+msgstr "<b>Traduceri:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3176
+msgid "Set the language used throughout FlatCAM."
+msgstr "Setează limba folosita pentru textele din FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:3179
+msgid "Apply Language"
+msgstr "Aplica Traducere"
+
+#: flatcamGUI/FlatCAMGUI.py:3182
+msgid "Shell at StartUp:"
+msgstr "Shell la pornire:"
+
+#: flatcamGUI/FlatCAMGUI.py:3184 flatcamGUI/FlatCAMGUI.py:3189
+msgid ""
+"Check this box if you want the shell to\n"
+"start automatically at startup."
+msgstr ""
+"Bifează in cazul in care se doreste pornirea\n"
+"automata a ferestrei Shell (linia de comanda)\n"
+"la initializarea aplicatiei."
+
+#: flatcamGUI/FlatCAMGUI.py:3194
+msgid "Version Check:"
+msgstr "Verificare versiune:"
+
+#: flatcamGUI/FlatCAMGUI.py:3196 flatcamGUI/FlatCAMGUI.py:3201
+msgid ""
+"Check this box if you want to check\n"
+"for a new version automatically at startup."
+msgstr ""
+"Bifează daca se doreste verificarea automata\n"
+"daca exista o versiune mai noua,\n"
+"la pornirea aplicatiei."
+
+#: flatcamGUI/FlatCAMGUI.py:3206
+msgid "Send Stats:"
+msgstr "Statistici:"
+
+#: flatcamGUI/FlatCAMGUI.py:3208 flatcamGUI/FlatCAMGUI.py:3213
+msgid ""
+"Check this box if you agree to send anonymous\n"
+"stats automatically at startup, to help improve FlatCAM."
+msgstr ""
+"Bifează daca esti de acord ca aplicaţia să trimita la pornire\n"
+"un set de informatii cu privire la modul in care folosești\n"
+"aplicaţia. In acest fel dezvoltatorii vor sti unde să se focalizeze\n"
+"in crearea de inbunatatiri."
+
+#: flatcamGUI/FlatCAMGUI.py:3220
+msgid "<b>Pan Button:</b>"
+msgstr "Buton Pan (miscare):"
+
+#: flatcamGUI/FlatCAMGUI.py:3221
+msgid ""
+"Select the mouse button to use for panning:\n"
+"- MMB --> Middle Mouse Button\n"
+"- RMB --> Right Mouse Button"
+msgstr ""
+"Selectează butonul folosit pentru 'miscare':\n"
+"- MMB - butonul din mijloc al mouse-ului\n"
+"- RMB - butonul in dreapta al mouse-ului."
+
+#: flatcamGUI/FlatCAMGUI.py:3224
+msgid "MMB"
+msgstr "MMB"
+
+#: flatcamGUI/FlatCAMGUI.py:3225
+msgid "RMB"
+msgstr "RMB"
+
+#: flatcamGUI/FlatCAMGUI.py:3228
+msgid "<b>Multiple Sel:</b>"
+msgstr "<b>Sel. multipla:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3229
+msgid "Select the key used for multiple selection."
+msgstr "Selectează tasta folosita pentru selectia multipla."
+
+#: flatcamGUI/FlatCAMGUI.py:3230
+msgid "CTRL"
+msgstr "CTRL"
+
+#: flatcamGUI/FlatCAMGUI.py:3231
+msgid "SHIFT"
+msgstr "SHIFT"
+
+#: flatcamGUI/FlatCAMGUI.py:3234
+msgid "Project at StartUp:"
+msgstr "Proiect la pornire:"
+
+#: flatcamGUI/FlatCAMGUI.py:3236 flatcamGUI/FlatCAMGUI.py:3241
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"to be shown automatically at startup."
+msgstr ""
+"Bifează aici daca dorești ca zona Notebook să fie\n"
+"afișată automat la pornire."
+
+#: flatcamGUI/FlatCAMGUI.py:3246
+msgid "Project AutoHide:"
+msgstr "Ascundere Proiect:"
+
+#: flatcamGUI/FlatCAMGUI.py:3248 flatcamGUI/FlatCAMGUI.py:3254
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"hide automatically when there are no objects loaded and\n"
+"to show whenever a new object is created."
+msgstr ""
+"Bifează daca dorești ca zona Notebook să fie ascunsă automat\n"
+"când nu sunt obiecte incarcate și să fie afișată automat\n"
+"când un obiect nou este creat/incarcat."
+
+#: flatcamGUI/FlatCAMGUI.py:3260
+msgid "<b>Enable ToolTips:</b>"
+msgstr "<b>Activează ToolTip-uri:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3262 flatcamGUI/FlatCAMGUI.py:3267
+msgid ""
+"Check this box if you want to have toolTips displayed\n"
+"when hovering with mouse over items throughout the App."
+msgstr ""
+"Bifează daca dorești ca să fie afisate texte explicative când se\n"
+"tine mouse-ul deasupra diverselor texte din FlatCAM."
+
+#: flatcamGUI/FlatCAMGUI.py:3301
+msgid "Save Compressed Project"
+msgstr "Salvează Proiectul comprimat"
+
+#: flatcamGUI/FlatCAMGUI.py:3303
+msgid ""
+"Whether to save a compressed or uncompressed project.\n"
+"When checked it will save a compressed FlatCAM project."
+msgstr ""
+"Daca să se salveze proiectul in mod arhivat.\n"
+"Când este bifat aici, se va salva o arhiva a proiectului\n"
+"lucru care poate reduce dimensiunea semnificativ."
+
+#: flatcamGUI/FlatCAMGUI.py:3314
+msgid "Compression Level:"
+msgstr "Nivel compresie:"
+
+#: flatcamGUI/FlatCAMGUI.py:3316
+msgid ""
+"The level of compression used when saving\n"
+"a FlatCAM project. Higher value means better compression\n"
+"but require more RAM usage and more processing time."
+msgstr ""
+"Nivelul de compresie folosit când se salvează un proiect FlatCAM.\n"
+"Valorile posibile sunt [0 ... 9]. Valoarea 0 inseamna compresie minimala\n"
+"dar cu consum redus de resurse in timp ce valoarea 9 cere multa memorie RAM\n"
+"și in plus, durează semnificativ mai mult."
+
+#: flatcamGUI/FlatCAMGUI.py:3342 flatcamGUI/FlatCAMGUI.py:3583
+#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4562
+#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:576
+#: flatcamGUI/ObjectUI.py:901 flatcamGUI/ObjectUI.py:1415
+msgid "<b>Plot Options:</b>"
+msgstr "Opțiuni afișare:"
+
+#: flatcamGUI/FlatCAMGUI.py:3349 flatcamGUI/FlatCAMGUI.py:3595
+#: flatcamGUI/ObjectUI.py:577
+msgid "Solid"
+msgstr "Solid"
+
+#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/ObjectUI.py:158
+msgid "Solid color polygons."
+msgstr "Poligoane color solide."
+
+#: flatcamGUI/FlatCAMGUI.py:3356
+msgid "M-Color"
+msgstr "M-Color"
+
+#: flatcamGUI/FlatCAMGUI.py:3358 flatcamGUI/ObjectUI.py:166
+msgid "Draw polygons in different colors."
+msgstr ""
+"Desenează poligoanele Gerber din multiple culori\n"
+"alese in mod aleator."
+
+#: flatcamGUI/FlatCAMGUI.py:3363 flatcamGUI/FlatCAMGUI.py:3589
+#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/ObjectUI.py:172
+msgid "Plot"
+msgstr "Afisează"
+
+#: flatcamGUI/FlatCAMGUI.py:3365 flatcamGUI/FlatCAMGUI.py:4244
+#: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:617
+#: flatcamGUI/ObjectUI.py:947 flatcamGUI/ObjectUI.py:1502
+msgid "Plot (show) this object."
+msgstr "Afisează (arata) acest obiect."
+
+#: flatcamGUI/FlatCAMGUI.py:3370 flatcamGUI/FlatCAMGUI.py:4251
+#: flatcamGUI/FlatCAMGUI.py:4598
+msgid "Circle Steps:"
+msgstr "Aprox. Cerc"
+
+#: flatcamGUI/FlatCAMGUI.py:3372
+msgid ""
+"The number of circle steps for Gerber \n"
+"circular aperture linear approximation."
+msgstr ""
+"Numărul de segmente utilizate pentru\n"
+"aproximarea lineara a aperturilor Gerber circulare."
+
+#: flatcamGUI/FlatCAMGUI.py:3387
+msgid "Gerber Options"
+msgstr "Opțiuni Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:3391 flatcamGUI/ObjectUI.py:322
+msgid "<b>Isolation Routing:</b>"
+msgstr "<b>Izolare:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3393 flatcamGUI/ObjectUI.py:324
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut outside polygons."
+msgstr ""
+"Crează un obiect tip Geometrie cu trasee\n"
+"care să fie taiate in afara poligoanelor,\n"
+"urmarindu-le conturul."
+
+#: flatcamGUI/FlatCAMGUI.py:3404 flatcamGUI/FlatCAMGUI.py:3961
+#: flatcamGUI/FlatCAMGUI.py:4886 flatcamGUI/ObjectUI.py:856
+#: flatcamGUI/ObjectUI.py:872
+msgid "Diameter of the cutting tool."
+msgstr "Diametrul uneltei taietoare."
+
+#: flatcamGUI/FlatCAMGUI.py:3411
+msgid "Width (# passes):"
+msgstr "Latime(# treceri):"
+
+#: flatcamGUI/FlatCAMGUI.py:3413 flatcamGUI/ObjectUI.py:346
+msgid ""
+"Width of the isolation gap in\n"
+"number (integer) of tool widths."
+msgstr ""
+"Lăţimea spatiului de izolare\n"
+"in număr intreg de grosimi ale uneltei."
+
+#: flatcamGUI/FlatCAMGUI.py:3421 flatcamGUI/ObjectUI.py:354
+msgid "Pass overlap:"
+msgstr "Suprapunere:"
+
+#: flatcamGUI/FlatCAMGUI.py:3423 flatcamGUI/ObjectUI.py:356
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means an overlap of 25%% from the tool diameter found "
+"above."
+msgstr ""
+"Cat de mult (in fractii ale diametrului uneltei) să se suprapună trecerea "
+"curentă\n"
+"peste cea anterioară. \n"
+"Exemplu:\n"
+"O valoare de 0.25 reprezinta o suprapunere de 25%% din diametrul uneltei."
+
+#: flatcamGUI/FlatCAMGUI.py:3431 flatcamGUI/ObjectUI.py:366
+msgid "Milling Type:"
+msgstr "Tip Frezare:"
+
+#: flatcamGUI/FlatCAMGUI.py:3433 flatcamGUI/ObjectUI.py:368
+msgid ""
+"Milling type:\n"
+"- climb / best for precision milling and to reduce tool usage\n"
+"- conventional / useful when there is no backlash compensation"
+msgstr ""
+"Tipul de frezare:\n"
+"- urcare -> potrivit pentru frezare de precizie și pt a reduce uzura "
+"uneltei\n"
+"- conventional -> pentru cazul când nu exista o compensare a 'backlash-ului'"
+
+#: flatcamGUI/FlatCAMGUI.py:3438 flatcamGUI/ObjectUI.py:373
+msgid "Climb"
+msgstr "Urcare"
+
+#: flatcamGUI/FlatCAMGUI.py:3439 flatcamGUI/ObjectUI.py:374
+msgid "Conv."
+msgstr "Conv."
+
+#: flatcamGUI/FlatCAMGUI.py:3443
+msgid "Combine Passes"
+msgstr "Combina"
+
+#: flatcamGUI/FlatCAMGUI.py:3445 flatcamGUI/ObjectUI.py:380
+msgid "Combine all passes into one object"
+msgstr "Combina toate trecerile intr-un singur obiect"
+
+#: flatcamGUI/FlatCAMGUI.py:3450
+msgid "<b>Clear non-copper:</b>"
+msgstr "<b>Curăță non-Cu:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3452 flatcamGUI/FlatCAMGUI.py:4774
+#: flatcamGUI/ObjectUI.py:457
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut all non-copper regions."
+msgstr ""
+"Crează un obiect tip Geometrie cu traiectorii unealta\n"
+"care să curete de cupru toate zonele unde se doreste să nu \n"
+"fie cupru."
+
+#: flatcamGUI/FlatCAMGUI.py:3461 flatcamGUI/FlatCAMGUI.py:3487
+#: flatcamGUI/ObjectUI.py:501 flatcamGUI/ObjectUI.py:535
+msgid "Boundary Margin:"
+msgstr "Margine:"
+
+#: flatcamGUI/FlatCAMGUI.py:3463 flatcamGUI/ObjectUI.py:503
+msgid ""
+"Specify the edge of the PCB\n"
+"by drawing a box around all\n"
+"objects with this minimum\n"
+"distance."
+msgstr ""
+"Specificati marginea PCB-ului prin desenarea\n"
+"unei forme patratice de jur imprejurul la toate obiectele\n"
+"la o distanta minima cu valoarea din acest câmp."
+
+#: flatcamGUI/FlatCAMGUI.py:3473 flatcamGUI/FlatCAMGUI.py:3496
+msgid "Rounded corners"
+msgstr "C. rotunjite"
+
+#: flatcamGUI/FlatCAMGUI.py:3475
+msgid ""
+"Creates a Geometry objects with polygons\n"
+"covering the copper-free areas of the PCB."
+msgstr ""
+"Crează un obiect tip Geometrie conținând poligoane\n"
+"care acopera toate suprafetele libere de cupru ale PCB-ului."
+
+#: flatcamGUI/FlatCAMGUI.py:3481 flatcamGUI/ObjectUI.py:525
+msgid "<b>Bounding Box:</b>"
+msgstr "<b>Forma înconjurătoare::</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3489 flatcamGUI/ObjectUI.py:537
+msgid ""
+"Distance of the edges of the box\n"
+"to the nearest polygon."
+msgstr ""
+"Distanta de la marginile formei înconjurătoare\n"
+"pana la cel mai apropiat poligon."
+
+#: flatcamGUI/FlatCAMGUI.py:3498 flatcamGUI/ObjectUI.py:547
+msgid ""
+"If the bounding box is \n"
+"to have rounded corners\n"
+"their radius is equal to\n"
+"the margin."
+msgstr ""
+"Daca forma înconjurătoare să aibă colțuri rotunjite.\n"
+"Raza acesor colțuri va fi egală cu parametrul Margine."
+
+#: flatcamGUI/FlatCAMGUI.py:3512
+msgid "Gerber Adv. Options"
+msgstr "Opțiuni Av. Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:3516
+msgid "<b>Advanced Param.:</b>"
+msgstr "<b>Param. avansati.:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3518
+msgid ""
+"A list of Gerber advanced parameters.\n"
+"Those parameters are available only for\n"
+"Advanced App. Level."
+msgstr ""
+"O lista de parametri Gerber avansati.\n"
+"Acesti parametri sunt disponibili doar\n"
+"când este selectat Nivelul Avansat pentru\n"
+"aplicatie in Preferințe - > General"
+
+#: flatcamGUI/FlatCAMGUI.py:3528 flatcamGUI/ObjectUI.py:385
+msgid "\"Follow\""
+msgstr "\"Urmareste\""
+
+#: flatcamGUI/FlatCAMGUI.py:3530 flatcamGUI/ObjectUI.py:387
+msgid ""
+"Generate a 'Follow' geometry.\n"
+"This means that it will cut through\n"
+"the middle of the trace."
+msgstr ""
+"Generează o geometrie de tip 'urmaritor'.\n"
+"Mai exact, in loc să se genereze un poligon se va genera o 'linie'.\n"
+"In acest fel se taie prin mijlocul unui traseu și nu in jurul lui."
+
+#: flatcamGUI/FlatCAMGUI.py:3538
+msgid "Table Show/Hide"
+msgstr "Arata/Ascunde Tabela"
+
+#: flatcamGUI/FlatCAMGUI.py:3540
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"Also, on hide, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"Comuta afișarea tabelei de aperturi Gerber.\n"
+"când se ascunde aceasta, se vor sterge și toate\n"
+"posibil afisatele marcaje ale aperturilor."
+
+#: flatcamGUI/FlatCAMGUI.py:3548
+msgid "Ap. Scale Factor:"
+msgstr "Factor scalare ap.:"
+
+#: flatcamGUI/FlatCAMGUI.py:3550 flatcamGUI/ObjectUI.py:254
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+"Schimba dimensiunea aperturilor selectate.\n"
+"Factor cu care se multiplica geometriile\n"
+"acestui obiect."
+
+#: flatcamGUI/FlatCAMGUI.py:3560
+msgid "Ap. Buffer Factor:"
+msgstr "Factor bufer ap.:"
+
+#: flatcamGUI/FlatCAMGUI.py:3562 flatcamGUI/ObjectUI.py:275
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to expand/shrink\n"
+"geometric features of this object."
+msgstr ""
+"Schimba dimensiunea aperturilor selectate.\n"
+"Valoare cu care se mareste/micsorează\n"
+"geometriile acestui obiect."
+
+#: flatcamGUI/FlatCAMGUI.py:3580
+msgid "Excellon General"
+msgstr "Excellon General"
+
+#: flatcamGUI/FlatCAMGUI.py:3602
+msgid "<b>Excellon Format:</b>"
+msgstr "<b>Formatul Excellon</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3604
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period.\n"
+"\n"
+"Possible presets:\n"
+"\n"
+"PROTEUS 3:3 MM LZ\n"
+"DipTrace 5:2 MM TZ\n"
+"DipTrace 4:3 MM LZ\n"
+"\n"
+"EAGLE 3:3 MM TZ\n"
+"EAGLE 4:3 MM TZ\n"
+"EAGLE 2:5 INCH TZ\n"
+"EAGLE 3:5 INCH TZ\n"
+"\n"
+"ALTIUM 2:4 INCH LZ\n"
+"Sprint Layout 2:4 INCH LZ\n"
+"KiCAD 3:5 INCH TZ"
+msgstr ""
+"Fişierele de găurire NC drills numite generic Excellon\n"
+"sunt fişiere care nu respecta clar un format.\n"
+"Fiecare companie și-a aplicat propria viziune asa incat\n"
+"s-a ajuns că nu se poate face o recunoastere automata\n"
+"a formatului Excellon in fiecare caz.\n"
+"Aici putem seta manual ce format ne asteptam să gasim,\n"
+"când coordonatele nu sunt reprezentate cu\n"
+"separator zecimal.\n"
+"\n"
+"Setari posibilie:\n"
+"\n"
+"PROTEUS 3:3 MM LZ\n"
+"DipTrace 5:2 MM TZ\n"
+"DipTrace 4:3 MM LZ\n"
+"\n"
+"EAGLE 3:3 MM TZ\n"
+"EAGLE 4:3 MM TZ\n"
+"EAGLE 2:5 INCH TZ\n"
+"EAGLE 3:5 INCH TZ\n"
+"\n"
+"ALTIUM 2:4 INCH LZ\n"
+"Sprint Layout 2:4 INCH LZ\n"
+"KiCAD 3:5 INCH TZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3629
+msgid "INCH:"
+msgstr "Inch"
+
+#: flatcamGUI/FlatCAMGUI.py:3632
+msgid "Default values for INCH are 2:4"
+msgstr ""
+"Valorile default pentru Inch sunt 2:4\n"
+"adica 2 parti intregi și 4 zecimale."
+
+#: flatcamGUI/FlatCAMGUI.py:3640 flatcamGUI/FlatCAMGUI.py:3673
+#: flatcamGUI/FlatCAMGUI.py:4150
+msgid ""
+"This numbers signify the number of digits in\n"
+"the whole part of Excellon coordinates."
+msgstr ""
+"Acest număr reprezinta numărul de digiti din partea\n"
+"intreaga a coordonatelor Excellon."
+
+#: flatcamGUI/FlatCAMGUI.py:3654 flatcamGUI/FlatCAMGUI.py:3687
+#: flatcamGUI/FlatCAMGUI.py:4164
+msgid ""
+"This numbers signify the number of digits in\n"
+"the decimal part of Excellon coordinates."
+msgstr ""
+"Acest număr reprezinta numărul de digiti din partea\n"
+"zecimala a coordonatelor Excellon."
+
+#: flatcamGUI/FlatCAMGUI.py:3662
+msgid "METRIC:"
+msgstr "Metric"
+
+#: flatcamGUI/FlatCAMGUI.py:3665
+msgid "Default values for METRIC are 3:3"
+msgstr ""
+"Valorile default pentru Metric sunt 3:3\n"
+"adica 3 parti intregi și 3 zecimale."
+
+#: flatcamGUI/FlatCAMGUI.py:3696
+msgid "Default <b>Zeros</b>:"
+msgstr "Suprimare <b>Zero</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:3699 flatcamGUI/FlatCAMGUI.py:4199
+msgid ""
+"This sets the type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"Aici se setează tipul de suprimare a zerourilor,\n"
+"in cazul unui fişier Excellon.\n"
+"LZ = zerourile din fata numărului sunt pastrate și\n"
+"cele de la final sunt indepartate.\n"
+"TZ = zerourile din fata numărului sunt indepartate și\n"
+"cele de la final sunt pastrate.\n"
+"(Invers fata de fişierele Gerber)."
+
+#: flatcamGUI/FlatCAMGUI.py:3707 flatcamGUI/FlatCAMGUI.py:4206
+msgid "LZ"
+msgstr "LZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3708 flatcamGUI/FlatCAMGUI.py:4207
+msgid "TZ"
+msgstr "TZ"
+
+#: flatcamGUI/FlatCAMGUI.py:3710
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"Aici se setează tipul de suprimare a zerourilor,\n"
+"in cazul unui fişier Excellon.\n"
+"Daca nu se poate face detectia automata la parsarea\n"
+"fişierului Excellon, se folosesc aceste valori.\n"
+"LZ = zerourile din fata numărului sunt pastrate și\n"
+"cele de la final sunt indepartate.\n"
+"TZ = zerourile din fata numărului sunt indepartate și\n"
+"cele de la final sunt pastrate.\n"
+"(Invers fata de fişierele Gerber)."
+
+#: flatcamGUI/FlatCAMGUI.py:3724
+msgid "Default <b>Units</b>:"
+msgstr "<b>Unitati</b> Excellon:"
+
+#: flatcamGUI/FlatCAMGUI.py:3727
+msgid ""
+"This sets the default units of Excellon files.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+"Aceasta valoare este valoarea la care se recurge\n"
+"in cazul in care nu se poate determina automat\n"
+"atunci când se face parsarea fişierlui Excellon.\n"
+"Unele fişiere de găurire (Excellon) nu au header\n"
+"(unde se gasesc unitatile) și atunci se va folosi\n"
+"aceasta valoare."
+
+#: flatcamGUI/FlatCAMGUI.py:3735 flatcamGUI/FlatCAMGUI.py:4126
+msgid "INCH"
+msgstr "Inch"
+
+#: flatcamGUI/FlatCAMGUI.py:3736 flatcamGUI/FlatCAMGUI.py:4127
+msgid "MM"
+msgstr "MM"
+
+#: flatcamGUI/FlatCAMGUI.py:3738
+msgid ""
+"This sets the units of Excellon files.\n"
+"Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+"Aceasta valoare este valoarea la care se recurge\n"
+"in cazul in care nu se poate determina automat\n"
+"atunci când se face parsarea fişierlui Excellon.\n"
+"Unele fişiere de găurire (Excellon) nu au header\n"
+"(unde se gasesc unitatile) și atunci se va folosi\n"
+"aceasta valoare."
+
+#: flatcamGUI/FlatCAMGUI.py:3754
+msgid "<b>Excellon Optimization:</b>"
+msgstr "<b>Optimizarea traseului Excellon:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3761
+msgid "Algorithm:   "
+msgstr "Algoritm:"
+
+#: flatcamGUI/FlatCAMGUI.py:3764 flatcamGUI/FlatCAMGUI.py:3777
+msgid ""
+"This sets the optimization type for the Excellon drill path.\n"
+"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
+"Guided Local Path is used. Default search time is 3sec.\n"
+"Use set_sys excellon_search_time value Tcl Command to set other values.\n"
+"If Basic is checked then Google OR-Tools Basic algorithm is used.\n"
+"\n"
+"If DISABLED, then FlatCAM works in 32bit mode and it uses \n"
+"Travelling Salesman algorithm for path optimization."
+msgstr ""
+"Se setează tipul de optimizare pentru traiectoria parcursa între\n"
+"găurile fişierului Excellon. Avand in vedere posibilul număr mare de găuri,\n"
+"folosirea unei optimizari adecvate poate aduce un castig important in "
+"viteza\n"
+"de procesare CNC.\n"
+"MH = algoritm Google OR Tools cu optimiz. ghidata local meta-heuristic.\n"
+"Durata default pentru optimizare este de 3 secunde.\n"
+"Basic = algoritm Google OR Tools cu optimiz. de baza.\n"
+"\n"
+"Daca ambele sunt dezactivate atunci rulam varainta de FlatCAM pe 32bit\n"
+"care nu este compatibila cu pachetul OR Tools și in acest caz se foloseşte\n"
+"algoritmul default: Travelling Salesman (vanzatorul ambulant)."
+
+#: flatcamGUI/FlatCAMGUI.py:3774
+msgid "MH"
+msgstr "MH"
+
+#: flatcamGUI/FlatCAMGUI.py:3789
+msgid "Optimization Time:   "
+msgstr "Durata optimiz.:"
+
+#: flatcamGUI/FlatCAMGUI.py:3792
+msgid ""
+"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
+"maximum threshold for how much time is spent doing the\n"
+"path optimization. This max duration is set here.\n"
+"In seconds."
+msgstr ""
+"Când se foloseşte optimziarea MH, aceasta valoare\n"
+"reprezinta cat timp se sta pentru fiecare element in\n"
+"incercarea de a afla calea optima."
+
+#: flatcamGUI/FlatCAMGUI.py:3833
+msgid "Excellon Options"
+msgstr "Opțiuni Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:3836 flatcamGUI/ObjectUI.py:655
+msgid "<b>Create CNC Job</b>"
+msgstr "<b>Crează CNCJob</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3838
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+"Parametrii folositi pentru a crea un obiect FlatCAM tip CNCJob\n"
+"din acest obiect Excellon."
+
+#: flatcamGUI/FlatCAMGUI.py:3846 flatcamGUI/FlatCAMGUI.py:4302
+#: flatcamGUI/FlatCAMGUI.py:5301 flatcamGUI/ObjectUI.py:666
+#: flatcamGUI/ObjectUI.py:1130 flatcamTools/ToolCalculators.py:108
+msgid "Cut Z:"
+msgstr "Z tăiere:"
+
+#: flatcamGUI/FlatCAMGUI.py:3848 flatcamGUI/ObjectUI.py:668
+msgid ""
+"Drill depth (negative)\n"
+"below the copper surface."
+msgstr ""
+"Adâncimea de tăiere (valoare negativă).\n"
+"Daca se foloseşte o val. pozitivă, aplicaţia\n"
+"va incerca in mod automat să schimbe semnul."
+
+#: flatcamGUI/FlatCAMGUI.py:3855 flatcamGUI/FlatCAMGUI.py:4335
+#: flatcamGUI/ObjectUI.py:676 flatcamGUI/ObjectUI.py:1166
+msgid "Travel Z:"
+msgstr "Z Deplasare:"
+
+#: flatcamGUI/FlatCAMGUI.py:3857 flatcamGUI/ObjectUI.py:678
+msgid ""
+"Tool height when travelling\n"
+"across the XY plane."
+msgstr ""
+"Înălţimea la care unealta se deplasează\n"
+"in planul X-Y, fără a efectua taieri, adica\n"
+"in afara materialului."
+
+#: flatcamGUI/FlatCAMGUI.py:3865 flatcamGUI/FlatCAMGUI.py:4345
+msgid "Tool change:"
+msgstr "Schimbare unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:4347
+#: flatcamGUI/ObjectUI.py:688
+msgid ""
+"Include tool-change sequence\n"
+"in G-Code (Pause for tool change)."
+msgstr ""
+"Include o secventa  de schimbare unealta\n"
+"in codul G-Code (pauza pentru schimbare unealta).\n"
+"De obicei este folosita comanda G-Code M6."
+
+#: flatcamGUI/FlatCAMGUI.py:3874 flatcamGUI/FlatCAMGUI.py:4355
+msgid "Toolchange Z:"
+msgstr "Z schimb. unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:3876 flatcamGUI/FlatCAMGUI.py:4357
+msgid "Toolchange Z position."
+msgstr ""
+"Înălţimea la care se efectuează schimbarea uneltei.\n"
+"Poate reprezenta Înălţimea unde se gaseste un\n"
+"'toolchanger' automat sau acolo unde utilizatorul\n"
+"schimba unealta manual."
+
+#: flatcamGUI/FlatCAMGUI.py:3882
+msgid "Feedrate:"
+msgstr "Feedrate:"
+
+#: flatcamGUI/FlatCAMGUI.py:3884
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute)."
+msgstr ""
+"Viteza cu care se misca unealta (burghiul) când se fac\n"
+"operatii de găurire. In unitati pe minut."
+
+#: flatcamGUI/FlatCAMGUI.py:3892
+msgid "Spindle Speed:"
+msgstr "Viteza Motor:"
+
+#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:4387
+#: flatcamGUI/ObjectUI.py:752
+msgid ""
+"Speed of the spindle\n"
+"in RPM (optional)"
+msgstr ""
+"Viteza cu care se roteste motorul ('Spindle').\n"
+"In RPM (rotatii pe minut).\n"
+"Acest parametru este optional și se poate lasa gol\n"
+"daca nu se foloseşte."
+
+#: flatcamGUI/FlatCAMGUI.py:3902 flatcamGUI/FlatCAMGUI.py:4395
+#: flatcamGUI/ObjectUI.py:760 flatcamGUI/ObjectUI.py:1289
+msgid "Dwell:"
+msgstr "Pauza:"
+
+#: flatcamGUI/FlatCAMGUI.py:3904 flatcamGUI/FlatCAMGUI.py:4397
+#: flatcamGUI/ObjectUI.py:762 flatcamGUI/ObjectUI.py:1292
+msgid ""
+"Pause to allow the spindle to reach its\n"
+"speed before cutting."
+msgstr ""
+"O pauza care permite motorului să ajunga la turatia specificata,\n"
+"inainte de a incepe miscarea spre poziţia de tăiere (găurire)."
+
+#: flatcamGUI/FlatCAMGUI.py:3907 flatcamGUI/FlatCAMGUI.py:4400
+msgid "Duration:"
+msgstr "Durata:"
+
+#: flatcamGUI/FlatCAMGUI.py:3909 flatcamGUI/FlatCAMGUI.py:4402
+#: flatcamGUI/ObjectUI.py:767 flatcamGUI/ObjectUI.py:1299
+msgid "Number of milliseconds for spindle to dwell."
+msgstr "Timpul (ori secunde ori milisec) cat se sta in pauza."
+
+#: flatcamGUI/FlatCAMGUI.py:3921 flatcamGUI/FlatCAMGUI.py:4412
+#: flatcamGUI/ObjectUI.py:775
+msgid "Postprocessor:"
+msgstr "Postprocesor:"
+
+#: flatcamGUI/FlatCAMGUI.py:3923
+msgid ""
+"The postprocessor file that dictates\n"
+"gcode output."
+msgstr ""
+"Un fişier care prelucrează codul G-Code astfel incat să\n"
+"respecte un anumit format care să fie inteles de diverse\n"
+"utilaje. Este responsabil de 'personalizarea' G-Code."
+
+#: flatcamGUI/FlatCAMGUI.py:3933
+msgid "<b>Gcode:    </b>"
+msgstr "<b>G-Code:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3935
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to drills."
+msgstr ""
+"Alege ce anume să fie folot ca sursa pentru generarea de GCode:\n"
+"- Găuri\n"
+"- Sloturi\n"
+"- Ambele.\n"
+"Când se alege Sloturi sau Ambele, sloturile vor fi convertite in serii de "
+"găuri."
+
+#: flatcamGUI/FlatCAMGUI.py:3940 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:823
+msgid "Drills"
+msgstr "Găuri"
+
+#: flatcamGUI/FlatCAMGUI.py:3941 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:824
+msgid "Slots"
+msgstr "Sloturi"
+
+#: flatcamGUI/FlatCAMGUI.py:3942 flatcamGUI/ObjectUI.py:825
+msgid "Both"
+msgstr "Ambele"
+
+#: flatcamGUI/FlatCAMGUI.py:3951 flatcamGUI/ObjectUI.py:840
+msgid "<b>Mill Holes</b>"
+msgstr "<b>Frezare găuri</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:3953 flatcamGUI/ObjectUI.py:842
+msgid "Create Geometry for milling holes."
+msgstr "Crează un obiect tip Geometrie pentru frezarea găurilor."
+
+#: flatcamGUI/FlatCAMGUI.py:3959
+msgid "Drill Tool dia:"
+msgstr "Dia. Burghiu Găurire:"
+
+#: flatcamGUI/FlatCAMGUI.py:3966
+msgid "Slot Tool dia:"
+msgstr "Dia. Freza Slot:"
+
+#: flatcamGUI/FlatCAMGUI.py:3968
+msgid ""
+"Diameter of the cutting tool\n"
+"when milling slots."
+msgstr "Diametrul frezei când se frezează sloturile."
+
+#: flatcamGUI/FlatCAMGUI.py:3980
+msgid "Defaults"
+msgstr "Val. Implicite"
+
+#: flatcamGUI/FlatCAMGUI.py:3993
+msgid "Excellon Adv. Options"
+msgstr "Opțiuni Avans. Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:3999 flatcamGUI/FlatCAMGUI.py:4435
+msgid "<b>Advanced Options:</b>"
+msgstr "<b>Opțiuni avansate:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4001
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object that are shown when App Level is Advanced."
+msgstr ""
+"Parametri folositi pentru a crea un obiect CNCJob\n"
+"pt acest obiect Excellon, parametri care sunt disponibili\n"
+"doar in modul Avansat al aplicatiei."
+
+#: flatcamGUI/FlatCAMGUI.py:4009
+msgid "Offset Z:"
+msgstr "Z ofset:"
+
+#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:645
+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"
+"The value here can compensate the Cut Z parameter."
+msgstr ""
+"Unele burghie (in special cele cu diametru mai mare)\n"
+"au nevoie să gaureasca mai adanc pentru a depasi conul\n"
+"din vârful burghiului astfel incat diametrul găurii de iesire\n"
+"să fie cel dorit.\n"
+"Valoarea de aici efectuează o compensare asupr\n"
+"parametrului >Z tăiere<."
+
+#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:4446
+msgid "Toolchange X,Y:"
+msgstr "X,Y schimb. unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:4020 flatcamGUI/FlatCAMGUI.py:4448
+msgid "Toolchange X,Y position."
+msgstr "Poziţia X,Y in format (x,y) unde se face schimbarea uneltei."
+
+#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:4455
+#: flatcamGUI/ObjectUI.py:705
+msgid "Start move Z:"
+msgstr "Z pornire:"
+
+#: flatcamGUI/FlatCAMGUI.py:4028
+msgid ""
+"Height of the tool just after start.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Înălţimea uneltei imediat dupa ce se porneste operatia CNC.\n"
+"Lasa casuta goala daca nu se foloseşte."
+
+#: flatcamGUI/FlatCAMGUI.py:4035 flatcamGUI/FlatCAMGUI.py:4465
+#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1212
+msgid "End move Z:"
+msgstr "Z oprire:"
+
+#: flatcamGUI/FlatCAMGUI.py:4037 flatcamGUI/FlatCAMGUI.py:4467
+msgid ""
+"Height of the tool after\n"
+"the last move at the end of the job."
+msgstr "Înălţimea la care se parchează freza dupa ce se termina lucrul."
+
+#: flatcamGUI/FlatCAMGUI.py:4044 flatcamGUI/FlatCAMGUI.py:4475
+#: flatcamGUI/ObjectUI.py:736
+msgid "Feedrate Rapids:"
+msgstr "Feedrate rapizi:"
+
+#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/ObjectUI.py:738
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Viteza de găurire, in unitati pe minut.\n"
+"Corespunde comenzii G0 și este utila doar pentru\n"
+"printerul 3D Marlin, implicit când se foloseşte fişierul\n"
+"postprocesor: Marlin. Ignora aceasta parametru in rest."
+
+#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/FlatCAMGUI.py:4499
+#: flatcamGUI/ObjectUI.py:786 flatcamGUI/ObjectUI.py:1321
+msgid "Probe Z depth:"
+msgstr "Z sonda:"
+
+#: flatcamGUI/FlatCAMGUI.py:4059 flatcamGUI/FlatCAMGUI.py:4501
+#: flatcamGUI/ObjectUI.py:788 flatcamGUI/ObjectUI.py:1324
+msgid ""
+"The maximum depth that the probe is allowed\n"
+"to probe. Negative value, in current units."
+msgstr ""
+"Adâncimea maxima la care este permis sondei să coboare.\n"
+"Are o valoare negativă, in unitatile curente."
+
+#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4509
+#: flatcamGUI/ObjectUI.py:798 flatcamGUI/ObjectUI.py:1335
+msgid "Feedrate Probe:"
+msgstr "Feedrate sonda:"
+
+#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/FlatCAMGUI.py:4511
+#: flatcamGUI/ObjectUI.py:800 flatcamGUI/ObjectUI.py:1338
+msgid "The feedrate used while the probe is probing."
+msgstr "Viteza sondei când aceasta coboara."
+
+#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/FlatCAMGUI.py:4518
+msgid "Fast Plunge:"
+msgstr "Plonjare rapida:"
+
+#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/FlatCAMGUI.py:4520
+msgid ""
+"By checking this, the vertical move from\n"
+"Z_Toolchange to Z_move is done with G0,\n"
+"meaning the fastest speed available.\n"
+"WARNING: the move is done at Toolchange X,Y coords."
+msgstr ""
+"Prin bifarea de aici, miscarea de la Înălţimea unde se face schimbarea "
+"uneltei\n"
+"pana la Înălţimea unde se face deplasarea între taieri, se va face cu "
+"comanda G0.\n"
+"Aceasta inseamna că se va folosi viteza maxima disponibila.\n"
+"\n"
+"ATENTIE: miscarea aceasta pe verticala se face la coordonatele X, Y unde se "
+"schimba\n"
+"unealta. Daca aveti ceva plasat sub unealta ceva se va strica."
+
+#: flatcamGUI/FlatCAMGUI.py:4086
+msgid "Fast Retract:"
+msgstr "Retragere rapida:"
+
+#: flatcamGUI/FlatCAMGUI.py:4088
+msgid ""
+"Exit hole strategy.\n"
+" - When uncheked, while exiting the drilled hole the drill bit\n"
+"will travel slow, with set feedrate (G1), up to zero depth and then\n"
+"travel as fast as possible (G0) to the Z Move (travel height).\n"
+" - When checked the travel from Z cut (cut depth) to Z_move\n"
+"(travel height) is done as fast as possible (G0) in one move."
+msgstr ""
+"Strategia de evacuare a găurii tocmai găurite.\n"
+"- când nu este bifat, burghiul va iesi din gaura cu viteza feedrate "
+"setata, \n"
+"G1, pana ajunge la nivelul zero, ulterior ridicându-se pana la Înălţimea de "
+"deplasare\n"
+"cu viteza maxima G0\n"
+"- când este bifat, burghiul se va deplasa de la adâncimea de tăiere pana la "
+"adâncimea\n"
+"de deplasare cu viteza maxima G0, intr-o singura miscare."
+
+#: flatcamGUI/FlatCAMGUI.py:4107
+msgid "Excellon Export"
+msgstr "Export Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:4110
+msgid "<b>Export Options:</b>"
+msgstr "<b>Opțiuni Export::</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4112
+msgid ""
+"The parameters set here are used in the file exported\n"
+"when using the File -> Export -> Export Excellon menu entry."
+msgstr ""
+"Acesti parametri listati aici sunt folositi atunci când\n"
+"se exporta un fişier Excellon folosind:\n"
+"File -> Exporta -> Exporta Excellon"
+
+#: flatcamGUI/FlatCAMGUI.py:4121
+msgid "<b>Units</b>:"
+msgstr "<b>Unitati</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:4123 flatcamGUI/FlatCAMGUI.py:4129
+msgid "The units used in the Excellon file."
+msgstr "Unitatile de masura folosite in fişierul Excellon."
+
+#: flatcamGUI/FlatCAMGUI.py:4135
+msgid "<b>Int/Decimals:</b>"
+msgstr "<b>Int/Zecimale:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4137
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period."
+msgstr ""
+"Fişierele NC, numite usual fişiere Excellon\n"
+"sunt fişiere care pot fi gasite in diverse formate.\n"
+"Aici se setează formatul Excellon când nu se utilizează\n"
+"coordonate cu zecimale."
+
+#: flatcamGUI/FlatCAMGUI.py:4173
+msgid "<b>Format:</b>"
+msgstr "<b>Format:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4175 flatcamGUI/FlatCAMGUI.py:4185
+msgid ""
+"Select the kind of coordinates format used.\n"
+"Coordinates can be saved with decimal point or without.\n"
+"When there is no decimal point, it is required to specify\n"
+"the number of digits for integer part and the number of decimals.\n"
+"Also it will have to be specified if LZ = leading zeros are kept\n"
+"or TZ = trailing zeros are kept."
+msgstr ""
+"Selectati tipul formatului de coordonate folosit.\n"
+"Coordonatele se pot salva cu punct zecimal sau fără.\n"
+"Când nu se foloseşte punctul zecimal ca separator între\n"
+"partea intreaga și partea zecimala, este necesar să se\n"
+"specifice numărul de digiti folosit pentru partea intreaga\n"
+"și numărul de digiti folosit pentru partea zecimala.\n"
+"Trebuie specificat și modul in care sunt tratate zerourile:\n"
+"- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n"
+"- TZ = zerourile prefix sunt eliminate și cele sufix pastrate."
+
+#: flatcamGUI/FlatCAMGUI.py:4182
+msgid "Decimal"
+msgstr "Cu dec."
+
+#: flatcamGUI/FlatCAMGUI.py:4183
+msgid "No-Decimal"
+msgstr "Fără dec."
+
+#: flatcamGUI/FlatCAMGUI.py:4196
+msgid "<b>Zeros</b>:"
+msgstr "<b>Zero-uri</b>:"
+
+#: flatcamGUI/FlatCAMGUI.py:4209
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+"Acesta este tipul implicit de zero-uri Excellon.\n"
+"- LZ = zerourile prefix sunt pastrate și cele sufix eliminate\n"
+"- TZ = zerourile prefix sunt eliminate și cele sufix pastrate."
+
+#: flatcamGUI/FlatCAMGUI.py:4235
+msgid "Geometry General"
+msgstr "Geometrie General"
+
+#: flatcamGUI/FlatCAMGUI.py:4253
+msgid ""
+"The number of circle steps for <b>Geometry</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+"Numărul de segmente utilizate pentru\n"
+"aproximarea lineara a <b>Geometriilor</b> circulare."
+
+#: flatcamGUI/FlatCAMGUI.py:4261
+msgid "<b>Tools</b>"
+msgstr "<b>Unelte</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4268
+msgid "Tool dia:                   "
+msgstr "Dia Unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:4270
+msgid ""
+"The diameter of the cutting\n"
+"tool.."
+msgstr "Diametrul uneltei taietoare ..."
+
+#: flatcamGUI/FlatCAMGUI.py:4285
+msgid "Geometry Options"
+msgstr "Opțiuni Geometrie"
+
+#: flatcamGUI/FlatCAMGUI.py:4290
+msgid "<b>Create CNC Job:</b>"
+msgstr "<b>Crează CNCJob:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4292
+msgid ""
+"Create a CNC Job object\n"
+"tracing the contours of this\n"
+"Geometry object."
+msgstr ""
+"Crează un obiect CNCJob care urmareste conturul\n"
+"acestui obiect tip Geometrie."
+
+#: flatcamGUI/FlatCAMGUI.py:4304 flatcamGUI/ObjectUI.py:1133
+msgid ""
+"Cutting depth (negative)\n"
+"below the copper surface."
+msgstr ""
+"Adâncimea la care se taie sub suprafata de cupru.\n"
+"Valoare negativă."
+
+#: flatcamGUI/FlatCAMGUI.py:4312
+msgid "Multidepth"
+msgstr "MultiPas"
+
+#: flatcamGUI/FlatCAMGUI.py:4314
+msgid "Multidepth usage: True or False."
+msgstr ""
+"Daca se folosesc sau nu pasi multipli de tăiere\n"
+"pentru a ajunge la adâncimea de tăiere."
+
+#: flatcamGUI/FlatCAMGUI.py:4319
+msgid "Depth/Pass:"
+msgstr "Adanc./Trecere"
+
+#: flatcamGUI/FlatCAMGUI.py:4321
+msgid ""
+"The depth to cut on each pass,\n"
+"when multidepth is enabled.\n"
+"It has positive value although\n"
+"it is a fraction from the depth\n"
+"which has negative value."
+msgstr ""
+"Adâncimea la care se taie la fiecare trecere,\n"
+"atunci când >MultiPas< este folosit.\n"
+"Valoarea este pozitivă desi reprezinta o fractie\n"
+"a adancimii de tăiere care este o valoare negativă."
+
+#: flatcamGUI/FlatCAMGUI.py:4337 flatcamGUI/ObjectUI.py:1169
+msgid ""
+"Height of the tool when\n"
+"moving without cutting."
+msgstr ""
+"Înălţimea la care se misca unealta când nu taie,\n"
+"deasupra materialului."
+
+#: flatcamGUI/FlatCAMGUI.py:4364 flatcamGUI/ObjectUI.py:1224
+msgid "Feed Rate X-Y:"
+msgstr "Feedrate X-Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:4366 flatcamGUI/ObjectUI.py:1227
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute"
+msgstr ""
+"Viteza de tăiere in planul X-Y\n"
+"in unitati pe minut."
+
+#: flatcamGUI/FlatCAMGUI.py:4374
+msgid "Feed Rate Z:"
+msgstr "Feedrate Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:4376
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute.\n"
+"It is called also Plunge."
+msgstr ""
+"Viteza de tăiere in planul Z\n"
+"in unitati pe minut.\n"
+"Mai este numita și viteza de plonjare."
+
+#: flatcamGUI/FlatCAMGUI.py:4385 flatcamGUI/ObjectUI.py:750
+#: flatcamGUI/ObjectUI.py:1276
+msgid "Spindle speed:"
+msgstr "Viteza motor:"
+
+#: flatcamGUI/FlatCAMGUI.py:4414
+msgid ""
+"The postprocessor file that dictates\n"
+"Machine Code output."
+msgstr ""
+"Un fişier care prelucrează codul G-Code astfel incat să\n"
+"respecte un anumit format care să fie inteles de diverse\n"
+"utilaje. Este responsabil de 'personalizarea' G-Code."
+
+#: flatcamGUI/FlatCAMGUI.py:4430
+msgid "Geometry Adv. Options"
+msgstr "Opțiuni Avans. Geometrie"
+
+#: flatcamGUI/FlatCAMGUI.py:4437
+msgid ""
+"Parameters to create a CNC Job object\n"
+"tracing the contours of a Geometry object."
+msgstr ""
+"Parametrii folositi pentru a crea un obiect CNCJob,\n"
+"urmarind contururile unui obiect tip Geometrie."
+
+#: flatcamGUI/FlatCAMGUI.py:4457
+msgid ""
+"Height of the tool just after starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Înălţimea uneltei la care se gaseste la inceputul lucrului.\n"
+"Lasa câmpul gol daca nu folosești aceasta."
+
+#: flatcamGUI/FlatCAMGUI.py:4477
+msgid ""
+"Cutting speed in the XY plane\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Viteza de tăiere in planul X-Y, in unitati pe minut,\n"
+"in legatura cu comanda G00.\n"
+"Este utila doar când se foloseşte cu un printer 3D Marlin,\n"
+"pentru toate celelalte cazuri ignora acest parametru."
+
+#: flatcamGUI/FlatCAMGUI.py:4489
+msgid "Re-cut 1st pt."
+msgstr "Re-tăiere 1-ul pt."
+
+#: flatcamGUI/FlatCAMGUI.py:4491 flatcamGUI/ObjectUI.py:1267
+msgid ""
+"In order to remove possible\n"
+"copper leftovers where first cut\n"
+"meet with last cut, we generate an\n"
+"extended cut over the first cut section."
+msgstr ""
+"Bifează daca se doreste o siguranta ca resturile de cupru\n"
+"care pot ramane acolo unde se intalneste inceputul taierii\n"
+"cu sfarsitul acesteia (este vorba de un contur), sunt eliminate\n"
+"prin taierea peste acest punct."
+
+#: flatcamGUI/FlatCAMGUI.py:4530
+msgid "Seg. X size:"
+msgstr "Dim. seg X."
+
+#: flatcamGUI/FlatCAMGUI.py:4532
+msgid ""
+"The size of the trace segment on the X axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the X axis."
+msgstr ""
+"Dimensiunea segmentului de traseu pe axa X.\n"
+"Folositor pentru auto-nivelare.\n"
+"O valoare de 0 inseamnaca nu se face segmentare\n"
+"pe axa X."
+
+#: flatcamGUI/FlatCAMGUI.py:4541
+msgid "Seg. Y size:"
+msgstr "Dim. seg Y."
+
+#: flatcamGUI/FlatCAMGUI.py:4543
+msgid ""
+"The size of the trace segment on the Y axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the Y axis."
+msgstr ""
+"Dimensiunea segmentului de traseu pe axa Y.\n"
+"Folositor pentru auto-nivelare.\n"
+"O valoare de 0 inseamnaca nu se face segmentare\n"
+"pe axa Y."
+
+#: flatcamGUI/FlatCAMGUI.py:4559
+msgid "CNC Job General"
+msgstr "CNCJob General"
+
+#: flatcamGUI/FlatCAMGUI.py:4572 flatcamGUI/ObjectUI.py:615
+#: flatcamGUI/ObjectUI.py:945 flatcamGUI/ObjectUI.py:1499
+msgid "Plot Object"
+msgstr "Afisează"
+
+#: flatcamGUI/FlatCAMGUI.py:4579
+msgid "Plot kind:"
+msgstr "Tip afișare:"
+
+#: flatcamGUI/FlatCAMGUI.py:4581 flatcamGUI/ObjectUI.py:1421
+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"
+"above the work piece or it can be of type 'Cut',\n"
+"which means the moves that cut into the material."
+msgstr ""
+"Aici se poate selecta tipul de afișare a geometriilor.\n"
+"Acestea pot fi:\n"
+"- Voiaj -> miscarile deasupra materialului\n"
+"- Tăiere -> miscarile in material, tăiere\n"
+"- Amandoua"
+
+#: flatcamGUI/FlatCAMGUI.py:4589 flatcamGUI/ObjectUI.py:1430
+msgid "Travel"
+msgstr "Voiaj"
+
+#: flatcamGUI/FlatCAMGUI.py:4600
+msgid ""
+"The number of circle steps for <b>GCode</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+"Numărul de segmente utilizate pentru\n"
+"aproximarea lineara a reprezentarilor <b>GCodului</b> circular."
+
+#: flatcamGUI/FlatCAMGUI.py:4610
+msgid ""
+"Diameter of the tool to be\n"
+"rendered in the plot."
+msgstr "Diametrul uneltei care să fie redat prin afișare."
+
+#: flatcamGUI/FlatCAMGUI.py:4618
+msgid "Coords dec.:"
+msgstr "Coord. zec.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4620
+msgid ""
+"The number of decimals to be used for \n"
+"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
+msgstr ""
+"Numărul de zecimale care să fie folosit in \n"
+"coordonatele X,Y,Z in codul CNC (GCode etc)."
+
+#: flatcamGUI/FlatCAMGUI.py:4628
+msgid "Feedrate dec.:"
+msgstr "Feedrate zec.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4630
+msgid ""
+"The number of decimals to be used for \n"
+"the Feedrate parameter in CNC code (GCODE, etc.)"
+msgstr ""
+"Numărul de zecimale care să fie folosit in \n"
+"parametrul >Feedrate< in codul CNC (GCode etc)."
+
+#: flatcamGUI/FlatCAMGUI.py:4645
+msgid "CNC Job Options"
+msgstr "Opțiuni CNCJob"
+
+#: flatcamGUI/FlatCAMGUI.py:4648 flatcamGUI/FlatCAMGUI.py:4689
+msgid "<b>Export G-Code:</b>"
+msgstr "<b>Exporta G-Code:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:4691
+#: flatcamGUI/ObjectUI.py:1535
+msgid ""
+"Export and save G-Code to\n"
+"make this object to a file."
+msgstr ""
+"Exporta și salvează codul G-Code intr-un fişier\n"
+"care este salvat pe HDD."
+
+#: flatcamGUI/FlatCAMGUI.py:4656
+msgid "Prepend to G-Code:"
+msgstr "Adaugă la inceputul G-Code:"
+
+#: flatcamGUI/FlatCAMGUI.py:4658
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add at the beginning of the G-Code file."
+msgstr ""
+"Adaugă aici orice comenzi G-Code care se doreste să fie\n"
+"inserate la inceputul codului G-Code."
+
+#: flatcamGUI/FlatCAMGUI.py:4667
+msgid "Append to G-Code:"
+msgstr "Adaugă la sfarsitul G-Code:"
+
+#: flatcamGUI/FlatCAMGUI.py:4669 flatcamGUI/ObjectUI.py:1557
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to append to the generated file.\n"
+"I.e.: M2 (End of program)"
+msgstr ""
+"Adaugă aici orice comenzi G-Code care se doreste să fie\n"
+"inserate la sfarsitul codului G-Code."
+
+#: flatcamGUI/FlatCAMGUI.py:4686
+msgid "CNC Job Adv. Options"
+msgstr "Opțiuni Avans. CNCJob"
+
+#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/ObjectUI.py:1575
+msgid "Toolchange G-Code:"
+msgstr "G-Code pt schimb unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:4699
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro."
+msgstr ""
+"Adaugă aici orice comenzi G-Code care se doreste să fie\n"
+"inserate in codul G-Code atunci când se intalneste comanda M6.\n"
+"Comanda M6 este inlocuita.\n"
+"Aceata va constitui un macro pentru schimbul uneltelor."
+
+#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/ObjectUI.py:1597
+msgid "Use Toolchange Macro"
+msgstr "Fol. Macro schimb unealta"
+
+#: flatcamGUI/FlatCAMGUI.py:4715 flatcamGUI/ObjectUI.py:1600
+msgid ""
+"Check this box if you want to use\n"
+"a Custom Toolchange GCode (macro)."
+msgstr ""
+"Bifează aici daca dorești să folosești Macro pentru\n"
+"schimb unelte."
+
+#: flatcamGUI/FlatCAMGUI.py:4727 flatcamGUI/ObjectUI.py:1616
+msgid ""
+"A list of the FlatCAM variables that can be used\n"
+"in the Toolchange event.\n"
+"They have to be surrounded by the '%' symbol"
+msgstr ""
+"O lista de variabile FlatCAM care se pot folosi in evenimentul \n"
+"de schimb al uneltei (când se intalneste comanda M6).\n"
+"Este necesar să fie inconjurate de simbolul '%'."
+
+#: flatcamGUI/FlatCAMGUI.py:4734 flatcamGUI/ObjectUI.py:1624
+msgid "Parameters"
+msgstr "Parametri"
+
+#: flatcamGUI/FlatCAMGUI.py:4737 flatcamGUI/ObjectUI.py:1627
+msgid "FlatCAM CNC parameters"
+msgstr "Parametri FlatCAM CNC"
+
+#: flatcamGUI/FlatCAMGUI.py:4738 flatcamGUI/ObjectUI.py:1628
+msgid "tool = tool number"
+msgstr "tool = numărul uneltei"
+
+#: flatcamGUI/FlatCAMGUI.py:4739 flatcamGUI/ObjectUI.py:1629
+msgid "tooldia = tool diameter"
+msgstr "tooldia = dimaetrul uneltei"
+
+#: flatcamGUI/FlatCAMGUI.py:4740 flatcamGUI/ObjectUI.py:1630
+msgid "t_drills = for Excellon, total number of drills"
+msgstr "t_drills = pt Excellom, numărul total de operatii găurire"
+
+#: flatcamGUI/FlatCAMGUI.py:4741 flatcamGUI/ObjectUI.py:1631
+msgid "x_toolchange = X coord for Toolchange"
+msgstr "x_toolchange = coord. X pt schimb unealta"
+
+#: flatcamGUI/FlatCAMGUI.py:4742 flatcamGUI/ObjectUI.py:1632
+msgid "y_toolchange = Y coord for Toolchange"
+msgstr "y_toolchange = coord. Y pt schimb unealta"
+
+#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:1633
+msgid "z_toolchange = Z coord for Toolchange"
+msgstr "z_toolchange = coord. Z pt schimb unealta"
+
+#: flatcamGUI/FlatCAMGUI.py:4744
+msgid "z_cut = Z depth for the cut"
+msgstr "z_cut = Z adâncimea de tăiere"
+
+#: flatcamGUI/FlatCAMGUI.py:4745
+msgid "z_move = Z height for travel"
+msgstr "z_move = Z Înălţimea deplasare"
+
+#: flatcamGUI/FlatCAMGUI.py:4746 flatcamGUI/ObjectUI.py:1636
+msgid "z_depthpercut = the step value for multidepth cut"
+msgstr "z_depthpercut = pasul pentru taierea progresiva"
+
+#: flatcamGUI/FlatCAMGUI.py:4747 flatcamGUI/ObjectUI.py:1637
+msgid "spindlesspeed = the value for the spindle speed"
+msgstr "spindlesspeed = valoarea viteza motor"
+
+#: flatcamGUI/FlatCAMGUI.py:4748 flatcamGUI/ObjectUI.py:1638
+msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
+msgstr "dwelltime = durata de asteptare ca motorul să ajunga la turatia setata"
+
+#: flatcamGUI/FlatCAMGUI.py:4769
+msgid "NCC Tool Options"
+msgstr "Opțiuni Unealta NCC"
+
+#: flatcamGUI/FlatCAMGUI.py:4772 flatcamGUI/FlatCAMGUI.py:4873
+#: flatcamGUI/FlatCAMGUI.py:4943 flatcamGUI/FlatCAMGUI.py:5002
+#: flatcamGUI/FlatCAMGUI.py:5105 flatcamGUI/FlatCAMGUI.py:5166
+#: flatcamGUI/FlatCAMGUI.py:5365 flatcamGUI/FlatCAMGUI.py:5492
+msgid "<b>Parameters:</b>"
+msgstr "<b>Parametri:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:4782 flatcamGUI/FlatCAMGUI.py:5503
+msgid "Tools dia:"
+msgstr "Dia unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:4784
+msgid "Diameters of the cutting tools, separated by ','"
+msgstr "Diametrele pentru unelte taietoare, separate cu virgula"
+
+#: flatcamGUI/FlatCAMGUI.py:4792 flatcamTools/ToolNonCopperClear.py:166
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be cleared are still \n"
+"not cleared.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+"Cat de mult (fractie) din diametrul uneltei să se suprapună la fiecare "
+"trecere a uneltei.\n"
+"Exemplu:\n"
+"O valoare aici de 0.25 inseamna 25\\% din diametrul uneltei de mai sus..\n"
+"\n"
+"Ajustează valoarea incepand de la valori mici\n"
+"și pe urma creste daca ariile care ar trebui >curățate< inca\n"
+"nu sunt procesate.\n"
+"Valori scazute = procesare rapida,executie rapida a PCB-ului.\n"
+"Valori mari= procesare lenta cat și o executie la fel de lenta a PCB-ului,\n"
+"datorita numărului mai mare de treceri-tăiere."
+
+#: flatcamGUI/FlatCAMGUI.py:4808 flatcamTools/ToolNonCopperClear.py:182
+msgid "Bounding box margin."
+msgstr "Marginea pentru forma înconjurătoare."
+
+#: flatcamGUI/FlatCAMGUI.py:4817 flatcamTools/ToolNonCopperClear.py:191
+#: flatcamTools/ToolPaint.py:190
+msgid ""
+"Algorithm for non-copper clearing:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed.<BR><B>Line-based</B>: Parallel "
+"lines."
+msgstr ""
+"Algoritm pt curățare de cupru:<BR><B>Standard</B>: Pas fix spre interior."
+"<BR><B>Punct-samanta</B>: De la punctul samanta, spre expterior.<BR><B>Linii "
+"drepte</B>: Linii paralele."
+
+#: flatcamGUI/FlatCAMGUI.py:4849 flatcamTools/ToolNonCopperClear.py:223
+#: flatcamTools/ToolPaint.py:222
+msgid "Rest M.:"
+msgstr "Rest M.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4851
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"Daca este bifat, foloste 'rest machining'.\n"
+"Mai exact, se va curăța cuprul din afara traseelor,\n"
+"folosind mai intai unealta cu diametrul cel mai mare\n"
+"apoi folosindu-se progresiv unelte cu diametrul tot\n"
+"mai mic, din cele disponibile in tabela de unelte, pt a\n"
+"curăța zonele care nu s-au putut curăța cu unealta\n"
+"precedenta.\n"
+"Daca nu este bifat, foloseşte algoritmul standard."
+
+#: flatcamGUI/FlatCAMGUI.py:4870
+msgid "Cutout Tool Options"
+msgstr "Opțiuni Unealta Decupare"
+
+#: flatcamGUI/FlatCAMGUI.py:4875 flatcamGUI/ObjectUI.py:473
+msgid ""
+"Create toolpaths to cut around\n"
+"the PCB and separate it from\n"
+"the original board."
+msgstr ""
+"Crează taieturi de jur inprejurul PCB-ului,\n"
+"lasand punţi pentru a separa PCB-ul de \n"
+"placa din care a fost taiat."
+
+#: flatcamGUI/FlatCAMGUI.py:4894
+msgid ""
+"Distance from objects at which\n"
+"to draw the cutout."
+msgstr "Distanta de obiecte la care să se deseneze forma taietoare."
+
+#: flatcamGUI/FlatCAMGUI.py:4901 flatcamTools/ToolCutOut.py:96
+msgid "Gap size:"
+msgstr "Dim. punte:"
+
+#: flatcamGUI/FlatCAMGUI.py:4903
+msgid ""
+"Size of the gaps in the toolpath\n"
+"that will remain to hold the\n"
+"board in place."
+msgstr ""
+"Dimensiunea punţilor in trecerile de tăiere\n"
+"care vor mentine PCB-ul in pozitie, fără să cada\n"
+"din placa 'mama' dupa decupare."
+
+#: flatcamGUI/FlatCAMGUI.py:4911 flatcamTools/ToolCutOut.py:125
+msgid "Gaps:"
+msgstr "Punţi:"
+
+#: flatcamGUI/FlatCAMGUI.py:4913
+msgid ""
+"Number of bridge gaps used for the cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+"Numărul de punţi folosite in decupare.\n"
+"Pot fi un număr maxim de 8 punţi aranjate in felul\n"
+"urmator:\n"
+"- lr = stânga -dreapta\n"
+"- tb = sus - jos\n"
+"- 4 = stânga -dreapta - sus - jos\n"
+"- 2lr = 2* stânga - 2* dreapta\n"
+"- 2tb = 2* sus - 2* jos\n"
+"- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos"
+
+#: flatcamGUI/FlatCAMGUI.py:4940
+msgid "2Sided Tool Options"
+msgstr "Opțiuni Unealta 2Fețe"
+
+#: flatcamGUI/FlatCAMGUI.py:4945
+msgid ""
+"A tool to help in creating a double sided\n"
+"PCB using alignment holes."
+msgstr ""
+"O unealta care ajuta in crearea de PCB-uri cu 2 fețe\n"
+"folosind găuri de aliniere."
+
+#: flatcamGUI/FlatCAMGUI.py:4955 flatcamTools/ToolDblSided.py:235
+msgid "Drill diam.:"
+msgstr "Dia gaura:"
+
+#: flatcamGUI/FlatCAMGUI.py:4957 flatcamTools/ToolDblSided.py:226
+#: flatcamTools/ToolDblSided.py:237
+msgid "Diameter of the drill for the alignment holes."
+msgstr "Diametrul găurii pentru găurile de aliniere."
+
+#: flatcamGUI/FlatCAMGUI.py:4964
+msgid "X"
+msgstr "X"
+
+#: flatcamGUI/FlatCAMGUI.py:4965
+msgid "Y"
+msgstr "Y"
+
+#: flatcamGUI/FlatCAMGUI.py:4966 flatcamTools/ToolDblSided.py:120
+msgid "Mirror Axis:"
+msgstr "Axe oglindire:"
+
+#: flatcamGUI/FlatCAMGUI.py:4968 flatcamTools/ToolDblSided.py:122
+msgid "Mirror vertically (X) or horizontally (Y)."
+msgstr "Oglindeste vertical (X) sau orizontal (Y)."
+
+#: flatcamGUI/FlatCAMGUI.py:4977
+msgid "Point"
+msgstr "Punct"
+
+#: flatcamGUI/FlatCAMGUI.py:4978
+msgid "Box"
+msgstr "Forma"
+
+#: flatcamGUI/FlatCAMGUI.py:4979 flatcamTools/ToolDblSided.py:133
+msgid "Axis Ref:"
+msgstr "Axa de ref.:"
+
+#: flatcamGUI/FlatCAMGUI.py:4981
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a Geometry object) in \n"
+"the middle."
+msgstr ""
+"Axa de referinţă ar trebui să treaca printr-un <b>punct</b> ori să strabata\n"
+" o <b>forma</b> (specificata un obiect tip Geometrie) prin mijloc."
+
+#: flatcamGUI/FlatCAMGUI.py:4997
+msgid "Paint Tool Options"
+msgstr "Opțiuni Unealta Paint"
+
+#: flatcamGUI/FlatCAMGUI.py:5004 flatcamGUI/ObjectUI.py:1370
+msgid ""
+"Creates tool paths to cover the\n"
+"whole area of a polygon (remove\n"
+"all copper). You will be asked\n"
+"to click on the desired polygon."
+msgstr ""
+"Crează treceri taietoare pentru a acoperi\n"
+"intreaga arie a unui poligon (pentru a indeparta\n"
+"to cuprul, spre ex.). Când se actionează peste un\n"
+"singur poligon se va cere să faceti click pe poligonul\n"
+"dorit."
+
+#: flatcamGUI/FlatCAMGUI.py:5028
+msgid ""
+"How much (fraction) of the tool\n"
+"width to overlap each tool pass."
+msgstr ""
+"Cat de mult (o fractie din diametrul uneltei) din diametrul uneltei,\n"
+"(lăţimea de tăiere) să se suprapună peste trecerea anterioară."
+
+#: flatcamGUI/FlatCAMGUI.py:5082 flatcamTools/ToolPaint.py:237
+msgid "Selection:"
+msgstr "Selecţie:"
+
+#: flatcamGUI/FlatCAMGUI.py:5084
+msgid "How to select the polygons to paint."
+msgstr "Cum să se selecteze poligoanele de pictat (paint)."
+
+#: flatcamGUI/FlatCAMGUI.py:5088
+msgid "Single"
+msgstr "Unic"
+
+#: flatcamGUI/FlatCAMGUI.py:5102
+msgid "Film Tool Options"
+msgstr "Opțiuni Unealta Film"
+
+#: flatcamGUI/FlatCAMGUI.py:5107
+msgid ""
+"Create a PCB film from a Gerber or Geometry\n"
+"FlatCAM object.\n"
+"The file is saved in SVG format."
+msgstr ""
+"Crează un film PCB dintr-un obiect Gerber sau tip Geometrie.\n"
+"Fişierul este salvat in format SVG."
+
+#: flatcamGUI/FlatCAMGUI.py:5116
+msgid "Pos"
+msgstr "Pozitiv"
+
+#: flatcamGUI/FlatCAMGUI.py:5117
+msgid "Neg"
+msgstr "Negativ"
+
+#: flatcamGUI/FlatCAMGUI.py:5118 flatcamTools/ToolFilm.py:116
+msgid "Film Type:"
+msgstr "Tip film:"
+
+#: flatcamGUI/FlatCAMGUI.py:5120 flatcamTools/ToolFilm.py:118
+msgid ""
+"Generate a Positive black film or a Negative film.\n"
+"Positive means that it will print the features\n"
+"with black on a white canvas.\n"
+"Negative means that it will print the features\n"
+"with white on a black canvas.\n"
+"The Film format is SVG."
+msgstr ""
+"Generează un film negru Pozitiv sau un film Negativ.\n"
+"Pozitiv = traseele vor fi negre pe un fundal alb.\n"
+"Negativ = traseele vor fi albe pe un fundal negru.\n"
+"Formatul fişierului pt filmul salvat este SVG."
+
+#: flatcamGUI/FlatCAMGUI.py:5131 flatcamTools/ToolFilm.py:130
+msgid "Border:"
+msgstr "Bordura:"
+
+#: flatcamGUI/FlatCAMGUI.py:5133 flatcamTools/ToolFilm.py:132
+msgid ""
+"Specify a border around the object.\n"
+"Only for negative film.\n"
+"It helps if we use as a Box Object the same \n"
+"object as in Film Object. It will create a thick\n"
+"black bar around the actual print allowing for a\n"
+"better delimitation of the outline features which are of\n"
+"white color like the rest and which may confound with the\n"
+"surroundings if not for this border."
+msgstr ""
+"Specifica o bordura de jur imprejurul obiectului.\n"
+"Doar pt filmele negative.\n"
+"Ajuta daca folosim in Obiect Forma acelasi obiect ca in Obiect Film.\n"
+"Va crea o bara solida neagra in jurul printului efectiv permitand o\n"
+"delimitare exacta"
+
+#: flatcamGUI/FlatCAMGUI.py:5146 flatcamTools/ToolFilm.py:144
+msgid "Scale Stroke:"
+msgstr "Scalează:"
+
+#: flatcamGUI/FlatCAMGUI.py:5148 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 "
+"thinner,\n"
+"therefore the fine features may be more affected by this parameter."
+msgstr ""
+"Scalează grosimea conturului fiecarui element din fişierul SVG.\n"
+"Elementele mai mici vor fi afectate mai mult."
+
+#: flatcamGUI/FlatCAMGUI.py:5163
+msgid "Panelize Tool Options"
+msgstr "Opțiuni Unealta Panelizare"
+
+#: flatcamGUI/FlatCAMGUI.py:5168
+msgid ""
+"Create an object that contains an array of (x, y) elements,\n"
+"each element is a copy of the source object spaced\n"
+"at a X distance, Y distance of each other."
+msgstr ""
+"Crează un obiect care contine o arie de (linii, coloane) elemente,\n"
+"unde fiecare element este o copie a obiectului sursa, separat la o\n"
+"distanta X, Y unul de celalalt."
+
+#: flatcamGUI/FlatCAMGUI.py:5179 flatcamTools/ToolPanelize.py:113
+msgid "Spacing cols:"
+msgstr "Sep. coloane:"
+
+#: flatcamGUI/FlatCAMGUI.py:5181 flatcamTools/ToolPanelize.py:115
+msgid ""
+"Spacing between columns of the desired panel.\n"
+"In current units."
+msgstr ""
+"Spatiul de separare între coloane.\n"
+"In unitatile curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5189 flatcamTools/ToolPanelize.py:122
+msgid "Spacing rows:"
+msgstr "Sep. linii:"
+
+#: flatcamGUI/FlatCAMGUI.py:5191 flatcamTools/ToolPanelize.py:124
+msgid ""
+"Spacing between rows of the desired panel.\n"
+"In current units."
+msgstr ""
+"Spatiul de separare între linii.\n"
+"In unitatile curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5199 flatcamTools/ToolPanelize.py:131
+msgid "Columns:"
+msgstr "Coloane:"
+
+#: flatcamGUI/FlatCAMGUI.py:5201 flatcamTools/ToolPanelize.py:133
+msgid "Number of columns of the desired panel"
+msgstr "Numărul de coloane ale panel-ului dorit."
+
+#: flatcamGUI/FlatCAMGUI.py:5208 flatcamTools/ToolPanelize.py:139
+msgid "Rows:"
+msgstr "Linii:"
+
+#: flatcamGUI/FlatCAMGUI.py:5210 flatcamTools/ToolPanelize.py:141
+msgid "Number of rows of the desired panel"
+msgstr "Numărul de linii ale panel-ului dorit."
+
+#: flatcamGUI/FlatCAMGUI.py:5216
+msgid "Gerber"
+msgstr "Gerber"
+
+#: flatcamGUI/FlatCAMGUI.py:5217
+msgid "Geo"
+msgstr "Geo"
+
+#: flatcamGUI/FlatCAMGUI.py:5218 flatcamTools/ToolPanelize.py:148
+msgid "Panel Type:"
+msgstr "Tip panel:"
+
+#: flatcamGUI/FlatCAMGUI.py:5220
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Gerber\n"
+"- Geometry"
+msgstr ""
+"Alege tipul obiectului panel:\n"
+"- Gerber\n"
+"- Geometrie"
+
+#: flatcamGUI/FlatCAMGUI.py:5229
+msgid "Constrain within:"
+msgstr "Constrange:"
+
+#: flatcamGUI/FlatCAMGUI.py:5231 flatcamTools/ToolPanelize.py:160
+msgid ""
+"Area define by DX and DY within to constrain the panel.\n"
+"DX and DY values are in current units.\n"
+"Regardless of how many columns and rows are desired,\n"
+"the final panel will have as many columns and rows as\n"
+"they fit completely within selected area."
+msgstr ""
+"Arie definita de Dx și Dy in care se constrange panel-ul.\n"
+"Dx și Dy sunt valori in unitati curente.\n"
+"Indiferent de cat de multe coloane și/sau linii sunt selectate mai sus\n"
+"panelul final va contine numai acel număr de linii/coloane care se inscrie\n"
+"complet in aria desemnata."
+
+#: flatcamGUI/FlatCAMGUI.py:5240 flatcamTools/ToolPanelize.py:169
+msgid "Width (DX):"
+msgstr "Latime (Dx):"
+
+#: flatcamGUI/FlatCAMGUI.py:5242 flatcamTools/ToolPanelize.py:171
+msgid ""
+"The width (DX) within which the panel must fit.\n"
+"In current units."
+msgstr ""
+"Lăţimea (Dx) in care panelul trebuie să se inscrie.\n"
+"In unitati curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5249 flatcamTools/ToolPanelize.py:177
+msgid "Height (DY):"
+msgstr "Inaltime (Dy):"
+
+#: flatcamGUI/FlatCAMGUI.py:5251 flatcamTools/ToolPanelize.py:179
+msgid ""
+"The height (DY)within which the panel must fit.\n"
+"In current units."
+msgstr ""
+"Înălţimea (Dy) in care panelul trebuie să se inscrie.\n"
+"In unitati curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5265
+msgid "Calculators Tool Options"
+msgstr "Opțiuni Unealta Calculatoare"
+
+#: flatcamGUI/FlatCAMGUI.py:5268
+msgid "<b>V-Shape Tool Calculator:</b>"
+msgstr "<b>Calculator: Unealta V-shape</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5270
+msgid ""
+"Calculate the tool diameter for a given V-shape tool,\n"
+"having the tip diameter, tip angle and\n"
+"depth-of-cut as parameters."
+msgstr ""
+"Calculează diametrul pentru o unealta V-Shape data,\n"
+"avand diametrul vârfului și unghiul la vârf cat și\n"
+"adâncimea de tăiere, ca parametri."
+
+#: flatcamGUI/FlatCAMGUI.py:5281 flatcamTools/ToolCalculators.py:94
+msgid "Tip Diameter:"
+msgstr "Dia vârf:"
+
+#: flatcamGUI/FlatCAMGUI.py:5283
+msgid ""
+"This is the tool tip diameter.\n"
+"It is specified by manufacturer."
+msgstr ""
+"Acesta este diametrul la vârf al uneltei.\n"
+"Este specificat de producator."
+
+#: flatcamGUI/FlatCAMGUI.py:5291
+msgid "Tip angle:"
+msgstr "Unghiul la vârf:"
+
+#: flatcamGUI/FlatCAMGUI.py:5293
+msgid ""
+"This is the angle on the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+"Acesta este unghiul la vârf al uneltei.\n"
+"Este specificat de producator."
+
+#: flatcamGUI/FlatCAMGUI.py:5303
+msgid ""
+"This is depth to cut into material.\n"
+"In the CNCJob object it is the CutZ parameter."
+msgstr ""
+"Aceasta este adâncimea la care se taie in material.\n"
+"In obiectul CNCJob este parametrul >Z tăiere<."
+
+#: flatcamGUI/FlatCAMGUI.py:5310
+msgid "<b>ElectroPlating Calculator:</b>"
+msgstr "<b>Calculator Electroplacare:</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5312 flatcamTools/ToolCalculators.py:152
+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 "
+"chloride."
+msgstr ""
+"Acest calculator este util pentru aceia care plachează găuri/vias\n"
+"folosind o metoda cum ar fi:\n"
+"- cerneala grafitate (carbon)\n"
+"- clorura paladiu\n"
+"- hipofosfit de calciu"
+
+#: flatcamGUI/FlatCAMGUI.py:5322 flatcamTools/ToolCalculators.py:161
+msgid "Board Length:"
+msgstr "Lung. placii:"
+
+#: flatcamGUI/FlatCAMGUI.py:5324 flatcamTools/ToolCalculators.py:165
+msgid "This is the board length. In centimeters."
+msgstr ""
+"Aceasta este lungimea PCB-ului.\n"
+"In centimetri. "
+
+#: flatcamGUI/FlatCAMGUI.py:5330 flatcamTools/ToolCalculators.py:167
+msgid "Board Width:"
+msgstr "Lat. placii:"
+
+#: flatcamGUI/FlatCAMGUI.py:5332 flatcamTools/ToolCalculators.py:171
+msgid "This is the board width.In centimeters."
+msgstr ""
+"Aceasta este lăţimea PCB-ului.\n"
+"In centimetri. "
+
+#: flatcamGUI/FlatCAMGUI.py:5337 flatcamTools/ToolCalculators.py:173
+msgid "Current Density:"
+msgstr "Densitate I:"
+
+#: flatcamGUI/FlatCAMGUI.py:5340 flatcamTools/ToolCalculators.py:177
+msgid ""
+"Current density to pass through the board. \n"
+"In Amps per Square Feet ASF."
+msgstr ""
+"Densitatea de curent care să treaca prin placa.\n"
+"In ASF (amperi pe picior la patrat)."
+
+#: flatcamGUI/FlatCAMGUI.py:5346 flatcamTools/ToolCalculators.py:181
+msgid "Copper Growth:"
+msgstr "Grosime Cu:"
+
+#: flatcamGUI/FlatCAMGUI.py:5349 flatcamTools/ToolCalculators.py:185
+msgid ""
+"How thick the copper growth is intended to be.\n"
+"In microns."
+msgstr ""
+"Cat de gros se doreste să fie stratul de cupru depus.\n"
+"In microni."
+
+#: flatcamGUI/FlatCAMGUI.py:5362
+msgid "Transform Tool Options"
+msgstr "Opțiuni Unealta Transformare"
+
+#: flatcamGUI/FlatCAMGUI.py:5367
+msgid ""
+"Various transformations that can be applied\n"
+"on a FlatCAM object."
+msgstr ""
+"Diverse transformari care pot fi aplicate\n"
+"asupra unui obiect FlatCAM. Cum ar fi:\n"
+"- rotatie,\n"
+"- scalare,\n"
+"- ofset,\n"
+"- deformare\n"
+"- oglindire"
+
+#: flatcamGUI/FlatCAMGUI.py:5377
+msgid "Rotate Angle:"
+msgstr "Unghi Rotatie:"
+
+#: flatcamGUI/FlatCAMGUI.py:5379
+msgid "Angle for rotation. In degrees."
+msgstr "Unnghiul pentru rotatie. In grade."
+
+#: flatcamGUI/FlatCAMGUI.py:5386
+msgid "Skew_X angle:"
+msgstr "Unghi Deform_X:"
+
+#: flatcamGUI/FlatCAMGUI.py:5388
+msgid "Angle for Skew/Shear on X axis. In degrees."
+msgstr "Unghiul pentru deformare pe axa X. In grade."
+
+#: flatcamGUI/FlatCAMGUI.py:5395
+msgid "Skew_Y angle:"
+msgstr "Unghi Deform_Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:5397
+msgid "Angle for Skew/Shear on Y axis. In degrees."
+msgstr "Unghiul pentru deformare pe axa Y. In grade."
+
+#: flatcamGUI/FlatCAMGUI.py:5404
+msgid "Scale_X factor:"
+msgstr "Factor Scal_X:"
+
+#: flatcamGUI/FlatCAMGUI.py:5406
+msgid "Factor for scaling on X axis."
+msgstr "Factor de scalare pe axa X."
+
+#: flatcamGUI/FlatCAMGUI.py:5413
+msgid "Scale_Y factor:"
+msgstr "Factor Scal_Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:5415
+msgid "Factor for scaling on Y axis."
+msgstr "Factor de scalare pe axa Y."
+
+#: flatcamGUI/FlatCAMGUI.py:5423
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale_X factor for both axis."
+msgstr ""
+"Scalează obiectele selectate folosind\n"
+"Factor Scal_X pentru ambele axe."
+
+#: flatcamGUI/FlatCAMGUI.py:5431 flatcamTools/ToolTransform.py:210
+msgid ""
+"Scale the selected object(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected objects when unchecked."
+msgstr ""
+"Scalează obiectele selectate folosind\n"
+"originea ca referinţă atunci când este bifat.\n"
+"Când nu este bifat, foloseşte ca referinţă\n"
+"centrul formei inconjuatoare care cuprinde\n"
+"toate obiectele selectate."
+
+#: flatcamGUI/FlatCAMGUI.py:5440
+msgid "Offset_X val:"
+msgstr "Ofset_X:"
+
+#: flatcamGUI/FlatCAMGUI.py:5442
+msgid "Distance to offset on X axis. In current units."
+msgstr "Distanta la care se face ofset pe axa X. In unitatile curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5449
+msgid "Offset_Y val:"
+msgstr "Ofset_Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:5451
+msgid "Distance to offset on Y axis. In current units."
+msgstr "Distanta la care se face ofset pe axa Y. In unitatile curente."
+
+#: flatcamGUI/FlatCAMGUI.py:5457
+msgid "Mirror Reference"
+msgstr "Referinţă Oglindire"
+
+#: flatcamGUI/FlatCAMGUI.py:5459 flatcamTools/ToolTransform.py:314
+msgid ""
+"Flip the selected object(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+"Oglindeste obiectele selectate in jurul punctului\n"
+"de referinţă.\n"
+"\n"
+"Coordonatele punctului se pot obtine prin click pe \n"
+"canvas simultan cu apasarea tastei SHIFT.\n"
+"Apoi apasa pe butonul >Adaugă< pentru a insera\n"
+"coordonatele.\n"
+"Alternativ se pot introduce coordonatele manual,\n"
+"in forma (x, y).\n"
+"La final apasa butonul de oglindire pe axa dorita. "
+
+#: flatcamGUI/FlatCAMGUI.py:5470
+msgid " Mirror Ref. Point:"
+msgstr "Pt. Ref. Oglindire:"
+
+#: flatcamGUI/FlatCAMGUI.py:5472 flatcamTools/ToolTransform.py:327
+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"
+"the 'y' in (x, y) will be used when using Flip on Y and"
+msgstr ""
+"Coordonatele in format (x, y) ale punctului de referinţă pentru\n"
+"oglindire.\n"
+"X din (x,y) se va folosi când se face oglindirea pe axa X\n"
+"Y din (x,y) se va folosi când se face oglindirea pe axa Y."
+
+#: flatcamGUI/FlatCAMGUI.py:5489
+msgid "SolderPaste Tool Options"
+msgstr "Opțiuni Unealta Pasta Fludor"
+
+#: flatcamGUI/FlatCAMGUI.py:5494
+msgid ""
+"A tool to create GCode for dispensing\n"
+"solder paste onto a PCB."
+msgstr ""
+"O unealta care crează cod G-Code pentru dispensarea de pasta de fludor\n"
+"pe padurile unui PCB."
+
+#: flatcamGUI/FlatCAMGUI.py:5505
+msgid "Diameters of nozzle tools, separated by ','"
+msgstr "Diametrele uneltelor (nozzle), separate prin virgula."
+
+#: flatcamGUI/FlatCAMGUI.py:5512
+msgid "<b>New Nozzle Dia:</b>"
+msgstr "<b>Nou Dia::</b>"
+
+#: flatcamGUI/FlatCAMGUI.py:5514 flatcamTools/ToolSolderPaste.py:103
+msgid "Diameter for the new Nozzle tool to add in the Tool Table"
+msgstr ""
+"Valoarea pentru diametrul unei noi unelte (nozzle) pentru adaugare in Tabela "
+"de Unelte"
+
+#: flatcamGUI/FlatCAMGUI.py:5522 flatcamTools/ToolSolderPaste.py:166
+msgid "Z Dispense Start:"
+msgstr "Z start disp.:"
+
+#: flatcamGUI/FlatCAMGUI.py:5524 flatcamTools/ToolSolderPaste.py:168
+msgid "The height (Z) when solder paste dispensing starts."
+msgstr "Înălţimea (Z) când incepe dispensarea de pasta de fludor."
+
+#: flatcamGUI/FlatCAMGUI.py:5531 flatcamTools/ToolSolderPaste.py:174
+msgid "Z Dispense:"
+msgstr "Z disp.:"
+
+#: flatcamGUI/FlatCAMGUI.py:5533 flatcamTools/ToolSolderPaste.py:176
+msgid "The height (Z) when doing solder paste dispensing."
+msgstr "Înălţimea (Z) in timp ce se face dispensarea de pasta de fludor."
+
+#: flatcamGUI/FlatCAMGUI.py:5540 flatcamTools/ToolSolderPaste.py:183
+msgid "Z Dispense Stop:"
+msgstr "Z stop disp.:"
+
+#: flatcamGUI/FlatCAMGUI.py:5542 flatcamTools/ToolSolderPaste.py:185
+msgid "The height (Z) when solder paste dispensing stops."
+msgstr "Înălţimea (Z) când se opreste dispensarea de pasta de fludor."
+
+#: flatcamGUI/FlatCAMGUI.py:5549 flatcamTools/ToolSolderPaste.py:191
+msgid "Z Travel:"
+msgstr "Z deplasare:"
+
+#: flatcamGUI/FlatCAMGUI.py:5551 flatcamTools/ToolSolderPaste.py:193
+msgid ""
+"The height (Z) for travel between pads\n"
+"(without dispensing solder paste)."
+msgstr ""
+"Înălţimea (Z) când se face deplasare între pad-uri.\n"
+"(fără dispensare de pasta de fludor)."
+
+#: flatcamGUI/FlatCAMGUI.py:5559 flatcamTools/ToolSolderPaste.py:200
+msgid "Z Toolchange:"
+msgstr "Z schimb. unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:5561 flatcamTools/ToolSolderPaste.py:202
+msgid "The height (Z) for tool (nozzle) change."
+msgstr "Înălţimea (Z) când se schimba unealta (nozzle-ul)."
+
+#: flatcamGUI/FlatCAMGUI.py:5568 flatcamTools/ToolSolderPaste.py:208
+msgid "XY Toolchange:"
+msgstr "XY schimb unealta:"
+
+#: flatcamGUI/FlatCAMGUI.py:5570 flatcamTools/ToolSolderPaste.py:210
+msgid ""
+"The X,Y location for tool (nozzle) change.\n"
+"The format is (x, y) where x and y are real numbers."
+msgstr ""
+"Coordonatele X, Y pentru schimbarea uneltei (nozzle).\n"
+"Formatul este (x,y) unde x și y sunt numere Reale."
+
+#: flatcamGUI/FlatCAMGUI.py:5578 flatcamTools/ToolSolderPaste.py:217
+msgid "Feedrate X-Y:"
+msgstr "Feedrate X-Y:"
+
+#: flatcamGUI/FlatCAMGUI.py:5580 flatcamTools/ToolSolderPaste.py:219
+msgid "Feedrate (speed) while moving on the X-Y plane."
+msgstr "Viteza de deplasare a uneltei când se deplasează in planul X-Y."
+
+#: flatcamGUI/FlatCAMGUI.py:5587 flatcamTools/ToolSolderPaste.py:225
+msgid "Feedrate Z:"
+msgstr "Feedrate Z:"
+
+#: flatcamGUI/FlatCAMGUI.py:5589 flatcamTools/ToolSolderPaste.py:227
+msgid ""
+"Feedrate (speed) while moving vertically\n"
+"(on Z plane)."
+msgstr ""
+"Viteza de deplasare a uneltei când se misca in plan vertical (planul Z)."
+
+#: flatcamGUI/FlatCAMGUI.py:5597 flatcamTools/ToolSolderPaste.py:234
+msgid "Feedrate Z Dispense:"
+msgstr "Feedrate Z disp.:"
+
+#: flatcamGUI/FlatCAMGUI.py:5599 flatcamTools/ToolSolderPaste.py:236
+msgid ""
+"Feedrate (speed) while moving up vertically\n"
+" to Dispense position (on Z plane)."
+msgstr ""
+"Viteza de deplasare la miscarea pe verticala spre\n"
+"poziţia de dispensare (in planul Z)."
+
+#: flatcamGUI/FlatCAMGUI.py:5607 flatcamTools/ToolSolderPaste.py:243
+msgid "Spindle Speed FWD:"
+msgstr "Viteza motor inainte:"
+
+#: flatcamGUI/FlatCAMGUI.py:5609 flatcamTools/ToolSolderPaste.py:245
+msgid ""
+"The dispenser speed while pushing solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+"Viteza motorului de dispensare in timp ce impinge pasta de fludor\n"
+"prin orificiul uneltei de dispensare."
+
+#: flatcamGUI/FlatCAMGUI.py:5617 flatcamTools/ToolSolderPaste.py:252
+msgid "Dwell FWD:"
+msgstr "Pauza dupa disp.:"
+
+#: flatcamGUI/FlatCAMGUI.py:5619 flatcamTools/ToolSolderPaste.py:254
+msgid "Pause after solder dispensing."
+msgstr "Pauza dupa dispensarea de pasta de fludor."
+
+#: flatcamGUI/FlatCAMGUI.py:5626 flatcamTools/ToolSolderPaste.py:260
+msgid "Spindle Speed REV:"
+msgstr "Viteza motor reverse:"
+
+#: flatcamGUI/FlatCAMGUI.py:5628 flatcamTools/ToolSolderPaste.py:262
+msgid ""
+"The dispenser speed while retracting solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+"Viteza motorului de dispensare in timp ce retrage pasta de fludor\n"
+"prin orificiul uneltei de dispensare."
+
+#: flatcamGUI/FlatCAMGUI.py:5636 flatcamTools/ToolSolderPaste.py:269
+msgid "Dwell REV:"
+msgstr "Pauza dupa rev:"
+
+#: flatcamGUI/FlatCAMGUI.py:5638 flatcamTools/ToolSolderPaste.py:271
+msgid ""
+"Pause after solder paste dispenser retracted,\n"
+"to allow pressure equilibrium."
+msgstr ""
+"Pauza dupa ce pasta de fludor a fost retrasă,\n"
+"necesară pt a ajunge la un echilibru al presiunilor."
+
+#: flatcamGUI/FlatCAMGUI.py:5645 flatcamTools/ToolSolderPaste.py:277
+msgid "PostProcessors:"
+msgstr "Postprocesoare:"
+
+#: flatcamGUI/FlatCAMGUI.py:5647 flatcamTools/ToolSolderPaste.py:279
+msgid "Files that control the GCode generation."
+msgstr "Fişiere care controlează generarea codului G-Code."
+
+#: flatcamGUI/FlatCAMGUI.py:5677 flatcamGUI/FlatCAMGUI.py:5683
+msgid "Idle."
+msgstr "Inactiv."
+
+#: flatcamGUI/FlatCAMGUI.py:5707
+msgid "Application started ..."
+msgstr "Aplicaţia a pornit ..."
+
+#: flatcamGUI/FlatCAMGUI.py:5708
+msgid "Hello!"
+msgstr "Buna!"
+
+#: flatcamGUI/ObjectUI.py:33
+msgid "FlatCAM Object"
+msgstr "Obiect FlatCAM"
+
+#: flatcamGUI/ObjectUI.py:58
+msgid ""
+"BASIC is suitable for a beginner. Many parameters\n"
+"are hidden from the user in this mode.\n"
+"ADVANCED mode will make available all parameters.\n"
+"\n"
+"To change the application LEVEL, go to:\n"
+"Edit -> Preferences -> General and check:\n"
+"'APP. LEVEL' radio button."
+msgstr ""
+"Modul Baza este potrivit pt incepatori. Multi parametri sunt\n"
+"ascunsi de user in acest mod.\n"
+"Modul Avansat face disponibili toti parametrii programului.\n"
+"\n"
+"Pt a schimba modul de lucru al aplicatiei mergi in:\n"
+"Edit -> Preferințe -> General și bifează:\n"
+"butonul radio: >Nivel App<"
+
+#: flatcamGUI/ObjectUI.py:79
+msgid "<b>Scale:</b>"
+msgstr "<b>Scalează:</b>"
+
+#: flatcamGUI/ObjectUI.py:81
+msgid "Change the size of the object."
+msgstr "Schimba dimensiunea obiectului."
+
+#: flatcamGUI/ObjectUI.py:89
+msgid "Factor:"
+msgstr "Factor:"
+
+#: flatcamGUI/ObjectUI.py:91
+msgid ""
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+"Factor cu care se multiplica \n"
+"caracteristicile geometrice ale\n"
+"acestui obiect."
+
+#: flatcamGUI/ObjectUI.py:102
+msgid "Perform scaling operation."
+msgstr "Efectuează operatia de scalare."
+
+#: flatcamGUI/ObjectUI.py:108
+msgid "<b>Offset:</b>"
+msgstr "<b>Ofset:</b>"
+
+#: flatcamGUI/ObjectUI.py:110
+msgid "Change the position of this object."
+msgstr "Schimba poziţia acestui obiect."
+
+#: flatcamGUI/ObjectUI.py:117
+msgid "Vector:"
+msgstr "Vector:"
+
+#: flatcamGUI/ObjectUI.py:119
+msgid ""
+"Amount by which to move the object\n"
+"in the x and y axes in (x, y) format."
+msgstr ""
+"Valoare cu cat să se deplaseze obiectul\n"
+"pe axele X și /sau Y in formatul (x,y)."
+
+#: flatcamGUI/ObjectUI.py:129
+msgid "Perform the offset operation."
+msgstr "Efectuează operatia de Ofset."
+
+#: flatcamGUI/ObjectUI.py:143
+msgid "Gerber Object"
+msgstr "Obiect Gerber"
+
+#: flatcamGUI/ObjectUI.py:156
+msgid "Solid   "
+msgstr "Solid"
+
+#: flatcamGUI/ObjectUI.py:164
+msgid "M-Color   "
+msgstr "M-Color   "
+
+#: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:588
+#: flatcamGUI/ObjectUI.py:907 flatcamGUI/ObjectUI.py:1437
+msgid "<b>Name:</b>"
+msgstr "<b>Nume:</b>"
+
+#: flatcamGUI/ObjectUI.py:192
+msgid "<b>Apertures:</b>"
+msgstr "<b>Aperturi:</b>"
+
+#: flatcamGUI/ObjectUI.py:194
+msgid "Apertures Table for the Gerber Object."
+msgstr "Tabela de aperturi pt obiectul Gerber."
+
+#: flatcamGUI/ObjectUI.py:203
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"Comuta afișarea tabelei de aperturi Gerber.\n"
+"Când se debifează, toate marcajele aperturilor\n"
+"care sutn curent afisate, vor fi sterse."
+
+#: flatcamGUI/ObjectUI.py:214
+msgid "Mark All"
+msgstr "Marc. Toate"
+
+#: flatcamGUI/ObjectUI.py:216
+msgid ""
+"When checked it will display all the apertures.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+"Când este bifat se vor afisa toate aperturile.\n"
+"Când este debifat se vor sterge toate marcajele de aperturi."
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Code"
+msgstr "Cod"
+
+#: flatcamGUI/ObjectUI.py:228 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517
+msgid "Type"
+msgstr "Tip"
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Size"
+msgstr "Dimens."
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Dim"
+msgstr "Dim"
+
+#: flatcamGUI/ObjectUI.py:232
+msgid "Index"
+msgstr "Index"
+
+#: flatcamGUI/ObjectUI.py:234
+msgid "Aperture Code"
+msgstr "Cod"
+
+#: flatcamGUI/ObjectUI.py:236
+msgid "Type of aperture: circular, rectangle, macros etc"
+msgstr ""
+"Tipul aperturilor:\n"
+"- circular\n"
+"- patrulater\n"
+"- macro-uri\n"
+"etc"
+
+#: flatcamGUI/ObjectUI.py:238
+msgid "Aperture Size:"
+msgstr "Dim. aper."
+
+#: flatcamGUI/ObjectUI.py:240
+msgid ""
+"Aperture Dimensions:\n"
+" - (width, height) for R, O type.\n"
+" - (dia, nVertices) for P type"
+msgstr ""
+"Dimensiunile aperturilor:\n"
+"- (latime, inaltime) pt tipurile R, O.\n"
+"- (diametru, nVertices) pt tipul P"
+
+#: flatcamGUI/ObjectUI.py:244
+msgid "Mark the aperture instances on canvas."
+msgstr "Marchează aperturile pe canvas."
+
+#: flatcamGUI/ObjectUI.py:252
+msgid "Scale Factor:"
+msgstr "Factor scalare:"
+
+#: flatcamGUI/ObjectUI.py:267
+msgid "Perform scaling operation on the selected apertures."
+msgstr "Efectuează operatia de scalare pt aperturile selectate."
+
+#: flatcamGUI/ObjectUI.py:273
+msgid "Buffer Factor:"
+msgstr "Factor bufer:"
+
+#: flatcamGUI/ObjectUI.py:286
+msgid "Buffer"
+msgstr "Bufer"
+
+#: flatcamGUI/ObjectUI.py:288
+msgid "Perform buffer operation on the selected apertures."
+msgstr "Efectuează operatia de bufer pt aperturile selectate."
+
+#: flatcamGUI/ObjectUI.py:296
+msgid "<b>Generate new Gerber Object:</b>"
+msgstr "<b>Crează un nou obiect Gerber::</b>"
+
+#: flatcamGUI/ObjectUI.py:298
+msgid "Will generate a new Gerber object from the changed apertures."
+msgstr "Va crea un nou obiect tip Gerber din aperturile modificate."
+
+#: flatcamGUI/ObjectUI.py:304
+msgid "Go"
+msgstr "Fă!"
+
+#: flatcamGUI/ObjectUI.py:306
+msgid ""
+"Will generate a new Gerber object from the changed apertures.\n"
+"This new object can then be isolated etc."
+msgstr ""
+"Va genera un nou obiect Gerber din aperturile modificate.\n"
+"Acest nou obiect poate fi izolat etc."
+
+#: flatcamGUI/ObjectUI.py:333
+msgid ""
+"Diameter of the cutting tool.\n"
+"If you want to have an isolation path\n"
+"inside the actual shape of the Gerber\n"
+"feature, use a negative value for\n"
+"this parameter."
+msgstr ""
+"Diametrul uneltei taietoare.\n"
+"Daca se doreste să se aibă o trecere de izolatie\n"
+"in interiorul poligonului Gerber (traseu), foloseşte\n"
+"o valoare negativă pt acest parametru."
+
+#: flatcamGUI/ObjectUI.py:344
+msgid "Passes:"
+msgstr "Treceri:"
+
+#: flatcamGUI/ObjectUI.py:378
+msgid "Combine"
+msgstr "Combina"
+
+#: flatcamGUI/ObjectUI.py:394
+msgid "<b>Generate Isolation Geometry:</b>"
+msgstr "<b>Creează Geometrie de Izolare:</b>"
+
+#: flatcamGUI/ObjectUI.py:396
+msgid ""
+"Create a Geometry object with toolpaths to cut \n"
+"isolation outside, inside or on both sides of the\n"
+"object. For a Gerber object outside means outside\n"
+"of the Gerber feature and inside means inside of\n"
+"the Gerber feature, if possible at all. This means\n"
+"that only if the Gerber feature has openings inside, they\n"
+"will be isolated. If what is wanted is to cut isolation\n"
+"inside the actual Gerber feature, use a negative tool\n"
+"diameter above."
+msgstr ""
+"Crează un obiect Geometrie cu treceri taietoare pentru\n"
+"a efectua o izolare in afară, in interior sau pe ambele parti\n"
+"ale obiectului.\n"
+"Pt un Gerber >in afară< inseamna in exteriorul elem. Gerber\n"
+"(traseu, zona etc) iar >in interior< inseamna efectiv in interiorul\n"
+"acelui elem. Gerber (daca poate fi posibil)."
+
+#: flatcamGUI/ObjectUI.py:415
+msgid "FULL Geo"
+msgstr "Geo Full"
+
+#: flatcamGUI/ObjectUI.py:417
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing. It contains both\n"
+"the interiors and exteriors geometry."
+msgstr ""
+"Crează un obiect Geometrie pt izolare.\n"
+"Contine atat geometriile exterioare cat și\n"
+"pe cele interioare."
+
+#: flatcamGUI/ObjectUI.py:426
+msgid "Ext Geo"
+msgstr "Geo Ext"
+
+#: flatcamGUI/ObjectUI.py:428
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the exteriors geometry."
+msgstr ""
+"Crează obiectul Geometrie\n"
+"pt izolare conținând doar\n"
+"geometriile de exterior."
+
+#: flatcamGUI/ObjectUI.py:435
+msgid "Int Geo"
+msgstr "Geo Int"
+
+#: flatcamGUI/ObjectUI.py:437
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the interiors geometry."
+msgstr ""
+"Crează obiectul Geometrie\n"
+"pt izolare conținând doar\n"
+"geometriile de interior."
+
+#: flatcamGUI/ObjectUI.py:455
+msgid "<b>Clear N-copper:</b>"
+msgstr "<b>Curăță Non-Cu:</b>"
+
+#: flatcamGUI/ObjectUI.py:465 flatcamTools/ToolNonCopperClear.py:239
+msgid ""
+"Create the Geometry Object\n"
+"for non-copper routing."
+msgstr ""
+"Crează un obiect Geometrie\n"
+"pt rutare non-cupru (adica pt\n"
+"curățare zone de cupru)."
+
+#: flatcamGUI/ObjectUI.py:471
+msgid "<b>Board cutout:</b>"
+msgstr "<b>Decupare PCB:</b>"
+
+#: flatcamGUI/ObjectUI.py:479
+msgid "Cutout Tool"
+msgstr "Unealta Decupare"
+
+#: flatcamGUI/ObjectUI.py:481
+msgid ""
+"Generate the geometry for\n"
+"the board cutout."
+msgstr ""
+"Generează un obiect Geometrie\n"
+"pt decuparea PCB."
+
+#: flatcamGUI/ObjectUI.py:487
+msgid "<b>Non-copper regions:</b>"
+msgstr "<b>Regiuni fără Cu.:</b>"
+
+#: flatcamGUI/ObjectUI.py:489
+msgid ""
+"Create polygons covering the\n"
+"areas without copper on the PCB.\n"
+"Equivalent to the inverse of this\n"
+"object. Can be used to remove all\n"
+"copper from a specified region."
+msgstr ""
+"Crează poligoane acopering zonele fără\n"
+"cupru de pe PCB. Echivalent cu inversul\n"
+"obiectului sursa. Poate fi folosit pt a indeparta\n"
+"cuprul din zona specificata."
+
+#: flatcamGUI/ObjectUI.py:514 flatcamGUI/ObjectUI.py:545
+msgid "Rounded Geo"
+msgstr "Geo rotunjita"
+
+#: flatcamGUI/ObjectUI.py:516
+msgid "Resulting geometry will have rounded corners."
+msgstr ""
+"Obiectul Geometrie rezultat \n"
+"va avea colțurile rotunjite."
+
+#: flatcamGUI/ObjectUI.py:521 flatcamGUI/ObjectUI.py:555
+#: flatcamTools/ToolCutOut.py:159 flatcamTools/ToolCutOut.py:179
+#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolSolderPaste.py:127
+msgid "Generate Geo"
+msgstr "Crează Geo"
+
+#: flatcamGUI/ObjectUI.py:527
+msgid ""
+"Create a geometry surrounding the Gerber object.\n"
+"Square shape."
+msgstr ""
+"Generează un obiect tip Geometrie care va inconjura\n"
+"obiectul Gerber. Forma patratica (rectangulara)."
+
+#: flatcamGUI/ObjectUI.py:557
+msgid "Generate the Geometry object."
+msgstr "Generează obiectul Geometrie."
+
+#: flatcamGUI/ObjectUI.py:568
+msgid "Excellon Object"
+msgstr "Obiect Excellon"
+
+#: flatcamGUI/ObjectUI.py:579
+msgid "Solid circles."
+msgstr "Cercuri solide."
+
+#: flatcamGUI/ObjectUI.py:607 flatcamGUI/ObjectUI.py:926
+msgid "<b>Tools Table</b>"
+msgstr "<b>Tabela Unelte</b>"
+
+#: flatcamGUI/ObjectUI.py:628
+msgid "Offset Z"
+msgstr "Ofset Z:"
+
+#: flatcamGUI/ObjectUI.py:632
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn in the Machine Code."
+msgstr ""
+"Acesta este numărul uneltei.\n"
+"Când se foloseşte optiunea de pauza pt schimb unealta,\n"
+"la evenim. de schimb unealta, va aparea sub forma T1, T2, etc\n"
+"in codul masina CNC."
+
+#: flatcamGUI/ObjectUI.py:636 flatcamGUI/ObjectUI.py:972
+#: flatcamTools/ToolNonCopperClear.py:96 flatcamTools/ToolPaint.py:94
+msgid ""
+"Tool Diameter. It's value (in current FlatCAM units) \n"
+"is the cut width into the material."
+msgstr ""
+"Diametrul uneltei. Valoarea să (in unitati curente)\n"
+"reprezinta lăţimea taieturii in material."
+
+#: flatcamGUI/ObjectUI.py:639
+msgid ""
+"The number of Drill holes. Holes that are drilled with\n"
+"a drill bit."
+msgstr ""
+"Numărul de găuri. Sunt găuri efectuate prin\n"
+"operatii de găurire efectuate cu un burghiu."
+
+#: flatcamGUI/ObjectUI.py:642
+msgid ""
+"The number of Slot holes. Holes that are created by\n"
+"milling them with an endmill bit."
+msgstr ""
+"Numărul de sloturi. Sunt găuri efectuate\n"
+"prin op. de frezare cu o freza."
+
+#: flatcamGUI/ObjectUI.py:649
+msgid "Toggle display of the drills for the current tool."
+msgstr "Comuta afișarea găurilor pt unealta curentă."
+
+#: flatcamGUI/ObjectUI.py:657
+msgid ""
+"Create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+"Crează un obiect CNCJob din\n"
+"acest obiect."
+
+#: flatcamGUI/ObjectUI.py:686 flatcamGUI/ObjectUI.py:1186
+msgid "Tool change"
+msgstr "Schimb unealta"
+
+#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1179
+msgid "Tool change Z:"
+msgstr "Z schimb unealta:"
+
+#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1182
+msgid ""
+"Z-axis position (height) for\n"
+"tool change."
+msgstr "Înălţimea, pe axa Z,  pentru schimbul uneltei."
+
+#: flatcamGUI/ObjectUI.py:707
+msgid ""
+"Tool height just before starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+"Înălţimea uneltei la inceputul lucrului.\n"
+"Seterge aceasta valoare daca nu este folosita."
+
+#: flatcamGUI/ObjectUI.py:717
+msgid ""
+"Z-axis position (height) for\n"
+"the last move."
+msgstr "Înălţimea, pe axa Z, la finalul lucrului."
+
+#: flatcamGUI/ObjectUI.py:725
+msgid "Feedrate (Plunge):"
+msgstr "Feedrate (Plonjare):"
+
+#: flatcamGUI/ObjectUI.py:727
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for linear move G01."
+msgstr ""
+"Viteza uneltei când se face găuriea\n"
+"(in unitati pe minut).\n"
+"Aceasta este miscarea lineara G01."
+
+#: flatcamGUI/ObjectUI.py:777
+msgid ""
+"The json file that dictates\n"
+"gcode output."
+msgstr ""
+"Fişierul care dictează codul G-Code \n"
+"generat. In format JSON."
+
+#: flatcamGUI/ObjectUI.py:809
+msgid ""
+"Select from the Tools Table above\n"
+"the tools you want to include."
+msgstr ""
+"Selectează din Tabela de Unelte de mai sus,\n"
+"uneltele care trebuie incluse."
+
+#: flatcamGUI/ObjectUI.py:816
+msgid "<b>Type:    </b>"
+msgstr "<b>Tip:</b>"
+
+#: flatcamGUI/ObjectUI.py:818
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to a series of drills."
+msgstr ""
+"Alege ce să folosești pentru generarea de G-Code:\n"
+"- Găuri\n"
+"- Sloturi\n"
+"- Ambele\n"
+"Când se alege >Sloturi< sau >Ambele<, sloturile\n"
+"vor fi convertite intr-o serie de găuriri."
+
+#: flatcamGUI/ObjectUI.py:833
+msgid "Create GCode"
+msgstr "Crează GCode"
+
+#: flatcamGUI/ObjectUI.py:835
+msgid "Generate the CNC Job."
+msgstr "Generează un obiect CNCJob."
+
+#: flatcamGUI/ObjectUI.py:847
+msgid ""
+"Select from the Tools Table above\n"
+" the hole dias that are to be milled."
+msgstr ""
+"Selecteaa din Tabela de Unelte de mai sus\n"
+"acele găuri care vor fi frezate."
+
+#: flatcamGUI/ObjectUI.py:854
+msgid "Drills Tool dia:"
+msgstr "Dia. Burghiu:"
+
+#: flatcamGUI/ObjectUI.py:861
+msgid "Mill Drills Geo"
+msgstr "Geo pt frezare găuri"
+
+#: flatcamGUI/ObjectUI.py:863
+msgid ""
+"Create the Geometry Object\n"
+"for milling DRILLS toolpaths."
+msgstr ""
+"Crează un obiect tip Geometrie pt.\n"
+"frezarea rutelor create din Găuri."
+
+#: flatcamGUI/ObjectUI.py:870
+msgid "Slots Tool dia:"
+msgstr "Dia freza:"
+
+#: flatcamGUI/ObjectUI.py:877
+msgid "Mill Slots Geo"
+msgstr "Geo pt. frezare sloturi"
+
+#: flatcamGUI/ObjectUI.py:879
+msgid ""
+"Create the Geometry Object\n"
+"for milling SLOTS toolpaths."
+msgstr ""
+"Crează un obiect tip Geometrie pt.\n"
+"frezarea rutelor create din Sloturi."
+
+#: flatcamGUI/ObjectUI.py:897
+msgid "Geometry Object"
+msgstr "Obiect Geometrie"
+
+#: flatcamGUI/ObjectUI.py:928
+msgid ""
+"Tools in this Geometry object used for cutting.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V). \n"
+"When V-shaped is selected the 'Type' entry is automatically \n"
+"set to Isolation, the CutZ parameter in the UI form is\n"
+"grayed out and Cut Z is automatically calculated from the newly \n"
+"showed UI form entries named V-Tip Dia and V-Tip Angle."
+msgstr ""
+"Uneltele din acest obiect Geometrie folosit pentru tăiere.\n"
+"Intrarea >Ofset< va seta un ofset pentru tăiere.\n"
+"Acesta poate fi Inauntru, In afară, Pe cale și Personalizat.\n"
+"Intrarea >Tip< este doar informativa și permite să stim intentia\n"
+"pentru care folosim unealta aleasa.\n"
+"Poate să fie Grosier, Finisare și Izolatie.\n"
+"Intrarea >Tip unealta< (TU) poate fi: Circular (cu unul sau mai\n"
+"multi dinti C1 ...C4), rotunda (B) sau cu vârf V-Shape (V).\n"
+"\n"
+"Când V-shape este selectat atunci și >Tip< este automat setat \n"
+"in 'Izolare', prametrul >Z tăiere< din UI este dezactivat (gri) pt că\n"
+"este acum calculat automat din doi noi parametri care sunt afisati:\n"
+"- V-Dia \n"
+"- V-unghi"
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "Dia"
+msgstr "Dia"
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "TT"
+msgstr "TU"
+
+#: flatcamGUI/ObjectUI.py:966
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn"
+msgstr ""
+"Acesta este numărul uneltei.\n"
+"Când se foloseşte optiunea de pauza pt schimb unealta,\n"
+"la evenim. de schimb unealta, va aparea sub forma T1, T2, etc\n"
+"in codul masina CNC."
+
+#: flatcamGUI/ObjectUI.py:977
+msgid ""
+"The value for the Offset can be:\n"
+"- Path -> There is no offset, the tool cut will be done through the geometry "
+"line.\n"
+"- In(side) -> The tool cut will follow the geometry inside. It will create a "
+"'pocket'.\n"
+"- Out(side) -> The tool cut will follow the geometry line on the outside."
+msgstr ""
+"Valorile pt Ofset pot fi:\n"
+"- Pe cale -> Ofsetul este zero, tăietura va fi efectuatat pe linia "
+"geometrică\n"
+"- În(ăuntru) -> Tăietura va urma geometria pe interior. Va crea un "
+"'buzunar'\n"
+"- Afară-> Tăietura va urma geometria pe exterior"
+
+#: flatcamGUI/ObjectUI.py:984
+msgid ""
+"The (Operation) Type has only informative value. Usually the UI form "
+"values \n"
+"are choosed based on the operation type and this will serve as a reminder.\n"
+"Can be 'Roughing', 'Finishing' or 'Isolation'.\n"
+"For Roughing we may choose a lower Feedrate and multiDepth cut.\n"
+"For Finishing we may choose a higher Feedrate, without multiDepth.\n"
+"For Isolation we need a lower Feedrate as it use a milling bit with a fine "
+"tip."
+msgstr ""
+"Tipul (operatiei efectuate cu unealta) are doar o valoare informativa. De "
+"obicei\n"
+"valorile din UI sunt alese bazate pe tipul operatiei și acesta ne serveste "
+"ca și\n"
+"notificare. Poate să fie: Grosier, Finisare sau Izolare.\n"
+"Grosier -> putem alege de ex un feedrate scazut și tăiere in mai multe "
+"etape.\n"
+"Finisare -> alegem un feedrate mai mare și tăiere dintr-o singura operatie\n"
+"Izolare -> avem nevoie de un feedrate scazut pt ca se foloseşte o freza cu "
+"un\n"
+"vârf fin, ascutit."
+
+#: flatcamGUI/ObjectUI.py:993
+msgid ""
+"The Tool Type (TT) can be:\n"
+"- Circular with 1 ... 4 teeth -> it is informative only. Being circular the "
+"cut width in material\n"
+"is exactly the tool diameter.\n"
+"- Ball -> informative only and make reference to the Ball type endmill.\n"
+"- V-Shape -> it will disable de Z-Cut parameter in the UI form and enable "
+"two additional UI form\n"
+"fields: V-Tip Dia and V-Tip Angle. Adjusting those two values will adjust "
+"the Z-Cut parameter such\n"
+"as the cut width into material will be equal with the value in the Tool "
+"Diameter column of this table.\n"
+"Choosing the V-Shape Tool Type automatically will select the Operation Type "
+"as Isolation."
+msgstr ""
+"Tipul Uneltei (TU) poate fi:\n"
+"- Circular cu 1 ... 4 dinti -> are aspect informativ. Lăţimea de tăiere este "
+"exact diametrul uneltei.\n"
+"- Rotund (ball) -> val. informativa și face referinţă la tipul de freza "
+"Ball\n"
+"- V-Shape -> produce modificari in UI. Va dezactiva parametrul >Z tăiere< "
+"deoarece acesta va fi\n"
+"calculat automat din valorile >V-dia< și >V-unghi, parametri care sunt acum "
+"afisati in UI, cat și din\n"
+"lăţimea de tăiere in material care este de fapt valoarea diametrului "
+"uneltei.\n"
+"Alegerea tipului V-Shape (forma in V) va selecta automat Tipul de Operatie "
+"ca Izolare."
+
+#: flatcamGUI/ObjectUI.py:1004
+msgid ""
+"Plot column. It is visible only for MultiGeo geometries, meaning geometries "
+"that holds the geometry\n"
+"data into the tools. For those geometries, deleting the tool will delete the "
+"geometry data also,\n"
+"so be WARNED. From the checkboxes on each row it can be enabled/disabled the "
+"plot on canvas\n"
+"for the corresponding tool."
+msgstr ""
+"Coloana de afișare. Este vizibila doar pentru obiecte Geometrie de tip "
+"MultiGeo, ceea ce inseamna că\n"
+"obiectul stochează datele geometrice in variabilele unelte. \n"
+"\n"
+"ATENTIE: Pentru aceste obiecte, stergerea unei unelte conduce automat și la "
+"stergerea \n"
+"datelor geometrice asociate. Din checkbox-urile asociate, fiecarei unelte i "
+"se poate activa/dezactiva\n"
+"afișarea in canvas."
+
+#: flatcamGUI/ObjectUI.py:1017
+msgid "Tool Offset:"
+msgstr "Ofset unealta:"
+
+#: flatcamGUI/ObjectUI.py:1020
+msgid ""
+"The value to offset the cut when \n"
+"the Offset type selected is 'Offset'.\n"
+"The value can be positive for 'outside'\n"
+"cut and negative for 'inside' cut."
+msgstr ""
+"Valoarea cu care se face ofset când tipul de ofset selectat\n"
+"este >Ofset<. Aceasta valoare poate fi pozitivă pentru un ofset\n"
+"in exterior sau poate fi negativă pentru un ofset in interior."
+
+#: flatcamGUI/ObjectUI.py:1043
+msgid "<b>Tool Dia:</b>"
+msgstr "<b>Dia unealta:</b>"
+
+#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolNonCopperClear.py:135
+#: flatcamTools/ToolPaint.py:133
+msgid ""
+"Add a new tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+"Adaugă o noua unelata in Tabela de Unelte,\n"
+"cu diametrul specificat mai sus."
+
+#: flatcamGUI/ObjectUI.py:1070
+msgid ""
+"Copy a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+"Copiaza o selecţie de unelte in Tabela de Unelte prin\n"
+"selectarea unei linii (sau mai multe) in Tabela de Unelte."
+
+#: flatcamGUI/ObjectUI.py:1078
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+"Sterge o selecţie de unelte in Tabela de Unelte prin\n"
+"selectarea unei linii (sau mai multe) in Tabela de Unelte."
+
+#: flatcamGUI/ObjectUI.py:1094
+msgid "<b>Tool Data</b>"
+msgstr "<b>Date Unealta</b>"
+
+#: flatcamGUI/ObjectUI.py:1097
+msgid ""
+"The data used for creating GCode.\n"
+"Each tool store it's own set of such data."
+msgstr ""
+"Datele folosite pentru crearea codului GCode.\n"
+"Fiecare unealta stochează un subset de asemenea date."
+
+#: flatcamGUI/ObjectUI.py:1107
+msgid "V-Tip Dia:"
+msgstr "V-dia:"
+
+#: flatcamGUI/ObjectUI.py:1110
+msgid "The tip diameter for V-Shape Tool"
+msgstr ""
+"Diametrul la vârf al uneltei tip V-Shape.\n"
+"Forma in V."
+
+#: flatcamGUI/ObjectUI.py:1118
+msgid "V-Tip Angle:"
+msgstr "V-unghi:"
+
+#: flatcamGUI/ObjectUI.py:1121
+msgid ""
+"The tip angle for V-Shape Tool.\n"
+"In degree."
+msgstr ""
+"Unghiul la vârf pentru unealta tip V-Shape. \n"
+"In grade."
+
+#: flatcamGUI/ObjectUI.py:1142
+msgid "Multi-Depth:"
+msgstr "Multi-Pas:"
+
+#: flatcamGUI/ObjectUI.py:1145
+msgid ""
+"Use multiple passes to limit\n"
+"the cut depth in each pass. Will\n"
+"cut multiple times until Cut Z is\n"
+"reached.\n"
+"To the right, input the depth of \n"
+"each pass (positive value)."
+msgstr ""
+"Foloseşte multiple treceri, rute, pentru\n"
+"a limita adâncimea de tăiere pentru fiecare\n"
+"trecere. Se va taie de multiple ori pana când\n"
+"este atinsa valoarea param. >Z tăiere<.\n"
+"In dreapta, introdu adâncimea de tăiere\n"
+"pentru fiecare trecere (valoare pozitivă)."
+
+#: flatcamGUI/ObjectUI.py:1158
+msgid "Depth of each pass (positive)."
+msgstr ""
+"Adâncimea pentru fiecare trecere.\n"
+"Valoare pozitivă, in unitatile curente."
+
+#: flatcamGUI/ObjectUI.py:1189
+msgid ""
+"Include tool-change sequence\n"
+"in the Machine Code (Pause for tool change)."
+msgstr ""
+"Include o secventa de schimb unealta in \n"
+"codul masina CNC. O pauza pentru schimbul\n"
+"uneltei (M6)."
+
+#: flatcamGUI/ObjectUI.py:1215
+msgid ""
+"This is the height (Z) at which the CNC\n"
+"will go as the last move."
+msgstr ""
+"Aceasta este înălţimea Z, la care CNC-ul \n"
+"va fi parcat la finalul de lucru."
+
+#: flatcamGUI/ObjectUI.py:1236
+msgid "Feed Rate Z (Plunge):"
+msgstr "Feedrate Z (Plonjare):"
+
+#: flatcamGUI/ObjectUI.py:1239
+msgid ""
+"Cutting speed in the Z\n"
+"plane in units per minute"
+msgstr ""
+"Viteza de tăiere in planul Z.\n"
+"In unitati pe minut."
+
+#: flatcamGUI/ObjectUI.py:1248
+msgid "Feed Rate Rapids:"
+msgstr "Feedrate rapizi:"
+
+#: flatcamGUI/ObjectUI.py:1251
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+"Viteza de găurire, in unitati pe minut.\n"
+"Corespunde comenzii G0 și este utila doar pentru\n"
+"printerul 3D Marlin, implicit când se foloseşte fişierul\n"
+"postprocesor: Marlin. Ignora aceasta parametru in rest."
+
+#: flatcamGUI/ObjectUI.py:1264
+msgid "Cut over 1st pt"
+msgstr "Re-tăiere 1-ul pt."
+
+#: flatcamGUI/ObjectUI.py:1279
+msgid ""
+"Speed of the spindle in RPM (optional).\n"
+"If LASER postprocessor is used,\n"
+"this value is the power of laser."
+msgstr ""
+"Viteza motorului in RPM (optional).\n"
+"Daca postprocesorul Laser este folosit,\n"
+"valoarea să este puterea laserului."
+
+#: flatcamGUI/ObjectUI.py:1308
+msgid "PostProcessor:"
+msgstr "Postprocesor:"
+
+#: flatcamGUI/ObjectUI.py:1311
+msgid ""
+"The Postprocessor file that dictates\n"
+"the Machine Code (like GCode, RML, HPGL) output."
+msgstr ""
+"Fişierul postprocesor care controlează generarea\n"
+"codului masina CNC (GCode, RML, HPGL) care \n"
+"mai apoi este salvat."
+
+#: flatcamGUI/ObjectUI.py:1349
+msgid ""
+"Add at least one tool in the tool-table.\n"
+"Click the header to select all, or Ctrl + LMB\n"
+"for custom selection of tools."
+msgstr ""
+"Adaugă cel putin o unealta in Tabela de Unelte.\n"
+"Click pe header pentru selectarea tuturora asu CTRL + LMB click\n"
+"pentru o selecţie personalizata de unelte."
+
+#: flatcamGUI/ObjectUI.py:1356
+msgid "Generate"
+msgstr "Generează"
+
+#: flatcamGUI/ObjectUI.py:1359
+msgid "Generate the CNC Job object."
+msgstr "Generează un obiect CNCJob."
+
+#: flatcamGUI/ObjectUI.py:1367
+msgid "<b>Paint Area:</b>"
+msgstr "<b>Unealta Paint</b>"
+
+#: flatcamGUI/ObjectUI.py:1382
+msgid "Launch Paint Tool in Tools Tab."
+msgstr ""
+"Lansează unealta FlatCAM numita Paint și\n"
+"o instalează in Tab-ul Unealta."
+
+#: flatcamGUI/ObjectUI.py:1399
+msgid "CNC Job Object"
+msgstr "Obiect CNCJob"
+
+#: flatcamGUI/ObjectUI.py:1418
+msgid "<b>Plot kind:</b>"
+msgstr "<b>Afișare:</b>"
+
+#: flatcamGUI/ObjectUI.py:1443
+msgid "<b>Travelled dist.:</b>"
+msgstr "<b>Distanta:</b>"
+
+#: flatcamGUI/ObjectUI.py:1446 flatcamGUI/ObjectUI.py:1453
+msgid ""
+"This is the total travelled distance on X-Y plane.\n"
+"In current units."
+msgstr ""
+"Aceasta este distanta totala parcursa in planul X-Y.\n"
+"In unitatile curente."
+
+#: flatcamGUI/ObjectUI.py:1481
+msgid "<b>CNC Tools Table</b>"
+msgstr "<b>Tabela Unelte CNC</b>"
+
+#: flatcamGUI/ObjectUI.py:1484
+msgid ""
+"Tools in this CNCJob object used for cutting.\n"
+"The tool diameter is used for plotting on canvas.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V)."
+msgstr ""
+"Unelete folosite in acest obiect CNCJob pentru tăiere.\n"
+"Diametrul uneltei este folosit pentru afișarea pe canvas.\n"
+"Coloanele sunt:\n"
+"- 'Ofset' -> poate fi in interior, in exterior, pe cale sau personalizat.\n"
+"- 'Tipul' -> este doar informativ și poate fi: Grosier, Finisaj, Izolatie\n"
+"- 'Tipul uneltei' -> poate fi circular cu 1 ... 4 dinti, tip bila sau V-"
+"Shape\n"
+"(cu forma in V)."
+
+#: flatcamGUI/ObjectUI.py:1518
+msgid "P"
+msgstr "P"
+
+#: flatcamGUI/ObjectUI.py:1524
+msgid "Update Plot"
+msgstr "Actualiz. afișare"
+
+#: flatcamGUI/ObjectUI.py:1526
+msgid "Update the plot."
+msgstr "Actualizează afișarea obiectelor."
+
+#: flatcamGUI/ObjectUI.py:1533
+msgid "<b>Export CNC Code:</b>"
+msgstr "<b>Exporta codul masina CNC:</b>"
+
+#: flatcamGUI/ObjectUI.py:1541
+msgid "Prepend to CNC Code:"
+msgstr "Adaugă la inceput in codul G-Code:"
+
+#: flatcamGUI/ObjectUI.py:1544
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add to the beginning of the generated file."
+msgstr ""
+"Plasează aici acele comenzi GCode care se doreste să fie\n"
+"adaugate la inceputul codului masina CNC."
+
+#: flatcamGUI/ObjectUI.py:1554
+msgid "Append to CNC Code"
+msgstr "Adaugă la sfarsit in codul G-Code:"
+
+#: flatcamGUI/ObjectUI.py:1578
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro.\n"
+"The FlatCAM variables are surrounded by '%' symbol.\n"
+"\n"
+"WARNING: it can be used only with a postprocessor file\n"
+"that has 'toolchange_custom' in it's name and this is built\n"
+"having as template the 'Toolchange Custom' posprocessor file."
+msgstr ""
+"Plasează aici acele comenzi G-Code care se doreste să fie executate\n"
+"atunci când evenimentul de tip Schimb Unealta este intalnit.\n"
+"Aceasta va constitui un Macro pentru schimbare unealta.\n"
+"Variabilele FlatCAM folosite aici sunt inconjurate de simbolul %.\n"
+"\n"
+"ATENTIE:\n"
+"poate fi folosit doar cu un fişier postprocesor care contine "
+"'toolchange_custom'\n"
+"in numele sau."
+
+#: flatcamGUI/ObjectUI.py:1634
+msgid "z_cut = depth where to cut"
+msgstr "z_cut = adâncimea de tăiere"
+
+#: flatcamGUI/ObjectUI.py:1635
+msgid "z_move = height where to travel"
+msgstr "z_move = Înălţimea deplasare"
+
+#: flatcamGUI/ObjectUI.py:1656
+msgid "View CNC Code"
+msgstr "Vizualiz. codul CNC"
+
+#: flatcamGUI/ObjectUI.py:1659
+msgid ""
+"Opens TAB to view/modify/print G-Code\n"
+"file."
+msgstr ""
+"Deschide un nou tab pentru a vizualiza, modifica\n"
+"sau tipari codul G-Code."
+
+#: flatcamGUI/ObjectUI.py:1665
+msgid "Save CNC Code"
+msgstr "Salvează codul CNC"
+
+#: flatcamGUI/ObjectUI.py:1668
+msgid ""
+"Opens dialog to save G-Code\n"
+"file."
+msgstr ""
+"Deshide o fereastra dialog pentru salvarea codului\n"
+"G-Code intr-un fişier."
+
+#: flatcamTools/ToolCalculators.py:24
+msgid "Calculators"
+msgstr "Calculatoare"
+
+#: flatcamTools/ToolCalculators.py:25
+msgid "V-Shape Tool Calculator"
+msgstr "Calculator Unealta V-Shape"
+
+#: flatcamTools/ToolCalculators.py:26
+msgid "Units Calculator"
+msgstr "Calculator Unitati"
+
+#: flatcamTools/ToolCalculators.py:27
+msgid "ElectroPlating Calculator"
+msgstr "Calculator ElectroPlacare"
+
+#: flatcamTools/ToolCalculators.py:68
+msgid "Here you enter the value to be converted from INCH to MM"
+msgstr "Valorile pentru conversie din INCH in MM"
+
+#: flatcamTools/ToolCalculators.py:73
+msgid "Here you enter the value to be converted from MM to INCH"
+msgstr "Valorile pentru conversie din MM in INCH"
+
+#: flatcamTools/ToolCalculators.py:98
+msgid ""
+"This is the diameter of the tool tip.\n"
+"The manufacturer specifies it."
+msgstr ""
+"Acesta este diametrul uneltei la vârf.\n"
+"Producatorul il specifica in foaia de catalog."
+
+#: flatcamTools/ToolCalculators.py:101
+msgid "Tip Angle:"
+msgstr "V-Unghi:"
+
+#: flatcamTools/ToolCalculators.py:105
+msgid ""
+"This is the angle of the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+"Acesta este unghiul uneltei la vârf.\n"
+"Producatorul il specifica in foaia de catalog."
+
+#: flatcamTools/ToolCalculators.py:112
+msgid ""
+"This is the depth to cut into the material.\n"
+"In the CNCJob is the CutZ parameter."
+msgstr ""
+"Acest param. este adâncimea de tăiere in material.\n"
+"In obiectul CNCJob este parametrul >Z tăiere<."
+
+#: flatcamTools/ToolCalculators.py:115
+msgid "Tool Diameter:"
+msgstr "Dia unealta:"
+
+#: flatcamTools/ToolCalculators.py:119
+msgid ""
+"This is the tool diameter to be entered into\n"
+"FlatCAM Gerber section.\n"
+"In the CNCJob section it is called >Tool dia<."
+msgstr ""
+"Acesta este diametrul uneltei care trebuie introdus in\n"
+"sectiunea FlatCAM Gerber.\n"
+"In sectiunea CNCJob este numit >Dia unealta<."
+
+#: flatcamTools/ToolCalculators.py:131 flatcamTools/ToolCalculators.py:214
+msgid "Calculate"
+msgstr "Calculează"
+
+#: flatcamTools/ToolCalculators.py:134
+msgid ""
+"Calculate either the Cut Z or the effective tool diameter,\n"
+"  depending on which is desired and which is known. "
+msgstr ""
+"Calculează ori valorea >Z tăiere< ori valoarea efectiva a diametrului "
+"uneltei,\n"
+"depinzand de care dintre acestea este cunoscuta."
+
+#: flatcamTools/ToolCalculators.py:190
+msgid "Current Value:"
+msgstr "Intensitate:"
+
+#: flatcamTools/ToolCalculators.py:194
+msgid ""
+"This is the current intensity value\n"
+"to be set on the Power Supply. In Amps."
+msgstr ""
+"Intensitatea curentului electric care se va seta\n"
+"in sursa de alimentare. In Amperi."
+
+#: flatcamTools/ToolCalculators.py:198
+msgid "Time:"
+msgstr "Durata:"
+
+#: flatcamTools/ToolCalculators.py:202
+msgid ""
+"This is the calculated time required for the procedure.\n"
+"In minutes."
+msgstr ""
+"TImpul necesar (calculat) pentru\n"
+"efectuarea procedurii. In minute."
+
+#: flatcamTools/ToolCalculators.py:217
+msgid ""
+"Calculate the current intensity value and the procedure time,\n"
+"  depending on the parameters above"
+msgstr ""
+"Calculează intensitatea curentului cat și durata procedurii\n"
+"in functie de parametrii de mai sus."
+
+#: flatcamTools/ToolCutOut.py:17
+msgid "Cutout PCB"
+msgstr "Decupare PCB"
+
+#: flatcamTools/ToolCutOut.py:53
+msgid "Obj Type:"
+msgstr "Tip obiect:"
+
+#: flatcamTools/ToolCutOut.py:55
+msgid ""
+"Specify the type of object to be cutout.\n"
+"It can be of type: Gerber or Geometry.\n"
+"What is selected here will dictate the kind\n"
+"of objects that will populate the 'Object' combobox."
+msgstr ""
+"Specifica obiectul care va fi decupat.\n"
+"Poate fi de tip: Gerber sau Geometrie.\n"
+"Ce se va selecta aici va controla tipul de \n"
+"obiecte care vor aparea in combobox-ul\n"
+"numit >Obiect<."
+
+#: flatcamTools/ToolCutOut.py:69 flatcamTools/ToolPanelize.py:71
+msgid "Object:"
+msgstr "Obiect:"
+
+#: flatcamTools/ToolCutOut.py:71
+msgid "Object to be cutout.                        "
+msgstr "Obiectul FlatCAM care va fi decupat."
+
+#: flatcamTools/ToolCutOut.py:79
+msgid ""
+"Diameter of the tool used to cutout\n"
+"the PCB shape out of the surrounding material."
+msgstr ""
+"Diametrul uneltei folosita pt decuparea\n"
+"PCB-ului din materialului inconjurator."
+
+#: flatcamTools/ToolCutOut.py:88
+msgid ""
+"Margin over bounds. A positive value here\n"
+"will make the cutout of the PCB further from\n"
+"the actual PCB border"
+msgstr ""
+"Marginea (zona de siguranta). O val. pozitivă\n"
+"va face decuparea distantat cu aceasta valoare \n"
+"fata de PCB-ul efectiv."
+
+#: flatcamTools/ToolCutOut.py:98
+msgid ""
+"The size of the bridge gaps in the cutout\n"
+"used to keep the board connected to\n"
+"the surrounding material (the one \n"
+"from which the PCB is cutout)."
+msgstr ""
+"Dimenisunea punţilor in decupaj care servesc\n"
+"in a mentine atasat PCB-ul la materialul de unde \n"
+"este decupat."
+
+#: flatcamTools/ToolCutOut.py:114
+msgid "A. Automatic Bridge Gaps"
+msgstr "A. Punţi realiz. automat"
+
+#: flatcamTools/ToolCutOut.py:116
+msgid "This section handle creation of automatic bridge gaps."
+msgstr ""
+"Aceasta sectiune va permite crearea in mod automat\n"
+"a pana la 8 punţi."
+
+#: flatcamTools/ToolCutOut.py:127
+msgid ""
+"Number of gaps used for the Automatic cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+"Numărul de punţi folosite in decupare.\n"
+"Pot fi un număr maxim de 8 punţi aranjate in felul\n"
+"urmator:\n"
+"- lr = stânga -dreapta\n"
+"- tb = sus - jos\n"
+"- 4 = stânga -dreapta - sus - jos\n"
+"- 2lr = 2* stânga - 2* dreapta\n"
+"- 2tb = 2* sus - 2* jos\n"
+"- 8 = 2* stânga - 2* dreapta - 2* sus - 2* jos"
+
+#: flatcamTools/ToolCutOut.py:150
+msgid "FreeForm:"
+msgstr "Forma libera:"
+
+#: flatcamTools/ToolCutOut.py:152
+msgid ""
+"The cutout shape can be of ny shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+"Decupajul poate avea orice forma.\n"
+"Folositor când PCB-ul are o forma neregulata."
+
+#: flatcamTools/ToolCutOut.py:161
+msgid ""
+"Cutout the selected object.\n"
+"The cutout shape can be of any shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+"Decupează obiectul selectat.\n"
+"Forma decupajului poate avea orice forma.\n"
+"Folositor când PCB-ul are o forma neregulata."
+
+#: flatcamTools/ToolCutOut.py:170
+msgid "Rectangular:"
+msgstr "Patrulater:"
+
+#: flatcamTools/ToolCutOut.py:172
+msgid ""
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+"Forma decupajului va fi mereu de forma\n"
+"patratica și va fi forma înconjurătoare a\n"
+"obiectului FlatCAM decupat."
+
+#: flatcamTools/ToolCutOut.py:181
+msgid ""
+"Cutout the selected object.\n"
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+"Decupează obiectul selectat.\n"
+"Forma decupajului este tot timpul dreptunghiulara.."
+
+#: flatcamTools/ToolCutOut.py:189
+msgid "B. Manual Bridge Gaps"
+msgstr "B. Punţi realiz. manual"
+
+#: flatcamTools/ToolCutOut.py:191
+msgid ""
+"This section handle creation of manual bridge gaps.\n"
+"This is done by mouse clicking on the perimeter of the\n"
+"Geometry object that is used as a cutout object. "
+msgstr ""
+"Permite realizarea de punţi de sustinere in mod manual.\n"
+"Se apasa butonul corepsunzator și apoi click cu mouse-ul\n"
+"pe perimetrul formei de decupaj. Daca se face simultan cu\n"
+"apasarea tastei CTRL, operatia se va repeta automat pana când\n"
+"se va apasa tasta 'Escape'."
+
+#: flatcamTools/ToolCutOut.py:207
+msgid "Geo Obj:"
+msgstr "Obiect Geo:"
+
+#: flatcamTools/ToolCutOut.py:209
+msgid "Geometry object used to create the manual cutout."
+msgstr "Obiect tip Geometrie folosit pentru crearea decupajului manual."
+
+#: flatcamTools/ToolCutOut.py:220
+msgid "Manual Geo:"
+msgstr "Geo manual:"
+
+#: flatcamTools/ToolCutOut.py:222 flatcamTools/ToolCutOut.py:232
+msgid ""
+"If the object to be cutout is a Gerber\n"
+"first create a Geometry that surrounds it,\n"
+"to be used as the cutout, if one doesn't exist yet.\n"
+"Select the source Gerber file in the top object combobox."
+msgstr ""
+"Daca obiectul care se decupează este un obiect Gerber,\n"
+"atunci mai intai crează un obiect Geometrie care il inconjoara\n"
+"urmarindu-i forma.\n"
+"Selectează obiectul sursa Gerber in combobox-ul de mai sus,\n"
+"numit >Obiect<."
+
+#: flatcamTools/ToolCutOut.py:242
+msgid "Manual Add Bridge Gaps:"
+msgstr "Adaugă punţi manual:"
+
+#: flatcamTools/ToolCutOut.py:244
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material."
+msgstr ""
+"Folosind click LMB se crează punţi de sustinere a PCB-ului\n"
+"de materialul din care este decupat."
+
+#: flatcamTools/ToolCutOut.py:251
+msgid "Generate Gap"
+msgstr "Generează Punte"
+
+#: flatcamTools/ToolCutOut.py:253
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material.\n"
+"The LMB click has to be done on the perimeter of\n"
+"the Geometry object used as a cutout geometry."
+msgstr ""
+"Permite realizarea de punţi de sustinere in mod manual.\n"
+"Se apasa butonul corepsunzator și apoi click cu mouse-ul\n"
+"pe perimetrul formei de decupaj. Daca se face simultan cu\n"
+"apasarea tastei CTRL, operatia se va repeta automat pana când\n"
+"se va apasa tasta 'Escape'."
+
+#: flatcamTools/ToolCutOut.py:329 flatcamTools/ToolCutOut.py:468
+#: flatcamTools/ToolNonCopperClear.py:659 flatcamTools/ToolPaint.py:757
+#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve object: %s"
+msgstr "[ERROR_NOTCL] Nu s-a putut incarca obiectul: %s"
+
+#: flatcamTools/ToolCutOut.py:333
+msgid ""
+"[ERROR_NOTCL]There is no object selected for Cutout.\n"
+"Select one and try again."
+msgstr ""
+"[ERROR_NOTCL] Nu este nici-un obiect selectat pentru decupaj.\n"
+"Selectează unul și încearcă din nou."
+
+#: flatcamTools/ToolCutOut.py:349
+msgid ""
+"[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+"[WARNING_NOTCL] Diametrul uneltei este zero. Schimba-l intr-o val. pozitivă "
+"Reala."
+
+#: flatcamTools/ToolCutOut.py:359 flatcamTools/ToolCutOut.py:496
+#: flatcamTools/ToolCutOut.py:721
+msgid ""
+"[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Valoarea marginii lipseste sau este in format gresit. Adaugă "
+"din nou și reîncearcă."
+
+#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:507
+#: flatcamTools/ToolCutOut.py:616
+msgid ""
+"[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Valoarea dimensiunii punte lipseste sau este in format "
+"gresit. Adaugă din nou și reîncearcă."
+
+#: flatcamTools/ToolCutOut.py:377 flatcamTools/ToolCutOut.py:514
+msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Numărul de punţi lipseste sau este in format gresit. Adaugă "
+"din nou și reîncearcă."
+
+#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:518
+msgid ""
+"[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 "
+"or 8. Fill in a correct value and retry. "
+msgstr ""
+"[WARNING_NOTCL] Valoarea punţilor poate fi numai una dintre: 'lr', 'tb', "
+"'2lr', '2tb', 4 or 8. Adaugă o valoare permisa și reîncearcă."
+
+#: flatcamTools/ToolCutOut.py:386 flatcamTools/ToolCutOut.py:523
+msgid ""
+"[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+"Optionally, this Multi-geo Geometry can be converted to Single-geo "
+"Geometry,\n"
+"and after that perform Cutout."
+msgstr ""
+"[ERROR] Operatia de decupaj nu se poate efectua cu un obiect Geometrie tip "
+"MultiGeo.\n"
+"Se poate insa converti MultiGeo in tip SingleGeo și apoi se poate efectua "
+"decupajul."
+
+#: flatcamTools/ToolCutOut.py:452 flatcamTools/ToolCutOut.py:586
+msgid "[success] Any form CutOut operation finished."
+msgstr "[success] Operatia de decupaj cu forma libera s-a terminat."
+
+#: flatcamTools/ToolCutOut.py:472 flatcamTools/ToolPaint.py:761
+#: flatcamTools/ToolPanelize.py:299
+#, python-format
+msgid "[ERROR_NOTCL]Object not found: %s"
+msgstr "[ERROR_NOTCL] Obiectul nu a fost gasit: %s"
+
+#: flatcamTools/ToolCutOut.py:486 flatcamTools/ToolCutOut.py:606
+#: flatcamTools/ToolCutOut.py:711
+msgid ""
+"[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+"[ERROR_NOTCL]Diametrul uneltei este zero. Schimba intr-o valoare pozitivă "
+"Reala."
+
+#: flatcamTools/ToolCutOut.py:591
+msgid ""
+"Click on the selected geometry object perimeter to create a bridge gap ..."
+msgstr ""
+"Click pe perimetrul obiectului tip Geometrie selectat\n"
+"pentru a crea o punte separatoare."
+
+#: flatcamTools/ToolCutOut.py:632
+msgid "Making manual bridge gap..."
+msgstr "Se generează o punte separatoare in mod manual..."
+
+#: flatcamTools/ToolCutOut.py:655
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Geoemtry object: %s"
+msgstr "[ERROR_NOTCL] Nu s-a putut incarca obiectul Geometrie: %s"
+
+#: flatcamTools/ToolCutOut.py:659
+#, python-format
+msgid "[ERROR_NOTCL]Geometry object for manual cutout not found: %s"
+msgstr ""
+"[ERROR_NOTCL] Obiectul Geometrie pentru decupaj manual nu este gasit: %s"
+
+#: flatcamTools/ToolCutOut.py:669
+msgid "[success] Added manual Bridge Gap."
+msgstr "[success] O punte a fost adaugata in mod manual."
+
+#: flatcamTools/ToolCutOut.py:686
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Gerber object: %s"
+msgstr "[ERROR_NOTCL] Nu s-a putut incarca obiectul Gerbert: %s"
+
+#: flatcamTools/ToolCutOut.py:690
+msgid ""
+"[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
+"Select one and try again."
+msgstr "Obiectul Gerber pentru decupaj manual nu este gasit: %s"
+
+#: flatcamTools/ToolCutOut.py:695
+msgid ""
+"[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
+"Select a Gerber file and try again."
+msgstr "[ERROR_NOTCL] Obiectul selectat trebuie să fie de tip Gerber."
+
+#: flatcamTools/ToolDblSided.py:18
+msgid "2-Sided PCB"
+msgstr "2-fețe PCB"
+
+#: flatcamTools/ToolDblSided.py:52 flatcamTools/ToolDblSided.py:76
+#: flatcamTools/ToolDblSided.py:100
+msgid "Mirror"
+msgstr "Oglindeste"
+
+#: flatcamTools/ToolDblSided.py:54 flatcamTools/ToolDblSided.py:78
+#: flatcamTools/ToolDblSided.py:102
+msgid ""
+"Mirrors (flips) the specified object around \n"
+"the specified axis. Does not create a new \n"
+"object, but modifies it."
+msgstr ""
+"Oglindeste obiectul specificat pe axa specificata.\n"
+"Nu crează un obiect nou ci il modifica."
+
+#: flatcamTools/ToolDblSided.py:73
+msgid "Excellon Object to be mirrored."
+msgstr "Obiectul Excellon care va fi oglindit."
+
+#: flatcamTools/ToolDblSided.py:97
+msgid "Geometry Obj to be mirrored."
+msgstr "Obiectul Geometrie care va fi oglindit."
+
+#: flatcamTools/ToolDblSided.py:135
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a FlatCAM object) through \n"
+"the center."
+msgstr ""
+"Axa de referinţă ar trebui să treacă printr-un <b>punct</b> ori să strabata\n"
+" o <b>forma</b> (obiect FlatCAM) prin mijloc."
+
+#: flatcamTools/ToolDblSided.py:152
+msgid "Point/Box Reference:"
+msgstr "Referința Punct/ Container:"
+
+#: flatcamTools/ToolDblSided.py:154
+msgid ""
+"If 'Point' is selected above it store the coordinates (x, y) through which\n"
+"the mirroring axis passes.\n"
+"If 'Box' is selected above, select here a FlatCAM object (Gerber, Exc or "
+"Geo).\n"
+"Through the center of this object pass the mirroring axis selected above."
+msgstr ""
+"Daca 'Punct' este selectat mai sus, atunci va stoca coordonatele (x,y) prin "
+"care\n"
+"axa de oglindire trece.\n"
+"Daca 'Container' este selectat mai sus atunci va fi disponibila aici o lista "
+"de obiecte\n"
+"FlatCAM: Gerber, Excellon sau Geometrie. Prin mijocul geometric al acestor "
+"obiecte\n"
+"va trece axa de oglindire selectata mai sus."
+
+#: flatcamTools/ToolDblSided.py:162
+msgid ""
+"Add the coordinates in format <b>(x, y)</b> through which the mirroring "
+"axis \n"
+" selected in 'MIRROR AXIS' pass.\n"
+"The (x, y) coordinates are captured by pressing SHIFT key\n"
+"and left mouse button click on canvas or you can enter the coords manually."
+msgstr ""
+"Adaugă coordonatele in formatul <b>(x, y)</b> ale punctului prin care trece\n"
+"axa de oglindire selectata mai sus.\n"
+"Coordonatele (x,y) pot fi obtinute prin combinatia tasta SHIFT + click mouse "
+"pe\n"
+"canvas sau le puteti introduce manual."
+
+#: flatcamTools/ToolDblSided.py:182
+msgid "Gerber   Reference Box Object"
+msgstr "Obiectul container al Gerber de referinţă"
+
+#: flatcamTools/ToolDblSided.py:183
+msgid "Excellon Reference Box Object"
+msgstr "Obiectul container al Excellon de referinţă"
+
+#: flatcamTools/ToolDblSided.py:184
+msgid "Geometry Reference Box Object"
+msgstr "Obiectul container al Geo de referinţă"
+
+#: flatcamTools/ToolDblSided.py:193
+msgid "Alignment Drill Coordinates:"
+msgstr "Dia. găuri de aliniere"
+
+#: flatcamTools/ToolDblSided.py:195
+msgid ""
+"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For "
+"each set of (x, y) coordinates\n"
+"entered here, a pair of drills will be created:\n"
+"\n"
+"- one drill at the coordinates from the field\n"
+"- one drill in mirror position over the axis selected above in the 'Mirror "
+"Axis'."
+msgstr ""
+"Găuri de aliniere in formatul unei liste: (x1, y1), (x2, y2) samd.\n"
+"Pentru fiecare punct din lista de mai sus (cu coord. (x,y) )\n"
+"un alt punct va fi creat in oglinda.\n"
+"- un punct cu coord. specificate\n"
+"- un punct cu coord. in poziţia oglindita pe axa selectata mai sus"
+
+#: flatcamTools/ToolDblSided.py:210
+msgid ""
+"Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
+"on one side of the mirror axis.\n"
+"\n"
+"The coordinates set can be obtained:\n"
+"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then CTRL+V in the "
+"field.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the "
+"field and click Paste.\n"
+"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..."
+msgstr ""
+"Adăugă coordonatele pt găurile de aliniere in formatul: (x1,y1), (x2,y2) "
+"samd\n"
+"\n"
+"Coordonatele pot fi obtinute prin urmatoarele metoda:\n"
+"- apasare tasta SHIFT + click mouse pe canvas. Apoi apasa butonul 'Adaugă'.\n"
+"- apasare tasta SHIFT + click mouse pe canvas. Apoi CTRL + V combo in câmpul "
+"de editare\n"
+"- apasare tasta SHIFT + click mouse pe canvas. Apoi click dreapta și Paste "
+"in câmpul de edit.\n"
+"- se intorduc manual in formatul (x1,y1), (x2,y2) ..."
+
+#: flatcamTools/ToolDblSided.py:224
+msgid "Alignment Drill Diameter"
+msgstr "Dia. găuri de aliniere"
+
+#: flatcamTools/ToolDblSided.py:247
+msgid "Create Excellon Object"
+msgstr "Crează un obiect Excellon."
+
+#: flatcamTools/ToolDblSided.py:249
+msgid ""
+"Creates an Excellon Object containing the\n"
+"specified alignment holes and their mirror\n"
+"images."
+msgstr ""
+"Crează un obiect Excellon care contine găurile\n"
+"de aliniere specificate cat și cele in oglinda."
+
+#: flatcamTools/ToolDblSided.py:255
+msgid "Reset"
+msgstr "Reset"
+
+#: flatcamTools/ToolDblSided.py:257
+msgid "Resets all the fields."
+msgstr "Resetează toate câmpurile cu informatii."
+
+#: flatcamTools/ToolDblSided.py:302
+msgid "2-Sided Tool"
+msgstr "Unealta 2-fețe"
+
+#: flatcamTools/ToolDblSided.py:327
+msgid ""
+"[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates are "
+"missing. Add them and retry."
+msgstr ""
+"[WARNING_NOTCL] Referința 'Punct' este selectata dar coordonatele sale "
+"lipsesc. Adăugă-le is încearcă din nou."
+
+#: flatcamTools/ToolDblSided.py:346
+msgid ""
+"[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry."
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect container nu este incarcat. Incarca unul și "
+"încearcă din nou."
+
+#: flatcamTools/ToolDblSided.py:368
+msgid ""
+"[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry."
+msgstr ""
+"[WARNING_NOTCL] Val. pt dia burghiu lipseste sau este in format gresit. "
+"Adaugă una și încearcă din nou."
+
+#: flatcamTools/ToolDblSided.py:375
+msgid ""
+"[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them "
+"and retry."
+msgstr ""
+"[WARNING_NOTCL] Nu exista coord. pentru găurile de aliniere. Adaugă-le și "
+"încearcă din nou."
+
+#: flatcamTools/ToolDblSided.py:397
+msgid "[success] Excellon object with alignment drills created..."
+msgstr ""
+"[success] Obiectul Excellon conținând găurile de aliniere a fost creat ..."
+
+#: flatcamTools/ToolDblSided.py:406
+msgid "[WARNING_NOTCL] There is no Gerber object loaded ..."
+msgstr "[WARNING_NOTCL] Nu este nici-un obiect Gerber incarcat ..."
+
+#: flatcamTools/ToolDblSided.py:410 flatcamTools/ToolDblSided.py:453
+#: flatcamTools/ToolDblSided.py:497
+msgid ""
+"[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."
+msgstr ""
+"[ERROR_NOTCL]Doar obiectele de tip Geometrie, Excellon și Gerber pot fi "
+"oglindite ..."
+
+#: flatcamTools/ToolDblSided.py:420
+msgid ""
+"[WARNING_NOTCL] 'Point' coordinates missing. Using Origin (0, 0) as "
+"mirroring reference."
+msgstr ""
+"[WARNING_NOTCL] Coord. 'Punct'-ului lipsesc. Se folosesc coord. punctului "
+"Origine (0,0) ca ref. pt oglindire."
+
+#: flatcamTools/ToolDblSided.py:430 flatcamTools/ToolDblSided.py:474
+#: flatcamTools/ToolDblSided.py:511
+msgid "[WARNING_NOTCL] There is no Box object loaded ..."
+msgstr "[WARNING_NOTCL] Nu este incarcat nici-un obiect container ..."
+
+#: flatcamTools/ToolDblSided.py:440
+#, python-format
+msgid "[success] Gerber %s was mirrored..."
+msgstr "[success]Obiectul Gerberr %s a fost oglindit..."
+
+#: flatcamTools/ToolDblSided.py:449
+msgid "[WARNING_NOTCL] There is no Excellon object loaded ..."
+msgstr "[WARNING_NOTCL] Nici-un obiect tip Excellon nu este incarcat ..."
+
+#: flatcamTools/ToolDblSided.py:464
+msgid ""
+"[WARNING_NOTCL] There are no Point coordinates in the Point field. Add "
+"coords and try again ..."
+msgstr ""
+"[WARNING_NOTCL] Nu exista coord. in câmpul 'Punct'. Adaugă coord. și "
+"încearcă din nou..."
+
+#: flatcamTools/ToolDblSided.py:484
+#, python-format
+msgid "[success] Excellon %s was mirrored..."
+msgstr "[success] Obiectul Excellon %s a fost oglindit..."
+
+#: flatcamTools/ToolDblSided.py:493
+msgid "[WARNING_NOTCL] There is no Geometry object loaded ..."
+msgstr "[WARNING_NOTCL] Nici-un obiect tip Geometrie nu este incarcat ..."
+
+#: flatcamTools/ToolDblSided.py:521
+#, python-format
+msgid "[success] Geometry %s was mirrored..."
+msgstr "[success] Obiectul Geometrie %s a fost oglindit..."
+
+#: flatcamTools/ToolFilm.py:25
+msgid "Film PCB"
+msgstr "Film PCB"
+
+#: flatcamTools/ToolFilm.py:56 flatcamTools/ToolImage.py:53
+#: flatcamTools/ToolPanelize.py:56
+msgid "Object Type:"
+msgstr "Tip Obiect:"
+
+#: flatcamTools/ToolFilm.py:58
+msgid ""
+"Specify the type of object for which to create the film.\n"
+"The object can be of type: Gerber or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Film Object combobox."
+msgstr ""
+"Specificati tipul de obiect pt care se va crea filmul.\n"
+"Obiectul poate avea tipul: Gerber sau Geometrie.\n"
+"Selectia facuta aici controlează ce obiecte vor fi \n"
+"gasite in combobox-ul >Obiect Film<."
+
+#: flatcamTools/ToolFilm.py:71
+msgid "Film Object:"
+msgstr "Obiect Film:"
+
+#: flatcamTools/ToolFilm.py:73
+msgid "Object for which to create the film."
+msgstr "Obiectul pt care se crează filmul."
+
+#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89
+msgid "Box Type:"
+msgstr "Tip container:"
+
+#: flatcamTools/ToolFilm.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"film creation. It can be: Gerber or Geometry type.The selection here decide "
+"the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+"Specificati tipul obiectului care să fie folosit ca și container\n"
+"pt crearea filmului. Poate fi de tipul Geometrie sau Gerber.\n"
+"Selectia facuta aici controlează ce obiecte vor fi \n"
+"gasite in combobox-ul >Container<."
+
+#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104
+msgid "Box Object:"
+msgstr "Container:"
+
+#: flatcamTools/ToolFilm.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object for which we create the film.\n"
+"Usually it is the PCB outline but it can be also the\n"
+"same object for which the film is created."
+msgstr ""
+"Obiectul care este folosit ca și container pentru crearea filmului.\n"
+"De obicei este conturul PCB dar se poate folosi și obiectul pt care\n"
+"se crează filmul."
+
+#: flatcamTools/ToolFilm.py:157
+msgid "Save Film"
+msgstr "Salveaa filmul"
+
+#: flatcamTools/ToolFilm.py:159
+msgid ""
+"Create a Film for the selected object, within\n"
+"the specified box. Does not create a new \n"
+" FlatCAM object, but directly save it in SVG format\n"
+"which can be opened with Inkscape."
+msgstr ""
+"Crează un film pt obiectul selectat, in cadrul obiectului\n"
+"container selectat. Nu crează un obiect nou FlatCAM ci\n"
+"salvează pe HDD un fişier in format SVG care poate fi \n"
+"deschis și prelucrat mai departe cu Inkscape."
+
+#: flatcamTools/ToolFilm.py:225
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry."
+msgstr ""
+"[ERROR_NOTCL] Nici-un obiect FlaCAM nu este selectat. Incarca un obiect pt "
+"Film și încearcă din nou."
+
+#: flatcamTools/ToolFilm.py:231
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry."
+msgstr ""
+"[ERROR_NOTCL] Nici-un obiect FlaCAM nu este selectat. Incarca un obiect "
+"container și încearcă din nou."
+
+#: flatcamTools/ToolFilm.py:255
+msgid "Generating Film ..."
+msgstr "Se generează Film-ul ..."
+
+#: flatcamTools/ToolFilm.py:260 flatcamTools/ToolFilm.py:264
+msgid "Export SVG positive"
+msgstr "Exporta SVG pozitiv"
+
+#: flatcamTools/ToolFilm.py:269
+msgid "[WARNING_NOTCL]Export SVG positive cancelled."
+msgstr "[WARNING_NOTCL] Exportul unui fişier SVG pozitiv este anulat."
+
+#: flatcamTools/ToolFilm.py:276 flatcamTools/ToolFilm.py:280
+msgid "Export SVG negative"
+msgstr "Exporta SVG negativ"
+
+#: flatcamTools/ToolFilm.py:285
+msgid "[WARNING_NOTCL]Export SVG negative cancelled."
+msgstr "[WARNING_NOTCL] Exportul unui fişier SVG negativ este anulat."
+
+#: flatcamTools/ToolImage.py:25
+msgid "Image as Object"
+msgstr "Imagine ca Obiect"
+
+#: flatcamTools/ToolImage.py:31
+msgid "Image to PCB"
+msgstr "Imagine -> PCB"
+
+#: flatcamTools/ToolImage.py:55
+msgid ""
+"Specify the type of object to create from the image.\n"
+"It can be of type: Gerber or Geometry."
+msgstr ""
+"Specifica tipul de obiect care se vrea a fi creat din imagine.\n"
+"Tipul sau poate să fie ori Gerber ori Geometrie."
+
+#: flatcamTools/ToolImage.py:63
+msgid "DPI value:"
+msgstr "Val. DPI:"
+
+#: flatcamTools/ToolImage.py:65
+msgid "Specify a DPI value for the image."
+msgstr "Specifica o valoare DPI pt imagine."
+
+#: flatcamTools/ToolImage.py:72
+msgid "Level of detail"
+msgstr "Nivel Detaliu"
+
+#: flatcamTools/ToolImage.py:81
+msgid "Image type"
+msgstr "Tip imagine"
+
+#: flatcamTools/ToolImage.py:83
+msgid ""
+"Choose a method for the image interpretation.\n"
+"B/W means a black & white image. Color means a colored image."
+msgstr ""
+"Alege o metoda de interpretare a imaginii.\n"
+"B/W = imagine alb-negru\n"
+"Color = imagine in culori"
+
+#: flatcamTools/ToolImage.py:90 flatcamTools/ToolImage.py:103
+#: flatcamTools/ToolImage.py:114 flatcamTools/ToolImage.py:125
+msgid "Mask value"
+msgstr "Val. masca"
+
+#: flatcamTools/ToolImage.py:92
+msgid ""
+"Mask for monochrome image.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry.\n"
+"0 means no detail and 255 means everything \n"
+"(which is totally black)."
+msgstr ""
+"Masca pt imaginile monocrome.\n"
+"Ia valori in intervalul [0 ... 255]\n"
+"Decide nivelul de detalii care să fie\n"
+"incluse in obiectul rezultat.\n"
+"0 = nici-un detaliu\n"
+"255 = include totul (ceeace ce inseamna\n"
+"negru complet)."
+
+#: flatcamTools/ToolImage.py:105
+msgid ""
+"Mask for RED color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Masca pt culoarea ROSU.\n"
+"Ia valori in intervalul [0 ... 255].\n"
+"Decide nivelul de detalii care să fie\n"
+"incluse in obiectul rezultat."
+
+#: flatcamTools/ToolImage.py:116
+msgid ""
+"Mask for GREEN color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Masca pt culoarea VERDE.\n"
+"Ia valori in intervalul [0 ... 255].\n"
+"Decide nivelul de detalii care să fie\n"
+"incluse in obiectul rezultat."
+
+#: flatcamTools/ToolImage.py:127
+msgid ""
+"Mask for BLUE color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+"Masca pt culoarea ALBASTRU.\n"
+"Ia valori in intervalul [0 ... 255].\n"
+"Decide nivelul de detalii care să fie\n"
+"incluse in obiectul rezultat."
+
+#: flatcamTools/ToolImage.py:139
+msgid "Import image"
+msgstr "Importa imagine"
+
+#: flatcamTools/ToolImage.py:141
+msgid "Open a image of raster type and then import it in FlatCAM."
+msgstr "Deschide o imagine tip raster și importa aceasta in FlatCAM."
+
+#: flatcamTools/ToolImage.py:170
+msgid "Image Tool"
+msgstr "Unealta Imagine"
+
+#: flatcamTools/ToolImage.py:200 flatcamTools/ToolImage.py:203
+msgid "Import IMAGE"
+msgstr "Importa Imagine"
+
+#: flatcamTools/ToolMeasurement.py:26
+msgid "Measurement"
+msgstr "Masuratoare"
+
+#: flatcamTools/ToolMeasurement.py:47
+msgid "Start"
+msgstr "Start"
+
+#: flatcamTools/ToolMeasurement.py:47 flatcamTools/ToolMeasurement.py:50
+msgid "Coords"
+msgstr "Coordonate:"
+
+#: flatcamTools/ToolMeasurement.py:48 flatcamTools/ToolMeasurement.py:99
+msgid "This is measuring Start point coordinates."
+msgstr "Coordonatele punctului de Start."
+
+#: flatcamTools/ToolMeasurement.py:50
+msgid "Stop"
+msgstr "Stop"
+
+#: flatcamTools/ToolMeasurement.py:51 flatcamTools/ToolMeasurement.py:104
+msgid "This is the measuring Stop point coordinates."
+msgstr "Coordonatele punctului de Stop."
+
+#: flatcamTools/ToolMeasurement.py:54 flatcamTools/ToolMeasurement.py:109
+msgid "This is the distance measured over the X axis."
+msgstr "Distanta masurata pe axa X."
+
+#: flatcamTools/ToolMeasurement.py:57 flatcamTools/ToolMeasurement.py:115
+msgid "This is the distance measured over the Y axis."
+msgstr "Distanta masurata pe axa Y."
+
+#: flatcamTools/ToolMeasurement.py:59
+msgid "DISTANCE"
+msgstr "DISTANTA:"
+
+#: flatcamTools/ToolMeasurement.py:60 flatcamTools/ToolMeasurement.py:121
+msgid "This is the point to point Euclidian distance."
+msgstr "Distanta euclidiana de la punct la punct."
+
+#: flatcamTools/ToolMeasurement.py:63 flatcamTools/ToolMeasurement.py:70
+#: flatcamTools/ToolMeasurement.py:77 flatcamTools/ToolMeasurement.py:84
+#: flatcamTools/ToolMeasurement.py:91
+msgid "Those are the units in which the distance is measured."
+msgstr "Unitatile de masura in care se masoara distanta."
+
+#: flatcamTools/ToolMeasurement.py:124
+msgid "Measure"
+msgstr "Masoara:"
+
+#: flatcamTools/ToolMeasurement.py:183
+msgid "Meas. Tool"
+msgstr "Unealta Masur."
+
+#: flatcamTools/ToolMeasurement.py:276
+msgid "MEASURING: Click on the Start point ..."
+msgstr "Masoara: Click pe punctul de Start ..."
+
+#: flatcamTools/ToolMeasurement.py:305
+msgid "MEASURING: Click on the Destination point ..."
+msgstr "Masoara: Click pe punctul Destinatie..."
+
+#: flatcamTools/ToolMeasurement.py:326
+#, python-brace-format
+msgid "MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}"
+msgstr "Masoara: Rrezultat D(x) = {d_x} | D(y) = {d_y} | Distanta = {d_z}"
+
+#: flatcamTools/ToolMove.py:81
+msgid "MOVE: Click on the Start point ..."
+msgstr "MUTARE: Click pe punctul de Start ..."
+
+#: flatcamTools/ToolMove.py:88
+msgid "[WARNING_NOTCL] MOVE action cancelled. No object(s) to move."
+msgstr ""
+"[WARNING_NOTCL] Actiunea de Mutare a fost anulata. Nu sunt obiecte care să "
+"fie mutate ..."
+
+#: flatcamTools/ToolMove.py:110
+msgid "MOVE: Click on the Destination point ..."
+msgstr "MUTARE: Click pe punctul Destinatie..."
+
+#: flatcamTools/ToolMove.py:128
+msgid "Moving ..."
+msgstr "In miscare ..."
+
+#: flatcamTools/ToolMove.py:135
+msgid "[WARNING_NOTCL] No object(s) selected."
+msgstr "[WARNING_NOTCL] Nu sunt obiecte selectate."
+
+#: flatcamTools/ToolMove.py:158
+#, python-format
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> %s"
+msgstr "[ERROR_NOTCL] ToolMove.on_left_click() --> %s"
+
+#: flatcamTools/ToolMove.py:164
+#, python-format
+msgid "[success]%s object was moved ..."
+msgstr "[success] Obiectul %s a fost mutat ..."
+
+#: flatcamTools/ToolMove.py:174
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> Error when mouse left click."
+msgstr ""
+"[ERROR_NOTCL] ToolMove.on_left_click() --> Eroare când se face click cu "
+"butonul mouse stânga."
+
+#: flatcamTools/ToolMove.py:202
+msgid "[WARNING_NOTCL]Move action cancelled."
+msgstr "[WARNING_NOTCL] Actiunea de mutare a fost anulata."
+
+#: flatcamTools/ToolMove.py:214
+msgid "[WARNING_NOTCL]Object(s) not selected"
+msgstr "[WARNING_NOTCL] Obiectele nu sunt selectate."
+
+#: flatcamTools/ToolNonCopperClear.py:25
+msgid "Non-Copper Clearing"
+msgstr "Curățăre Non-Cu"
+
+#: flatcamTools/ToolNonCopperClear.py:63
+msgid "Gerber object to be cleared of excess copper.                        "
+msgstr "Obiectul Gerber care să fie curățat de cuprul in exces."
+
+#: flatcamTools/ToolNonCopperClear.py:73
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for copper clearing."
+msgstr ""
+"Un număr de unelte din care algoritmul va alege\n"
+"pe acelea care vor fi folosite pentru curățarea de Cu."
+
+#: flatcamTools/ToolNonCopperClear.py:88
+msgid ""
+"This is the Tool Number.\n"
+"Non copper clearing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more tools.\n"
+"Only tools that create NCC clearing geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+"Numărul uneltei.\n"
+"Curățarea de cupru va incepe cu unealta cu diametrul cel mai mare\n"
+"continuand ulterior cu cele cu dia mai mic pana numai sunt unelte\n"
+"sau s-a terminat procesul.\n"
+"Doar uneltele care efectiv au creat geometrie vor fi prezente in obiectul\n"
+"final. Aceasta deaorece unele unelte nu vor putea genera geometrie."
+
+#: flatcamTools/ToolNonCopperClear.py:100 flatcamTools/ToolPaint.py:98
+msgid ""
+"The Tool Type (TT) can be:<BR>- <B>Circular</B> with 1 ... 4 teeth -> it is "
+"informative only. Being circular, <BR>the cut width in material is exactly "
+"the tool diameter.<BR>- <B>Ball</B> -> informative only and make reference "
+"to the Ball type endmill.<BR>- <B>V-Shape</B> -> it will disable de Z-Cut "
+"parameter in the resulting geometry UI form and enable two additional UI "
+"form fields in the resulting geometry: V-Tip Dia and V-Tip Angle. Adjusting "
+"those two values will adjust the Z-Cut parameter such as the cut width into "
+"material will be equal with the value in the Tool Diameter column of this "
+"table.<BR>Choosing the <B>V-Shape</B> Tool Type automatically will select "
+"the Operation Type in the resulting geometry as Isolation."
+msgstr ""
+"Tipul uneltei (TU) poate fi::<BR>- <B>Circular</B> cu 1 ... 4 dinti -> doar "
+"informativ. prin forma sa circulara, <BR>lăţimea de tăiere este tot una cu "
+"diametrul sau<BR>- <B>Bila</B> -> informativ și face referire la frezele cu "
+"cap rotund.<BR>- <B>V-Shape</B> -> va dezactiva parametrul >Z tăiere< "
+"deoarece acesta este acum calculat și va afisa 2 noi parametri in UI: V_dia "
+"și V_unghi. Ajustarea acestor parametri va modifica param. calculat >Z "
+"tăiere< a.i lăţimea de tăiere in material va fi egală cu valoarea >Dia "
+"unealta< din coloana tabelei de Unelte.<BR>Alegerea tipului <B>V-Shape</B> "
+"va selecta automat Tipul Operatiei ca fiind Izolare."
+
+#: flatcamTools/ToolNonCopperClear.py:119 flatcamTools/ToolPaint.py:117
+msgid "Tool Dia"
+msgstr "Dia Unealta"
+
+#: flatcamTools/ToolNonCopperClear.py:121
+msgid "Diameter for the new tool to add in the Tool Table"
+msgstr "Diametrul pentru noua unealta care să fie adaugata in Tabela de Unelte"
+
+#: flatcamTools/ToolNonCopperClear.py:147 flatcamTools/ToolPaint.py:145
+#: flatcamTools/ToolSolderPaste.py:123
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row(s) in the Tool Table."
+msgstr ""
+"Sterge o selecţie de unelte in Tabela de Unelte,\n"
+"efectuata prin selectia liniilot din Tabela de Unelte."
+
+#: flatcamTools/ToolNonCopperClear.py:225
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"Daca este bifat foloseşte strategia de curățare tip 'rest'.\n"
+"Curățarea de cupru va incepe cu unealta cu diametrul cel mai mare\n"
+"continuand ulterior cu cele cu dia mai mic pana numai sunt unelte\n"
+"sau s-a terminat procesul.\n"
+"Doar uneltele care efectiv au creat geometrie vor fi prezente in obiectul\n"
+"final. Aceasta deaorece unele unelte nu vor putea genera geometrie.\n"
+"Daca nu este bifat, foloseşte algoritmul standard."
+
+#: flatcamTools/ToolNonCopperClear.py:237
+msgid "Generate Geometry"
+msgstr "Genereza Geometrie"
+
+#: flatcamTools/ToolNonCopperClear.py:483 flatcamTools/ToolPaint.py:543
+#: flatcamTools/ToolSolderPaste.py:760
+msgid "[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."
+msgstr ""
+"[WARNING_NOTCL] Introduce diametrul unei unelte pt a fi adaugata, in format "
+"Real."
+
+#: flatcamTools/ToolNonCopperClear.py:511 flatcamTools/ToolPaint.py:567
+msgid "[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."
+msgstr ""
+"[WARNING_NOTCL] Adaugarea unei unelte noi este anulata. Unealta exista deja "
+"in Tabela de Unelte."
+
+#: flatcamTools/ToolNonCopperClear.py:516 flatcamTools/ToolPaint.py:572
+msgid "[success] New tool added to Tool Table."
+msgstr "[success] O noua unealta a fost adaugata in Tabela de Unelte."
+
+#: flatcamTools/ToolNonCopperClear.py:549
+msgid "[ERROR_NOTCL] Wrong value format entered, use a number."
+msgstr "[ERROR_NOTCL] O valoare gresita a fost introdusa. Foloseşte un număr."
+
+#: flatcamTools/ToolNonCopperClear.py:558 flatcamTools/ToolPaint.py:615
+msgid "[success] Tool from Tool Table was edited."
+msgstr "[success] O unealta din Tabela de Unelte a fost editata."
+
+#: flatcamTools/ToolNonCopperClear.py:569 flatcamTools/ToolPaint.py:626
+#: flatcamTools/ToolSolderPaste.py:846
+msgid ""
+"[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool "
+"Table."
+msgstr ""
+"[WARNING_NOTCL] Editare esuata. Noua valoare pt diametrul uneltei este deja "
+"in Tabela de Unelte."
+
+#: flatcamTools/ToolNonCopperClear.py:608 flatcamTools/ToolPaint.py:723
+msgid "[WARNING_NOTCL]Delete failed. Select a tool to delete."
+msgstr "[WARNING_NOTCL] Stergere esuata. Selectează o unealta pt stergere."
+
+#: flatcamTools/ToolNonCopperClear.py:613 flatcamTools/ToolPaint.py:728
+msgid "[success] Tool(s) deleted from Tool Table."
+msgstr "[success] Au fost sterse unelte din Tabela de Unelte."
+
+#: flatcamTools/ToolNonCopperClear.py:666
+msgid "[ERROR_NOTCL]No Gerber file available."
+msgstr "[ERROR_NOTCL] Nici-un fiser Gerber nu este disponibil."
+
+#: flatcamTools/ToolNonCopperClear.py:704
+#: flatcamTools/ToolNonCopperClear.py:826
+msgid "Clearing Non-Copper areas."
+msgstr "Se curăță PCB-ul de cuprul in exces."
+
+#: flatcamTools/ToolNonCopperClear.py:722
+#, python-format
+msgid "[success] Non-Copper Clearing with ToolDia = %s started."
+msgstr "[success] Curățarea de Cupru in exces cu Dia Unealta = %s a inceput."
+
+#: flatcamTools/ToolNonCopperClear.py:791
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s"
+msgstr "[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s"
+
+#: flatcamTools/ToolNonCopperClear.py:796
+msgid "[success] NCC Tool finished."
+msgstr "[success] Unealta NCC s-a terminat."
+
+#: flatcamTools/ToolNonCopperClear.py:798
+msgid ""
+"[WARNING_NOTCL] NCC Tool finished but some PCB features could not be "
+"cleared. Check the result."
+msgstr ""
+"[WARNING_NOTCL] Unealta NCC a terminat lucrul dar unele zone PCB nu au putut "
+"fi curățate de Cu. Verifică rezultatul."
+
+#: flatcamTools/ToolNonCopperClear.py:844
+#, python-format
+msgid "[success] Non-Copper Rest Clearing with ToolDia = %s started."
+msgstr "[success] Curățarea de Cupru tip Rest cu dia unealta = %s a inceput.."
+
+#: flatcamTools/ToolNonCopperClear.py:942
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s"
+msgstr "[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s"
+
+#: flatcamTools/ToolNonCopperClear.py:950
+msgid ""
+"[ERROR_NOTCL] NCC Tool finished but could not clear the object with current "
+"settings."
+msgstr ""
+"[ERROR_NOTCL] Unealta NCC a termiant lucrul dar nu a putut curăța de Cu "
+"obiectul cu setarile curente."
+
+#: flatcamTools/ToolPaint.py:24
+msgid "Paint Area"
+msgstr "Unealta Paint"
+
+#: flatcamTools/ToolPaint.py:60
+msgid "Geometry:"
+msgstr "Geometrie:"
+
+#: flatcamTools/ToolPaint.py:62
+msgid "Geometry object to be painted.                        "
+msgstr "Obiectul tip Geometrie care să fie 'pictat'"
+
+#: flatcamTools/ToolPaint.py:71
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for painting."
+msgstr ""
+"O suma de unelte din care algoritmul va alege pe acelea\n"
+"care vor fi folosite pentru 'pictare'."
+
+#: flatcamTools/ToolPaint.py:86
+msgid ""
+"This is the Tool Number.\n"
+"Painting will start with the tool with the biggest diameter,\n"
+"continuing until there are no more tools.\n"
+"Only tools that create painting geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+"Numărul uneltei.\n"
+"'Pictarea' va incepe cu unealta cu diametrul cel mai mare\n"
+"continuand ulterior cu cele cu dia mai mic pana numai sunt unelte\n"
+"sau s-a terminat procesul.\n"
+"Doar uneltele care efectiv au creat geometrie vor fi prezente in obiectul\n"
+"final. Aceasta deaorece unele unelte nu vor putea genera geometrie."
+
+#: flatcamTools/ToolPaint.py:119
+msgid "Diameter for the new tool."
+msgstr "Diametrul pt noua unealta."
+
+#: flatcamTools/ToolPaint.py:224
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+"Daca este bifat, foloste 'rest machining'.\n"
+"Mai exact, se va curăța cuprul din afara traseelor,\n"
+"folosind mai intai unealta cu diametrul cel mai mare\n"
+"apoi folosindu-se progresiv unelte cu diametrul tot\n"
+"mai mic, din cele disponibile in tabela de unelte, pt a\n"
+"curăța zonele care nu s-au putut curăța cu unealta\n"
+"precedenta.\n"
+"Daca nu este bifat, foloseşte algoritmul standard."
+
+#: flatcamTools/ToolPaint.py:239
+msgid ""
+"How to select the polygons to paint.<BR>Options:<BR>- <B>Single</B>: left "
+"mouse click on the polygon to be painted.<BR>- <B>All</B>: paint all "
+"polygons."
+msgstr ""
+"Cum să se selecteze poligoanele de 'pictat.<BR>Opțiuni:<BR>- <B>Unic</B>: "
+"click mouse pe poligonul de 'pictat'.<BR>- <B>Toate</B>: 'pictează' toate "
+"poligoanele."
+
+#: flatcamTools/ToolPaint.py:254
+msgid "Create Paint Geometry"
+msgstr "Crează un obiect Geometrie tip 'Paint'"
+
+#: flatcamTools/ToolPaint.py:256
+msgid ""
+"After clicking here, click inside<BR>the polygon you wish to be painted if "
+"<B>Single</B> is selected.<BR>If <B>All</B>  is selected then the Paint will "
+"start after click.<BR>A new Geometry object with the tool<BR>paths will be "
+"created."
+msgstr ""
+"Dupa ce se apasa pe acest buton<BR>fa click pe poligonul care trebuie "
+"'pictat' daca <B>Unic</B> este selectat.<BR>Daca <B>Toate</B>  este "
+"selectat, operatia de 'pictare' va incepe imediat dupa click.<BR>Un nou "
+"obiect Geometrie va fi creat."
+
+#: flatcamTools/ToolPaint.py:732
+msgid "geometry_on_paint_button"
+msgstr "geometry_on_paint_button"
+
+#: flatcamTools/ToolPaint.py:735 flatcamTools/ToolPaint.py:780
+msgid "[WARNING_NOTCL]Click inside the desired polygon."
+msgstr ""
+"[WARNING_NOTCL] Click in interiorul poligonului care se doreste să fie "
+"'pictat'."
+
+#: flatcamTools/ToolPaint.py:767
+msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."
+msgstr "[ERROR_NOTCL] Nu se poate face 'pictare' pe geometrii MultiGeo ..."
+
+#: flatcamTools/ToolPaint.py:789 flatcamTools/ToolPaint.py:992
+msgid "Painting polygon..."
+msgstr "Se 'pictează' un poligon..."
+
+#: flatcamTools/ToolPaint.py:840
+msgid "[WARNING] No polygon found."
+msgstr "[WARNING] Nu s-a gasit nici-un poligon."
+
+#: flatcamTools/ToolPaint.py:843
+msgid "Painting polygon."
+msgstr "Se 'pictează' un poligon."
+
+#: flatcamTools/ToolPaint.py:885
+msgid "[ERROR_NOTCL] Geometry could not be painted completely"
+msgstr "[ERROR_NOTCL] Geometria nu a putut să fie 'pictata' complet."
+
+#: flatcamTools/ToolPaint.py:911
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different strategy of paint\n"
+"%s"
+msgstr ""
+"[ERROR] Nu s-a putut face operatia de 'pictare'. Incearcă o combinatie "
+"diferita de parametri. Sau o strategie diferita de 'pictare'.\n"
+"%s"
+
+#: flatcamTools/ToolPaint.py:953
+#, python-format
+msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
+msgstr "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
+
+#: flatcamTools/ToolPaint.py:959 flatcamTools/ToolPaint.py:1251
+msgid "Polygon Paint started ..."
+msgstr "Paint pt poligon a inceput ..."
+
+#: flatcamTools/ToolPaint.py:1107 flatcamTools/ToolPaint.py:1196
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint All. Try a different combination of parameters. "
+"Or a different Method of paint\n"
+"%s"
+msgstr ""
+"[ERROR] Nu s-a putut efectua op. 'Paint' pt toate poligoanele. Incearcă o "
+"combinatie diferita de parametri. Sau încearcă o alta metoda de 'pictat'\n"
+"%s"
+
+#: flatcamTools/ToolPaint.py:1131
+msgid ""
+"[ERROR] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+"[ERROR] Nu exista nici-o Geometrie rezultata din 'pictare' in acest fişier.\n"
+"De obicei inseamna că diametrul uneltei este prea mare pentru elemetele "
+"geometrice.\n"
+"Schimba parametrii de 'pictare' și încearcă din nou."
+
+#: flatcamTools/ToolPaint.py:1140
+msgid "[success] Paint All Done."
+msgstr "[success] 'Paint' pt toate poligoanele a fost efectuata."
+
+#: flatcamTools/ToolPaint.py:1226
+msgid ""
+"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+"[ERROR_NOTCL] Nu exista o geometrie 'pictata' in acest fişier.\n"
+"De obicei aceasta inseamna că diametrul uneltei este prea mare \n"
+"pt a fi folosit in obiectul Geometrie de 'pictat'.\n"
+"Schimba parametrii de 'pictat' și încearcă din nou."
+
+#: flatcamTools/ToolPaint.py:1235
+msgid "[success] Paint All with Rest-Machining done."
+msgstr ""
+"[success] 'Paint' pentru toate poligoanele cu strategia Rest a fost "
+"efectuata."
+
+#: flatcamTools/ToolPanelize.py:25
+msgid "Panelize PCB"
+msgstr "Panelizează PCB"
+
+#: flatcamTools/ToolPanelize.py:58
+msgid ""
+"Specify the type of object to be panelized\n"
+"It can be of type: Gerber, Excellon or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Object combobox."
+msgstr ""
+"Specifica tipul de obiect care va fi panelizat.\n"
+"Poate fi de tipul: Gerber, Excellon sau Geometrie.\n"
+"Selectia facuta aici va dicta tipul de obiecte care se vor\n"
+"regasi in combobox-ul >Obiect<."
+
+#: flatcamTools/ToolPanelize.py:73
+msgid ""
+"Object to be panelized. This means that it will\n"
+"be duplicated in an array of rows and columns."
+msgstr ""
+"Obiectul care va fi panelizat.\n"
+"Acesta va fi multiplicat intr-o arie\n"
+"de linii și coloane."
+
+#: flatcamTools/ToolPanelize.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"panelization. It can be: Gerber or Geometry type.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+"Tipul de obiect care va fi folosit ca și container pt panelizare.\n"
+"Poate fi de tiul: Gerber sau Geometrie.\n"
+"Selectia facuta aici va dicta tipul de obiecte care se vor\n"
+"regasi in combobox-ul >Container<."
+
+#: flatcamTools/ToolPanelize.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object that is to be panelized."
+msgstr ""
+"Obiectul care este folosit ca și container \n"
+"pt obiectul care va fi panelizat."
+
+#: flatcamTools/ToolPanelize.py:150
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Geometry\n"
+"- Gerber"
+msgstr ""
+"Alege tipul de obiect care va fi creat pt obiectul panelizat:\n"
+"- Geometrie\n"
+"-Gerber"
+
+#: flatcamTools/ToolPanelize.py:158
+msgid "Constrain panel within:"
+msgstr "Mentine panelul in:"
+
+#: flatcamTools/ToolPanelize.py:192
+msgid "Panelize Object"
+msgstr "Panelizează obiectul"
+
+#: flatcamTools/ToolPanelize.py:194
+msgid ""
+"Panelize the specified object around the specified box.\n"
+"In other words it creates multiple copies of the source object,\n"
+"arranged in a 2D array of rows and columns."
+msgstr ""
+"Se panelizează obiectul conform containerului selectat.\n"
+"Cu alte cuvinte se crează copii multiple ale obiectului sursa,\n"
+"aranjate intr-o arie 2D de linii și coloane."
+
+#: flatcamTools/ToolPanelize.py:311
+#, python-format
+msgid "[WARNING]No object Box. Using instead %s"
+msgstr "[WARNING] Nu exista container. Se foloseşte in schimb %s"
+
+#: flatcamTools/ToolPanelize.py:392
+msgid ""
+"[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive "
+"integer."
+msgstr ""
+"[ERROR_NOTCL] Val. coloane sau linii este zero. Schimba aceasta val. intr-un "
+"număr pozitiv intreg."
+
+#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526
+msgid "Generating panel ... Please wait."
+msgstr "Se generează panelul ... Va rugam asteptati!"
+
+#: flatcamTools/ToolPanelize.py:520
+msgid "[success]Panel done..."
+msgstr "[success] Panel executat ..."
+
+#: flatcamTools/ToolPanelize.py:523
+#, python-brace-format
+msgid ""
+"[WARNING] Too big for the constrain area. Final panel has {col} columns and "
+"{row} rows"
+msgstr ""
+"[WARNING] Prea mare pt aria desemnata. Panelul final are {col} coloane și "
+"{row} linii"
+
+#: flatcamTools/ToolPanelize.py:531
+msgid "[success]Panel created successfully."
+msgstr "[success] Panel creat cu succes."
+
+#: flatcamTools/ToolProperties.py:103
+msgid "[ERROR_NOTCL] Properties Tool was not displayed. No object selected."
+msgstr ""
+"[ERROR_NOTCL] Unealta Proprietati nu a fost afișată. Nici-un obiect nu este "
+"selectat."
+
+#: flatcamTools/ToolProperties.py:110
+msgid "[success] Object Properties are displayed."
+msgstr "[success] Proprietatile obiectului sunt afisate in Tab-ul Unealta."
+
+#: flatcamTools/ToolProperties.py:111
+msgid "Properties Tool"
+msgstr "Unealta Proprietati"
+
+#: flatcamTools/ToolShell.py:69
+msgid "...proccessing..."
+msgstr "...in procesare..."
+
+#: flatcamTools/ToolShell.py:71
+#, python-format
+msgid "...proccessing... [%s]"
+msgstr "...in procesare... [%s]"
+
+#: flatcamTools/ToolSolderPaste.py:37
+msgid "Solder Paste Tool"
+msgstr "Unealta DispensorPF"
+
+#: flatcamTools/ToolSolderPaste.py:65
+msgid "Gerber Solder paste object.                        "
+msgstr "Obiect Gerber cu masca pt dispensarea de pasta de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:72
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for dispensing solder paste."
+msgstr ""
+"Un număr de unelte (nozzle) din care algoritmul va alege pe acelea\n"
+"care vor fi folosite pentru dispensarea pastei de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:87
+msgid ""
+"This is the Tool Number.\n"
+"The solder dispensing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more Nozzle tools.\n"
+"If there are no longer tools but there are still pads not covered\n"
+" with solder paste, the app will issue a warning message box."
+msgstr ""
+"Numărul Uneltei.\n"
+"Dispensarea de pasta de fludor va incepe cu unealta care are dia\n"
+"cel mai mare și va continua pana numai sunt unelte Nozzle disponibile\n"
+"sau procesul s-a terminat.\n"
+"Daca numai sunt unelte dar mai sunt inca paduri neacoperite de pasta de \n"
+"fludor, aplicaţia va afisa un mesaj de avertizare in Status Bar."
+
+#: flatcamTools/ToolSolderPaste.py:94
+msgid ""
+"Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
+"is the width of the solder paste dispensed."
+msgstr ""
+"Diametrul uneltei Nozzle. Valoarea sa (in unitati de maura curente)\n"
+"este lăţimea cantiatii de pasta de fludor dispensata."
+
+#: flatcamTools/ToolSolderPaste.py:101
+msgid "New Nozzle Tool"
+msgstr "Unealta noua"
+
+#: flatcamTools/ToolSolderPaste.py:117
+msgid ""
+"Add a new nozzle tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+"Adaugă o unealta nou tip Nozzle in Tabela de Unelte\n"
+"cu diametrul specificat mai sus,"
+
+#: flatcamTools/ToolSolderPaste.py:129
+msgid "Generate solder paste dispensing geometry."
+msgstr "Generează un obiect Geometrie pt dispensarea de pasta de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:142
+msgid "STEP 1"
+msgstr "PAS 1"
+
+#: flatcamTools/ToolSolderPaste.py:144
+msgid ""
+"First step is to select a number of nozzle tools for usage\n"
+"and then optionally modify the GCode parameters bellow."
+msgstr ""
+"Primul pas este să se efectueza o selecţie de unelte Nozzl pt \n"
+"utilizare și apoi in mod optional, să se modifice parametrii\n"
+"GCode de mai jos."
+
+#: flatcamTools/ToolSolderPaste.py:147
+msgid ""
+"Select tools.\n"
+"Modify parameters."
+msgstr ""
+"Selectează unelte.\n"
+"Modifica parametri."
+
+#: flatcamTools/ToolSolderPaste.py:290
+msgid "Generate GCode"
+msgstr "Genereaa GCode"
+
+#: flatcamTools/ToolSolderPaste.py:292
+msgid ""
+"Generate GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+"Generează  GCode pt dispensarea\n"
+"de pasta de fludor pe padurile PCB."
+
+#: flatcamTools/ToolSolderPaste.py:308
+msgid "STEP 2:"
+msgstr "PAS 2:"
+
+#: flatcamTools/ToolSolderPaste.py:310
+msgid ""
+"Second step is to create a solder paste dispensing\n"
+"geometry out of an Solder Paste Mask Gerber file."
+msgstr ""
+"Al 2-lea pas este să se creeze un obiect Geometrie pt dispensarea\n"
+"de pasta de fludor, dintr-un fişier Gerber cu datele mastii de plasare\n"
+"a pastei de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:326
+msgid "Geo Result:"
+msgstr "Rezultat Geo:"
+
+#: flatcamTools/ToolSolderPaste.py:328
+msgid ""
+"Geometry Solder Paste object.\n"
+"The name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+"Obiect Geometrie pt dispensare pasta de fludor.\n"
+"Numele obiectului trebuie să se termine obligatoriu\n"
+"in: '_solderpaste'."
+
+#: flatcamTools/ToolSolderPaste.py:337
+msgid "STEP 3:"
+msgstr "PAS 3:"
+
+#: flatcamTools/ToolSolderPaste.py:339
+msgid ""
+"Third step is to select a solder paste dispensing geometry,\n"
+"and then generate a CNCJob object.\n"
+"\n"
+"REMEMBER: if you want to create a CNCJob with new parameters,\n"
+"first you need to generate a geometry with those new params,\n"
+"and only after that you can generate an updated CNCJob."
+msgstr ""
+"Al 3-lea pas este selectia unei geometrii de dispensare a pastei de fludor\n"
+"urmata de generarea unui obiect tip CNCJob.\n"
+"\n"
+"ATENTIE: daca se doreste crearea un ui obiect CNCJob cu param. noi,\n"
+"mai intai trebuie generat obiectul Geometrie cu acei parametri noi și abia\n"
+"apoi se poate genera un obiect CNCJob actualizat."
+
+#: flatcamTools/ToolSolderPaste.py:359
+msgid "CNC Result:"
+msgstr "Rezultat CNC:"
+
+#: flatcamTools/ToolSolderPaste.py:361
+msgid ""
+"CNCJob Solder paste object.\n"
+"In order to enable the GCode save section,\n"
+"the name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+"Obiect CNCJob pt dispensare pasta de fludor.\n"
+"Pt a activa sectiunea de Salvare GCode,\n"
+"numele obiectului trebuie să se termine obligatoriu in:\n"
+"'_solderpaste'."
+
+#: flatcamTools/ToolSolderPaste.py:371
+msgid "View GCode"
+msgstr "Vizualiz. GCode"
+
+#: flatcamTools/ToolSolderPaste.py:373
+msgid ""
+"View the generated GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+"Vizualizează codul GCode generat pt dispensarea de \n"
+"pasta de fludor pe padurile PCB-ului."
+
+#: flatcamTools/ToolSolderPaste.py:377
+msgid "Save GCode"
+msgstr "Salvează GCode"
+
+#: flatcamTools/ToolSolderPaste.py:379
+msgid ""
+"Save the generated GCode for Solder Paste dispensing\n"
+"on PCB pads, to a file."
+msgstr ""
+"Salvează codul GCode generat pt dispensare pasta de fludor\n"
+"pe padurile unui PCB, intr-un fişier pe HDD."
+
+#: flatcamTools/ToolSolderPaste.py:383
+msgid "STEP 4:"
+msgstr "PAS 4:"
+
+#: flatcamTools/ToolSolderPaste.py:385
+msgid ""
+"Fourth step (and last) is to select a CNCJob made from \n"
+"a solder paste dispensing geometry, and then view/save it's GCode."
+msgstr ""
+"Al 4-lea pas (ultimul) este să se selecteze un obiect CNCJob realizat\n"
+"dintr-un obiect Geometrie pt dispensarea de pasta de fludor, apoi \n"
+"avand posibilitatea de a vizualiza continutul acestuia sau de a-l salva\n"
+"intr-un fişier GCode pe HDD."
+
+#: flatcamTools/ToolSolderPaste.py:413
+msgid "Delete Object"
+msgstr "Sterge Obiectul"
+
+#: flatcamTools/ToolSolderPaste.py:788
+msgid ""
+"[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table."
+msgstr ""
+"[WARNING_NOTCL] Adaugarea unei unelte Nozzle a fost anulata. Unealta exista "
+"deja in Tabela de Unelte."
+
+#: flatcamTools/ToolSolderPaste.py:793
+msgid "[success] New Nozzle tool added to Tool Table."
+msgstr "[success] A fsot adaugata o noua unealta Nozzle in Tabela de Unelte."
+
+#: flatcamTools/ToolSolderPaste.py:835
+msgid "[success] Nozzle tool from Tool Table was edited."
+msgstr "[success] Unealta Nozzle din Tabela de Unelte a fost editata."
+
+#: flatcamTools/ToolSolderPaste.py:891
+msgid "[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete."
+msgstr ""
+"[WARNING_NOTCL] Stergerea a esuat. Selectează o unealta Nozzle pt a o sterge."
+
+#: flatcamTools/ToolSolderPaste.py:896
+msgid "[success] Nozzle tool(s) deleted from Tool Table."
+msgstr "[success] Uneltele (nozzle) au fost sterse din Tabela de Unelte."
+
+#: flatcamTools/ToolSolderPaste.py:951
+msgid "[WARNING_NOTCL] No SolderPaste mask Gerber object loaded."
+msgstr ""
+"[WARNING_NOTCL] Nu este incarcat un obiect Gerber cu informatia mastii pt "
+"pasta de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:968
+msgid "Creating Solder Paste dispensing geometry."
+msgstr "Se creează Geometrie pt dispensare pasta de fludor."
+
+#: flatcamTools/ToolSolderPaste.py:980
+msgid "[WARNING_NOTCL] No Nozzle tools in the tool table."
+msgstr "[WARNING_NOTCL] Nu sunt unelte Nozzle in Tabela de Unelte."
+
+#: flatcamTools/ToolSolderPaste.py:1106 flatcamTools/ToolSolderPaste.py:1161
+msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
+msgstr "[ERROR_NOTCL] Anulat. Fişier gol, nu are date geometrice."
+
+#: flatcamTools/ToolSolderPaste.py:1109
+msgid "[success] Solder Paste geometry generated successfully..."
+msgstr ""
+"[success] Obiectul Geometrie pt dispens. pasta de fludor a fost generat cu "
+"succes ..."
+
+#: flatcamTools/ToolSolderPaste.py:1115
+msgid ""
+"[WARNING_NOTCL] Some or all pads have no solder due of inadequate nozzle "
+"diameters..."
+msgstr ""
+"[WARNING_NOTCL] Cel putin unele pad-uri nu au pasta de fludor datorita "
+"diametrelor uneltelor (nozzle) ne adecvate."
+
+#: flatcamTools/ToolSolderPaste.py:1129
+msgid "Generating Solder Paste dispensing geometry..."
+msgstr "Se generează Geometria de dispensare a pastei de fludor ..."
+
+#: flatcamTools/ToolSolderPaste.py:1149
+msgid "[WARNING_NOTCL] There is no Geometry object available."
+msgstr "[WARNING_NOTCL] Nu exista obiect Geometrie disponibil."
+
+#: flatcamTools/ToolSolderPaste.py:1153
+msgid ""
+"[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool "
+"geometry."
+msgstr ""
+"[WARNING_NOTCL] Acest obiect Geometrie nu poate fi procesat Nu este o "
+"Geometrie tip solder_paste_tool."
+
+#: flatcamTools/ToolSolderPaste.py:1258
+#, python-format
+msgid "[success] ToolSolderPaste CNCjob created: %s"
+msgstr "[success] Obiectul CNCJob tip solder_paste_tool a fost creat: %s"
+
+#: flatcamTools/ToolSolderPaste.py:1290 flatcamTools/ToolSolderPaste.py:1294
+#: flatcamTools/ToolSolderPaste.py:1345
+msgid ""
+"[WARNING_NOTCL] This CNCJob object can't be processed. NOT a "
+"solder_paste_tool CNCJob object."
+msgstr ""
+"[WARNING_NOTCL] Acest obiect CNCJob nu poate fi procesat. Nu este un obiect "
+"CNCJob tip 'solder_paste_tool'"
+
+#: flatcamTools/ToolSolderPaste.py:1317
+msgid "[ERROR_NOTCL] No Gcode in the object..."
+msgstr "[ERROR_NOTCL] Nu exista cod GCode in acest obiect ..."
+
+#: flatcamTools/ToolSolderPaste.py:1326
+#, python-format
+msgid "[ERROR] ToolSolderPaste.on_view_gcode() -->%s"
+msgstr "[ERROR] ToolSolderPaste.on_view_gcode() -->%s"
+
+#: flatcamTools/ToolSolderPaste.py:1355
+msgid "Export GCode ..."
+msgstr "Exporta GCode ..."
+
+#: flatcamTools/ToolSolderPaste.py:1363
+msgid "[WARNING_NOTCL] Export Machine Code cancelled ..."
+msgstr "[WARNING_NOTCL] Exportul codului masina CNC a fost anulat ..."
+
+#: flatcamTools/ToolSolderPaste.py:1393
+#, python-format
+msgid "[success] Solder paste dispenser GCode file saved to: %s"
+msgstr ""
+"[success] Fişierul GCode pt dispensare pasta de fludor este salvat in: %s"
+
+#: flatcamTools/ToolTransform.py:23
+msgid "Object Transform"
+msgstr "Transformare Obiect"
+
+#: flatcamTools/ToolTransform.py:84
+msgid ""
+"Rotate the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+"Roteste obiectele selectate.\n"
+"Punctul de referinţă este mijlocul \n"
+"formei înconjurătoare pt toate obiectele."
+
+#: flatcamTools/ToolTransform.py:120 flatcamTools/ToolTransform.py:138
+msgid ""
+"Skew/shear the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+"Deformează obiectele selectate.\n"
+"Punctul de referinţă este mijlocul \n"
+"formei înconjurătoare pt toate obiectele."
+
+#: flatcamTools/ToolTransform.py:176 flatcamTools/ToolTransform.py:193
+msgid ""
+"Scale the selected object(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+"Scalează obiectele selectate.\n"
+"Punctul de referinţă depinde  de\n"
+"starea checkbox-ului >Referința Scalare<."
+
+#: flatcamTools/ToolTransform.py:202
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+"Scalează obiectele selectate\n"
+"folosind Factor X de scalare pentru\n"
+"ambele axe."
+
+#: flatcamTools/ToolTransform.py:250 flatcamTools/ToolTransform.py:267
+msgid ""
+"Offset the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects.\n"
+msgstr ""
+"Deplasează obiectele selectate.\n"
+"Punctul de referinţă este mijlocul formei înconjurătoare\n"
+"pentru toate obiectele selectate.\n"
+
+#: flatcamTools/ToolTransform.py:297 flatcamTools/ToolTransform.py:305
+msgid ""
+"Flip the selected object(s) over the X axis.\n"
+"Does not create a new object.\n"
+" "
+msgstr ""
+"Oglindeste obiectele selectate pe axa X.\n"
+"Nu crează un obiect nou."
+
+#: flatcamTools/ToolTransform.py:637
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to rotate!"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru "
+"a fi Rotit!"
+
+#: flatcamTools/ToolTransform.py:665
+msgid "CNCJob objects can't be rotated."
+msgstr "Obiectele tip CNCJob nu pot fi Rotite."
+
+#: flatcamTools/ToolTransform.py:674
+msgid "[success]Rotate done ..."
+msgstr "[success] Rotatie executata ..."
+
+#: flatcamTools/ToolTransform.py:689
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru "
+"a fi Oglindit!"
+
+#: flatcamTools/ToolTransform.py:724
+msgid "CNCJob objects can't be mirrored/flipped."
+msgstr "Obiectele tip CNCJob nu pot fi Oglindite."
+
+#: flatcamTools/ToolTransform.py:735
+msgid "[success]Flip on the Y axis done ..."
+msgstr "[success] Oglindire pe axa Y executata ..."
+
+#: flatcamTools/ToolTransform.py:745
+msgid "[success]Flip on the X axis done ..."
+msgstr "[success] Oglindire pe axa X executata ..."
+
+#: flatcamTools/ToolTransform.py:759
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru "
+"a fi Deformat!"
+
+#: flatcamTools/ToolTransform.py:781
+msgid "CNCJob objects can't be skewed."
+msgstr "Obiectele tip CNCJob nu pot fi deformate."
+
+#: flatcamTools/ToolTransform.py:793
+#, python-format
+msgid "[success]Skew on the %s axis done ..."
+msgstr "[success] Oglindire pe axa %s executata ..."
+
+#: flatcamTools/ToolTransform.py:808
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru "
+"a fi Scalat!"
+
+#: flatcamTools/ToolTransform.py:841
+msgid "CNCJob objects can't be scaled."
+msgstr "Obiectele tip CNCJob nu pot fi scalate."
+
+#: flatcamTools/ToolTransform.py:861
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!"
+msgstr ""
+"[WARNING_NOTCL] Nici-un obiect nu este selectat. Selectează un obiect pentru "
+"a fi Deplasat!"
+
+#: flatcamTools/ToolTransform.py:882
+msgid "CNCJob objects can't be offseted."
+msgstr "Obiectele tip CNCJob nu pot fi deplasate."
+
+#: flatcamTools/ToolTransform.py:894
+#, python-format
+msgid "[success]Offset on the %s axis done ..."
+msgstr "[success] Deplasarea de axa %s executata."
+
+#~ msgid ""
+#~ "How much (fraction) of the tool width to overlap each tool pass.\n"
+#~ "Example:\n"
+#~ "A value here of 0.25 means 25\\% from the tool diameter found above.\n"
+#~ "\n"
+#~ "Adjust the value starting with lower values\n"
+#~ "and increasing it if areas that should be painted are still \n"
+#~ "not painted.\n"
+#~ "Lower values = faster processing, faster execution on PCB.\n"
+#~ "Higher values = slow processing and slow execution on CNC\n"
+#~ "due of too many paths."
+#~ msgstr ""
+#~ "Cat de mult (fractie) din diametrul uneltei sa se suprapuna la fiecare "
+#~ "trecere a uneltei.\n"
+#~ "Exemplu:\n"
+#~ "O valoare aici de 0.25 inseamna 25\\% din diametrul uneltei de mai sus.\n"
+#~ "\n"
+#~ "Ajusteaza valoarea incepand de la valori mici si pe urma creste daca "
+#~ "ariile care ar trebui\n"
+#~ " >pictate< inca nu sunt procesate.\n"
+#~ "Valori scazute = procesare rapida,executie rapida a PCB-ului.\n"
+#~ "Valori mari= procesare lenta cat si o executie la fel de lenta a PCB-"
+#~ "ului,\n"
+#~ "datorita numarului mai mare de treceri-taiere."
+
+#, fuzzy
+#~| msgid "z_toolchange = Z coord for Toolchange"
+#~ msgid "z_cut = Z coord for Toolchange"
+#~ msgstr "z_toolchange = Z coord for Toolchange"
+
+#, fuzzy
+#~| msgid "z_toolchange = Z coord for Toolchange"
+#~ msgid "z_move = Z coord for Toolchange"
+#~ msgstr "z_toolchange = Z coord for Toolchange"
+
+#~ msgid "%s/Project_%s"
+#~ msgstr "%s/Proiect_%s"
+
+#~ msgid "tool_tab"
+#~ msgstr "tool_tab"

+ 8526 - 0
locale_template/strings.pot

@@ -0,0 +1,8526 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR ORGANIZATION
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2019-03-17 23:12+0200\n"
+"PO-Revision-Date: 2019-03-17 23:10+0200\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Generator: Poedit 2.2.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
+"%100<=19) ? 1 : 2);\n"
+"X-Poedit-Basepath: ../../..\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: FlatCAMApp.py:844
+msgid "[ERROR] Could not find the Language files. The App strings are missing."
+msgstr ""
+
+#: FlatCAMApp.py:1672 ObjectCollection.py:80 flatcamTools/ToolImage.py:213
+msgid "Open cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:1686
+msgid "Open Config file failed."
+msgstr ""
+
+#: FlatCAMApp.py:1871
+msgid ""
+"[WARNING_NOTCL] Editing a MultiGeo Geometry is not possible for the moment."
+msgstr ""
+
+#: FlatCAMApp.py:1892
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to edit."
+msgstr ""
+
+#: FlatCAMApp.py:1903
+msgid "[WARNING_NOTCL]Editor is activated ..."
+msgstr ""
+
+#: FlatCAMApp.py:1942
+msgid "[WARNING] Object empty after edit."
+msgstr ""
+
+#: FlatCAMApp.py:1951
+msgid "[WARNING_NOTCL]Select a Geometry or Excellon Object to update."
+msgstr ""
+
+#: FlatCAMApp.py:1964
+#, python-format
+msgid "[selected] %s is updated, returning to App..."
+msgstr ""
+
+#: FlatCAMApp.py:2287
+msgid "[ERROR] Could not load defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2299
+msgid "[ERROR] Failed to parse defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2320 FlatCAMApp.py:2323
+msgid "Import FlatCAM Preferences"
+msgstr ""
+
+#: FlatCAMApp.py:2328
+msgid "[WARNING_NOTCL]FlatCAM preferences import cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:2336 FlatCAMApp.py:2810
+msgid "[ERROR_NOTCL] Could not load defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2344 FlatCAMApp.py:2819
+msgid "[ERROR_NOTCL] Failed to parse defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2347
+#, python-format
+msgid "[success]Imported Defaults from %s"
+msgstr ""
+
+#: FlatCAMApp.py:2357 FlatCAMApp.py:2361
+msgid "Export FlatCAM Preferences"
+msgstr ""
+
+#: FlatCAMApp.py:2367
+msgid "[WARNING_NOTCL]FlatCAM preferences export cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:2383
+msgid "[ERROR_NOTCL]Could not load defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2402 FlatCAMApp.py:2833
+msgid "[ERROR_NOTCL] Failed to write defaults to file."
+msgstr ""
+
+#: FlatCAMApp.py:2454
+msgid "[ERROR_NOTCL]Failed to open recent files file for writing."
+msgstr ""
+
+#: FlatCAMApp.py:2539 camlib.py:4229
+msgid "[ERROR_NOTCL] An internal error has ocurred. See shell.\n"
+msgstr ""
+
+#: FlatCAMApp.py:2540
+#, python-brace-format
+msgid ""
+"Object ({kind}) failed because: {error} \n"
+"\n"
+msgstr ""
+
+#: FlatCAMApp.py:2560
+msgid "Converting units to "
+msgstr ""
+
+#: FlatCAMApp.py:2618 FlatCAMApp.py:2621 FlatCAMApp.py:2624 FlatCAMApp.py:2627
+#, python-brace-format
+msgid ""
+"[selected]{kind} created/selected: <span style=\"color:{color};\">{name}</"
+"span>"
+msgstr ""
+
+#: FlatCAMApp.py:2865
+msgid "[success]Defaults saved."
+msgstr ""
+
+#: FlatCAMApp.py:2886
+msgid "[ERROR_NOTCL] Could not load factory defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2895
+msgid "[ERROR_NOTCL] Failed to parse factory defaults file."
+msgstr ""
+
+#: FlatCAMApp.py:2909
+msgid "[ERROR_NOTCL] Failed to write factory defaults to file."
+msgstr ""
+
+#: FlatCAMApp.py:2913
+msgid "Factory defaults saved."
+msgstr ""
+
+#: FlatCAMApp.py:2918
+msgid ""
+"There are files/objects modified in FlatCAM. \n"
+"Do you want to Save the project?"
+msgstr ""
+
+#: FlatCAMApp.py:2921 FlatCAMApp.py:5190
+msgid "Save changes"
+msgstr ""
+
+#: FlatCAMApp.py:2981
+msgid ""
+"[ERROR] 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 ""
+
+#: FlatCAMApp.py:3022
+msgid "[ERROR_NOTCL]Failed. Excellon joining works only on Excellon objects."
+msgstr ""
+
+#: FlatCAMApp.py:3044
+msgid "[ERROR_NOTCL]Failed. Gerber joining works only on Gerber objects."
+msgstr ""
+
+#: FlatCAMApp.py:3059 FlatCAMApp.py:3084
+msgid "[ERROR_NOTCL]Failed. Select a Geometry Object and try again."
+msgstr ""
+
+#: FlatCAMApp.py:3063 FlatCAMApp.py:3088
+#, python-format
+msgid "[ERROR_NOTCL]Expected a FlatCAMGeometry, got %s"
+msgstr ""
+
+#: FlatCAMApp.py:3076
+msgid "[success] A Geometry object was converted to MultiGeo type."
+msgstr ""
+
+#: FlatCAMApp.py:3102
+msgid "[success] A Geometry object was converted to SingleGeo type."
+msgstr ""
+
+#: FlatCAMApp.py:3286
+#, python-format
+msgid "[success]Converted units to %s"
+msgstr ""
+
+#: FlatCAMApp.py:3297
+msgid "[WARNING_NOTCL]Units conversion cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:3862
+msgid "Open file"
+msgstr ""
+
+#: FlatCAMApp.py:3913 FlatCAMApp.py:3918
+msgid "Export G-Code ..."
+msgstr ""
+
+#: FlatCAMApp.py:3921
+msgid "[WARNING_NOTCL]Export Code cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:3931
+msgid "[WARNING] No such file or directory"
+msgstr ""
+
+#: FlatCAMApp.py:3938
+#, python-format
+msgid "Saved to: %s"
+msgstr ""
+
+#: FlatCAMApp.py:4001 FlatCAMApp.py:4033 FlatCAMApp.py:4044 FlatCAMApp.py:4055
+#: flatcamTools/ToolNonCopperClear.py:487 flatcamTools/ToolSolderPaste.py:764
+msgid ""
+"[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float "
+"format."
+msgstr ""
+
+#: FlatCAMApp.py:4006 FlatCAMApp.py:4038 FlatCAMApp.py:4049 FlatCAMApp.py:4060
+#: flatcamGUI/FlatCAMGUI.py:2484
+msgid "[WARNING_NOTCL] Adding Tool cancelled ..."
+msgstr ""
+
+#: FlatCAMApp.py:4009
+msgid ""
+"Adding Tool works only when Advanced is checked.\n"
+"Go to Preferences -> General - Show Advanced Options."
+msgstr ""
+
+#: FlatCAMApp.py:4114
+msgid "Object(s) deleted ..."
+msgstr ""
+
+#: FlatCAMApp.py:4118
+msgid "Failed. No object(s) selected..."
+msgstr ""
+
+#: FlatCAMApp.py:4120
+msgid "Save the work in Editor and try again ..."
+msgstr ""
+
+#: FlatCAMApp.py:4133
+msgid "Click to set the origin ..."
+msgstr ""
+
+#: FlatCAMApp.py:4145
+msgid "Jump to ..."
+msgstr ""
+
+#: FlatCAMApp.py:4146
+msgid "Enter the coordinates in format X,Y:"
+msgstr ""
+
+#: FlatCAMApp.py:4153
+msgid "Wrong coordinates. Enter coordinates in format: X,Y"
+msgstr ""
+
+#: FlatCAMApp.py:4168
+msgid "Done."
+msgstr ""
+
+#: FlatCAMApp.py:4300
+msgid "[success] Origin set ..."
+msgstr ""
+
+#: FlatCAMApp.py:4318
+msgid "Preferences"
+msgstr ""
+
+#: FlatCAMApp.py:4338
+msgid "[WARNING_NOTCL] No object selected to Flip on Y axis."
+msgstr ""
+
+#: FlatCAMApp.py:4363
+msgid "[success] Flip on Y axis done."
+msgstr ""
+
+#: FlatCAMApp.py:4365 FlatCAMApp.py:4405 FlatCAMEditor.py:1340
+#: flatcamTools/ToolTransform.py:750
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Flip action was not executed."
+msgstr ""
+
+#: FlatCAMApp.py:4378
+msgid "[WARNING_NOTCL] No object selected to Flip on X axis."
+msgstr ""
+
+#: FlatCAMApp.py:4403
+msgid "[success] Flip on X axis done."
+msgstr ""
+
+#: FlatCAMApp.py:4418
+msgid "[WARNING_NOTCL] No object selected to Rotate."
+msgstr ""
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Transform"
+msgstr ""
+
+#: FlatCAMApp.py:4421 FlatCAMApp.py:4466 FlatCAMApp.py:4497
+msgid "Enter the Angle value:"
+msgstr ""
+
+#: FlatCAMApp.py:4451
+msgid "[success] Rotation done."
+msgstr ""
+
+#: FlatCAMApp.py:4453 FlatCAMEditor.py:1283 flatcamTools/ToolTransform.py:678
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, rotation movement was not executed."
+msgstr ""
+
+#: FlatCAMApp.py:4464
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on X axis."
+msgstr ""
+
+#: FlatCAMApp.py:4485
+msgid "[success] Skew on X axis done."
+msgstr ""
+
+#: FlatCAMApp.py:4495
+msgid "[WARNING_NOTCL] No object selected to Skew/Shear on Y axis."
+msgstr ""
+
+#: FlatCAMApp.py:4516
+msgid "[success] Skew on Y axis done."
+msgstr ""
+
+#: FlatCAMApp.py:4612 FlatCAMApp.py:4639
+msgid ""
+"[WARNING_NOTCL] Please enter a grid value with non-zero value, in Float "
+"format."
+msgstr ""
+
+#: FlatCAMApp.py:4618
+msgid "[success] New Grid added ..."
+msgstr ""
+
+#: FlatCAMApp.py:4621
+msgid "[WARNING_NOTCL] Grid already exists ..."
+msgstr ""
+
+#: FlatCAMApp.py:4624
+msgid "[WARNING_NOTCL] Adding New Grid cancelled ..."
+msgstr ""
+
+#: FlatCAMApp.py:4646
+msgid "[ERROR_NOTCL] Grid Value does not exist ..."
+msgstr ""
+
+#: FlatCAMApp.py:4649
+msgid "[success] Grid Value deleted ..."
+msgstr ""
+
+#: FlatCAMApp.py:4652
+msgid "[WARNING_NOTCL] Delete Grid value cancelled ..."
+msgstr ""
+
+#: FlatCAMApp.py:4691
+msgid "[WARNING_NOTCL]No object selected to copy it's name"
+msgstr ""
+
+#: FlatCAMApp.py:4695
+msgid "Name copied on clipboard ..."
+msgstr ""
+
+#: FlatCAMApp.py:4990 FlatCAMApp.py:4993 FlatCAMApp.py:4996 FlatCAMApp.py:4999
+#: FlatCAMApp.py:5013 FlatCAMApp.py:5016 FlatCAMApp.py:5019 FlatCAMApp.py:5022
+#: FlatCAMApp.py:5061 FlatCAMApp.py:5064 FlatCAMApp.py:5067 FlatCAMApp.py:5070
+#: ObjectCollection.py:696 ObjectCollection.py:699 ObjectCollection.py:702
+#: ObjectCollection.py:705
+#, python-brace-format
+msgid "[selected]<span style=\"color:{color};\">{name}</span> selected"
+msgstr ""
+
+#: FlatCAMApp.py:5187
+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:5205
+msgid "[success] New Project created..."
+msgstr ""
+
+#: FlatCAMApp.py:5286
+msgid ""
+"[WARNING_NOTCL] Select an Gerber or Excellon file to view it's source file."
+msgstr ""
+
+#: FlatCAMApp.py:5293
+msgid ""
+"[WARNING_NOTCL] There is no selected object for which to see it's source "
+"file code."
+msgstr ""
+
+#: FlatCAMApp.py:5297 FlatCAMApp.py:6728 FlatCAMObj.py:5398
+msgid "Code Editor"
+msgstr ""
+
+#: FlatCAMApp.py:5310
+#, python-format
+msgid "[ERROR]App.on_view_source() -->%s"
+msgstr ""
+
+#: FlatCAMApp.py:5348 FlatCAMApp.py:5351 flatcamGUI/FlatCAMGUI.py:541
+#: flatcamGUI/FlatCAMGUI.py:1590
+msgid "Open Gerber"
+msgstr ""
+
+#: FlatCAMApp.py:5356
+msgid "[WARNING_NOTCL] Open Gerber cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5377 FlatCAMApp.py:5380 flatcamGUI/FlatCAMGUI.py:542
+#: flatcamGUI/FlatCAMGUI.py:1591
+msgid "Open Excellon"
+msgstr ""
+
+#: FlatCAMApp.py:5385
+msgid "[WARNING_NOTCL]Open Excellon cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5407 FlatCAMApp.py:5410
+msgid "Open G-Code"
+msgstr ""
+
+#: FlatCAMApp.py:5415
+msgid "[WARNING_NOTCL]Open G-Code cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5433 FlatCAMApp.py:5436
+msgid "Open Project"
+msgstr ""
+
+#: FlatCAMApp.py:5444
+msgid "[WARNING_NOTCL]Open Project cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5463 FlatCAMApp.py:5466
+msgid "Open Configuration File"
+msgstr ""
+
+#: FlatCAMApp.py:5470
+msgid "[WARNING_NOTCL]Open Config cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5485 FlatCAMApp.py:5682 FlatCAMApp.py:7588 FlatCAMApp.py:7608
+#: FlatCAMApp.py:7629 FlatCAMApp.py:7651
+msgid "[WARNING_NOTCL] No object selected."
+msgstr ""
+
+#: FlatCAMApp.py:5486 FlatCAMApp.py:5683
+msgid "Please Select a Geometry object to export"
+msgstr ""
+
+#: FlatCAMApp.py:5497
+msgid "[ERROR_NOTCL] Only Geometry, Gerber and CNCJob objects can be used."
+msgstr ""
+
+#: FlatCAMApp.py:5510 FlatCAMApp.py:5514
+msgid "Export SVG"
+msgstr ""
+
+#: FlatCAMApp.py:5519
+msgid "[WARNING_NOTCL]Export SVG cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5533
+msgid "[[WARNING_NOTCL]] Data must be a 3D array with last dimension 3 or 4"
+msgstr ""
+
+#: FlatCAMApp.py:5539 FlatCAMApp.py:5543
+msgid "Export PNG Image"
+msgstr ""
+
+#: FlatCAMApp.py:5548
+msgid "Export PNG cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5565
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Gerber object to export."
+msgstr ""
+
+#: FlatCAMApp.py:5570
+msgid ""
+"[ERROR_NOTCL] Failed. Only Gerber objects can be saved as Gerber files..."
+msgstr ""
+
+#: FlatCAMApp.py:5582
+msgid "Save Gerber source file"
+msgstr ""
+
+#: FlatCAMApp.py:5587
+msgid "[WARNING_NOTCL] Save Gerber source file cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5604
+msgid ""
+"[WARNING_NOTCL] No object selected. Please select an Excellon object to "
+"export."
+msgstr ""
+
+#: FlatCAMApp.py:5609 FlatCAMApp.py:5648
+msgid ""
+"[ERROR_NOTCL] Failed. Only Excellon objects can be saved as Excellon files..."
+msgstr ""
+
+#: FlatCAMApp.py:5617 FlatCAMApp.py:5621
+msgid "Save Excellon source file"
+msgstr ""
+
+#: FlatCAMApp.py:5626
+msgid "[WARNING_NOTCL] Saving Excellon source file cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5643
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an Excellon object to "
+"export."
+msgstr ""
+
+#: FlatCAMApp.py:5656 FlatCAMApp.py:5660
+msgid "Export Excellon"
+msgstr ""
+
+#: FlatCAMApp.py:5665
+msgid "[WARNING_NOTCL]Export Excellon cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5693
+msgid "[ERROR_NOTCL] Only Geometry objects can be used."
+msgstr ""
+
+#: FlatCAMApp.py:5706 FlatCAMApp.py:5710
+msgid "Export DXF"
+msgstr ""
+
+#: FlatCAMApp.py:5715
+msgid "[WARNING_NOTCL] Export DXF cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5733 FlatCAMApp.py:5736
+msgid "Import SVG"
+msgstr ""
+
+#: FlatCAMApp.py:5744
+msgid "[WARNING_NOTCL] Open SVG cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5763 FlatCAMApp.py:5766
+msgid "Import DXF"
+msgstr ""
+
+#: FlatCAMApp.py:5774
+msgid "[WARNING_NOTCL]Open DXF cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5792 FlatCAMApp.py:5795
+msgid "Open TCL script"
+msgstr ""
+
+#: FlatCAMApp.py:5803
+msgid "[WARNING_NOTCL]Open TCL script cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5851 FlatCAMApp.py:5855
+msgid "Save Project As ..."
+msgstr ""
+
+#: FlatCAMApp.py:5852
+#, python-brace-format
+msgid "{l_save}/Project_{date}"
+msgstr ""
+
+#: FlatCAMApp.py:5860
+msgid "[WARNING_NOTCL] Save Project cancelled."
+msgstr ""
+
+#: FlatCAMApp.py:5905
+msgid "Exporting SVG"
+msgstr ""
+
+#: FlatCAMApp.py:5938 FlatCAMApp.py:6043 FlatCAMApp.py:6157
+#, python-format
+msgid "[success] SVG file exported to %s"
+msgstr ""
+
+#: FlatCAMApp.py:5969 FlatCAMApp.py:6089
+#, python-format
+msgid "[WARNING_NOTCL]No object Box. Using instead %s"
+msgstr ""
+
+#: FlatCAMApp.py:6046 FlatCAMApp.py:6160
+msgid "Generating Film ... Please wait."
+msgstr ""
+
+#: FlatCAMApp.py:6307
+#, python-format
+msgid "[success] Excellon file exported to %s"
+msgstr ""
+
+#: FlatCAMApp.py:6314
+msgid "Exporting Excellon"
+msgstr ""
+
+#: FlatCAMApp.py:6319 FlatCAMApp.py:6326
+msgid "[ERROR_NOTCL] Could not export Excellon file."
+msgstr ""
+
+#: FlatCAMApp.py:6365
+#, python-format
+msgid "[success] DXF file exported to %s"
+msgstr ""
+
+#: FlatCAMApp.py:6371
+msgid "Exporting DXF"
+msgstr ""
+
+#: FlatCAMApp.py:6376 FlatCAMApp.py:6383
+msgid "[[WARNING_NOTCL]] Could not export DXF file."
+msgstr ""
+
+#: FlatCAMApp.py:6403 FlatCAMApp.py:6445 FlatCAMApp.py:6486
+msgid ""
+"[ERROR_NOTCL] Not supported type is picked as parameter. Only Geometry and "
+"Gerber are supported"
+msgstr ""
+
+#: FlatCAMApp.py:6413
+msgid "Importing SVG"
+msgstr ""
+
+#: FlatCAMApp.py:6424 FlatCAMApp.py:6466 FlatCAMApp.py:6506 FlatCAMApp.py:6582
+#: FlatCAMApp.py:6649 FlatCAMApp.py:6714
+#, python-format
+msgid "[success] Opened: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6455
+msgid "Importing DXF"
+msgstr ""
+
+#: FlatCAMApp.py:6494
+msgid "Importing Image"
+msgstr ""
+
+#: FlatCAMApp.py:6535 FlatCAMApp.py:6537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6540
+#, python-brace-format
+msgid "[ERROR_NOTCL] Failed to parse file: {name}. {error}"
+msgstr ""
+
+#: FlatCAMApp.py:6546 FlatCAMEditor.py:5802 FlatCAMObj.py:4104
+msgid "[ERROR] An internal error has ocurred. See shell.\n"
+msgstr ""
+
+#: FlatCAMApp.py:6555
+msgid ""
+"[ERROR_NOTCL] Object is not Gerber file or empty. Aborting object creation."
+msgstr ""
+
+#: FlatCAMApp.py:6563
+msgid "Opening Gerber"
+msgstr ""
+
+#: FlatCAMApp.py:6573
+msgid "[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file."
+msgstr ""
+
+#: FlatCAMApp.py:6608
+msgid "[ERROR_NOTCL] This is not Excellon file."
+msgstr ""
+
+#: FlatCAMApp.py:6611
+#, python-format
+msgid "[ERROR_NOTCL] Cannot open file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6616
+msgid "[ERROR_NOTCL] An internal error has occurred. See shell.\n"
+msgstr ""
+
+#: FlatCAMApp.py:6632
+#, python-format
+msgid "[ERROR_NOTCL] No geometry found in file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6635
+msgid "Opening Excellon."
+msgstr ""
+
+#: FlatCAMApp.py:6642
+msgid "[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file."
+msgstr ""
+
+#: FlatCAMApp.py:6681
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open %s"
+msgstr ""
+
+#: FlatCAMApp.py:6691
+msgid "[ERROR_NOTCL] This is not GCODE"
+msgstr ""
+
+#: FlatCAMApp.py:6697
+msgid "Opening G-Code."
+msgstr ""
+
+#: FlatCAMApp.py:6705
+msgid ""
+"[ERROR_NOTCL] 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:6745
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open config file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6770 FlatCAMApp.py:6787
+#, python-format
+msgid "[ERROR_NOTCL] Failed to open project file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6777
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse project file: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6813
+#, python-format
+msgid "[success] Project loaded from: %s"
+msgstr ""
+
+#: FlatCAMApp.py:6943
+msgid "Available commands:\n"
+msgstr ""
+
+#: FlatCAMApp.py:6945
+msgid ""
+"\n"
+"\n"
+"Type help <command_name> for usage.\n"
+" Example: help open_gerber"
+msgstr ""
+
+#: FlatCAMApp.py:7093
+msgid "Shows list of commands."
+msgstr ""
+
+#: FlatCAMApp.py:7146
+msgid "[ERROR_NOTCL] Failed to load recent item list."
+msgstr ""
+
+#: FlatCAMApp.py:7153
+msgid "[ERROR_NOTCL] Failed to parse recent item list."
+msgstr ""
+
+#: FlatCAMApp.py:7214 flatcamGUI/FlatCAMGUI.py:856
+msgid "<b>Shortcut Key List</b>"
+msgstr ""
+
+#: FlatCAMApp.py:7221
+msgid ""
+"\n"
+"<p><span style=\"font-size:14px\"><strong>Selected Tab - Choose an Item from "
+"Project Tab</strong></span></p>\n"
+"\n"
+"<p><span style=\"font-size:10px\"><strong>Details</strong>:<br />\n"
+"The normal flow when working in FlatCAM is the following:</span></p>\n"
+"\n"
+"<ol>\n"
+"\t<li><span style=\"font-size:10px\">Loat/Import a Gerber, Excellon, Gcode, "
+"DXF, Raster Image or SVG file into FlatCAM using either the menu&#39;s, "
+"toolbars, key shortcuts or even dragging and dropping the files on the GUI."
+"<br />\n"
+"\t<br />\n"
+"\tYou can also load a <strong>FlatCAM project</strong> by double clicking on "
+"the project file, drag &amp; drop of the file into the FLATCAM GUI or "
+"through the menu/toolbar links offered within the app.</span><br />\n"
+"\t&nbsp;</li>\n"
+"\t<li><span style=\"font-size:10px\">Once an object is available in the "
+"Project Tab, by selecting it and then focusing on <strong>SELECTED TAB </"
+"strong>(more simpler is to double click the object name in the Project Tab), "
+"<strong>SELECTED TAB </strong>will be updated with the object properties "
+"according to it&#39;s kind: Gerber, Excellon, Geometry or CNCJob object.<br /"
+">\n"
+"\t<br />\n"
+"\tIf the selection of the object is done on the canvas by single click "
+"instead, and the <strong>SELECTED TAB</strong> is in focus, again the object "
+"properties will be displayed into the Selected Tab. Alternatively, double "
+"clicking on the object on the canvas will bring the <strong>SELECTED TAB</"
+"strong> and populate it even if it was out of focus.<br />\n"
+"\t<br />\n"
+"\tYou can change the parameters in this screen and the flow direction is "
+"like this:<br />\n"
+"\t<br />\n"
+"\t<strong>Gerber/Excellon Object</strong> -&gt; Change Param -&gt; Generate "
+"Geometry -&gt;<strong> Geometry Object </strong>-&gt; Add tools (change "
+"param in Selected Tab) -&gt; Generate CNCJob -&gt;<strong> CNCJob Object </"
+"strong>-&gt; Verify GCode (through Edit CNC Code) and/or append/prepend to "
+"GCode (again, done in <strong>SELECTED TAB)&nbsp;</strong>-&gt; Save GCode</"
+"span></li>\n"
+"</ol>\n"
+"\n"
+"<p><span style=\"font-size:10px\">A list of key shortcuts is available "
+"through an menu entry in <strong>Help -&gt; Shortcuts List</strong>&nbsp;or "
+"through it&#39;s own key shortcut: <strng>F3</strong>.</span></p>\n"
+"\n"
+"        "
+msgstr ""
+
+#: FlatCAMApp.py:7325
+msgid "[WARNING_NOTCL] Failed checking for latest version. Could not connect."
+msgstr ""
+
+#: FlatCAMApp.py:7332
+msgid "[ERROR_NOTCL] Could not parse information about latest version."
+msgstr ""
+
+#: FlatCAMApp.py:7342
+msgid "[success] FlatCAM is up to date!"
+msgstr ""
+
+#: FlatCAMApp.py:7347
+msgid "Newer Version Available"
+msgstr ""
+
+#: FlatCAMApp.py:7348
+msgid ""
+"There is a newer version of FlatCAM available for download:\n"
+"\n"
+msgstr ""
+
+#: FlatCAMApp.py:7350
+msgid "info"
+msgstr ""
+
+#: FlatCAMApp.py:7369
+msgid "[success]All plots disabled."
+msgstr ""
+
+#: FlatCAMApp.py:7375
+msgid "[success]All non selected plots disabled."
+msgstr ""
+
+#: FlatCAMApp.py:7381
+msgid "[success]All plots enabled."
+msgstr ""
+
+#: FlatCAMApp.py:7491
+msgid "Saving FlatCAM Project"
+msgstr ""
+
+#: FlatCAMApp.py:7512 FlatCAMApp.py:7543
+#, python-format
+msgid "[success] Project saved to: %s"
+msgstr ""
+
+#: FlatCAMApp.py:7530
+#, python-format
+msgid "[ERROR_NOTCL] Failed to verify project file: %s. Retry to save it."
+msgstr ""
+
+#: FlatCAMApp.py:7537
+#, python-format
+msgid "[ERROR_NOTCL] Failed to parse saved project file: %s. Retry to save it."
+msgstr ""
+
+#: FlatCAMApp.py:7545
+#, python-format
+msgid "[ERROR_NOTCL] Failed to save project file: %s. Retry to save it."
+msgstr ""
+
+#: FlatCAMEditor.py:76
+msgid "Buffer distance:"
+msgstr ""
+
+#: FlatCAMEditor.py:77
+msgid "Buffer corner:"
+msgstr ""
+
+#: FlatCAMEditor.py:79
+msgid ""
+"There are 3 types of corners:\n"
+" - 'Round': the corner is rounded for exterior buffer.\n"
+" - 'Square:' the corner is met in a sharp angle for exterior buffer.\n"
+" - 'Beveled:' the corner is a line that directly connects the features "
+"meeting in the corner"
+msgstr ""
+
+#: FlatCAMEditor.py:85
+msgid "Round"
+msgstr ""
+
+#: FlatCAMEditor.py:86
+msgid "Square"
+msgstr ""
+
+#: FlatCAMEditor.py:87
+msgid "Beveled"
+msgstr ""
+
+#: FlatCAMEditor.py:94
+msgid "Buffer Interior"
+msgstr ""
+
+#: FlatCAMEditor.py:96
+msgid "Buffer Exterior"
+msgstr ""
+
+#: FlatCAMEditor.py:102
+msgid "Full Buffer"
+msgstr ""
+
+#: FlatCAMEditor.py:123 FlatCAMEditor.py:2623
+msgid "Buffer Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:134 FlatCAMEditor.py:151 FlatCAMEditor.py:168
+#: FlatCAMEditor.py:2641 FlatCAMEditor.py:2667 FlatCAMEditor.py:2693
+msgid ""
+"[WARNING_NOTCL] Buffer distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+
+#: FlatCAMEditor.py:416 flatcamGUI/FlatCAMGUI.py:3402
+#: flatcamGUI/FlatCAMGUI.py:4608 flatcamGUI/FlatCAMGUI.py:4884
+#: flatcamGUI/FlatCAMGUI.py:5015 flatcamGUI/ObjectUI.py:331
+msgid "Tool dia:"
+msgstr ""
+
+#: FlatCAMEditor.py:418 flatcamGUI/FlatCAMGUI.py:5017
+msgid ""
+"Diameter of the tool to\n"
+"be used in the operation."
+msgstr ""
+
+#: FlatCAMEditor.py:427 flatcamGUI/FlatCAMGUI.py:4790
+#: flatcamGUI/FlatCAMGUI.py:5026 flatcamTools/ToolNonCopperClear.py:164
+#: flatcamTools/ToolPaint.py:160
+msgid "Overlap:"
+msgstr ""
+
+#: FlatCAMEditor.py:429 flatcamTools/ToolPaint.py:162
+#, python-format
+#| msgid ""
+#| "How much (fraction) of the tool width to overlap each tool pass.\n"
+#| "Example:\n"
+#| "A value here of 0.25 means 25%% from the tool diameter found above.\n"
+#| "\n"
+#| "Adjust the value starting with lower values\n"
+#| "and increasing it if areas that should be painted are still \n"
+#| "not painted.\n"
+#| "Lower values = faster processing, faster execution on PCB.\n"
+#| "Higher values = slow processing and slow execution on CNC\n"
+#| "due of too many paths."
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be painted are still \n"
+"not painted.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+
+#: FlatCAMEditor.py:445 flatcamGUI/FlatCAMGUI.py:4806
+#: flatcamGUI/FlatCAMGUI.py:4892 flatcamGUI/FlatCAMGUI.py:5036
+#: flatcamTools/ToolCutOut.py:86 flatcamTools/ToolNonCopperClear.py:180
+#: flatcamTools/ToolPaint.py:177
+msgid "Margin:"
+msgstr ""
+
+#: FlatCAMEditor.py:447 flatcamGUI/FlatCAMGUI.py:5038
+#: flatcamTools/ToolPaint.py:179
+msgid ""
+"Distance by which to avoid\n"
+"the edges of the polygon to\n"
+"be painted."
+msgstr ""
+
+#: FlatCAMEditor.py:456 flatcamGUI/FlatCAMGUI.py:4815
+#: flatcamGUI/FlatCAMGUI.py:5047 flatcamTools/ToolNonCopperClear.py:189
+#: flatcamTools/ToolPaint.py:188
+msgid "Method:"
+msgstr ""
+
+#: FlatCAMEditor.py:458 flatcamGUI/FlatCAMGUI.py:5049
+msgid ""
+"Algorithm to paint the polygon:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed."
+msgstr ""
+
+#: FlatCAMEditor.py:464 flatcamGUI/FlatCAMGUI.py:4824
+#: flatcamGUI/FlatCAMGUI.py:5055
+msgid "Standard"
+msgstr ""
+
+#: FlatCAMEditor.py:465 flatcamGUI/FlatCAMGUI.py:4825
+#: flatcamGUI/FlatCAMGUI.py:5056
+msgid "Seed-based"
+msgstr ""
+
+#: FlatCAMEditor.py:466 flatcamGUI/FlatCAMGUI.py:4826
+#: flatcamGUI/FlatCAMGUI.py:5057
+msgid "Straight lines"
+msgstr ""
+
+#: FlatCAMEditor.py:471 flatcamGUI/FlatCAMGUI.py:4831
+#: flatcamGUI/FlatCAMGUI.py:5062 flatcamTools/ToolNonCopperClear.py:205
+#: flatcamTools/ToolPaint.py:204
+msgid "Connect:"
+msgstr ""
+
+#: FlatCAMEditor.py:473 flatcamGUI/FlatCAMGUI.py:4833
+#: flatcamGUI/FlatCAMGUI.py:5064 flatcamTools/ToolNonCopperClear.py:207
+#: flatcamTools/ToolPaint.py:206
+msgid ""
+"Draw lines between resulting\n"
+"segments to minimize tool lifts."
+msgstr ""
+
+#: FlatCAMEditor.py:480 flatcamGUI/FlatCAMGUI.py:4840
+#: flatcamGUI/FlatCAMGUI.py:5072 flatcamTools/ToolNonCopperClear.py:214
+#: flatcamTools/ToolPaint.py:213
+msgid "Contour:"
+msgstr ""
+
+#: FlatCAMEditor.py:482 flatcamGUI/FlatCAMGUI.py:4842
+#: flatcamGUI/FlatCAMGUI.py:5074 flatcamTools/ToolNonCopperClear.py:216
+#: flatcamTools/ToolPaint.py:215
+msgid ""
+"Cut around the perimeter of the polygon\n"
+"to trim rough edges."
+msgstr ""
+
+#: FlatCAMEditor.py:494
+msgid "Paint"
+msgstr ""
+
+#: FlatCAMEditor.py:512 flatcamGUI/FlatCAMGUI.py:575
+#: flatcamGUI/FlatCAMGUI.py:1624 flatcamGUI/ObjectUI.py:1379
+#: flatcamTools/ToolPaint.py:340
+msgid "Paint Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:548
+msgid "[WARNING_NOTCL] Paint cancelled. No shape selected."
+msgstr ""
+
+#: FlatCAMEditor.py:559 flatcamTools/ToolCutOut.py:343
+#: flatcamTools/ToolCutOut.py:481 flatcamTools/ToolCutOut.py:601
+#: flatcamTools/ToolCutOut.py:706 flatcamTools/ToolDblSided.py:363
+msgid ""
+"[WARNING_NOTCL] Tool diameter value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+
+#: FlatCAMEditor.py:570
+msgid ""
+"[WARNING_NOTCL] Overlap value is missing or wrong format. Add it and retry."
+msgstr ""
+
+#: FlatCAMEditor.py:582
+msgid ""
+"[WARNING_NOTCL] Margin distance value is missing or wrong format. Add it and "
+"retry."
+msgstr ""
+
+#: FlatCAMEditor.py:591 FlatCAMEditor.py:2648 FlatCAMEditor.py:2674
+#: FlatCAMEditor.py:2700 flatcamTools/ToolNonCopperClear.py:806
+#: flatcamTools/ToolProperties.py:104
+msgid "Tools"
+msgstr ""
+
+#: FlatCAMEditor.py:602 FlatCAMEditor.py:975 flatcamGUI/FlatCAMGUI.py:584
+#: flatcamGUI/FlatCAMGUI.py:1635 flatcamTools/ToolTransform.py:398
+msgid "Transform Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:603 FlatCAMEditor.py:664 flatcamTools/ToolTransform.py:24
+#: flatcamTools/ToolTransform.py:82
+msgid "Rotate"
+msgstr ""
+
+#: FlatCAMEditor.py:604 flatcamTools/ToolTransform.py:25
+msgid "Skew/Shear"
+msgstr ""
+
+#: FlatCAMEditor.py:605 flatcamGUI/ObjectUI.py:100 flatcamGUI/ObjectUI.py:265
+#: flatcamTools/ToolTransform.py:26
+msgid "Scale"
+msgstr ""
+
+#: FlatCAMEditor.py:606 flatcamTools/ToolTransform.py:27
+msgid "Mirror (Flip)"
+msgstr ""
+
+#: FlatCAMEditor.py:607 flatcamGUI/ObjectUI.py:127 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517 flatcamTools/ToolTransform.py:28
+msgid "Offset"
+msgstr ""
+
+#: FlatCAMEditor.py:618
+#, python-format
+msgid "Editor %s"
+msgstr ""
+
+#: FlatCAMEditor.py:650 FlatCAMEditor.py:4851 FlatCAMEditor.py:4887
+#: flatcamTools/ToolTransform.py:68
+msgid "Angle:"
+msgstr ""
+
+#: FlatCAMEditor.py:652 flatcamTools/ToolTransform.py:70
+msgid ""
+"Angle for Rotation action, in degrees.\n"
+"Float number between -360 and 359.\n"
+"Positive numbers for CW motion.\n"
+"Negative numbers for CCW motion."
+msgstr ""
+
+#: FlatCAMEditor.py:666
+msgid ""
+"Rotate the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+
+#: FlatCAMEditor.py:689 flatcamTools/ToolTransform.py:107
+msgid "Angle X:"
+msgstr ""
+
+#: FlatCAMEditor.py:691 FlatCAMEditor.py:709 flatcamTools/ToolTransform.py:109
+#: flatcamTools/ToolTransform.py:127
+msgid ""
+"Angle for Skew action, in degrees.\n"
+"Float number between -360 and 359."
+msgstr ""
+
+#: FlatCAMEditor.py:700 flatcamTools/ToolTransform.py:118
+msgid "Skew X"
+msgstr ""
+
+#: FlatCAMEditor.py:702 FlatCAMEditor.py:720
+msgid ""
+"Skew/shear the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes."
+msgstr ""
+
+#: FlatCAMEditor.py:707 flatcamTools/ToolTransform.py:125
+msgid "Angle Y:"
+msgstr ""
+
+#: FlatCAMEditor.py:718 flatcamTools/ToolTransform.py:136
+msgid "Skew Y"
+msgstr ""
+
+#: FlatCAMEditor.py:746 flatcamTools/ToolTransform.py:164
+msgid "Factor X:"
+msgstr ""
+
+#: FlatCAMEditor.py:748 flatcamTools/ToolTransform.py:166
+msgid "Factor for Scale action over X axis."
+msgstr ""
+
+#: FlatCAMEditor.py:756 flatcamTools/ToolTransform.py:174
+msgid "Scale X"
+msgstr ""
+
+#: FlatCAMEditor.py:758 FlatCAMEditor.py:775
+msgid ""
+"Scale the selected shape(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+
+#: FlatCAMEditor.py:763 flatcamTools/ToolTransform.py:181
+msgid "Factor Y:"
+msgstr ""
+
+#: FlatCAMEditor.py:765 flatcamTools/ToolTransform.py:183
+msgid "Factor for Scale action over Y axis."
+msgstr ""
+
+#: FlatCAMEditor.py:773 flatcamTools/ToolTransform.py:191
+msgid "Scale Y"
+msgstr ""
+
+#: FlatCAMEditor.py:782 flatcamGUI/FlatCAMGUI.py:5421
+#: flatcamTools/ToolTransform.py:200
+msgid "Link"
+msgstr ""
+
+#: FlatCAMEditor.py:784
+msgid ""
+"Scale the selected shape(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+
+#: FlatCAMEditor.py:790 flatcamGUI/FlatCAMGUI.py:5429
+#: flatcamTools/ToolTransform.py:208
+msgid "Scale Reference"
+msgstr ""
+
+#: FlatCAMEditor.py:792
+msgid ""
+"Scale the selected shape(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected shapes when unchecked."
+msgstr ""
+
+#: FlatCAMEditor.py:820 flatcamTools/ToolTransform.py:238
+msgid "Value X:"
+msgstr ""
+
+#: FlatCAMEditor.py:822 flatcamTools/ToolTransform.py:240
+msgid "Value for Offset action on X axis."
+msgstr ""
+
+#: FlatCAMEditor.py:830 flatcamTools/ToolTransform.py:248
+msgid "Offset X"
+msgstr ""
+
+#: FlatCAMEditor.py:832 FlatCAMEditor.py:850
+msgid ""
+"Offset the selected shape(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected shapes.\n"
+msgstr ""
+
+#: FlatCAMEditor.py:838 flatcamTools/ToolTransform.py:255
+msgid "Value Y:"
+msgstr ""
+
+#: FlatCAMEditor.py:840 flatcamTools/ToolTransform.py:257
+msgid "Value for Offset action on Y axis."
+msgstr ""
+
+#: FlatCAMEditor.py:848 flatcamTools/ToolTransform.py:265
+msgid "Offset Y"
+msgstr ""
+
+#: FlatCAMEditor.py:879 flatcamTools/ToolTransform.py:295
+msgid "Flip on X"
+msgstr ""
+
+#: FlatCAMEditor.py:881 FlatCAMEditor.py:889
+msgid ""
+"Flip the selected shape(s) over the X axis.\n"
+"Does not create a new shape."
+msgstr ""
+
+#: FlatCAMEditor.py:887 flatcamTools/ToolTransform.py:303
+msgid "Flip on Y"
+msgstr ""
+
+#: FlatCAMEditor.py:896 flatcamTools/ToolTransform.py:312
+msgid "Ref Pt"
+msgstr ""
+
+#: FlatCAMEditor.py:898
+msgid ""
+"Flip the selected shape(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+
+#: FlatCAMEditor.py:910 flatcamTools/ToolTransform.py:325
+msgid "Point:"
+msgstr ""
+
+#: FlatCAMEditor.py:912
+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"
+"the 'y' in (x, y) will be used when using Flip on Y."
+msgstr ""
+
+#: FlatCAMEditor.py:922 flatcamGUI/ObjectUI.py:1059
+#: flatcamTools/ToolDblSided.py:160 flatcamTools/ToolDblSided.py:208
+#: flatcamTools/ToolNonCopperClear.py:133 flatcamTools/ToolPaint.py:131
+#: flatcamTools/ToolSolderPaste.py:115 flatcamTools/ToolSolderPaste.py:478
+#: flatcamTools/ToolTransform.py:337
+msgid "Add"
+msgstr ""
+
+#: FlatCAMEditor.py:924 flatcamTools/ToolTransform.py:339
+msgid ""
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. Then click Add button to insert."
+msgstr ""
+
+#: FlatCAMEditor.py:1039
+msgid "[WARNING_NOTCL] Transformation cancelled. No shape selected."
+msgstr ""
+
+#: FlatCAMEditor.py:1060 flatcamTools/ToolTransform.py:468
+msgid "[ERROR_NOTCL]Wrong value format entered for Rotate, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1097 flatcamTools/ToolTransform.py:502
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew X, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1118 flatcamTools/ToolTransform.py:520
+msgid "[ERROR_NOTCL]Wrong value format entered for Skew Y, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1139 flatcamTools/ToolTransform.py:538
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale X, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1176 flatcamTools/ToolTransform.py:572
+msgid "[ERROR_NOTCL]Wrong value format entered for Scale Y, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1208 flatcamTools/ToolTransform.py:601
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset X, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1229 flatcamTools/ToolTransform.py:619
+msgid "[ERROR_NOTCL]Wrong value format entered for Offset Y, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:1247
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to rotate!"
+msgstr ""
+
+#: FlatCAMEditor.py:1250 flatcamTools/ToolTransform.py:640
+msgid "Appying Rotate"
+msgstr ""
+
+#: FlatCAMEditor.py:1278
+msgid "[success] Done. Rotate completed."
+msgstr ""
+
+#: FlatCAMEditor.py:1294
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to flip!"
+msgstr ""
+
+#: FlatCAMEditor.py:1297 flatcamTools/ToolTransform.py:692
+msgid "Applying Flip"
+msgstr ""
+
+#: FlatCAMEditor.py:1327
+msgid "[success] Flip on the Y axis done ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1330
+msgid "[success] Flip on the X axis done ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1349
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to shear/skew!"
+msgstr ""
+
+#: FlatCAMEditor.py:1352 flatcamTools/ToolTransform.py:762
+msgid "Applying Skew"
+msgstr ""
+
+#: FlatCAMEditor.py:1377
+#, python-format
+msgid "[success] Skew on the %s axis done ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1381 flatcamTools/ToolTransform.py:797
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Skew action was not executed."
+msgstr ""
+
+#: FlatCAMEditor.py:1392
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to scale!"
+msgstr ""
+
+#: FlatCAMEditor.py:1395 flatcamTools/ToolTransform.py:811
+msgid "Applying Scale"
+msgstr ""
+
+#: FlatCAMEditor.py:1428 flatcamTools/ToolTransform.py:849
+#, python-format
+msgid "[success] Scale on the %s axis done ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1431 flatcamTools/ToolTransform.py:852
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Scale action was not executed."
+msgstr ""
+
+#: FlatCAMEditor.py:1440
+msgid "[WARNING_NOTCL] No shape selected. Please Select a shape to offset!"
+msgstr ""
+
+#: FlatCAMEditor.py:1443 flatcamTools/ToolTransform.py:864
+msgid "Applying Offset"
+msgstr ""
+
+#: FlatCAMEditor.py:1467
+#, python-format
+msgid "[success] Offset on the %s axis done ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1471 flatcamTools/ToolTransform.py:898
+#, python-format
+msgid "[ERROR_NOTCL] Due of %s, Offset action was not executed."
+msgstr ""
+
+#: FlatCAMEditor.py:1475
+msgid "Rotate ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1476 FlatCAMEditor.py:1533 FlatCAMEditor.py:1550
+msgid "Enter an Angle Value (degrees):"
+msgstr ""
+
+#: FlatCAMEditor.py:1485
+msgid "[success] Geometry shape rotate done..."
+msgstr ""
+
+#: FlatCAMEditor.py:1490
+msgid "[WARNING_NOTCL] Geometry shape rotate cancelled..."
+msgstr ""
+
+#: FlatCAMEditor.py:1496
+msgid "Offset on X axis ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1497 FlatCAMEditor.py:1516
+#, python-format
+msgid "Enter a distance Value (%s):"
+msgstr ""
+
+#: FlatCAMEditor.py:1506
+msgid "[success] Geometry shape offset on X axis done..."
+msgstr ""
+
+#: FlatCAMEditor.py:1510
+msgid "[WARNING_NOTCL] Geometry shape offset X cancelled..."
+msgstr ""
+
+#: FlatCAMEditor.py:1515
+msgid "Offset on Y axis ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1525
+msgid "[success] Geometry shape offset on Y axis done..."
+msgstr ""
+
+#: FlatCAMEditor.py:1529
+msgid "[WARNING_NOTCL] Geometry shape offset Y cancelled..."
+msgstr ""
+
+#: FlatCAMEditor.py:1532
+msgid "Skew on X axis ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1542
+msgid "[success] Geometry shape skew on X axis done..."
+msgstr ""
+
+#: FlatCAMEditor.py:1546
+msgid "[WARNING_NOTCL] Geometry shape skew X cancelled..."
+msgstr ""
+
+#: FlatCAMEditor.py:1549
+msgid "Skew on Y axis ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1559
+msgid "[success] Geometry shape skew on Y axis done..."
+msgstr ""
+
+#: FlatCAMEditor.py:1563
+msgid "[WARNING_NOTCL] Geometry shape skew Y cancelled..."
+msgstr ""
+
+#: FlatCAMEditor.py:1894 FlatCAMEditor.py:1933
+msgid "Click on CENTER ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1901
+msgid "Click on Circle perimeter point to complete ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1925
+msgid "[success]Done. Adding Circle completed."
+msgstr ""
+
+#: FlatCAMEditor.py:1952
+msgid "Click on Start arc point ..."
+msgstr ""
+
+#: FlatCAMEditor.py:1956
+msgid "Click on End arc point to complete ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2111
+msgid "[success]Done. Arc completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2123
+msgid "Click on 1st corner ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2163
+msgid "Click on 1st point ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2170
+msgid "Click on next Point or click Right mouse button to complete ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2193
+msgid "[success]Done. Polygon completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2212
+msgid "[success]Done. Path completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2472 FlatCAMEditor.py:4034
+msgid "[WARNING_NOTCL] Move cancelled. No shape selected."
+msgstr ""
+
+#: FlatCAMEditor.py:2476
+msgid "Click on reference point."
+msgstr ""
+
+#: FlatCAMEditor.py:2479
+msgid "Click on destination point."
+msgstr ""
+
+#: FlatCAMEditor.py:2510
+msgid "[success]Done. Geometry(s) Move completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2555
+msgid "[success]Done. Geometry(s) Copy completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2567
+msgid "Click on the Destination point..."
+msgstr ""
+
+#: FlatCAMEditor.py:2581
+#, python-format
+msgid ""
+"[ERROR]Font not supported. Only Regular, Bold, Italic and BoldItalic are "
+"supported. Error: %s"
+msgstr ""
+
+#: FlatCAMEditor.py:2591
+msgid "[success]Done. Adding Text completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2619
+msgid "Create buffer geometry ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2630 FlatCAMEditor.py:2656 FlatCAMEditor.py:2682
+msgid "[WARNING_NOTCL] Buffer cancelled. No shape selected."
+msgstr ""
+
+#: FlatCAMEditor.py:2652
+msgid "[success]Done. Buffer Tool completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2678
+msgid "[success]Done. Buffer Int Tool completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2704
+msgid "[success]Done. Buffer Ext Tool completed."
+msgstr ""
+
+#: FlatCAMEditor.py:2737
+msgid "Create Paint geometry ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2751
+msgid "Shape transformations ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2776
+msgid "[WARNING_NOTCL] To add a drill first select a tool"
+msgstr ""
+
+#: FlatCAMEditor.py:2785 FlatCAMEditor.py:2875 FlatCAMEditor.py:3148
+#: FlatCAMEditor.py:3173
+msgid "Click on target location ..."
+msgstr ""
+
+#: FlatCAMEditor.py:2825
+msgid "[success]Done. Drill added."
+msgstr ""
+
+#: FlatCAMEditor.py:2867
+msgid "[WARNING_NOTCL] To add an Drill Array first select a tool in Tool Table"
+msgstr ""
+
+#: FlatCAMEditor.py:2892
+msgid "Click on the Drill Circular Array Start position"
+msgstr ""
+
+#: FlatCAMEditor.py:2914
+msgid ""
+"[ERROR_NOTCL] The value is not Float. Check for comma instead of dot "
+"separator."
+msgstr ""
+
+#: FlatCAMEditor.py:2917
+msgid "[ERROR_NOTCL] The value is mistyped. Check the value."
+msgstr ""
+
+#: FlatCAMEditor.py:3010
+msgid "[WARNING_NOTCL]Too many drills for the selected spacing angle."
+msgstr ""
+
+#: FlatCAMEditor.py:3027
+msgid "[success]Done. Drill Array added."
+msgstr ""
+
+#: FlatCAMEditor.py:3038
+msgid "Click on the Drill(s) to resize ..."
+msgstr ""
+
+#: FlatCAMEditor.py:3058
+msgid ""
+"[ERROR_NOTCL]Resize drill(s) failed. Please enter a diameter for resize."
+msgstr ""
+
+#: FlatCAMEditor.py:3130
+msgid "[success]Done. Drill Resize completed."
+msgstr ""
+
+#: FlatCAMEditor.py:3150
+msgid "Click on reference location ..."
+msgstr ""
+
+#: FlatCAMEditor.py:3205
+msgid "[success]Done. Drill(s) Move completed."
+msgstr ""
+
+#: FlatCAMEditor.py:3258
+msgid "[success]Done. Drill(s) copied."
+msgstr ""
+
+#: FlatCAMEditor.py:3908 flatcamGUI/FlatCAMGUI.py:2114
+#: flatcamGUI/FlatCAMGUI.py:2126
+msgid "[success]Done."
+msgstr ""
+
+#: FlatCAMEditor.py:4041
+msgid "[WARNING_NOTCL] Copy cancelled. No shape selected."
+msgstr ""
+
+#: FlatCAMEditor.py:4048 flatcamGUI/FlatCAMGUI.py:2406
+#: flatcamGUI/FlatCAMGUI.py:2418 flatcamGUI/FlatCAMGUI.py:2452
+msgid "Click on target point."
+msgstr ""
+
+#: FlatCAMEditor.py:4289
+msgid ""
+"[WARNING_NOTCL]A selection of at least 2 geo items is required to do "
+"Intersection."
+msgstr ""
+
+#: FlatCAMEditor.py:4327 FlatCAMEditor.py:4364 FlatCAMEditor.py:4436
+msgid ""
+"[ERROR_NOTCL]Negative buffer value is not accepted. Use Buffer interior to "
+"generate an 'inside' shape"
+msgstr ""
+
+#: FlatCAMEditor.py:4335 FlatCAMEditor.py:4373 FlatCAMEditor.py:4444
+msgid "[WARNING_NOTCL] Nothing selected for buffering."
+msgstr ""
+
+#: FlatCAMEditor.py:4339 FlatCAMEditor.py:4377 FlatCAMEditor.py:4448
+msgid "[WARNING_NOTCL] Invalid distance for buffering."
+msgstr ""
+
+#: FlatCAMEditor.py:4349 FlatCAMEditor.py:4457
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a different buffer value."
+msgstr ""
+
+#: FlatCAMEditor.py:4357
+msgid "[success]Full buffer geometry created."
+msgstr ""
+
+#: FlatCAMEditor.py:4386
+msgid ""
+"[ERROR_NOTCL]Failed, the result is empty. Choose a smaller buffer value."
+msgstr ""
+
+#: FlatCAMEditor.py:4398 FlatCAMEditor.py:4469
+msgid "[success]Exterior buffer geometry created."
+msgstr ""
+
+#: FlatCAMEditor.py:4533
+msgid "[WARNING_NOTCL]Nothing selected for painting."
+msgstr ""
+
+#: FlatCAMEditor.py:4539
+msgid "[WARNING] Invalid value for {}"
+msgstr ""
+
+#: FlatCAMEditor.py:4545
+msgid ""
+"[ERROR_NOTCL] Could not do Paint. Overlap value has to be less than 1.00 "
+"(100%)."
+msgstr ""
+
+#: FlatCAMEditor.py:4604
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different method of Paint\n"
+"%s"
+msgstr ""
+
+#: FlatCAMEditor.py:4615
+msgid "[success] Paint done."
+msgstr ""
+
+#: FlatCAMEditor.py:4647
+msgid "Excellon Editor"
+msgstr ""
+
+#: FlatCAMEditor.py:4654
+msgid "Name:"
+msgstr ""
+
+#: FlatCAMEditor.py:4674 flatcamTools/ToolNonCopperClear.py:71
+#: flatcamTools/ToolPaint.py:69 flatcamTools/ToolSolderPaste.py:70
+msgid "Tools Table"
+msgstr ""
+
+#: FlatCAMEditor.py:4676 flatcamGUI/ObjectUI.py:609
+msgid ""
+"Tools in this Excellon object\n"
+"when are used for drilling."
+msgstr ""
+
+#: FlatCAMEditor.py:4685 FlatCAMEditor.py:5745 FlatCAMObj.py:2203
+#: FlatCAMObj.py:2297 FlatCAMObj.py:2408 flatcamGUI/ObjectUI.py:627
+#: flatcamTools/ToolNonCopperClear.py:82 flatcamTools/ToolPaint.py:80
+#: flatcamTools/ToolSolderPaste.py:81
+msgid "Diameter"
+msgstr ""
+
+#: FlatCAMEditor.py:4693
+msgid "Add/Delete Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:4695
+msgid ""
+"Add/Delete a tool to the tool list\n"
+"for this Excellon object."
+msgstr ""
+
+#: FlatCAMEditor.py:4703 flatcamTools/ToolCutOut.py:77
+msgid "Tool Dia:"
+msgstr ""
+
+#: FlatCAMEditor.py:4705 flatcamGUI/ObjectUI.py:1046
+msgid "Diameter for the new tool"
+msgstr ""
+
+#: FlatCAMEditor.py:4714
+msgid "Add Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:4716
+msgid ""
+"Add a new tool to the tool list\n"
+"with the diameter specified above."
+msgstr ""
+
+#: FlatCAMEditor.py:4726
+msgid "Delete Tool"
+msgstr ""
+
+#: FlatCAMEditor.py:4728
+msgid ""
+"Delete a tool in the tool list\n"
+"by selecting a row in the tool table."
+msgstr ""
+
+#: FlatCAMEditor.py:4746
+msgid "Resize Drill(s)"
+msgstr ""
+
+#: FlatCAMEditor.py:4748
+msgid "Resize a drill or a selection of drills."
+msgstr ""
+
+#: FlatCAMEditor.py:4755
+msgid "Resize Dia:"
+msgstr ""
+
+#: FlatCAMEditor.py:4757
+msgid "Diameter to resize to."
+msgstr ""
+
+#: FlatCAMEditor.py:4765
+msgid "Resize"
+msgstr ""
+
+#: FlatCAMEditor.py:4767
+msgid "Resize drill(s)"
+msgstr ""
+
+#: FlatCAMEditor.py:4789 flatcamGUI/FlatCAMGUI.py:1384
+msgid "Add Drill Array"
+msgstr ""
+
+#: FlatCAMEditor.py:4791
+msgid "Add an array of drills (linear or circular array)"
+msgstr ""
+
+#: FlatCAMEditor.py:4797
+msgid ""
+"Select the type of drills array to create.\n"
+"It can be Linear X(Y) or Circular"
+msgstr ""
+
+#: FlatCAMEditor.py:4800
+msgid "Linear"
+msgstr ""
+
+#: FlatCAMEditor.py:4801
+msgid "Circular"
+msgstr ""
+
+#: FlatCAMEditor.py:4808
+msgid "Nr of drills:"
+msgstr ""
+
+#: FlatCAMEditor.py:4810
+msgid "Specify how many drills to be in the array."
+msgstr ""
+
+#: FlatCAMEditor.py:4827 FlatCAMEditor.py:4872
+msgid "Direction:"
+msgstr ""
+
+#: FlatCAMEditor.py:4829
+msgid ""
+"Direction on which the linear array is oriented:\n"
+"- 'X' - horizontal axis \n"
+"- 'Y' - vertical axis or \n"
+"- 'Angle' - a custom angle for the array inclination"
+msgstr ""
+
+#: FlatCAMEditor.py:4838
+msgid "Angle"
+msgstr ""
+
+#: FlatCAMEditor.py:4842
+msgid "Pitch:"
+msgstr ""
+
+#: FlatCAMEditor.py:4844
+msgid "Pitch = Distance between elements of the array."
+msgstr ""
+
+#: FlatCAMEditor.py:4853
+msgid ""
+"Angle at which the linear array is placed.\n"
+"The precision is of max 2 decimals.\n"
+"Min value is: -359.99 degrees.\n"
+"Max value is:  360.00 degrees."
+msgstr ""
+
+#: FlatCAMEditor.py:4874
+msgid ""
+"Direction for circular array.Can be CW = clockwise or CCW = counter "
+"clockwise."
+msgstr ""
+
+#: FlatCAMEditor.py:4889
+msgid "Angle at which each element in circular array is placed."
+msgstr ""
+
+#: FlatCAMEditor.py:5210 FlatCAMObj.py:1725
+msgid "Total Drills"
+msgstr ""
+
+#: FlatCAMEditor.py:5242 FlatCAMObj.py:1751
+msgid "Total Slots"
+msgstr ""
+
+#: FlatCAMEditor.py:5316 FlatCAMObj.py:1958 FlatCAMObj.py:3221
+#: FlatCAMObj.py:3527 FlatCAMObj.py:3714 FlatCAMObj.py:3727 FlatCAMObj.py:3844
+#: FlatCAMObj.py:4252 FlatCAMObj.py:4485 FlatCAMObj.py:4891
+#: flatcamTools/ToolCalculators.py:307 flatcamTools/ToolCalculators.py:318
+#: flatcamTools/ToolCalculators.py:330 flatcamTools/ToolCalculators.py:345
+#: flatcamTools/ToolCalculators.py:358 flatcamTools/ToolCalculators.py:372
+#: flatcamTools/ToolCalculators.py:383 flatcamTools/ToolCalculators.py:394
+#: flatcamTools/ToolCalculators.py:405 flatcamTools/ToolFilm.py:241
+#: flatcamTools/ToolFilm.py:248 flatcamTools/ToolNonCopperClear.py:478
+#: flatcamTools/ToolNonCopperClear.py:625
+#: flatcamTools/ToolNonCopperClear.py:637 flatcamTools/ToolPaint.py:537
+#: flatcamTools/ToolPaint.py:607 flatcamTools/ToolPaint.py:743
+#: flatcamTools/ToolPaint.py:833 flatcamTools/ToolPaint.py:988
+#: flatcamTools/ToolPanelize.py:323 flatcamTools/ToolPanelize.py:335
+#: flatcamTools/ToolPanelize.py:348 flatcamTools/ToolPanelize.py:361
+#: flatcamTools/ToolPanelize.py:373 flatcamTools/ToolPanelize.py:384
+#: flatcamTools/ToolSolderPaste.py:755 flatcamTools/ToolSolderPaste.py:826
+msgid "[ERROR_NOTCL]Wrong value format entered, use a number."
+msgstr ""
+
+#: FlatCAMEditor.py:5329
+msgid ""
+"[WARNING_NOTCL]Tool already in the original or actual tool list.\n"
+"Save and reedit Excellon if you need to add this tool. "
+msgstr ""
+
+#: FlatCAMEditor.py:5338 flatcamGUI/FlatCAMGUI.py:2481
+#, python-brace-format
+msgid "[success]Added new tool with dia: {dia} {units}"
+msgstr ""
+
+#: FlatCAMEditor.py:5369
+msgid "[WARNING_NOTCL]Select a tool in Tool Table"
+msgstr ""
+
+#: FlatCAMEditor.py:5402
+#, python-brace-format
+msgid "[success]Deleted tool with dia: {del_dia} {units}"
+msgstr ""
+
+#: FlatCAMEditor.py:5799
+msgid ""
+"[ERROR_NOTCL] There are no Tools definitions in the file. Aborting Excellon "
+"creation."
+msgstr ""
+
+#: FlatCAMEditor.py:5808
+msgid "Creating Excellon."
+msgstr ""
+
+#: FlatCAMEditor.py:5817
+msgid "[success]Excellon editing finished."
+msgstr ""
+
+#: FlatCAMEditor.py:5834
+msgid "[WARNING_NOTCL]Cancelled. There is no Tool/Drill selected"
+msgstr ""
+
+#: FlatCAMEditor.py:6316
+msgid "[success]Done. Drill(s) deleted."
+msgstr ""
+
+#: FlatCAMEditor.py:6386
+msgid "Click on the circular array Center position"
+msgstr ""
+
+#: FlatCAMObj.py:193
+#, python-brace-format
+msgid "[success]Name changed from {old} to {new}"
+msgstr ""
+
+#: FlatCAMObj.py:532 FlatCAMObj.py:1886 FlatCAMObj.py:3149 FlatCAMObj.py:5296
+msgid "<span style=\"color:green;\"><b>Basic</b></span>"
+msgstr ""
+
+#: FlatCAMObj.py:544 FlatCAMObj.py:1902 FlatCAMObj.py:3171 FlatCAMObj.py:5302
+msgid "<span style=\"color:red;\"><b>Advanced</b></span>"
+msgstr ""
+
+#: FlatCAMObj.py:899 FlatCAMObj.py:954
+#, python-format
+msgid "[success]Isolation geometry created: %s"
+msgstr ""
+
+#: FlatCAMObj.py:1029
+msgid ""
+"[ERROR_NOTCL] The aperture scale factor value is missing or wrong format."
+msgstr ""
+
+#: FlatCAMObj.py:1044 FlatCAMObj.py:1079
+msgid ""
+"[WARNING_NOTCL] No aperture to scale. Select at least one aperture and try "
+"again."
+msgstr ""
+
+#: FlatCAMObj.py:1064
+msgid "[ERROR_NOTCL] The aperture buffer value is missing or wrong format."
+msgstr ""
+
+#: FlatCAMObj.py:1136
+msgid "Generating Gerber"
+msgstr ""
+
+#: FlatCAMObj.py:1144
+msgid "[ERROR_NOTCL] Cretion of Gerber failed."
+msgstr ""
+
+#: FlatCAMObj.py:1151
+#, python-format
+msgid "[success] Created: %s"
+msgstr ""
+
+#: FlatCAMObj.py:1271
+msgid "Plotting Apertures"
+msgstr ""
+
+#: FlatCAMObj.py:2182 FlatCAMObj.py:2273 FlatCAMObj.py:2388
+msgid ""
+"[ERROR_NOTCL]Please select one or more tools from the list and try again."
+msgstr ""
+
+#: FlatCAMObj.py:2189
+msgid ""
+"[ERROR_NOTCL] Milling tool for DRILLS is larger than hole size. Cancelled."
+msgstr ""
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Tool_nr"
+msgstr ""
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Drills_Nr"
+msgstr ""
+
+#: FlatCAMObj.py:2203 FlatCAMObj.py:2297 FlatCAMObj.py:2408
+msgid "Slots_Nr"
+msgstr ""
+
+#: FlatCAMObj.py:2283
+msgid ""
+"[ERROR_NOTCL] Milling tool for SLOTS is larger than hole size. Cancelled."
+msgstr ""
+
+#: FlatCAMObj.py:2446 FlatCAMObj.py:4140 FlatCAMObj.py:4351 FlatCAMObj.py:4666
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"z_pdepth\"] or self."
+"options[\"z_pdepth\"]"
+msgstr ""
+
+#: FlatCAMObj.py:2458 FlatCAMObj.py:4152 FlatCAMObj.py:4363 FlatCAMObj.py:4678
+msgid ""
+"[ERROR_NOTCL]Wrong value format for self.defaults[\"feedrate_probe\"] or "
+"self.options[\"feedrate_probe\"]"
+msgstr ""
+
+#: FlatCAMObj.py:2490 FlatCAMObj.py:4553 FlatCAMObj.py:4558 FlatCAMObj.py:4704
+msgid "Generating CNC Code"
+msgstr ""
+
+#: FlatCAMObj.py:2516 FlatCAMObj.py:4850 camlib.py:4929 camlib.py:5365
+#: camlib.py:5636
+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 ""
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3105 FlatCAMObj.py:3390
+msgid "Path"
+msgstr ""
+
+#: FlatCAMObj.py:2863
+msgid "In"
+msgstr ""
+
+#: FlatCAMObj.py:2863
+msgid "Out"
+msgstr ""
+
+#: FlatCAMObj.py:2863 FlatCAMObj.py:3186 FlatCAMObj.py:3759
+msgid "Custom"
+msgstr ""
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3770 FlatCAMObj.py:3771 FlatCAMObj.py:3780
+msgid "Iso"
+msgstr ""
+
+#: FlatCAMObj.py:2864 FlatCAMObj.py:3107 FlatCAMObj.py:3392
+msgid "Rough"
+msgstr ""
+
+#: FlatCAMObj.py:2864
+msgid "Finish"
+msgstr ""
+
+#: FlatCAMObj.py:3142 flatcamGUI/FlatCAMGUI.py:463
+#: flatcamGUI/FlatCAMGUI.py:1388 flatcamGUI/ObjectUI.py:1067
+msgid "Copy"
+msgstr ""
+
+#: FlatCAMObj.py:3144 flatcamGUI/FlatCAMGUI.py:464
+#: flatcamGUI/FlatCAMGUI.py:1389 flatcamGUI/ObjectUI.py:1075
+#: flatcamTools/ToolNonCopperClear.py:145 flatcamTools/ToolPaint.py:143
+#: flatcamTools/ToolSolderPaste.py:121 flatcamTools/ToolSolderPaste.py:480
+msgid "Delete"
+msgstr ""
+
+#: FlatCAMObj.py:3362
+msgid "[ERROR_NOTCL] Please enter the desired tool diameter in Float format."
+msgstr ""
+
+#: FlatCAMObj.py:3437
+msgid "[success] Tool added in Tool Table."
+msgstr ""
+
+#: FlatCAMObj.py:3442
+msgid "[ERROR_NOTCL]Default Tool added. Wrong value format entered."
+msgstr ""
+
+#: FlatCAMObj.py:3472 FlatCAMObj.py:3482
+msgid "[WARNING_NOTCL]Failed. Select a tool to copy."
+msgstr ""
+
+#: FlatCAMObj.py:3511
+msgid "[success] Tool was copied in Tool Table."
+msgstr ""
+
+#: FlatCAMObj.py:3544
+msgid "[success] Tool was edited in Tool Table."
+msgstr ""
+
+#: FlatCAMObj.py:3575 FlatCAMObj.py:3585
+msgid "[WARNING_NOTCL]Failed. Select a tool to delete."
+msgstr ""
+
+#: FlatCAMObj.py:3609
+msgid "[success] Tool was deleted in Tool Table."
+msgstr ""
+
+#: FlatCAMObj.py:4023
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This Geometry can't be processed because it is %s geometry."
+msgstr ""
+
+#: FlatCAMObj.py:4040
+msgid "[ERROR_NOTCL]Wrong Tool Dia value format entered, use a number."
+msgstr ""
+
+#: FlatCAMObj.py:4067
+msgid "[ERROR_NOTCL] Failed. No tool selected in the tool table ..."
+msgstr ""
+
+#: FlatCAMObj.py:4105
+#, python-format
+msgid "FlatCAMObj.FlatCAMGeometry.mtool_gen_cncjob() --> %s"
+msgstr ""
+
+#: FlatCAMObj.py:4261 FlatCAMObj.py:4494
+msgid ""
+"[WARNING] Tool Offset is selected in Tool Table but no value is provided.\n"
+"Add a Tool Offset or change the Offset Type."
+msgstr ""
+
+#: FlatCAMObj.py:4375
+msgid "[ERROR_NOTCL]Cancelled. Empty file, it has no geometry..."
+msgstr ""
+
+#: FlatCAMObj.py:4737 FlatCAMObj.py:4747 camlib.py:3229 camlib.py:3238
+msgid "[ERROR_NOTCL] Scale factor has to be a number: integer or float."
+msgstr ""
+
+#: FlatCAMObj.py:4785
+msgid "[success]Geometry Scale done."
+msgstr ""
+
+#: FlatCAMObj.py:4802 camlib.py:3300
+msgid ""
+"[ERROR_NOTCL]An (x,y) pair of values are needed. Probable you entered only "
+"one value in the Offset field."
+msgstr ""
+
+#: FlatCAMObj.py:4822
+msgid "[success]Geometry Offset done."
+msgstr ""
+
+#: FlatCAMObj.py:5364 FlatCAMObj.py:5369 flatcamTools/ToolSolderPaste.py:1360
+msgid "Export Machine Code ..."
+msgstr ""
+
+#: FlatCAMObj.py:5375
+msgid "[WARNING_NOTCL]Export Machine Code cancelled ..."
+msgstr ""
+
+#: FlatCAMObj.py:5386
+#, python-format
+msgid "[success] Machine Code file saved to: %s"
+msgstr ""
+
+#: FlatCAMObj.py:5417
+#, python-format
+msgid "[ERROR]FlatCAMCNNJob.on_modifygcode_button_click() -->%s"
+msgstr ""
+
+#: FlatCAMObj.py:5523
+#, python-format
+msgid ""
+"[WARNING_NOTCL]This CNCJob object can't be processed because it is a %s "
+"CNCJob object."
+msgstr ""
+
+#: FlatCAMObj.py:5576
+msgid "[ERROR_NOTCL] G-code does not have a units code: either G20 or G21"
+msgstr ""
+
+#: FlatCAMObj.py:5589
+msgid ""
+"[ERROR_NOTCL] Cancelled. The Toolchange Custom code is enabled but it's "
+"empty."
+msgstr ""
+
+#: FlatCAMObj.py:5596
+msgid "[success] Toolchange G-code was replaced by a custom code."
+msgstr ""
+
+#: FlatCAMObj.py:5611 flatcamTools/ToolSolderPaste.py:1389
+msgid "[WARNING_NOTCL] No such file or directory"
+msgstr ""
+
+#: FlatCAMObj.py:5630 FlatCAMObj.py:5642
+msgid ""
+"[WARNING_NOTCL] The used postprocessor file has to have in it's name: "
+"'toolchange_custom'"
+msgstr ""
+
+#: FlatCAMObj.py:5648
+msgid "[ERROR] There is no postprocessor file."
+msgstr ""
+
+#: ObjectCollection.py:402
+#, python-brace-format
+msgid "Object renamed from {old} to {new}"
+msgstr ""
+
+#: ObjectCollection.py:736
+#, python-format
+msgid "[ERROR] Cause of error: %s"
+msgstr ""
+
+#: camlib.py:200
+msgid "[ERROR_NOTCL] self.solid_geometry is neither BaseGeometry or list."
+msgstr ""
+
+#: camlib.py:1387
+msgid "[success]Object was mirrored ..."
+msgstr ""
+
+#: camlib.py:1389
+msgid "[ERROR_NOTCL] Failed to mirror. No object selected"
+msgstr ""
+
+#: camlib.py:1425
+msgid "[success]Object was rotated ..."
+msgstr ""
+
+#: camlib.py:1427
+msgid "[ERROR_NOTCL] Failed to rotate. No object selected"
+msgstr ""
+
+#: camlib.py:1461
+msgid "[success]Object was skewed ..."
+msgstr ""
+
+#: camlib.py:1463
+msgid "[ERROR_NOTCL] Failed to skew. No object selected"
+msgstr ""
+
+#: camlib.py:2647 camlib.py:2727
+#, python-format
+msgid "[WARNING] Coordinates missing, line ignored: %s"
+msgstr ""
+
+#: camlib.py:2648 camlib.py:2728
+msgid "[WARNING_NOTCL] GERBER file might be CORRUPT. Check the file !!!"
+msgstr ""
+
+#: camlib.py:2696
+#, python-format
+msgid ""
+"[ERROR] Region does not have enough points. File will be processed but there "
+"are parser errors. Line number: %s"
+msgstr ""
+
+#: camlib.py:3051
+#, python-format
+msgid ""
+"[ERROR]Gerber Parser ERROR.\n"
+"%s:"
+msgstr ""
+
+#: camlib.py:3267
+msgid "[success]Gerber Scale done."
+msgstr ""
+
+#: camlib.py:3324
+msgid "[success]Gerber Offset done."
+msgstr ""
+
+#: camlib.py:3700
+#, python-format
+msgid "[ERROR_NOTCL] This is GCODE mark: %s"
+msgstr ""
+
+#: camlib.py:4230
+#, python-brace-format
+msgid ""
+"[ERROR] Excellon Parser error.\n"
+"Parsing Failed. Line {l_nr}: {line}\n"
+msgstr ""
+
+#: camlib.py:4307
+msgid ""
+"[WARNING] Excellon.create_geometry() -> a drill location was skipped due of "
+"not having a tool associated.\n"
+"Check the resulting GCode."
+msgstr ""
+
+#: camlib.py:4843
+#, python-format
+msgid "[ERROR] There is no such parameter: %s"
+msgstr ""
+
+#: camlib.py:4908
+msgid ""
+"[WARNING] 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:4915 camlib.py:5388 camlib.py:5659
+#, python-format
+msgid ""
+"[WARNING] The Cut Z parameter is zero. There will be no cut, skipping %s file"
+msgstr ""
+
+#: camlib.py:5131 camlib.py:5226 camlib.py:5277
+msgid "[ERROR_NOTCL]The loaded Excellon file has no drills ..."
+msgstr ""
+
+#: camlib.py:5231
+msgid "[ERROR_NOTCL] Wrong optimization type selected."
+msgstr ""
+
+#: camlib.py:5376 camlib.py:5647
+msgid ""
+"[ERROR_NOTCL] Cut_Z parameter is None or zero. Most likely a bad "
+"combinations of other parameters."
+msgstr ""
+
+#: camlib.py:5381 camlib.py:5652
+msgid ""
+"[WARNING] 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:5393 camlib.py:5664
+msgid "[ERROR_NOTCL] Travel Z parameter is None or zero."
+msgstr ""
+
+#: camlib.py:5397 camlib.py:5668
+msgid ""
+"[WARNING] 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:5404 camlib.py:5675
+#, python-format
+msgid ""
+"[WARNING] The Z Travel parameter is zero. This is dangerous, skipping %s file"
+msgstr ""
+
+#: camlib.py:5534
+#, python-format
+msgid "[ERROR]Expected a Geometry, got %s"
+msgstr ""
+
+#: camlib.py:5540
+msgid ""
+"[ERROR_NOTCL]Trying to generate a CNC Job from a Geometry object without "
+"solid_geometry."
+msgstr ""
+
+#: camlib.py:5579
+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:5801
+msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:50
+msgid "&File"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:55
+msgid "&New Project ...\tCTRL+N"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:57
+msgid "Will create a new, blank project"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:62
+msgid "&New"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:65
+msgid "Geometry\tN"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:67
+msgid "Will create a new, empty Geometry Object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:69
+msgid "Excellon\tL"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:71
+msgid "Will create a new, empty Excellon Object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:74
+msgid "Open"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:79
+msgid "Open &Gerber ...\tCTRL+G"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:86
+msgid "Open &Excellon ...\tCTRL+E"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:91
+msgid "Open G-&Code ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:95
+msgid "Open &Project ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:101
+msgid "Open Config ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:105
+msgid "Recent files"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:111
+msgid "Run Script ...\tSHIFT+S"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:114
+msgid ""
+"Will run the opened Tcl Script thus\n"
+"enabling the automation of certain\n"
+"functions of FlatCAM."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:124
+msgid "Import"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:126
+msgid "&SVG as Geometry Object ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:129
+msgid "&SVG as Gerber Object ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:134
+msgid "&DXF as Geometry Object ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:137
+msgid "&DXF as Gerber Object ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:142
+msgid "Export"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:145
+msgid "Export &SVG ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:148
+msgid "Export DXF ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:153
+msgid "Export &PNG ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:155
+msgid ""
+"Will export an image in PNG format,\n"
+"the saved image will contain the visual \n"
+"information currently in FlatCAM Plot Area."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:163
+msgid "Export &Excellon ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:166
+msgid ""
+"Will export an Excellon Object as Excellon file,\n"
+"the coordinates format, the file units and zeros\n"
+"are set in Preferences -> Excellon Export."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:177
+msgid "Save &Defaults"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:183 flatcamGUI/FlatCAMGUI.py:465
+msgid "Save"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:185
+msgid "&Save Project ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:190
+msgid "Save Project &As ...\tCTRL+S"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:194
+msgid "Save Project C&opy ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:202
+msgid "E&xit"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:208
+msgid "&Edit"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:211
+msgid "Edit Object\tE"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:212
+msgid "Save && Close Editor\tCTRL+S"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:220
+msgid "Conversion"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:222
+msgid "&Join Geo/Gerber/Exc -> Geo"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:224
+msgid ""
+"Merge a selection of objects, which can be of type:\n"
+"- Gerber\n"
+"- Excellon\n"
+"- Geometry\n"
+"into a new combo Geometry object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:231
+msgid "Join Excellon(s) -> Excellon"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:233
+msgid "Merge a selection of Excellon objects into a new combo Excellon object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:236
+msgid "Join Gerber(s) -> Gerber"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:238
+msgid "Merge a selection of Gerber objects into a new combo Gerber object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:243
+msgid "Convert Single to MultiGeo"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:245
+msgid ""
+"Will convert a Geometry object from single_geometry type\n"
+"to a multi_geometry type."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:249
+msgid "Convert Multi to SingleGeo"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:251
+msgid ""
+"Will convert a Geometry object from multi_geometry type\n"
+"to a single_geometry type."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:258
+msgid "&Copy Object\tCTRL+C"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:260
+msgid "Copy as &Geom"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:263
+msgid "&Delete\tDEL"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:267
+msgid "Se&t Origin\tO"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:268
+msgid "Jump to Location\tJ"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:273
+msgid "Toggle Units\tQ"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:275
+msgid "&Select All\tCTRL+A"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:279
+msgid "&Preferences\tSHIFT+P"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:282
+msgid "&Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:297
+msgid "&Rotate Selection\tSHIFT+(R)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:302
+msgid "&Skew on X axis\tSHIFT+X"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:304
+msgid "S&kew on Y axis\tSHIFT+Y"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:309
+msgid "Flip on &X axis\tX"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:311
+msgid "Flip on &Y axis\tY"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:316
+msgid "View source\tALT+S"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:321
+msgid "&View"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:322
+msgid "Enable all plots\tALT+1"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:324
+msgid "Disable all plots\tALT+2"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:326
+msgid "Disable non-selected\tALT+3"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:329
+msgid "&Zoom Fit\tV"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:330
+msgid "&Zoom In\t-"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:331
+msgid "&Zoom Out\t="
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:335
+msgid "Toggle Code Editor\tCTRL+E"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:338
+msgid "&Toggle FullScreen\tALT+F10"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:340
+msgid "&Toggle Plot Area\tCTRL+F10"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:342
+msgid "&Toggle Project/Sel/Tool\t`"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:345
+msgid "&Toggle Grid Snap\tG"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:347
+msgid "&Toggle Axis\tSHIFT+G"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:350
+msgid "Toggle Workspace\tSHIFT+W"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:354
+msgid "&Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:356
+msgid "&Command Line\tS"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:359
+msgid "&Help"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:360
+msgid "Help\tF1"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:361
+msgid "FlatCAM.org"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:364
+msgid "Shortcuts List\tF3"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:365
+msgid "YouTube Channel\tF4"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:367
+msgid "About"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:378
+msgid "Add Circle\tO"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:380
+msgid "Add Arc\tA"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:383
+msgid "Add Rectangle\tR"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:386
+msgid "Add Polygon\tN"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:388
+msgid "Add Path\tP"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:390
+msgid "Add Text\tT"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:393
+msgid "Polygon Union\tU"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:395
+msgid "Polygon Intersection\tE"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:397
+msgid "Polygon Subtraction\tS"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:401
+msgid "Cut Path\tX"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:403
+msgid "Copy Geom\tC"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:405
+msgid "Delete Shape\tDEL"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:408
+msgid "Move\tM"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:410
+msgid "Buffer Tool\tB"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:413
+msgid "Paint Tool\tI"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:416
+msgid "Transform Tool\tALT+R"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:420
+msgid "Toggle Corner Snap\tK"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:423
+msgid ">Excellon Editor<"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:427
+msgid "Add Drill Array\tA"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:429
+msgid "Add Drill\tD"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:433
+msgid "Resize Drill(S)\tR"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:435
+msgid "Copy\tC"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:437
+msgid "Delete\tDEL"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:442
+msgid "Move Drill(s)\tM"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:456
+msgid "Enable Plot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:457
+msgid "Disable Plot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:459
+msgid "Generate CNC"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:460
+msgid "View Source"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:462 flatcamGUI/FlatCAMGUI.py:1390
+msgid "Edit"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:468 flatcamGUI/FlatCAMGUI.py:1396
+#: flatcamTools/ToolProperties.py:25
+msgid "Properties"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:497
+msgid "File Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:501
+msgid "Edit Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:505
+msgid "View Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:509
+msgid "Shell Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:513
+msgid "Tools Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:517
+msgid "Excellon Editor Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:521
+msgid "Geometry Editor Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:525
+msgid "Grid Toolbar"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:544 flatcamGUI/FlatCAMGUI.py:1593
+msgid "Open project"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:545 flatcamGUI/FlatCAMGUI.py:1594
+msgid "Save project"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:548 flatcamGUI/FlatCAMGUI.py:1597
+msgid "New Blank Geometry"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:549 flatcamGUI/FlatCAMGUI.py:1598
+msgid "New Blank Excellon"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:551 flatcamGUI/FlatCAMGUI.py:1600
+msgid "Editor"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:553 flatcamGUI/FlatCAMGUI.py:1602
+msgid "Save Object and close the Editor"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:557 flatcamGUI/FlatCAMGUI.py:1606
+msgid "&Delete"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:560 flatcamGUI/FlatCAMGUI.py:1609
+msgid "&Replot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:561 flatcamGUI/FlatCAMGUI.py:1610
+msgid "&Clear plot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:562 flatcamGUI/FlatCAMGUI.py:1611
+msgid "Zoom In"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:563 flatcamGUI/FlatCAMGUI.py:1612
+msgid "Zoom Out"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:564 flatcamGUI/FlatCAMGUI.py:1370
+#: flatcamGUI/FlatCAMGUI.py:1613
+msgid "Zoom Fit"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:569 flatcamGUI/FlatCAMGUI.py:1618
+msgid "&Command Line"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:572 flatcamGUI/FlatCAMGUI.py:1621
+msgid "2Sided Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:573 flatcamGUI/FlatCAMGUI.py:1622
+msgid "&Cutout Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:574 flatcamGUI/FlatCAMGUI.py:1623
+#: flatcamGUI/ObjectUI.py:463 flatcamTools/ToolNonCopperClear.py:283
+msgid "NCC Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:578 flatcamGUI/FlatCAMGUI.py:1627
+msgid "Panel Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:579 flatcamGUI/FlatCAMGUI.py:1628
+#: flatcamTools/ToolFilm.py:204
+msgid "Film Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:580 flatcamGUI/FlatCAMGUI.py:1630
+msgid "SolderPaste Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:583 flatcamGUI/FlatCAMGUI.py:1634
+msgid "Calculators Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:587 flatcamGUI/FlatCAMGUI.py:601
+#: flatcamGUI/FlatCAMGUI.py:1638
+msgid "Select"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:588 flatcamGUI/FlatCAMGUI.py:1639
+msgid "Add Drill Hole"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:591 flatcamGUI/FlatCAMGUI.py:1642
+msgid "Resize Drill"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:594 flatcamGUI/FlatCAMGUI.py:1645
+msgid "Copy Drill"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:595 flatcamGUI/FlatCAMGUI.py:1647
+msgid "Delete Drill"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:598 flatcamGUI/FlatCAMGUI.py:1650
+msgid "Move Drill"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:602 flatcamGUI/FlatCAMGUI.py:1654
+msgid "Add Circle"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:603 flatcamGUI/FlatCAMGUI.py:1655
+msgid "Add Arc"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:605 flatcamGUI/FlatCAMGUI.py:1657
+msgid "Add Rectangle"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:608 flatcamGUI/FlatCAMGUI.py:1660
+msgid "Add Path"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:609 flatcamGUI/FlatCAMGUI.py:1662
+msgid "Add Polygon"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:611 flatcamGUI/FlatCAMGUI.py:1664
+msgid "Add Text"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:612 flatcamGUI/FlatCAMGUI.py:1666
+msgid "Add Buffer"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:613 flatcamGUI/FlatCAMGUI.py:1667
+msgid "Paint Shape"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:616 flatcamGUI/FlatCAMGUI.py:1670
+msgid "Polygon Union"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:618 flatcamGUI/FlatCAMGUI.py:1672
+msgid "Polygon Intersection"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:620 flatcamGUI/FlatCAMGUI.py:1674
+msgid "Polygon Subtraction"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:623 flatcamGUI/FlatCAMGUI.py:1677
+msgid "Cut Path"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:624
+msgid "Copy Shape(s)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:627
+msgid "Delete Shape '-'"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:629 flatcamGUI/FlatCAMGUI.py:1682
+msgid "Transformations"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:631
+msgid "Move Objects "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:637 flatcamGUI/FlatCAMGUI.py:1691
+msgid "Snap to grid"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:640 flatcamGUI/FlatCAMGUI.py:1694
+msgid "Grid X snapping distance"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:645 flatcamGUI/FlatCAMGUI.py:1699
+msgid "Grid Y snapping distance"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:651 flatcamGUI/FlatCAMGUI.py:1705
+msgid ""
+"When active, value on Grid_X\n"
+"is copied to the Grid_Y value."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:657 flatcamGUI/FlatCAMGUI.py:1711
+msgid "Snap to corner"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:661 flatcamGUI/FlatCAMGUI.py:1715
+#: flatcamGUI/FlatCAMGUI.py:2787
+msgid "Max. magnet distance"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:675 flatcamGUI/FlatCAMGUI.py:1364
+msgid "Project"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:684
+msgid "Selected"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:691
+msgid "Tool"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:703 flatcamGUI/FlatCAMGUI.py:711
+msgid "Plot Area"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:735
+msgid "General"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:744
+msgid "APP.  DEFAULTS"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:745
+msgid "PROJ. OPTIONS "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:756
+msgid "GERBER"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:765
+msgid "EXCELLON"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:774
+msgid "GEOMETRY"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:784
+msgid "CNC-JOB"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:793
+msgid "TOOLS"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:810
+msgid "Import Preferences"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:813
+msgid ""
+"Import a full set of FlatCAM settings from a file\n"
+"previously saved on HDD.\n"
+"\n"
+"FlatCAM automatically save a 'factory_defaults' file\n"
+"on the first start. Do not delete that file."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:820
+msgid "Export Preferences"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:823
+msgid ""
+"Export a full set of FlatCAM settings in a file\n"
+"that is saved on HDD."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:828
+msgid "Open Pref Folder"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:831
+msgid "Open the folder where FlatCAM save the preferences files."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:839
+msgid "Save Preferences"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:842
+msgid ""
+"Save the current settings in the 'current_defaults' file\n"
+"which is the file storing the working default preferences."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:868
+msgid ""
+"<b>General Shortcut list</b><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>F3</strong></"
+"td>\n"
+"                        <td width=\"194\"><span style=\"color:"
+"#006400\"><strong>&nbsp;SHOW SHORTCUT LIST</strong></span></td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>1</strong></td>\n"
+"                        <td>&nbsp;Switch to Project Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>2</strong></td>\n"
+"                        <td>&nbsp;Switch to Selected Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>3</strong></td>\n"
+"                        <td>&nbsp;Switch to Tool Tab</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Edit Object (if selected)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>G</strong></td>\n"
+"                        <td>&nbsp;Grid On/Off</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Coordinates</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>L</strong></td>\n"
+"                        <td>&nbsp;New Excellon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;New Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Set Origin</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Q</strong></td>\n"
+"                        <td>&nbsp;Change Units</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Open Properties Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Shell Toggle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a Tool (when in Geometry Selected Tab "
+"or in Tools NCC or Tools Paint)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>V</strong></td>\n"
+"                        <td>&nbsp;Zoom Fit</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip on X_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip on Y_axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;=&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom Out</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>&#39;-&#39;</strong></td>\n"
+"                        <td>&nbsp;Zoom In</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+A</strong></td>\n"
+"                        <td>&nbsp;Select All</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+E</strong></td>\n"
+"                        <td>&nbsp;Open Excellon File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+G</strong></td>\n"
+"                        <td>&nbsp;Open Gerber File</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+N</strong></td>\n"
+"                        <td>&nbsp;New Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+O</strong></td>\n"
+"                        <td>&nbsp;Open Project</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Project As</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Plot Area</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+C</strong></td>\n"
+"                        <td>&nbsp;Copy Obj_Name</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+E</strong></td>\n"
+"                        <td>&nbsp;Toggle Code Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+G</strong></td>\n"
+"                        <td>&nbsp;Toggle the axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+P</strong></td>\n"
+"                        <td>&nbsp;Open Preferences Window</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+R</strong></td>\n"
+"                        <td>&nbsp;Rotate by 90 degree CCW</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+S</strong></td>\n"
+"                        <td>&nbsp;Run a Script</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+W</strong></td>\n"
+"                        <td>&nbsp;Toggle the workspace</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+C</strong></td>\n"
+"                        <td>&nbsp;Calculators Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+D</strong></td>\n"
+"                        <td>&nbsp;2-Sided PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+K</strong></td>\n"
+"                        <td>&nbsp;Solder Paste Dispensing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+L</strong></td>\n"
+"                        <td>&nbsp;Film PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+N</strong></td>\n"
+"                        <td>&nbsp;Non-Copper Clearing Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+P</strong></td>\n"
+"                        <td>&nbsp;Paint Area Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Transformations Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+S</strong></td>\n"
+"                        <td>&nbsp;View File Source</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+U</strong></td>\n"
+"                        <td>&nbsp;Cutout PCB Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+1</strong></td>\n"
+"                        <td>&nbsp;Enable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+2</strong></td>\n"
+"                        <td>&nbsp;Disable all Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+3</strong></td>\n"
+"                        <td>&nbsp;Disable Non-selected Plots</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+F10</strong></td>\n"
+"                        <td>&nbsp;Toggle Full Screen</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F1</strong></td>\n"
+"                        <td>&nbsp;Open Online Manual</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>F4</strong></td>\n"
+"                        <td>&nbsp;Open Online Tutorials</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Object</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>'`'</strong></td>\n"
+"                        <td>&nbsp;(left to Key_1)Toogle Notebook Area (Left "
+"Side)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SPACE</strong></td>\n"
+"                        <td>&nbsp;En(Dis)able Obj Plot</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Escape</strong></td>\n"
+"                        <td>&nbsp;Deselects all objects</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"    \n"
+"            "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1145
+msgid ""
+"<b>Editor Shortcut list</b><br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#0000ff\">GEOMETRY EDITOR</span></"
+"strong><br>\n"
+"    \n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Draw an Arc</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>B</strong></td>\n"
+"                        <td>&nbsp;Buffer Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>E</strong></td>\n"
+"                        <td>&nbsp;Polygon Intersection Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>I</strong></td>\n"
+"                        <td>&nbsp;Paint Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>K</strong></td>\n"
+"                        <td>&nbsp;Toggle Corner Snap</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Geo Item</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>N</strong></td>\n"
+"                        <td>&nbsp;Draw a Polygon</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>O</strong></td>\n"
+"                        <td>&nbsp;Draw a Circle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>P</strong></td>\n"
+"                        <td>&nbsp;Draw a Path</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Draw Rectangle</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>S</strong></td>\n"
+"                        <td>&nbsp;Polygon Substraction Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add Text Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>U</strong></td>\n"
+"                        <td>&nbsp;Polygon Union Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>X</strong></td>\n"
+"                        <td>&nbsp;Flip shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Y</strong></td>\n"
+"                        <td>&nbsp;Flip shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+X</strong></td>\n"
+"                        <td>&nbsp;Skew shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>SHIFT+Y</strong></td>\n"
+"                        <td>&nbsp;Skew shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+R</strong></td>\n"
+"                        <td>&nbsp;Editor Transformation Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+X</strong></td>\n"
+"                        <td>&nbsp;Offset shape on X axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ALT+Y</strong></td>\n"
+"                        <td>&nbsp;Offset shape on Y axis</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+M</strong></td>\n"
+"                        <td>&nbsp;Measurement Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+X</strong></td>\n"
+"                        <td>&nbsp;Polygon Cut Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Space</strong></td>\n"
+"                        <td>&nbsp;Rotate Geometry</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ENTER</strong></td>\n"
+"                        <td>&nbsp;Finish drawing for certain tools</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Shape</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"            <br>\n"
+"            <br>\n"
+"            <strong><span style=\"color:#ff0000\">EXCELLON EDITOR</span></"
+"strong><br>\n"
+"            <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style="
+"\"width:283px\">\n"
+"                <tbody>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\" width=\"89\"><strong>A</strong></"
+"td>\n"
+"                        <td width=\"194\">&nbsp;Add Drill Array</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>C</strong></td>\n"
+"                        <td>&nbsp;Copy Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>D</strong></td>\n"
+"                        <td>&nbsp;Add Drill</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>J</strong></td>\n"
+"                        <td>&nbsp;Jump to Location (x, y)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>M</strong></td>\n"
+"                        <td>&nbsp;Move Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>R</strong></td>\n"
+"                        <td>&nbsp;Resize Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>T</strong></td>\n"
+"                        <td>&nbsp;Add a new Tool</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Delete Drill(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>Del</strong></td>\n"
+"                        <td>&nbsp;Alternate: Delete Tool(s)</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\">&nbsp;</td>\n"
+"                        <td>&nbsp;</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>ESC</strong></td>\n"
+"                        <td>&nbsp;Abort and return to Select</td>\n"
+"                    </tr>\n"
+"                    <tr height=\"20\">\n"
+"                        <td height=\"20\"><strong>CTRL+S</strong></td>\n"
+"                        <td>&nbsp;Save Object and Exit Editor</td>\n"
+"                    </tr>\n"
+"                </tbody>\n"
+"            </table>\n"
+"                    "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1358
+msgid "Disable"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1360
+msgid "New"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1361
+msgid "Geometry"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1362
+msgid "Excellon"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1367
+msgid "Grids"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1369
+msgid "View"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1371
+msgid "Clear Plot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1372
+msgid "Replot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1375
+msgid "Geo Editor"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1376
+msgid "Line"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1377
+msgid "Rectangle"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1378 flatcamGUI/FlatCAMGUI.py:4590
+#: flatcamGUI/ObjectUI.py:1431
+msgid "Cut"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1380 flatcamGUI/FlatCAMGUI.py:1395
+#: flatcamTools/ToolMove.py:26
+msgid "Move"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1382
+msgid "Exc Editor"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1383
+msgid "Add Drill"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1385
+msgid "Copy Drill(s)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1391
+msgid "Save && Close Edit"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1416
+msgid "Print Preview"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1417
+msgid "Print Code"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1418
+msgid "Find in Code"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1423
+msgid "Replace With"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1427 flatcamGUI/FlatCAMGUI.py:4588
+#: flatcamGUI/FlatCAMGUI.py:5089 flatcamGUI/ObjectUI.py:1429
+msgid "All"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1429
+msgid ""
+"When checked it will replace all instances in the 'Find' box\n"
+"with the text in the 'Replace' box.."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1432
+msgid "Open Code"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1433
+msgid "Save Code"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1468
+msgid ""
+"Relative neasurement.\n"
+"Reference is last click position"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1474
+msgid ""
+"Absolute neasurement.\n"
+"Reference is (X=0, Y= 0) position"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1641
+msgid "Add Drill Hole Array"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1653
+msgid "Select 'Esc'"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1678
+msgid "Copy Objects"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1680
+msgid "Delete Shape"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:1685
+msgid "Move Objects"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2060
+msgid ""
+"Please first select a geometry item to be cutted\n"
+"then select the geometry item that will be cutted\n"
+"out of the first item. In the end press ~X~ key or\n"
+"the toolbar button."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2067 flatcamGUI/FlatCAMGUI.py:2199
+#: flatcamGUI/FlatCAMGUI.py:2258 flatcamGUI/FlatCAMGUI.py:2278
+msgid "Warning"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2134 flatcamGUI/FlatCAMGUI.py:2328
+msgid "[WARNING_NOTCL]Cancelled."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2194
+msgid ""
+"Please select geometry items \n"
+"on which to perform Intersection Tool."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2253
+msgid ""
+"Please select geometry items \n"
+"on which to perform Substraction Tool."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2273
+msgid ""
+"Please select geometry items \n"
+"on which to perform union."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2345
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to delete."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2412
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to copy."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2458
+msgid "[WARNING_NOTCL]Cancelled. Nothing selected to move."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2472
+msgid "New Tool ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2473
+msgid "Enter a Tool Diameter:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2772
+msgid "Grid X value:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2774
+msgid "This is the Grid snap value on X axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2779
+msgid "Grid Y value:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2781
+msgid "This is the Grid snap value on Y axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2786
+msgid "Snap Max:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2791
+msgid "Workspace:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2793
+msgid ""
+"Draw a delimiting rectangle on canvas.\n"
+"The purpose is to illustrate the limits for our work."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2796
+msgid "Wk. format:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2798
+msgid ""
+"Select the type of rectangle to be used on canvas,\n"
+"as valid workspace."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2811
+msgid "Plot Fill:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2813
+msgid ""
+"Set the fill color for plotted objects.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2827 flatcamGUI/FlatCAMGUI.py:2877
+#: flatcamGUI/FlatCAMGUI.py:2927
+msgid "Alpha Level:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2829
+msgid "Set the fill transparency for plotted objects."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2846
+msgid "Plot Line:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2848
+msgid "Set the line color for plotted objects."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2860
+msgid "Sel. Fill:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2862
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from left to right.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2879
+msgid "Set the fill transparency for the 'left to right' selection box."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2896
+msgid "Sel. Line:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2898
+msgid "Set the line color for the 'left to right' selection box."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2910
+msgid "Sel2. Fill:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2912
+msgid ""
+"Set the fill color for the selection box\n"
+"in case that the selection is done from right to left.\n"
+"First 6 digits are the color and the last 2\n"
+"digits are for alpha (transparency) level."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2929
+msgid "Set the fill transparency for selection 'right to left' box."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2946
+msgid "Sel2. Line:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2948
+msgid "Set the line color for the 'right to left' selection box."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2960
+msgid "Editor Draw:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2962
+msgid "Set the color for the shape."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2974
+msgid "Editor Draw Sel.:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:2976
+msgid "Set the color of the shape when selected."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3023
+msgid "GUI Settings"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3030
+msgid "Layout:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3032
+msgid ""
+"Select an layout for FlatCAM.\n"
+"It is applied immediately."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3048
+msgid "Style:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3050
+msgid ""
+"Select an style for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3061
+msgid "HDPI Support:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3063
+msgid ""
+"Enable High DPI support for FlatCAM.\n"
+"It will be applied at the next app start."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3076
+msgid "Clear GUI Settings:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3078
+msgid ""
+"Clear the GUI settings for FlatCAM,\n"
+"such as: layout, gui state, style, hdpi support etc."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3081
+msgid "Clear"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3085
+msgid "Hover Shape:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3087
+msgid ""
+"Enable display of a hover shape for FlatCAM objects.\n"
+"It is displayed whenever the mouse cursor is hovering\n"
+"over any kind of not-selected object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3128
+msgid "Are you sure you want to delete the GUI Settings? \n"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3131
+msgid "Clear GUI Settings"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3144
+msgid "[success] GUI settings deleted ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3151
+msgid "App Preferences"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3157
+msgid "<b>Units:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3158
+msgid ""
+"The default value for FlatCAM units.\n"
+"Whatever is selected here is set every time\n"
+"FLatCAM is started."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3165
+msgid "<b>APP. LEVEL:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3166
+msgid ""
+"Choose the default level of usage for FlatCAM.\n"
+"BASIC level -> reduced functionality, best for beginner's.\n"
+"ADVANCED level -> full functionality.\n"
+"\n"
+"The choice here will influence the parameters in\n"
+"the Selected Tab for all kinds of FlatCAM objects."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3171 flatcamGUI/FlatCAMGUI.py:3775
+msgid "Basic"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3172
+msgid "Advanced"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3175
+msgid "<b>Languages:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3176
+msgid "Set the language used throughout FlatCAM."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3179
+msgid "Apply Language"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3182
+msgid "Shell at StartUp:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3184 flatcamGUI/FlatCAMGUI.py:3189
+msgid ""
+"Check this box if you want the shell to\n"
+"start automatically at startup."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3194
+msgid "Version Check:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3196 flatcamGUI/FlatCAMGUI.py:3201
+msgid ""
+"Check this box if you want to check\n"
+"for a new version automatically at startup."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3206
+msgid "Send Stats:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3208 flatcamGUI/FlatCAMGUI.py:3213
+msgid ""
+"Check this box if you agree to send anonymous\n"
+"stats automatically at startup, to help improve FlatCAM."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3220
+msgid "<b>Pan Button:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3221
+msgid ""
+"Select the mouse button to use for panning:\n"
+"- MMB --> Middle Mouse Button\n"
+"- RMB --> Right Mouse Button"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3224
+msgid "MMB"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3225
+msgid "RMB"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3228
+msgid "<b>Multiple Sel:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3229
+msgid "Select the key used for multiple selection."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3230
+msgid "CTRL"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3231
+msgid "SHIFT"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3234
+msgid "Project at StartUp:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3236 flatcamGUI/FlatCAMGUI.py:3241
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"to be shown automatically at startup."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3246
+msgid "Project AutoHide:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3248 flatcamGUI/FlatCAMGUI.py:3254
+msgid ""
+"Check this box if you want the project/selected/tool tab area to\n"
+"hide automatically when there are no objects loaded and\n"
+"to show whenever a new object is created."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3260
+msgid "<b>Enable ToolTips:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3262 flatcamGUI/FlatCAMGUI.py:3267
+msgid ""
+"Check this box if you want to have toolTips displayed\n"
+"when hovering with mouse over items throughout the App."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3301
+msgid "Save Compressed Project"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3303
+msgid ""
+"Whether to save a compressed or uncompressed project.\n"
+"When checked it will save a compressed FlatCAM project."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3314
+msgid "Compression Level:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3316
+msgid ""
+"The level of compression used when saving\n"
+"a FlatCAM project. Higher value means better compression\n"
+"but require more RAM usage and more processing time."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3342 flatcamGUI/FlatCAMGUI.py:3583
+#: flatcamGUI/FlatCAMGUI.py:4238 flatcamGUI/FlatCAMGUI.py:4562
+#: flatcamGUI/ObjectUI.py:150 flatcamGUI/ObjectUI.py:576
+#: flatcamGUI/ObjectUI.py:901 flatcamGUI/ObjectUI.py:1415
+msgid "<b>Plot Options:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3349 flatcamGUI/FlatCAMGUI.py:3595
+#: flatcamGUI/ObjectUI.py:577
+msgid "Solid"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3351 flatcamGUI/ObjectUI.py:158
+msgid "Solid color polygons."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3356
+msgid "M-Color"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3358 flatcamGUI/ObjectUI.py:166
+msgid "Draw polygons in different colors."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3363 flatcamGUI/FlatCAMGUI.py:3589
+#: flatcamGUI/FlatCAMGUI.py:4242 flatcamGUI/ObjectUI.py:172
+msgid "Plot"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3365 flatcamGUI/FlatCAMGUI.py:4244
+#: flatcamGUI/ObjectUI.py:174 flatcamGUI/ObjectUI.py:617
+#: flatcamGUI/ObjectUI.py:947 flatcamGUI/ObjectUI.py:1502
+msgid "Plot (show) this object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3370 flatcamGUI/FlatCAMGUI.py:4251
+#: flatcamGUI/FlatCAMGUI.py:4598
+msgid "Circle Steps:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3372
+msgid ""
+"The number of circle steps for Gerber \n"
+"circular aperture linear approximation."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3387
+msgid "Gerber Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3391 flatcamGUI/ObjectUI.py:322
+msgid "<b>Isolation Routing:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3393 flatcamGUI/ObjectUI.py:324
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut outside polygons."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3404 flatcamGUI/FlatCAMGUI.py:3961
+#: flatcamGUI/FlatCAMGUI.py:4886 flatcamGUI/ObjectUI.py:856
+#: flatcamGUI/ObjectUI.py:872
+msgid "Diameter of the cutting tool."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3411
+msgid "Width (# passes):"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3413 flatcamGUI/ObjectUI.py:346
+msgid ""
+"Width of the isolation gap in\n"
+"number (integer) of tool widths."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3421 flatcamGUI/ObjectUI.py:354
+msgid "Pass overlap:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3423 flatcamGUI/ObjectUI.py:356
+#, python-format
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means an overlap of 25%% from the tool diameter found "
+"above."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3431 flatcamGUI/ObjectUI.py:366
+msgid "Milling Type:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3433 flatcamGUI/ObjectUI.py:368
+msgid ""
+"Milling type:\n"
+"- climb / best for precision milling and to reduce tool usage\n"
+"- conventional / useful when there is no backlash compensation"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3438 flatcamGUI/ObjectUI.py:373
+msgid "Climb"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3439 flatcamGUI/ObjectUI.py:374
+msgid "Conv."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3443
+msgid "Combine Passes"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3445 flatcamGUI/ObjectUI.py:380
+msgid "Combine all passes into one object"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3450
+msgid "<b>Clear non-copper:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3452 flatcamGUI/FlatCAMGUI.py:4774
+#: flatcamGUI/ObjectUI.py:457
+msgid ""
+"Create a Geometry object with\n"
+"toolpaths to cut all non-copper regions."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3461 flatcamGUI/FlatCAMGUI.py:3487
+#: flatcamGUI/ObjectUI.py:501 flatcamGUI/ObjectUI.py:535
+msgid "Boundary Margin:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3463 flatcamGUI/ObjectUI.py:503
+msgid ""
+"Specify the edge of the PCB\n"
+"by drawing a box around all\n"
+"objects with this minimum\n"
+"distance."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3473 flatcamGUI/FlatCAMGUI.py:3496
+msgid "Rounded corners"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3475
+msgid ""
+"Creates a Geometry objects with polygons\n"
+"covering the copper-free areas of the PCB."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3481 flatcamGUI/ObjectUI.py:525
+msgid "<b>Bounding Box:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3489 flatcamGUI/ObjectUI.py:537
+msgid ""
+"Distance of the edges of the box\n"
+"to the nearest polygon."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3498 flatcamGUI/ObjectUI.py:547
+msgid ""
+"If the bounding box is \n"
+"to have rounded corners\n"
+"their radius is equal to\n"
+"the margin."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3512
+msgid "Gerber Adv. Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3516
+msgid "<b>Advanced Param.:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3518
+msgid ""
+"A list of Gerber advanced parameters.\n"
+"Those parameters are available only for\n"
+"Advanced App. Level."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3528 flatcamGUI/ObjectUI.py:385
+msgid "\"Follow\""
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3530 flatcamGUI/ObjectUI.py:387
+msgid ""
+"Generate a 'Follow' geometry.\n"
+"This means that it will cut through\n"
+"the middle of the trace."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3538
+msgid "Table Show/Hide"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3540
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"Also, on hide, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3548
+msgid "Ap. Scale Factor:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3550 flatcamGUI/ObjectUI.py:254
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3560
+msgid "Ap. Buffer Factor:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3562 flatcamGUI/ObjectUI.py:275
+msgid ""
+"Change the size of the selected apertures.\n"
+"Factor by which to expand/shrink\n"
+"geometric features of this object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3580
+msgid "Excellon General"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3602
+msgid "<b>Excellon Format:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3604
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period.\n"
+"\n"
+"Possible presets:\n"
+"\n"
+"PROTEUS 3:3 MM LZ\n"
+"DipTrace 5:2 MM TZ\n"
+"DipTrace 4:3 MM LZ\n"
+"\n"
+"EAGLE 3:3 MM TZ\n"
+"EAGLE 4:3 MM TZ\n"
+"EAGLE 2:5 INCH TZ\n"
+"EAGLE 3:5 INCH TZ\n"
+"\n"
+"ALTIUM 2:4 INCH LZ\n"
+"Sprint Layout 2:4 INCH LZ\n"
+"KiCAD 3:5 INCH TZ"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3629
+msgid "INCH:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3632
+msgid "Default values for INCH are 2:4"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3640 flatcamGUI/FlatCAMGUI.py:3673
+#: flatcamGUI/FlatCAMGUI.py:4150
+msgid ""
+"This numbers signify the number of digits in\n"
+"the whole part of Excellon coordinates."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3654 flatcamGUI/FlatCAMGUI.py:3687
+#: flatcamGUI/FlatCAMGUI.py:4164
+msgid ""
+"This numbers signify the number of digits in\n"
+"the decimal part of Excellon coordinates."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3662
+msgid "METRIC:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3665
+msgid "Default values for METRIC are 3:3"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3696
+msgid "Default <b>Zeros</b>:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3699 flatcamGUI/FlatCAMGUI.py:4199
+msgid ""
+"This sets the type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3707 flatcamGUI/FlatCAMGUI.py:4206
+msgid "LZ"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3708 flatcamGUI/FlatCAMGUI.py:4207
+msgid "TZ"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3710
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3724
+msgid "Default <b>Units</b>:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3727
+msgid ""
+"This sets the default units of Excellon files.\n"
+"If it is not detected in the parsed file the value here\n"
+"will be used.Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3735 flatcamGUI/FlatCAMGUI.py:4126
+msgid "INCH"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3736 flatcamGUI/FlatCAMGUI.py:4127
+msgid "MM"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3738
+msgid ""
+"This sets the units of Excellon files.\n"
+"Some Excellon files don't have an header\n"
+"therefore this parameter will be used."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3754
+msgid "<b>Excellon Optimization:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3761
+msgid "Algorithm:   "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3764 flatcamGUI/FlatCAMGUI.py:3777
+msgid ""
+"This sets the optimization type for the Excellon drill path.\n"
+"If MH is checked then Google OR-Tools algorithm with MetaHeuristic\n"
+"Guided Local Path is used. Default search time is 3sec.\n"
+"Use set_sys excellon_search_time value Tcl Command to set other values.\n"
+"If Basic is checked then Google OR-Tools Basic algorithm is used.\n"
+"\n"
+"If DISABLED, then FlatCAM works in 32bit mode and it uses \n"
+"Travelling Salesman algorithm for path optimization."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3774
+msgid "MH"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3789
+msgid "Optimization Time:   "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3792
+msgid ""
+"When OR-Tools Metaheuristic (MH) is enabled there is a\n"
+"maximum threshold for how much time is spent doing the\n"
+"path optimization. This max duration is set here.\n"
+"In seconds."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3833
+msgid "Excellon Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3836 flatcamGUI/ObjectUI.py:655
+msgid "<b>Create CNC Job</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3838
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3846 flatcamGUI/FlatCAMGUI.py:4302
+#: flatcamGUI/FlatCAMGUI.py:5301 flatcamGUI/ObjectUI.py:666
+#: flatcamGUI/ObjectUI.py:1130 flatcamTools/ToolCalculators.py:108
+msgid "Cut Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3848 flatcamGUI/ObjectUI.py:668
+msgid ""
+"Drill depth (negative)\n"
+"below the copper surface."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3855 flatcamGUI/FlatCAMGUI.py:4335
+#: flatcamGUI/ObjectUI.py:676 flatcamGUI/ObjectUI.py:1166
+msgid "Travel Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3857 flatcamGUI/ObjectUI.py:678
+msgid ""
+"Tool height when travelling\n"
+"across the XY plane."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3865 flatcamGUI/FlatCAMGUI.py:4345
+msgid "Tool change:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3867 flatcamGUI/FlatCAMGUI.py:4347
+#: flatcamGUI/ObjectUI.py:688
+msgid ""
+"Include tool-change sequence\n"
+"in G-Code (Pause for tool change)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3874 flatcamGUI/FlatCAMGUI.py:4355
+msgid "Toolchange Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3876 flatcamGUI/FlatCAMGUI.py:4357
+msgid "Toolchange Z position."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3882
+msgid "Feedrate:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3884
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3892
+msgid "Spindle Speed:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3894 flatcamGUI/FlatCAMGUI.py:4387
+#: flatcamGUI/ObjectUI.py:752
+msgid ""
+"Speed of the spindle\n"
+"in RPM (optional)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3902 flatcamGUI/FlatCAMGUI.py:4395
+#: flatcamGUI/ObjectUI.py:760 flatcamGUI/ObjectUI.py:1289
+msgid "Dwell:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3904 flatcamGUI/FlatCAMGUI.py:4397
+#: flatcamGUI/ObjectUI.py:762 flatcamGUI/ObjectUI.py:1292
+msgid ""
+"Pause to allow the spindle to reach its\n"
+"speed before cutting."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3907 flatcamGUI/FlatCAMGUI.py:4400
+msgid "Duration:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3909 flatcamGUI/FlatCAMGUI.py:4402
+#: flatcamGUI/ObjectUI.py:767 flatcamGUI/ObjectUI.py:1299
+msgid "Number of milliseconds for spindle to dwell."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3921 flatcamGUI/FlatCAMGUI.py:4412
+#: flatcamGUI/ObjectUI.py:775
+msgid "Postprocessor:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3923
+msgid ""
+"The postprocessor file that dictates\n"
+"gcode output."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3933
+msgid "<b>Gcode:    </b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3935
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to drills."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3940 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:823
+msgid "Drills"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3941 flatcamGUI/ObjectUI.py:627
+#: flatcamGUI/ObjectUI.py:824
+msgid "Slots"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3942 flatcamGUI/ObjectUI.py:825
+msgid "Both"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3951 flatcamGUI/ObjectUI.py:840
+msgid "<b>Mill Holes</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3953 flatcamGUI/ObjectUI.py:842
+msgid "Create Geometry for milling holes."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3959
+msgid "Drill Tool dia:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3966
+msgid "Slot Tool dia:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3968
+msgid ""
+"Diameter of the cutting tool\n"
+"when milling slots."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3980
+msgid "Defaults"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3993
+msgid "Excellon Adv. Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:3999 flatcamGUI/FlatCAMGUI.py:4435
+msgid "<b>Advanced Options:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4001
+msgid ""
+"Parameters used to create a CNC Job object\n"
+"for this drill object that are shown when App Level is Advanced."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4009
+msgid "Offset Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4011 flatcamGUI/ObjectUI.py:645
+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"
+"The value here can compensate the Cut Z parameter."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4018 flatcamGUI/FlatCAMGUI.py:4446
+msgid "Toolchange X,Y:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4020 flatcamGUI/FlatCAMGUI.py:4448
+msgid "Toolchange X,Y position."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4026 flatcamGUI/FlatCAMGUI.py:4455
+#: flatcamGUI/ObjectUI.py:705
+msgid "Start move Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4028
+msgid ""
+"Height of the tool just after start.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4035 flatcamGUI/FlatCAMGUI.py:4465
+#: flatcamGUI/ObjectUI.py:715 flatcamGUI/ObjectUI.py:1212
+msgid "End move Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4037 flatcamGUI/FlatCAMGUI.py:4467
+msgid ""
+"Height of the tool after\n"
+"the last move at the end of the job."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4044 flatcamGUI/FlatCAMGUI.py:4475
+#: flatcamGUI/ObjectUI.py:736
+msgid "Feedrate Rapids:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4046 flatcamGUI/ObjectUI.py:738
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4057 flatcamGUI/FlatCAMGUI.py:4499
+#: flatcamGUI/ObjectUI.py:786 flatcamGUI/ObjectUI.py:1321
+msgid "Probe Z depth:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4059 flatcamGUI/FlatCAMGUI.py:4501
+#: flatcamGUI/ObjectUI.py:788 flatcamGUI/ObjectUI.py:1324
+msgid ""
+"The maximum depth that the probe is allowed\n"
+"to probe. Negative value, in current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4067 flatcamGUI/FlatCAMGUI.py:4509
+#: flatcamGUI/ObjectUI.py:798 flatcamGUI/ObjectUI.py:1335
+msgid "Feedrate Probe:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4069 flatcamGUI/FlatCAMGUI.py:4511
+#: flatcamGUI/ObjectUI.py:800 flatcamGUI/ObjectUI.py:1338
+msgid "The feedrate used while the probe is probing."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4075 flatcamGUI/FlatCAMGUI.py:4518
+msgid "Fast Plunge:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4077 flatcamGUI/FlatCAMGUI.py:4520
+msgid ""
+"By checking this, the vertical move from\n"
+"Z_Toolchange to Z_move is done with G0,\n"
+"meaning the fastest speed available.\n"
+"WARNING: the move is done at Toolchange X,Y coords."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4086
+msgid "Fast Retract:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4088
+msgid ""
+"Exit hole strategy.\n"
+" - When uncheked, while exiting the drilled hole the drill bit\n"
+"will travel slow, with set feedrate (G1), up to zero depth and then\n"
+"travel as fast as possible (G0) to the Z Move (travel height).\n"
+" - When checked the travel from Z cut (cut depth) to Z_move\n"
+"(travel height) is done as fast as possible (G0) in one move."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4107
+msgid "Excellon Export"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4110
+msgid "<b>Export Options:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4112
+msgid ""
+"The parameters set here are used in the file exported\n"
+"when using the File -> Export -> Export Excellon menu entry."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4121
+msgid "<b>Units</b>:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4123 flatcamGUI/FlatCAMGUI.py:4129
+msgid "The units used in the Excellon file."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4135
+msgid "<b>Int/Decimals:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4137
+msgid ""
+"The NC drill files, usually named Excellon files\n"
+"are files that can be found in different formats.\n"
+"Here we set the format used when the provided\n"
+"coordinates are not using period."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4173
+msgid "<b>Format:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4175 flatcamGUI/FlatCAMGUI.py:4185
+msgid ""
+"Select the kind of coordinates format used.\n"
+"Coordinates can be saved with decimal point or without.\n"
+"When there is no decimal point, it is required to specify\n"
+"the number of digits for integer part and the number of decimals.\n"
+"Also it will have to be specified if LZ = leading zeros are kept\n"
+"or TZ = trailing zeros are kept."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4182
+msgid "Decimal"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4183
+msgid "No-Decimal"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4196
+msgid "<b>Zeros</b>:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4209
+msgid ""
+"This sets the default type of Excellon zeros.\n"
+"If LZ then Leading Zeros are kept and\n"
+"Trailing Zeros are removed.\n"
+"If TZ is checked then Trailing Zeros are kept\n"
+"and Leading Zeros are removed."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4235
+msgid "Geometry General"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4253
+msgid ""
+"The number of circle steps for <b>Geometry</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4261
+msgid "<b>Tools</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4268
+msgid "Tool dia:                   "
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4270
+msgid ""
+"The diameter of the cutting\n"
+"tool.."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4285
+msgid "Geometry Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4290
+msgid "<b>Create CNC Job:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4292
+msgid ""
+"Create a CNC Job object\n"
+"tracing the contours of this\n"
+"Geometry object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4304 flatcamGUI/ObjectUI.py:1133
+msgid ""
+"Cutting depth (negative)\n"
+"below the copper surface."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4312
+msgid "Multidepth"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4314
+msgid "Multidepth usage: True or False."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4319
+msgid "Depth/Pass:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4321
+msgid ""
+"The depth to cut on each pass,\n"
+"when multidepth is enabled.\n"
+"It has positive value although\n"
+"it is a fraction from the depth\n"
+"which has negative value."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4337 flatcamGUI/ObjectUI.py:1169
+msgid ""
+"Height of the tool when\n"
+"moving without cutting."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4364 flatcamGUI/ObjectUI.py:1224
+msgid "Feed Rate X-Y:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4366 flatcamGUI/ObjectUI.py:1227
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4374
+msgid "Feed Rate Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4376
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute.\n"
+"It is called also Plunge."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4385 flatcamGUI/ObjectUI.py:750
+#: flatcamGUI/ObjectUI.py:1276
+msgid "Spindle speed:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4414
+msgid ""
+"The postprocessor file that dictates\n"
+"Machine Code output."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4430
+msgid "Geometry Adv. Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4437
+msgid ""
+"Parameters to create a CNC Job object\n"
+"tracing the contours of a Geometry object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4457
+msgid ""
+"Height of the tool just after starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4477
+msgid ""
+"Cutting speed in the XY plane\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4489
+msgid "Re-cut 1st pt."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4491 flatcamGUI/ObjectUI.py:1267
+msgid ""
+"In order to remove possible\n"
+"copper leftovers where first cut\n"
+"meet with last cut, we generate an\n"
+"extended cut over the first cut section."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4530
+msgid "Seg. X size:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4532
+msgid ""
+"The size of the trace segment on the X axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the X axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4541
+msgid "Seg. Y size:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4543
+msgid ""
+"The size of the trace segment on the Y axis.\n"
+"Useful for auto-leveling.\n"
+"A value of 0 means no segmentation on the Y axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4559
+msgid "CNC Job General"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4572 flatcamGUI/ObjectUI.py:615
+#: flatcamGUI/ObjectUI.py:945 flatcamGUI/ObjectUI.py:1499
+msgid "Plot Object"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4579
+msgid "Plot kind:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4581 flatcamGUI/ObjectUI.py:1421
+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"
+"above the work piece or it can be of type 'Cut',\n"
+"which means the moves that cut into the material."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4589 flatcamGUI/ObjectUI.py:1430
+msgid "Travel"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4600
+msgid ""
+"The number of circle steps for <b>GCode</b> \n"
+"circle and arc shapes linear approximation."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4610
+msgid ""
+"Diameter of the tool to be\n"
+"rendered in the plot."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4618
+msgid "Coords dec.:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4620
+msgid ""
+"The number of decimals to be used for \n"
+"the X, Y, Z coordinates in CNC code (GCODE, etc.)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4628
+msgid "Feedrate dec.:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4630
+msgid ""
+"The number of decimals to be used for \n"
+"the Feedrate parameter in CNC code (GCODE, etc.)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4645
+msgid "CNC Job Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4648 flatcamGUI/FlatCAMGUI.py:4689
+msgid "<b>Export G-Code:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4650 flatcamGUI/FlatCAMGUI.py:4691
+#: flatcamGUI/ObjectUI.py:1535
+msgid ""
+"Export and save G-Code to\n"
+"make this object to a file."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4656
+msgid "Prepend to G-Code:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4658
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add at the beginning of the G-Code file."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4667
+msgid "Append to G-Code:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4669 flatcamGUI/ObjectUI.py:1557
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to append to the generated file.\n"
+"I.e.: M2 (End of program)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4686
+msgid "CNC Job Adv. Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4697 flatcamGUI/ObjectUI.py:1575
+msgid "Toolchange G-Code:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4699
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4713 flatcamGUI/ObjectUI.py:1597
+msgid "Use Toolchange Macro"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4715 flatcamGUI/ObjectUI.py:1600
+msgid ""
+"Check this box if you want to use\n"
+"a Custom Toolchange GCode (macro)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4727 flatcamGUI/ObjectUI.py:1616
+msgid ""
+"A list of the FlatCAM variables that can be used\n"
+"in the Toolchange event.\n"
+"They have to be surrounded by the '%' symbol"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4734 flatcamGUI/ObjectUI.py:1624
+msgid "Parameters"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4737 flatcamGUI/ObjectUI.py:1627
+msgid "FlatCAM CNC parameters"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4738 flatcamGUI/ObjectUI.py:1628
+msgid "tool = tool number"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4739 flatcamGUI/ObjectUI.py:1629
+msgid "tooldia = tool diameter"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4740 flatcamGUI/ObjectUI.py:1630
+msgid "t_drills = for Excellon, total number of drills"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4741 flatcamGUI/ObjectUI.py:1631
+msgid "x_toolchange = X coord for Toolchange"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4742 flatcamGUI/ObjectUI.py:1632
+msgid "y_toolchange = Y coord for Toolchange"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4743 flatcamGUI/ObjectUI.py:1633
+msgid "z_toolchange = Z coord for Toolchange"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4744
+msgid "z_cut = Z depth for the cut"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4745
+msgid "z_move = Z height for travel"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4746 flatcamGUI/ObjectUI.py:1636
+msgid "z_depthpercut = the step value for multidepth cut"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4747 flatcamGUI/ObjectUI.py:1637
+msgid "spindlesspeed = the value for the spindle speed"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4748 flatcamGUI/ObjectUI.py:1638
+msgid "dwelltime = time to dwell to allow the spindle to reach it's set RPM"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4769
+msgid "NCC Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4772 flatcamGUI/FlatCAMGUI.py:4873
+#: flatcamGUI/FlatCAMGUI.py:4943 flatcamGUI/FlatCAMGUI.py:5002
+#: flatcamGUI/FlatCAMGUI.py:5105 flatcamGUI/FlatCAMGUI.py:5166
+#: flatcamGUI/FlatCAMGUI.py:5365 flatcamGUI/FlatCAMGUI.py:5492
+msgid "<b>Parameters:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4782 flatcamGUI/FlatCAMGUI.py:5503
+msgid "Tools dia:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4784
+msgid "Diameters of the cutting tools, separated by ','"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4792 flatcamTools/ToolNonCopperClear.py:166
+#, python-format
+#| msgid ""
+#| "How much (fraction) of the tool width to overlap each tool pass.\n"
+#| "Example:\n"
+#| "A value here of 0.25 means 25\\% from the tool diameter found above.\n"
+#| "\n"
+#| "Adjust the value starting with lower values\n"
+#| "and increasing it if areas that should be cleared are still \n"
+#| "not cleared.\n"
+#| "Lower values = faster processing, faster execution on PCB.\n"
+#| "Higher values = slow processing and slow execution on CNC\n"
+#| "due of too many paths."
+msgid ""
+"How much (fraction) of the tool width to overlap each tool pass.\n"
+"Example:\n"
+"A value here of 0.25 means 25% from the tool diameter found above.\n"
+"\n"
+"Adjust the value starting with lower values\n"
+"and increasing it if areas that should be cleared are still \n"
+"not cleared.\n"
+"Lower values = faster processing, faster execution on PCB.\n"
+"Higher values = slow processing and slow execution on CNC\n"
+"due of too many paths."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4808 flatcamTools/ToolNonCopperClear.py:182
+msgid "Bounding box margin."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4817 flatcamTools/ToolNonCopperClear.py:191
+#: flatcamTools/ToolPaint.py:190
+msgid ""
+"Algorithm for non-copper clearing:<BR><B>Standard</B>: Fixed step inwards."
+"<BR><B>Seed-based</B>: Outwards from seed.<BR><B>Line-based</B>: Parallel "
+"lines."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4849 flatcamTools/ToolNonCopperClear.py:223
+#: flatcamTools/ToolPaint.py:222
+msgid "Rest M.:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4851
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4870
+msgid "Cutout Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4875 flatcamGUI/ObjectUI.py:473
+msgid ""
+"Create toolpaths to cut around\n"
+"the PCB and separate it from\n"
+"the original board."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4894
+msgid ""
+"Distance from objects at which\n"
+"to draw the cutout."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4901 flatcamTools/ToolCutOut.py:96
+msgid "Gap size:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4903
+msgid ""
+"Size of the gaps in the toolpath\n"
+"that will remain to hold the\n"
+"board in place."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4911 flatcamTools/ToolCutOut.py:125
+msgid "Gaps:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4913
+msgid ""
+"Number of bridge gaps used for the cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4940
+msgid "2Sided Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4945
+msgid ""
+"A tool to help in creating a double sided\n"
+"PCB using alignment holes."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4955 flatcamTools/ToolDblSided.py:235
+msgid "Drill diam.:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4957 flatcamTools/ToolDblSided.py:226
+#: flatcamTools/ToolDblSided.py:237
+msgid "Diameter of the drill for the alignment holes."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4964
+msgid "X"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4965
+msgid "Y"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4966 flatcamTools/ToolDblSided.py:120
+msgid "Mirror Axis:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4968 flatcamTools/ToolDblSided.py:122
+msgid "Mirror vertically (X) or horizontally (Y)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4977
+msgid "Point"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4978
+msgid "Box"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4979 flatcamTools/ToolDblSided.py:133
+msgid "Axis Ref:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4981
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a Geometry object) in \n"
+"the middle."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:4997
+msgid "Paint Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5004 flatcamGUI/ObjectUI.py:1370
+msgid ""
+"Creates tool paths to cover the\n"
+"whole area of a polygon (remove\n"
+"all copper). You will be asked\n"
+"to click on the desired polygon."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5028
+msgid ""
+"How much (fraction) of the tool\n"
+"width to overlap each tool pass."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5082 flatcamTools/ToolPaint.py:237
+msgid "Selection:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5084
+msgid "How to select the polygons to paint."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5088
+msgid "Single"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5102
+msgid "Film Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5107
+msgid ""
+"Create a PCB film from a Gerber or Geometry\n"
+"FlatCAM object.\n"
+"The file is saved in SVG format."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5116
+msgid "Pos"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5117
+msgid "Neg"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5118 flatcamTools/ToolFilm.py:116
+msgid "Film Type:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5120 flatcamTools/ToolFilm.py:118
+msgid ""
+"Generate a Positive black film or a Negative film.\n"
+"Positive means that it will print the features\n"
+"with black on a white canvas.\n"
+"Negative means that it will print the features\n"
+"with white on a black canvas.\n"
+"The Film format is SVG."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5131 flatcamTools/ToolFilm.py:130
+msgid "Border:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5133 flatcamTools/ToolFilm.py:132
+msgid ""
+"Specify a border around the object.\n"
+"Only for negative film.\n"
+"It helps if we use as a Box Object the same \n"
+"object as in Film Object. It will create a thick\n"
+"black bar around the actual print allowing for a\n"
+"better delimitation of the outline features which are of\n"
+"white color like the rest and which may confound with the\n"
+"surroundings if not for this border."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5146 flatcamTools/ToolFilm.py:144
+msgid "Scale Stroke:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5148 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 "
+"thinner,\n"
+"therefore the fine features may be more affected by this parameter."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5163
+msgid "Panelize Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5168
+msgid ""
+"Create an object that contains an array of (x, y) elements,\n"
+"each element is a copy of the source object spaced\n"
+"at a X distance, Y distance of each other."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5179 flatcamTools/ToolPanelize.py:113
+msgid "Spacing cols:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5181 flatcamTools/ToolPanelize.py:115
+msgid ""
+"Spacing between columns of the desired panel.\n"
+"In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5189 flatcamTools/ToolPanelize.py:122
+msgid "Spacing rows:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5191 flatcamTools/ToolPanelize.py:124
+msgid ""
+"Spacing between rows of the desired panel.\n"
+"In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5199 flatcamTools/ToolPanelize.py:131
+msgid "Columns:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5201 flatcamTools/ToolPanelize.py:133
+msgid "Number of columns of the desired panel"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5208 flatcamTools/ToolPanelize.py:139
+msgid "Rows:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5210 flatcamTools/ToolPanelize.py:141
+msgid "Number of rows of the desired panel"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5216
+msgid "Gerber"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5217
+msgid "Geo"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5218 flatcamTools/ToolPanelize.py:148
+msgid "Panel Type:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5220
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Gerber\n"
+"- Geometry"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5229
+msgid "Constrain within:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5231 flatcamTools/ToolPanelize.py:160
+msgid ""
+"Area define by DX and DY within to constrain the panel.\n"
+"DX and DY values are in current units.\n"
+"Regardless of how many columns and rows are desired,\n"
+"the final panel will have as many columns and rows as\n"
+"they fit completely within selected area."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5240 flatcamTools/ToolPanelize.py:169
+msgid "Width (DX):"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5242 flatcamTools/ToolPanelize.py:171
+msgid ""
+"The width (DX) within which the panel must fit.\n"
+"In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5249 flatcamTools/ToolPanelize.py:177
+msgid "Height (DY):"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5251 flatcamTools/ToolPanelize.py:179
+msgid ""
+"The height (DY)within which the panel must fit.\n"
+"In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5265
+msgid "Calculators Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5268
+msgid "<b>V-Shape Tool Calculator:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5270
+msgid ""
+"Calculate the tool diameter for a given V-shape tool,\n"
+"having the tip diameter, tip angle and\n"
+"depth-of-cut as parameters."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5281 flatcamTools/ToolCalculators.py:94
+msgid "Tip Diameter:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5283
+msgid ""
+"This is the tool tip diameter.\n"
+"It is specified by manufacturer."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5291
+msgid "Tip angle:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5293
+msgid ""
+"This is the angle on the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5303
+msgid ""
+"This is depth to cut into material.\n"
+"In the CNCJob object it is the CutZ parameter."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5310
+msgid "<b>ElectroPlating Calculator:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5312 flatcamTools/ToolCalculators.py:152
+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 "
+"chloride."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5322 flatcamTools/ToolCalculators.py:161
+msgid "Board Length:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5324 flatcamTools/ToolCalculators.py:165
+msgid "This is the board length. In centimeters."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5330 flatcamTools/ToolCalculators.py:167
+msgid "Board Width:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5332 flatcamTools/ToolCalculators.py:171
+msgid "This is the board width.In centimeters."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5337 flatcamTools/ToolCalculators.py:173
+msgid "Current Density:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5340 flatcamTools/ToolCalculators.py:177
+msgid ""
+"Current density to pass through the board. \n"
+"In Amps per Square Feet ASF."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5346 flatcamTools/ToolCalculators.py:181
+msgid "Copper Growth:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5349 flatcamTools/ToolCalculators.py:185
+msgid ""
+"How thick the copper growth is intended to be.\n"
+"In microns."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5362
+msgid "Transform Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5367
+msgid ""
+"Various transformations that can be applied\n"
+"on a FlatCAM object."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5377
+msgid "Rotate Angle:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5379
+msgid "Angle for rotation. In degrees."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5386
+msgid "Skew_X angle:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5388
+msgid "Angle for Skew/Shear on X axis. In degrees."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5395
+msgid "Skew_Y angle:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5397
+msgid "Angle for Skew/Shear on Y axis. In degrees."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5404
+msgid "Scale_X factor:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5406
+msgid "Factor for scaling on X axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5413
+msgid "Scale_Y factor:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5415
+msgid "Factor for scaling on Y axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5423
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale_X factor for both axis."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5431 flatcamTools/ToolTransform.py:210
+msgid ""
+"Scale the selected object(s)\n"
+"using the origin reference when checked,\n"
+"and the center of the biggest bounding box\n"
+"of the selected objects when unchecked."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5440
+msgid "Offset_X val:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5442
+msgid "Distance to offset on X axis. In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5449
+msgid "Offset_Y val:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5451
+msgid "Distance to offset on Y axis. In current units."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5457
+msgid "Mirror Reference"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5459 flatcamTools/ToolTransform.py:314
+msgid ""
+"Flip the selected object(s)\n"
+"around the point in Point Entry Field.\n"
+"\n"
+"The point coordinates can be captured by\n"
+"left click on canvas together with pressing\n"
+"SHIFT key. \n"
+"Then click Add button to insert coordinates.\n"
+"Or enter the coords in format (x, y) in the\n"
+"Point Entry field and click Flip on X(Y)"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5470
+msgid " Mirror Ref. Point:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5472 flatcamTools/ToolTransform.py:327
+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"
+"the 'y' in (x, y) will be used when using Flip on Y and"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5489
+msgid "SolderPaste Tool Options"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5494
+msgid ""
+"A tool to create GCode for dispensing\n"
+"solder paste onto a PCB."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5505
+msgid "Diameters of nozzle tools, separated by ','"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5512
+msgid "<b>New Nozzle Dia:</b>"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5514 flatcamTools/ToolSolderPaste.py:103
+msgid "Diameter for the new Nozzle tool to add in the Tool Table"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5522 flatcamTools/ToolSolderPaste.py:166
+msgid "Z Dispense Start:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5524 flatcamTools/ToolSolderPaste.py:168
+msgid "The height (Z) when solder paste dispensing starts."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5531 flatcamTools/ToolSolderPaste.py:174
+msgid "Z Dispense:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5533 flatcamTools/ToolSolderPaste.py:176
+msgid "The height (Z) when doing solder paste dispensing."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5540 flatcamTools/ToolSolderPaste.py:183
+msgid "Z Dispense Stop:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5542 flatcamTools/ToolSolderPaste.py:185
+msgid "The height (Z) when solder paste dispensing stops."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5549 flatcamTools/ToolSolderPaste.py:191
+msgid "Z Travel:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5551 flatcamTools/ToolSolderPaste.py:193
+msgid ""
+"The height (Z) for travel between pads\n"
+"(without dispensing solder paste)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5559 flatcamTools/ToolSolderPaste.py:200
+msgid "Z Toolchange:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5561 flatcamTools/ToolSolderPaste.py:202
+msgid "The height (Z) for tool (nozzle) change."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5568 flatcamTools/ToolSolderPaste.py:208
+msgid "XY Toolchange:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5570 flatcamTools/ToolSolderPaste.py:210
+msgid ""
+"The X,Y location for tool (nozzle) change.\n"
+"The format is (x, y) where x and y are real numbers."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5578 flatcamTools/ToolSolderPaste.py:217
+msgid "Feedrate X-Y:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5580 flatcamTools/ToolSolderPaste.py:219
+msgid "Feedrate (speed) while moving on the X-Y plane."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5587 flatcamTools/ToolSolderPaste.py:225
+msgid "Feedrate Z:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5589 flatcamTools/ToolSolderPaste.py:227
+msgid ""
+"Feedrate (speed) while moving vertically\n"
+"(on Z plane)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5597 flatcamTools/ToolSolderPaste.py:234
+msgid "Feedrate Z Dispense:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5599 flatcamTools/ToolSolderPaste.py:236
+msgid ""
+"Feedrate (speed) while moving up vertically\n"
+" to Dispense position (on Z plane)."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5607 flatcamTools/ToolSolderPaste.py:243
+msgid "Spindle Speed FWD:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5609 flatcamTools/ToolSolderPaste.py:245
+msgid ""
+"The dispenser speed while pushing solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5617 flatcamTools/ToolSolderPaste.py:252
+msgid "Dwell FWD:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5619 flatcamTools/ToolSolderPaste.py:254
+msgid "Pause after solder dispensing."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5626 flatcamTools/ToolSolderPaste.py:260
+msgid "Spindle Speed REV:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5628 flatcamTools/ToolSolderPaste.py:262
+msgid ""
+"The dispenser speed while retracting solder paste\n"
+"through the dispenser nozzle."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5636 flatcamTools/ToolSolderPaste.py:269
+msgid "Dwell REV:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5638 flatcamTools/ToolSolderPaste.py:271
+msgid ""
+"Pause after solder paste dispenser retracted,\n"
+"to allow pressure equilibrium."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5645 flatcamTools/ToolSolderPaste.py:277
+msgid "PostProcessors:"
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5647 flatcamTools/ToolSolderPaste.py:279
+msgid "Files that control the GCode generation."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5677 flatcamGUI/FlatCAMGUI.py:5683
+msgid "Idle."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5707
+msgid "Application started ..."
+msgstr ""
+
+#: flatcamGUI/FlatCAMGUI.py:5708
+msgid "Hello!"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:33
+msgid "FlatCAM Object"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:58
+msgid ""
+"BASIC is suitable for a beginner. Many parameters\n"
+"are hidden from the user in this mode.\n"
+"ADVANCED mode will make available all parameters.\n"
+"\n"
+"To change the application LEVEL, go to:\n"
+"Edit -> Preferences -> General and check:\n"
+"'APP. LEVEL' radio button."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:79
+msgid "<b>Scale:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:81
+msgid "Change the size of the object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:89
+msgid "Factor:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:91
+msgid ""
+"Factor by which to multiply\n"
+"geometric features of this object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:102
+msgid "Perform scaling operation."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:108
+msgid "<b>Offset:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:110
+msgid "Change the position of this object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:117
+msgid "Vector:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:119
+msgid ""
+"Amount by which to move the object\n"
+"in the x and y axes in (x, y) format."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:129
+msgid "Perform the offset operation."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:143
+msgid "Gerber Object"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:156
+msgid "Solid   "
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:164
+msgid "M-Color   "
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:182 flatcamGUI/ObjectUI.py:588
+#: flatcamGUI/ObjectUI.py:907 flatcamGUI/ObjectUI.py:1437
+msgid "<b>Name:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:192
+msgid "<b>Apertures:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:194
+msgid "Apertures Table for the Gerber Object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:203
+msgid ""
+"Toggle the display of the Gerber Apertures Table.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:214
+msgid "Mark All"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:216
+msgid ""
+"When checked it will display all the apertures.\n"
+"When unchecked, it will delete all mark shapes\n"
+"that are drawn on canvas."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Code"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:228 flatcamGUI/ObjectUI.py:959
+#: flatcamGUI/ObjectUI.py:1517
+msgid "Type"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Size"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:228
+msgid "Dim"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:232
+msgid "Index"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:234
+msgid "Aperture Code"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:236
+msgid "Type of aperture: circular, rectangle, macros etc"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:238
+msgid "Aperture Size:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:240
+msgid ""
+"Aperture Dimensions:\n"
+" - (width, height) for R, O type.\n"
+" - (dia, nVertices) for P type"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:244
+msgid "Mark the aperture instances on canvas."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:252
+msgid "Scale Factor:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:267
+msgid "Perform scaling operation on the selected apertures."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:273
+msgid "Buffer Factor:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:286
+msgid "Buffer"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:288
+msgid "Perform buffer operation on the selected apertures."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:296
+msgid "<b>Generate new Gerber Object:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:298
+msgid "Will generate a new Gerber object from the changed apertures."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:304
+msgid "Go"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:306
+msgid ""
+"Will generate a new Gerber object from the changed apertures.\n"
+"This new object can then be isolated etc."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:333
+msgid ""
+"Diameter of the cutting tool.\n"
+"If you want to have an isolation path\n"
+"inside the actual shape of the Gerber\n"
+"feature, use a negative value for\n"
+"this parameter."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:344
+msgid "Passes:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:378
+msgid "Combine"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:394
+msgid "<b>Generate Isolation Geometry:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:396
+msgid ""
+"Create a Geometry object with toolpaths to cut \n"
+"isolation outside, inside or on both sides of the\n"
+"object. For a Gerber object outside means outside\n"
+"of the Gerber feature and inside means inside of\n"
+"the Gerber feature, if possible at all. This means\n"
+"that only if the Gerber feature has openings inside, they\n"
+"will be isolated. If what is wanted is to cut isolation\n"
+"inside the actual Gerber feature, use a negative tool\n"
+"diameter above."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:415
+msgid "FULL Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:417
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing. It contains both\n"
+"the interiors and exteriors geometry."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:426
+msgid "Ext Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:428
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the exteriors geometry."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:435
+msgid "Int Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:437
+msgid ""
+"Create the Geometry Object\n"
+"for isolation routing containing\n"
+"only the interiors geometry."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:455
+msgid "<b>Clear N-copper:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:465 flatcamTools/ToolNonCopperClear.py:239
+msgid ""
+"Create the Geometry Object\n"
+"for non-copper routing."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:471
+msgid "<b>Board cutout:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:479
+msgid "Cutout Tool"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:481
+msgid ""
+"Generate the geometry for\n"
+"the board cutout."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:487
+msgid "<b>Non-copper regions:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:489
+msgid ""
+"Create polygons covering the\n"
+"areas without copper on the PCB.\n"
+"Equivalent to the inverse of this\n"
+"object. Can be used to remove all\n"
+"copper from a specified region."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:514 flatcamGUI/ObjectUI.py:545
+msgid "Rounded Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:516
+msgid "Resulting geometry will have rounded corners."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:521 flatcamGUI/ObjectUI.py:555
+#: flatcamTools/ToolCutOut.py:159 flatcamTools/ToolCutOut.py:179
+#: flatcamTools/ToolCutOut.py:230 flatcamTools/ToolSolderPaste.py:127
+msgid "Generate Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:527
+msgid ""
+"Create a geometry surrounding the Gerber object.\n"
+"Square shape."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:557
+msgid "Generate the Geometry object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:568
+msgid "Excellon Object"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:579
+msgid "Solid circles."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:607 flatcamGUI/ObjectUI.py:926
+msgid "<b>Tools Table</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:628
+msgid "Offset Z"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:632
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn in the Machine Code."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:636 flatcamGUI/ObjectUI.py:972
+#: flatcamTools/ToolNonCopperClear.py:96 flatcamTools/ToolPaint.py:94
+msgid ""
+"Tool Diameter. It's value (in current FlatCAM units) \n"
+"is the cut width into the material."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:639
+msgid ""
+"The number of Drill holes. Holes that are drilled with\n"
+"a drill bit."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:642
+msgid ""
+"The number of Slot holes. Holes that are created by\n"
+"milling them with an endmill bit."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:649
+msgid "Toggle display of the drills for the current tool."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:657
+msgid ""
+"Create a CNC Job object\n"
+"for this drill object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:686 flatcamGUI/ObjectUI.py:1186
+msgid "Tool change"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:694 flatcamGUI/ObjectUI.py:1179
+msgid "Tool change Z:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:696 flatcamGUI/ObjectUI.py:1182
+msgid ""
+"Z-axis position (height) for\n"
+"tool change."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:707
+msgid ""
+"Tool height just before starting the work.\n"
+"Delete the value if you don't need this feature."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:717
+msgid ""
+"Z-axis position (height) for\n"
+"the last move."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:725
+msgid "Feedrate (Plunge):"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:727
+msgid ""
+"Tool speed while drilling\n"
+"(in units per minute).\n"
+"This is for linear move G01."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:777
+msgid ""
+"The json file that dictates\n"
+"gcode output."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:809
+msgid ""
+"Select from the Tools Table above\n"
+"the tools you want to include."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:816
+msgid "<b>Type:    </b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:818
+msgid ""
+"Choose what to use for GCode generation:\n"
+"'Drills', 'Slots' or 'Both'.\n"
+"When choosing 'Slots' or 'Both', slots will be\n"
+"converted to a series of drills."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:833
+msgid "Create GCode"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:835
+msgid "Generate the CNC Job."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:847
+msgid ""
+"Select from the Tools Table above\n"
+" the hole dias that are to be milled."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:854
+msgid "Drills Tool dia:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:861
+msgid "Mill Drills Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:863
+msgid ""
+"Create the Geometry Object\n"
+"for milling DRILLS toolpaths."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:870
+msgid "Slots Tool dia:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:877
+msgid "Mill Slots Geo"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:879
+msgid ""
+"Create the Geometry Object\n"
+"for milling SLOTS toolpaths."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:897
+msgid "Geometry Object"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:928
+msgid ""
+"Tools in this Geometry object used for cutting.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V). \n"
+"When V-shaped is selected the 'Type' entry is automatically \n"
+"set to Isolation, the CutZ parameter in the UI form is\n"
+"grayed out and Cut Z is automatically calculated from the newly \n"
+"showed UI form entries named V-Tip Dia and V-Tip Angle."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "Dia"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:959 flatcamGUI/ObjectUI.py:1517
+msgid "TT"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:966
+msgid ""
+"This is the Tool Number.\n"
+"When ToolChange is checked, on toolchange event this value\n"
+"will be showed as a T1, T2 ... Tn"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:977
+msgid ""
+"The value for the Offset can be:\n"
+"- Path -> There is no offset, the tool cut will be done through the geometry "
+"line.\n"
+"- In(side) -> The tool cut will follow the geometry inside. It will create a "
+"'pocket'.\n"
+"- Out(side) -> The tool cut will follow the geometry line on the outside."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:984
+msgid ""
+"The (Operation) Type has only informative value. Usually the UI form "
+"values \n"
+"are choosed based on the operation type and this will serve as a reminder.\n"
+"Can be 'Roughing', 'Finishing' or 'Isolation'.\n"
+"For Roughing we may choose a lower Feedrate and multiDepth cut.\n"
+"For Finishing we may choose a higher Feedrate, without multiDepth.\n"
+"For Isolation we need a lower Feedrate as it use a milling bit with a fine "
+"tip."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:993
+msgid ""
+"The Tool Type (TT) can be:\n"
+"- Circular with 1 ... 4 teeth -> it is informative only. Being circular the "
+"cut width in material\n"
+"is exactly the tool diameter.\n"
+"- Ball -> informative only and make reference to the Ball type endmill.\n"
+"- V-Shape -> it will disable de Z-Cut parameter in the UI form and enable "
+"two additional UI form\n"
+"fields: V-Tip Dia and V-Tip Angle. Adjusting those two values will adjust "
+"the Z-Cut parameter such\n"
+"as the cut width into material will be equal with the value in the Tool "
+"Diameter column of this table.\n"
+"Choosing the V-Shape Tool Type automatically will select the Operation Type "
+"as Isolation."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1004
+msgid ""
+"Plot column. It is visible only for MultiGeo geometries, meaning geometries "
+"that holds the geometry\n"
+"data into the tools. For those geometries, deleting the tool will delete the "
+"geometry data also,\n"
+"so be WARNED. From the checkboxes on each row it can be enabled/disabled the "
+"plot on canvas\n"
+"for the corresponding tool."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1017
+msgid "Tool Offset:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1020
+msgid ""
+"The value to offset the cut when \n"
+"the Offset type selected is 'Offset'.\n"
+"The value can be positive for 'outside'\n"
+"cut and negative for 'inside' cut."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1043
+msgid "<b>Tool Dia:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1062 flatcamTools/ToolNonCopperClear.py:135
+#: flatcamTools/ToolPaint.py:133
+msgid ""
+"Add a new tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1070
+msgid ""
+"Copy a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1078
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row in the Tool Table."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1094
+msgid "<b>Tool Data</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1097
+msgid ""
+"The data used for creating GCode.\n"
+"Each tool store it's own set of such data."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1107
+msgid "V-Tip Dia:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1110
+msgid "The tip diameter for V-Shape Tool"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1118
+msgid "V-Tip Angle:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1121
+msgid ""
+"The tip angle for V-Shape Tool.\n"
+"In degree."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1142
+msgid "Multi-Depth:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1145
+msgid ""
+"Use multiple passes to limit\n"
+"the cut depth in each pass. Will\n"
+"cut multiple times until Cut Z is\n"
+"reached.\n"
+"To the right, input the depth of \n"
+"each pass (positive value)."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1158
+msgid "Depth of each pass (positive)."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1189
+msgid ""
+"Include tool-change sequence\n"
+"in the Machine Code (Pause for tool change)."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1215
+msgid ""
+"This is the height (Z) at which the CNC\n"
+"will go as the last move."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1236
+msgid "Feed Rate Z (Plunge):"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1239
+msgid ""
+"Cutting speed in the Z\n"
+"plane in units per minute"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1248
+msgid "Feed Rate Rapids:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1251
+msgid ""
+"Cutting speed in the XY\n"
+"plane in units per minute\n"
+"(in units per minute).\n"
+"This is for the rapid move G00.\n"
+"It is useful only for Marlin,\n"
+"ignore for any other cases."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1264
+msgid "Cut over 1st pt"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1279
+msgid ""
+"Speed of the spindle in RPM (optional).\n"
+"If LASER postprocessor is used,\n"
+"this value is the power of laser."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1308
+msgid "PostProcessor:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1311
+msgid ""
+"The Postprocessor file that dictates\n"
+"the Machine Code (like GCode, RML, HPGL) output."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1349
+msgid ""
+"Add at least one tool in the tool-table.\n"
+"Click the header to select all, or Ctrl + LMB\n"
+"for custom selection of tools."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1356
+msgid "Generate"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1359
+msgid "Generate the CNC Job object."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1367
+msgid "<b>Paint Area:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1382
+msgid "Launch Paint Tool in Tools Tab."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1399
+msgid "CNC Job Object"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1418
+msgid "<b>Plot kind:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1443
+msgid "<b>Travelled dist.:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1446 flatcamGUI/ObjectUI.py:1453
+msgid ""
+"This is the total travelled distance on X-Y plane.\n"
+"In current units."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1481
+msgid "<b>CNC Tools Table</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1484
+msgid ""
+"Tools in this CNCJob object used for cutting.\n"
+"The tool diameter is used for plotting on canvas.\n"
+"The 'Offset' entry will set an offset for the cut.\n"
+"'Offset' can be inside, outside, on path (none) and custom.\n"
+"'Type' entry is only informative and it allow to know the \n"
+"intent of using the current tool. \n"
+"It can be Rough(ing), Finish(ing) or Iso(lation).\n"
+"The 'Tool type'(TT) can be circular with 1 to 4 teeths(C1..C4),\n"
+"ball(B), or V-Shaped(V)."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1518
+msgid "P"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1524
+msgid "Update Plot"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1526
+msgid "Update the plot."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1533
+msgid "<b>Export CNC Code:</b>"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1541
+msgid "Prepend to CNC Code:"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1544
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to add to the beginning of the generated file."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1554
+msgid "Append to CNC Code"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1578
+msgid ""
+"Type here any G-Code commands you would\n"
+"like to be executed when Toolchange event is encountered.\n"
+"This will constitute a Custom Toolchange GCode,\n"
+"or a Toolchange Macro.\n"
+"The FlatCAM variables are surrounded by '%' symbol.\n"
+"\n"
+"WARNING: it can be used only with a postprocessor file\n"
+"that has 'toolchange_custom' in it's name and this is built\n"
+"having as template the 'Toolchange Custom' posprocessor file."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1634
+msgid "z_cut = depth where to cut"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1635
+msgid "z_move = height where to travel"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1656
+msgid "View CNC Code"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1659
+msgid ""
+"Opens TAB to view/modify/print G-Code\n"
+"file."
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1665
+msgid "Save CNC Code"
+msgstr ""
+
+#: flatcamGUI/ObjectUI.py:1668
+msgid ""
+"Opens dialog to save G-Code\n"
+"file."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:24
+msgid "Calculators"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:25
+msgid "V-Shape Tool Calculator"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:26
+msgid "Units Calculator"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:27
+msgid "ElectroPlating Calculator"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:68
+msgid "Here you enter the value to be converted from INCH to MM"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:73
+msgid "Here you enter the value to be converted from MM to INCH"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:98
+msgid ""
+"This is the diameter of the tool tip.\n"
+"The manufacturer specifies it."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:101
+msgid "Tip Angle:"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:105
+msgid ""
+"This is the angle of the tip of the tool.\n"
+"It is specified by manufacturer."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:112
+msgid ""
+"This is the depth to cut into the material.\n"
+"In the CNCJob is the CutZ parameter."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:115
+msgid "Tool Diameter:"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:119
+msgid ""
+"This is the tool diameter to be entered into\n"
+"FlatCAM Gerber section.\n"
+"In the CNCJob section it is called >Tool dia<."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:131 flatcamTools/ToolCalculators.py:214
+msgid "Calculate"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:134
+msgid ""
+"Calculate either the Cut Z or the effective tool diameter,\n"
+"  depending on which is desired and which is known. "
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:190
+msgid "Current Value:"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:194
+msgid ""
+"This is the current intensity value\n"
+"to be set on the Power Supply. In Amps."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:198
+msgid "Time:"
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:202
+msgid ""
+"This is the calculated time required for the procedure.\n"
+"In minutes."
+msgstr ""
+
+#: flatcamTools/ToolCalculators.py:217
+msgid ""
+"Calculate the current intensity value and the procedure time,\n"
+"  depending on the parameters above"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:17
+msgid "Cutout PCB"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:53
+msgid "Obj Type:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:55
+msgid ""
+"Specify the type of object to be cutout.\n"
+"It can be of type: Gerber or Geometry.\n"
+"What is selected here will dictate the kind\n"
+"of objects that will populate the 'Object' combobox."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:69 flatcamTools/ToolPanelize.py:71
+msgid "Object:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:71
+msgid "Object to be cutout.                        "
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:79
+msgid ""
+"Diameter of the tool used to cutout\n"
+"the PCB shape out of the surrounding material."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:88
+msgid ""
+"Margin over bounds. A positive value here\n"
+"will make the cutout of the PCB further from\n"
+"the actual PCB border"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:98
+msgid ""
+"The size of the bridge gaps in the cutout\n"
+"used to keep the board connected to\n"
+"the surrounding material (the one \n"
+"from which the PCB is cutout)."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:114
+msgid "A. Automatic Bridge Gaps"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:116
+msgid "This section handle creation of automatic bridge gaps."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:127
+msgid ""
+"Number of gaps used for the Automatic cutout.\n"
+"There can be maximum 8 bridges/gaps.\n"
+"The choices are:\n"
+"- lr    - left + right\n"
+"- tb    - top + bottom\n"
+"- 4     - left + right +top + bottom\n"
+"- 2lr   - 2*left + 2*right\n"
+"- 2tb  - 2*top + 2*bottom\n"
+"- 8     - 2*left + 2*right +2*top + 2*bottom"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:150
+msgid "FreeForm:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:152
+msgid ""
+"The cutout shape can be of ny shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:161
+msgid ""
+"Cutout the selected object.\n"
+"The cutout shape can be of any shape.\n"
+"Useful when the PCB has a non-rectangular shape."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:170
+msgid "Rectangular:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:172
+msgid ""
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:181
+msgid ""
+"Cutout the selected object.\n"
+"The resulting cutout shape is\n"
+"always a rectangle shape and it will be\n"
+"the bounding box of the Object."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:189
+msgid "B. Manual Bridge Gaps"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:191
+msgid ""
+"This section handle creation of manual bridge gaps.\n"
+"This is done by mouse clicking on the perimeter of the\n"
+"Geometry object that is used as a cutout object. "
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:207
+msgid "Geo Obj:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:209
+msgid "Geometry object used to create the manual cutout."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:220
+msgid "Manual Geo:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:222 flatcamTools/ToolCutOut.py:232
+msgid ""
+"If the object to be cutout is a Gerber\n"
+"first create a Geometry that surrounds it,\n"
+"to be used as the cutout, if one doesn't exist yet.\n"
+"Select the source Gerber file in the top object combobox."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:242
+msgid "Manual Add Bridge Gaps:"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:244
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:251
+msgid "Generate Gap"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:253
+msgid ""
+"Use the left mouse button (LMB) click\n"
+"to create a bridge gap to separate the PCB from\n"
+"the surrounding material.\n"
+"The LMB click has to be done on the perimeter of\n"
+"the Geometry object used as a cutout geometry."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:329 flatcamTools/ToolCutOut.py:468
+#: flatcamTools/ToolNonCopperClear.py:659 flatcamTools/ToolPaint.py:757
+#: flatcamTools/ToolPanelize.py:293 flatcamTools/ToolPanelize.py:307
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve object: %s"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:333
+msgid ""
+"[ERROR_NOTCL]There is no object selected for Cutout.\n"
+"Select one and try again."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:349
+msgid ""
+"[WARNING_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:359 flatcamTools/ToolCutOut.py:496
+#: flatcamTools/ToolCutOut.py:721
+msgid ""
+"[WARNING_NOTCL] Margin value is missing or wrong format. Add it and retry."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:370 flatcamTools/ToolCutOut.py:507
+#: flatcamTools/ToolCutOut.py:616
+msgid ""
+"[WARNING_NOTCL] Gap size value is missing or wrong format. Add it and retry."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:377 flatcamTools/ToolCutOut.py:514
+msgid "[WARNING_NOTCL] Number of gaps value is missing. Add it and retry."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:381 flatcamTools/ToolCutOut.py:518
+msgid ""
+"[WARNING_NOTCL] Gaps value can be only one of: 'lr', 'tb', '2lr', '2tb', 4 "
+"or 8. Fill in a correct value and retry. "
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:386 flatcamTools/ToolCutOut.py:523
+msgid ""
+"[ERROR]Cutout operation cannot be done on a multi-geo Geometry.\n"
+"Optionally, this Multi-geo Geometry can be converted to Single-geo "
+"Geometry,\n"
+"and after that perform Cutout."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:452 flatcamTools/ToolCutOut.py:586
+msgid "[success] Any form CutOut operation finished."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:472 flatcamTools/ToolPaint.py:761
+#: flatcamTools/ToolPanelize.py:299
+#, python-format
+msgid "[ERROR_NOTCL]Object not found: %s"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:486 flatcamTools/ToolCutOut.py:606
+#: flatcamTools/ToolCutOut.py:711
+msgid ""
+"[ERROR_NOTCL]Tool Diameter is zero value. Change it to a positive integer."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:591
+msgid ""
+"Click on the selected geometry object perimeter to create a bridge gap ..."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:632
+msgid "Making manual bridge gap..."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:655
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Geoemtry object: %s"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:659
+#, python-format
+msgid "[ERROR_NOTCL]Geometry object for manual cutout not found: %s"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:669
+msgid "[success] Added manual Bridge Gap."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:686
+#, python-format
+msgid "[ERROR_NOTCL]Could not retrieve Gerber object: %s"
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:690
+msgid ""
+"[ERROR_NOTCL]There is no Gerber object selected for Cutout.\n"
+"Select one and try again."
+msgstr ""
+
+#: flatcamTools/ToolCutOut.py:695
+msgid ""
+"[ERROR_NOTCL]The selected object has to be of Gerber type.\n"
+"Select a Gerber file and try again."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:18
+msgid "2-Sided PCB"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:52 flatcamTools/ToolDblSided.py:76
+#: flatcamTools/ToolDblSided.py:100
+msgid "Mirror"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:54 flatcamTools/ToolDblSided.py:78
+#: flatcamTools/ToolDblSided.py:102
+msgid ""
+"Mirrors (flips) the specified object around \n"
+"the specified axis. Does not create a new \n"
+"object, but modifies it."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:73
+msgid "Excellon Object to be mirrored."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:97
+msgid "Geometry Obj to be mirrored."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:135
+msgid ""
+"The axis should pass through a <b>point</b> or cut\n"
+" a specified <b>box</b> (in a FlatCAM object) through \n"
+"the center."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:152
+msgid "Point/Box Reference:"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:154
+msgid ""
+"If 'Point' is selected above it store the coordinates (x, y) through which\n"
+"the mirroring axis passes.\n"
+"If 'Box' is selected above, select here a FlatCAM object (Gerber, Exc or "
+"Geo).\n"
+"Through the center of this object pass the mirroring axis selected above."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:162
+msgid ""
+"Add the coordinates in format <b>(x, y)</b> through which the mirroring "
+"axis \n"
+" selected in 'MIRROR AXIS' pass.\n"
+"The (x, y) coordinates are captured by pressing SHIFT key\n"
+"and left mouse button click on canvas or you can enter the coords manually."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:182
+msgid "Gerber   Reference Box Object"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:183
+msgid "Excellon Reference Box Object"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:184
+msgid "Geometry Reference Box Object"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:193
+msgid "Alignment Drill Coordinates:"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:195
+msgid ""
+"Alignment holes (x1, y1), (x2, y2), ... on one side of the mirror axis. For "
+"each set of (x, y) coordinates\n"
+"entered here, a pair of drills will be created:\n"
+"\n"
+"- one drill at the coordinates from the field\n"
+"- one drill in mirror position over the axis selected above in the 'Mirror "
+"Axis'."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:210
+msgid ""
+"Add alignment drill holes coords in the format: (x1, y1), (x2, y2), ... \n"
+"on one side of the mirror axis.\n"
+"\n"
+"The coordinates set can be obtained:\n"
+"- press SHIFT key and left mouse clicking on canvas. Then click Add.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then CTRL+V in the "
+"field.\n"
+"- press SHIFT key and left mouse clicking on canvas. Then RMB click in the "
+"field and click Paste.\n"
+"- by entering the coords manually in the format: (x1, y1), (x2, y2), ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:224
+msgid "Alignment Drill Diameter"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:247
+msgid "Create Excellon Object"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:249
+msgid ""
+"Creates an Excellon Object containing the\n"
+"specified alignment holes and their mirror\n"
+"images."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:255
+msgid "Reset"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:257
+msgid "Resets all the fields."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:302
+msgid "2-Sided Tool"
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:327
+msgid ""
+"[WARNING_NOTCL] 'Point' reference is selected and 'Point' coordinates are "
+"missing. Add them and retry."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:346
+msgid ""
+"[WARNING_NOTCL] There is no Box reference object loaded. Load one and retry."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:368
+msgid ""
+"[WARNING_NOTCL]No value or wrong format in Drill Dia entry. Add it and retry."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:375
+msgid ""
+"[WARNING_NOTCL] There are no Alignment Drill Coordinates to use. Add them "
+"and retry."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:397
+msgid "[success] Excellon object with alignment drills created..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:406
+msgid "[WARNING_NOTCL] There is no Gerber object loaded ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:410 flatcamTools/ToolDblSided.py:453
+#: flatcamTools/ToolDblSided.py:497
+msgid ""
+"[ERROR_NOTCL] Only Gerber, Excellon and Geometry objects can be mirrored."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:420
+msgid ""
+"[WARNING_NOTCL] 'Point' coordinates missing. Using Origin (0, 0) as "
+"mirroring reference."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:430 flatcamTools/ToolDblSided.py:474
+#: flatcamTools/ToolDblSided.py:511
+msgid "[WARNING_NOTCL] There is no Box object loaded ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:440
+#, python-format
+msgid "[success] Gerber %s was mirrored..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:449
+msgid "[WARNING_NOTCL] There is no Excellon object loaded ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:464
+msgid ""
+"[WARNING_NOTCL] There are no Point coordinates in the Point field. Add "
+"coords and try again ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:484
+#, python-format
+msgid "[success] Excellon %s was mirrored..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:493
+msgid "[WARNING_NOTCL] There is no Geometry object loaded ..."
+msgstr ""
+
+#: flatcamTools/ToolDblSided.py:521
+#, python-format
+msgid "[success] Geometry %s was mirrored..."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:25
+msgid "Film PCB"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:56 flatcamTools/ToolImage.py:53
+#: flatcamTools/ToolPanelize.py:56
+msgid "Object Type:"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:58
+msgid ""
+"Specify the type of object for which to create the film.\n"
+"The object can be of type: Gerber or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Film Object combobox."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:71
+msgid "Film Object:"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:73
+msgid "Object for which to create the film."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:89 flatcamTools/ToolPanelize.py:89
+msgid "Box Type:"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"film creation. It can be: Gerber or Geometry type.The selection here decide "
+"the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:104 flatcamTools/ToolPanelize.py:104
+msgid "Box Object:"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object for which we create the film.\n"
+"Usually it is the PCB outline but it can be also the\n"
+"same object for which the film is created."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:157
+msgid "Save Film"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:159
+msgid ""
+"Create a Film for the selected object, within\n"
+"the specified box. Does not create a new \n"
+" FlatCAM object, but directly save it in SVG format\n"
+"which can be opened with Inkscape."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:225
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Film and retry."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:231
+msgid ""
+"[ERROR_NOTCL] No FlatCAM object selected. Load an object for Box and retry."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:255
+msgid "Generating Film ..."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:260 flatcamTools/ToolFilm.py:264
+msgid "Export SVG positive"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:269
+msgid "[WARNING_NOTCL]Export SVG positive cancelled."
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:276 flatcamTools/ToolFilm.py:280
+msgid "Export SVG negative"
+msgstr ""
+
+#: flatcamTools/ToolFilm.py:285
+msgid "[WARNING_NOTCL]Export SVG negative cancelled."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:25
+msgid "Image as Object"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:31
+msgid "Image to PCB"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:55
+msgid ""
+"Specify the type of object to create from the image.\n"
+"It can be of type: Gerber or Geometry."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:63
+msgid "DPI value:"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:65
+msgid "Specify a DPI value for the image."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:72
+msgid "Level of detail"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:81
+msgid "Image type"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:83
+msgid ""
+"Choose a method for the image interpretation.\n"
+"B/W means a black & white image. Color means a colored image."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:90 flatcamTools/ToolImage.py:103
+#: flatcamTools/ToolImage.py:114 flatcamTools/ToolImage.py:125
+msgid "Mask value"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:92
+msgid ""
+"Mask for monochrome image.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry.\n"
+"0 means no detail and 255 means everything \n"
+"(which is totally black)."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:105
+msgid ""
+"Mask for RED color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:116
+msgid ""
+"Mask for GREEN color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:127
+msgid ""
+"Mask for BLUE color.\n"
+"Takes values between [0 ... 255].\n"
+"Decides the level of details to include\n"
+"in the resulting geometry."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:139
+msgid "Import image"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:141
+msgid "Open a image of raster type and then import it in FlatCAM."
+msgstr ""
+
+#: flatcamTools/ToolImage.py:170
+msgid "Image Tool"
+msgstr ""
+
+#: flatcamTools/ToolImage.py:200 flatcamTools/ToolImage.py:203
+msgid "Import IMAGE"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:26
+msgid "Measurement"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:47
+msgid "Start"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:47 flatcamTools/ToolMeasurement.py:50
+msgid "Coords"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:48 flatcamTools/ToolMeasurement.py:99
+msgid "This is measuring Start point coordinates."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:50
+msgid "Stop"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:51 flatcamTools/ToolMeasurement.py:104
+msgid "This is the measuring Stop point coordinates."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:54 flatcamTools/ToolMeasurement.py:109
+msgid "This is the distance measured over the X axis."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:57 flatcamTools/ToolMeasurement.py:115
+msgid "This is the distance measured over the Y axis."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:59
+msgid "DISTANCE"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:60 flatcamTools/ToolMeasurement.py:121
+msgid "This is the point to point Euclidian distance."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:63 flatcamTools/ToolMeasurement.py:70
+#: flatcamTools/ToolMeasurement.py:77 flatcamTools/ToolMeasurement.py:84
+#: flatcamTools/ToolMeasurement.py:91
+msgid "Those are the units in which the distance is measured."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:124
+msgid "Measure"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:183
+msgid "Meas. Tool"
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:276
+msgid "MEASURING: Click on the Start point ..."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:305
+msgid "MEASURING: Click on the Destination point ..."
+msgstr ""
+
+#: flatcamTools/ToolMeasurement.py:326
+#, python-brace-format
+msgid "MEASURING: Result D(x) = {d_x} | D(y) = {d_y} | Distance = {d_z}"
+msgstr ""
+
+#: flatcamTools/ToolMove.py:81
+msgid "MOVE: Click on the Start point ..."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:88
+msgid "[WARNING_NOTCL] MOVE action cancelled. No object(s) to move."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:110
+msgid "MOVE: Click on the Destination point ..."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:128
+msgid "Moving ..."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:135
+msgid "[WARNING_NOTCL] No object(s) selected."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:158
+#, python-format
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> %s"
+msgstr ""
+
+#: flatcamTools/ToolMove.py:164
+#, python-format
+msgid "[success]%s object was moved ..."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:174
+msgid "[ERROR_NOTCL] ToolMove.on_left_click() --> Error when mouse left click."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:202
+msgid "[WARNING_NOTCL]Move action cancelled."
+msgstr ""
+
+#: flatcamTools/ToolMove.py:214
+msgid "[WARNING_NOTCL]Object(s) not selected"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:25
+msgid "Non-Copper Clearing"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:63
+msgid "Gerber object to be cleared of excess copper.                        "
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:73
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for copper clearing."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:88
+msgid ""
+"This is the Tool Number.\n"
+"Non copper clearing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more tools.\n"
+"Only tools that create NCC clearing geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:100 flatcamTools/ToolPaint.py:98
+msgid ""
+"The Tool Type (TT) can be:<BR>- <B>Circular</B> with 1 ... 4 teeth -> it is "
+"informative only. Being circular, <BR>the cut width in material is exactly "
+"the tool diameter.<BR>- <B>Ball</B> -> informative only and make reference "
+"to the Ball type endmill.<BR>- <B>V-Shape</B> -> it will disable de Z-Cut "
+"parameter in the resulting geometry UI form and enable two additional UI "
+"form fields in the resulting geometry: V-Tip Dia and V-Tip Angle. Adjusting "
+"those two values will adjust the Z-Cut parameter such as the cut width into "
+"material will be equal with the value in the Tool Diameter column of this "
+"table.<BR>Choosing the <B>V-Shape</B> Tool Type automatically will select "
+"the Operation Type in the resulting geometry as Isolation."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:119 flatcamTools/ToolPaint.py:117
+msgid "Tool Dia"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:121
+msgid "Diameter for the new tool to add in the Tool Table"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:147 flatcamTools/ToolPaint.py:145
+#: flatcamTools/ToolSolderPaste.py:123
+msgid ""
+"Delete a selection of tools in the Tool Table\n"
+"by first selecting a row(s) in the Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:225
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:237
+msgid "Generate Geometry"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:483 flatcamTools/ToolPaint.py:543
+#: flatcamTools/ToolSolderPaste.py:760
+msgid "[WARNING_NOTCL] Please enter a tool diameter to add, in Float format."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:511 flatcamTools/ToolPaint.py:567
+msgid "[WARNING_NOTCL]Adding tool cancelled. Tool already in Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:516 flatcamTools/ToolPaint.py:572
+msgid "[success] New tool added to Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:549
+msgid "[ERROR_NOTCL] Wrong value format entered, use a number."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:558 flatcamTools/ToolPaint.py:615
+msgid "[success] Tool from Tool Table was edited."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:569 flatcamTools/ToolPaint.py:626
+#: flatcamTools/ToolSolderPaste.py:846
+msgid ""
+"[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool "
+"Table."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:608 flatcamTools/ToolPaint.py:723
+msgid "[WARNING_NOTCL]Delete failed. Select a tool to delete."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:613 flatcamTools/ToolPaint.py:728
+msgid "[success] Tool(s) deleted from Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:666
+msgid "[ERROR_NOTCL]No Gerber file available."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:704
+#: flatcamTools/ToolNonCopperClear.py:826
+msgid "Clearing Non-Copper areas."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:722
+#, python-format
+msgid "[success] Non-Copper Clearing with ToolDia = %s started."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:791
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper() --> %s"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:796
+msgid "[success] NCC Tool finished."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:798
+msgid ""
+"[WARNING_NOTCL] NCC Tool finished but some PCB features could not be "
+"cleared. Check the result."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:844
+#, python-format
+msgid "[success] Non-Copper Rest Clearing with ToolDia = %s started."
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:942
+#, python-format
+msgid "[ERROR_NOTCL] NCCTool.clear_non_copper_rest() --> %s"
+msgstr ""
+
+#: flatcamTools/ToolNonCopperClear.py:950
+msgid ""
+"[ERROR_NOTCL] NCC Tool finished but could not clear the object with current "
+"settings."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:24
+msgid "Paint Area"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:60
+msgid "Geometry:"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:62
+msgid "Geometry object to be painted.                        "
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:71
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for painting."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:86
+msgid ""
+"This is the Tool Number.\n"
+"Painting will start with the tool with the biggest diameter,\n"
+"continuing until there are no more tools.\n"
+"Only tools that create painting geometry will still be present\n"
+"in the resulting geometry. This is because with some tools\n"
+"this function will not be able to create painting geometry."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:119
+msgid "Diameter for the new tool."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:224
+msgid ""
+"If checked, use 'rest machining'.\n"
+"Basically it will clear copper outside PCB features,\n"
+"using the biggest tool and continue with the next tools,\n"
+"from bigger to smaller, to clear areas of copper that\n"
+"could not be cleared by previous tool, until there is\n"
+"no more copper to clear or there are no more tools.\n"
+"\n"
+"If not checked, use the standard algorithm."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:239
+msgid ""
+"How to select the polygons to paint.<BR>Options:<BR>- <B>Single</B>: left "
+"mouse click on the polygon to be painted.<BR>- <B>All</B>: paint all "
+"polygons."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:254
+msgid "Create Paint Geometry"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:256
+msgid ""
+"After clicking here, click inside<BR>the polygon you wish to be painted if "
+"<B>Single</B> is selected.<BR>If <B>All</B>  is selected then the Paint will "
+"start after click.<BR>A new Geometry object with the tool<BR>paths will be "
+"created."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:732
+msgid "geometry_on_paint_button"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:735 flatcamTools/ToolPaint.py:780
+msgid "[WARNING_NOTCL]Click inside the desired polygon."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:767
+msgid "[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:789 flatcamTools/ToolPaint.py:992
+msgid "Painting polygon..."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:840
+msgid "[WARNING] No polygon found."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:843
+msgid "Painting polygon."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:885
+msgid "[ERROR_NOTCL] Geometry could not be painted completely"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:911
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint. Try a different combination of parameters. Or a "
+"different strategy of paint\n"
+"%s"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:953
+#, python-format
+msgid "[ERROR_NOTCL] PaintTool.paint_poly() --> %s"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:959 flatcamTools/ToolPaint.py:1251
+msgid "Polygon Paint started ..."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:1107 flatcamTools/ToolPaint.py:1196
+#, python-format
+msgid ""
+"[ERROR] Could not do Paint All. Try a different combination of parameters. "
+"Or a different Method of paint\n"
+"%s"
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:1131
+msgid ""
+"[ERROR] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:1140
+msgid "[success] Paint All Done."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:1226
+msgid ""
+"[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
+"Usually it means that the tool diameter is too big for the painted "
+"geometry.\n"
+"Change the painting parameters and try again."
+msgstr ""
+
+#: flatcamTools/ToolPaint.py:1235
+msgid "[success] Paint All with Rest-Machining done."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:25
+msgid "Panelize PCB"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:58
+msgid ""
+"Specify the type of object to be panelized\n"
+"It can be of type: Gerber, Excellon or Geometry.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Object combobox."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:73
+msgid ""
+"Object to be panelized. This means that it will\n"
+"be duplicated in an array of rows and columns."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:91
+msgid ""
+"Specify the type of object to be used as an container for\n"
+"panelization. It can be: Gerber or Geometry type.\n"
+"The selection here decide the type of objects that will be\n"
+"in the Box Object combobox."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:106
+msgid ""
+"The actual object that is used a container for the\n"
+" selected object that is to be panelized."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:150
+msgid ""
+"Choose the type of object for the panel object:\n"
+"- Geometry\n"
+"- Gerber"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:158
+msgid "Constrain panel within:"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:192
+msgid "Panelize Object"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:194
+msgid ""
+"Panelize the specified object around the specified box.\n"
+"In other words it creates multiple copies of the source object,\n"
+"arranged in a 2D array of rows and columns."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:311
+#, python-format
+msgid "[WARNING]No object Box. Using instead %s"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:392
+msgid ""
+"[ERROR_NOTCL]Columns or Rows are zero value. Change them to a positive "
+"integer."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:417 flatcamTools/ToolPanelize.py:526
+msgid "Generating panel ... Please wait."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:520
+msgid "[success]Panel done..."
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:523
+#, python-brace-format
+msgid ""
+"[WARNING] Too big for the constrain area. Final panel has {col} columns and "
+"{row} rows"
+msgstr ""
+
+#: flatcamTools/ToolPanelize.py:531
+msgid "[success]Panel created successfully."
+msgstr ""
+
+#: flatcamTools/ToolProperties.py:103
+msgid "[ERROR_NOTCL] Properties Tool was not displayed. No object selected."
+msgstr ""
+
+#: flatcamTools/ToolProperties.py:110
+msgid "[success] Object Properties are displayed."
+msgstr ""
+
+#: flatcamTools/ToolProperties.py:111
+msgid "Properties Tool"
+msgstr ""
+
+#: flatcamTools/ToolShell.py:69
+msgid "...proccessing..."
+msgstr ""
+
+#: flatcamTools/ToolShell.py:71
+#, python-format
+msgid "...proccessing... [%s]"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:37
+msgid "Solder Paste Tool"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:65
+msgid "Gerber Solder paste object.                        "
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:72
+msgid ""
+"Tools pool from which the algorithm\n"
+"will pick the ones used for dispensing solder paste."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:87
+msgid ""
+"This is the Tool Number.\n"
+"The solder dispensing will start with the tool with the biggest \n"
+"diameter, continuing until there are no more Nozzle tools.\n"
+"If there are no longer tools but there are still pads not covered\n"
+" with solder paste, the app will issue a warning message box."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:94
+msgid ""
+"Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
+"is the width of the solder paste dispensed."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:101
+msgid "New Nozzle Tool"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:117
+msgid ""
+"Add a new nozzle tool to the Tool Table\n"
+"with the diameter specified above."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:129
+msgid "Generate solder paste dispensing geometry."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:142
+msgid "STEP 1"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:144
+msgid ""
+"First step is to select a number of nozzle tools for usage\n"
+"and then optionally modify the GCode parameters bellow."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:147
+msgid ""
+"Select tools.\n"
+"Modify parameters."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:290
+msgid "Generate GCode"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:292
+msgid ""
+"Generate GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:308
+msgid "STEP 2:"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:310
+msgid ""
+"Second step is to create a solder paste dispensing\n"
+"geometry out of an Solder Paste Mask Gerber file."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:326
+msgid "Geo Result:"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:328
+msgid ""
+"Geometry Solder Paste object.\n"
+"The name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:337
+msgid "STEP 3:"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:339
+msgid ""
+"Third step is to select a solder paste dispensing geometry,\n"
+"and then generate a CNCJob object.\n"
+"\n"
+"REMEMBER: if you want to create a CNCJob with new parameters,\n"
+"first you need to generate a geometry with those new params,\n"
+"and only after that you can generate an updated CNCJob."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:359
+msgid "CNC Result:"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:361
+msgid ""
+"CNCJob Solder paste object.\n"
+"In order to enable the GCode save section,\n"
+"the name of the object has to end in:\n"
+"'_solderpaste' as a protection."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:371
+msgid "View GCode"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:373
+msgid ""
+"View the generated GCode for Solder Paste dispensing\n"
+"on PCB pads."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:377
+msgid "Save GCode"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:379
+msgid ""
+"Save the generated GCode for Solder Paste dispensing\n"
+"on PCB pads, to a file."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:383
+msgid "STEP 4:"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:385
+msgid ""
+"Fourth step (and last) is to select a CNCJob made from \n"
+"a solder paste dispensing geometry, and then view/save it's GCode."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:413
+msgid "Delete Object"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:788
+msgid ""
+"[WARNING_NOTCL] Adding Nozzle tool cancelled. Tool already in Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:793
+msgid "[success] New Nozzle tool added to Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:835
+msgid "[success] Nozzle tool from Tool Table was edited."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:891
+msgid "[WARNING_NOTCL] Delete failed. Select a Nozzle tool to delete."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:896
+msgid "[success] Nozzle tool(s) deleted from Tool Table."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:951
+msgid "[WARNING_NOTCL] No SolderPaste mask Gerber object loaded."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:968
+msgid "Creating Solder Paste dispensing geometry."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:980
+msgid "[WARNING_NOTCL] No Nozzle tools in the tool table."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1106 flatcamTools/ToolSolderPaste.py:1161
+msgid "[ERROR_NOTCL] Cancelled. Empty file, it has no geometry..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1109
+msgid "[success] Solder Paste geometry generated successfully..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1115
+msgid ""
+"[WARNING_NOTCL] Some or all pads have no solder due of inadequate nozzle "
+"diameters..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1129
+msgid "Generating Solder Paste dispensing geometry..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1149
+msgid "[WARNING_NOTCL] There is no Geometry object available."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1153
+msgid ""
+"[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool "
+"geometry."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1258
+#, python-format
+msgid "[success] ToolSolderPaste CNCjob created: %s"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1290 flatcamTools/ToolSolderPaste.py:1294
+#: flatcamTools/ToolSolderPaste.py:1345
+msgid ""
+"[WARNING_NOTCL] This CNCJob object can't be processed. NOT a "
+"solder_paste_tool CNCJob object."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1317
+msgid "[ERROR_NOTCL] No Gcode in the object..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1326
+#, python-format
+msgid "[ERROR] ToolSolderPaste.on_view_gcode() -->%s"
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1355
+msgid "Export GCode ..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1363
+msgid "[WARNING_NOTCL] Export Machine Code cancelled ..."
+msgstr ""
+
+#: flatcamTools/ToolSolderPaste.py:1393
+#, python-format
+msgid "[success] Solder paste dispenser GCode file saved to: %s"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:23
+msgid "Object Transform"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:84
+msgid ""
+"Rotate the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:120 flatcamTools/ToolTransform.py:138
+msgid ""
+"Skew/shear the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:176 flatcamTools/ToolTransform.py:193
+msgid ""
+"Scale the selected object(s).\n"
+"The point of reference depends on \n"
+"the Scale reference checkbox state."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:202
+msgid ""
+"Scale the selected object(s)\n"
+"using the Scale Factor X for both axis."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:250 flatcamTools/ToolTransform.py:267
+msgid ""
+"Offset the selected object(s).\n"
+"The point of reference is the middle of\n"
+"the bounding box for all selected objects.\n"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:297 flatcamTools/ToolTransform.py:305
+msgid ""
+"Flip the selected object(s) over the X axis.\n"
+"Does not create a new object.\n"
+" "
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:637
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to rotate!"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:665
+msgid "CNCJob objects can't be rotated."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:674
+msgid "[success]Rotate done ..."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:689
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to flip!"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:724
+msgid "CNCJob objects can't be mirrored/flipped."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:735
+msgid "[success]Flip on the Y axis done ..."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:745
+msgid "[success]Flip on the X axis done ..."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:759
+msgid ""
+"[WARNING_NOTCL] No object selected. Please Select an object to shear/skew!"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:781
+msgid "CNCJob objects can't be skewed."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:793
+#, python-format
+msgid "[success]Skew on the %s axis done ..."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:808
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to scale!"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:841
+msgid "CNCJob objects can't be scaled."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:861
+msgid "[WARNING_NOTCL] No object selected. Please Select an object to offset!"
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:882
+msgid "CNCJob objects can't be offseted."
+msgstr ""
+
+#: flatcamTools/ToolTransform.py:894
+#, python-format
+msgid "[success]Offset on the %s axis done ..."
+msgstr ""
+
+#~ msgid ""
+#~ "How much (fraction) of the tool width to overlap each tool pass.\n"
+#~ "Example:\n"
+#~ "A value here of 0.25 means 25\\% from the tool diameter found above.\n"
+#~ "\n"
+#~ "Adjust the value starting with lower values\n"
+#~ "and increasing it if areas that should be painted are still \n"
+#~ "not painted.\n"
+#~ "Lower values = faster processing, faster execution on PCB.\n"
+#~ "Higher values = slow processing and slow execution on CNC\n"
+#~ "due of too many paths."
+#~ msgstr ""
+#~ "Cat de mult (fractie) din diametrul uneltei sa se suprapuna la fiecare "
+#~ "trecere a uneltei.\n"
+#~ "Exemplu:\n"
+#~ "O valoare aici de 0.25 inseamna 25\\% din diametrul uneltei de mai sus.\n"
+#~ "\n"
+#~ "Ajusteaza valoarea incepand de la valori mici si pe urma creste daca "
+#~ "ariile care ar trebui\n"
+#~ " >pictate< inca nu sunt procesate.\n"
+#~ "Valori scazute = procesare rapida,executie rapida a PCB-ului.\n"
+#~ "Valori mari= procesare lenta cat si o executie la fel de lenta a PCB-"
+#~ "ului,\n"
+#~ "datorita numarului mai mare de treceri-taiere."
+
+#, fuzzy
+#~| msgid "z_toolchange = Z coord for Toolchange"
+#~ msgid "z_cut = Z coord for Toolchange"
+#~ msgstr "z_toolchange = Z coord for Toolchange"
+
+#, fuzzy
+#~| msgid "z_toolchange = Z coord for Toolchange"
+#~ msgid "z_move = Z coord for Toolchange"
+#~ msgstr "z_toolchange = Z coord for Toolchange"
+
+#~ msgid "%s/Project_%s"
+#~ msgstr "%s/Proiect_%s"
+
+#~ msgid "tool_tab"
+#~ msgstr "tool_tab"

+ 8 - 2
make_win.py

@@ -2,10 +2,10 @@
 # FlatCAM: 2D Post-processing for Manufacturing            #
 # http://flatcam.org                                       #
 # Author: Juan Pablo Caram (c)                             #
-# Date: 12/20/2018                                           #
+# Date: 12/20/2018                                         #
 # MIT Licence                                              #
 #                                                          #
-# Creates a portable copy of FlatCAM, including Python    #
+# Creates a portable copy of FlatCAM, including Python     #
 # itself and all dependencies.                             #
 #                                                          #
 # This is not an aid to install FlatCAM from source on     #
@@ -13,6 +13,12 @@
 # and running and ready to be packaged.                    #
 ############################################################
 
+############################################################
+# File Modified (major mod): Marius Adrian Stanciu         #
+# Date: 3/10/2019                                          #
+############################################################
+
+
 # Files not needed: Qt, tk.dll, tcl.dll, tk/, tcl/, vtk/,
 #   scipy.lib.lapack.flapack.pyd, scipy.lib.blas.fblas.pyd,
 #   numpy.core._dotblas.pyd, scipy.sparse.sparsetools._bsr.pyd,

+ 8 - 0
postprocessors/Paste_1.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/Repetier.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/Roland_MDX_20.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/Toolchange_Custom.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/Toolchange_Probe_MACH3.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/Toolchange_manual.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/default.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Matthieu Berthomé                           #
+# Date: 5/26/2017                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/grbl_11.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Matthieu Berthomé                           #
+# Date: 5/26/2017                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 9 - 1
postprocessors/grbl_laser.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Matthieu Berthomé                           #
+# Date: 5/26/2017                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 # This post processor is configured to output code that
@@ -42,7 +50,7 @@ class grbl_laser(FlatCAMPostProc):
         return ''
 
     def lift_code(self, p):
-        return 'M05'
+        return 'M05 S0'
 
     def down_code(self, p):
         if p.spindlespeed:

+ 8 - 0
postprocessors/hpgl.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/line_xyz.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

+ 8 - 0
postprocessors/marlin.py

@@ -1,3 +1,11 @@
+############################################################
+# FlatCAM: 2D Post-processing for Manufacturing            #
+# http://flatcam.org                                       #
+# File Author: Marius Adrian Stanciu (c)                   #
+# Date: 3/10/2019                                          #
+# MIT Licence                                              #
+############################################################
+
 from FlatCAMPostProc import *
 
 

BIN
share/cut16_bis.png


BIN
share/cut32_bis.png


BIN
share/language32.png


BIN
share/ncc16.png


+ 17 - 0
tclCommands/TclCommandDrillcncjob.py

@@ -81,6 +81,11 @@ class TclCommandDrillcncjob(TclCommandSignaled):
         if not isinstance(obj, FlatCAMExcellon):
             self.raise_tcl_error('Expected FlatCAMExcellon, got %s %s.' % (name, type(obj)))
 
+        xmin = obj.options['xmin']
+        ymin = obj.options['ymin']
+        xmax = obj.options['xmax']
+        ymax = obj.options['ymax']
+
         def job_init(job_obj, app_obj):
 
             drillz = args["drillz"] if "drillz" in args else obj.options["drillz"]
@@ -93,10 +98,22 @@ class TclCommandDrillcncjob(TclCommandSignaled):
             job_obj.pp_excellon_name = args["ppname_e"] if "ppname_e" in args \
                 else obj.options["ppname_e"]
 
+            job_obj.coords_decimals = int(self.app.defaults["cncjob_coords_decimals"])
+            job_obj.fr_decimals = int(self.app.defaults["cncjob_fr_decimals"])
+
+            job_obj.options['type'] = 'Excellon'
+
             toolchange = True if "toolchange" in args and args["toolchange"] == 1 else False
             toolchangez = args["toolchangez"] if "toolchangez" in args else obj.options["toolchangez"]
             job_obj.toolchangexy = args["toolchangexy"] if "toolchangexy" in args else obj.options["toolchangexy"]
 
+            job_obj.toolchange_xy_type = "excellon"
+
+            job_obj.options['xmin'] = xmin
+            job_obj.options['ymin'] = ymin
+            job_obj.options['xmax'] = xmax
+            job_obj.options['ymax'] = ymax
+
             endz = args["endz"] if "endz" in args else obj.options["endz"]
 
             tools = args["tools"] if "tools" in args else 'all'

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików