Skip to content

Commit e2b2449

Browse files
authored
Merge pull request #31 from 5axes/release
Add French Translation
2 parents 0802dc2 + 27308d8 commit e2b2449

File tree

3 files changed

+362
-6
lines changed

3 files changed

+362
-6
lines changed

MeshTools.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,7 @@
4040
from .SetTransformMatrixOperation import SetTransformMatrixOperation
4141
from .SetParentOperationSimplified import SetParentOperationSimplified
4242
from .SetMeshDataAndNameOperation import SetMeshDataAndNameOperation
43-
44-
from UM.i18n import i18nCatalog
45-
catalog = i18nCatalog("meshtools")
46-
43+
4744
import os
4845
import sys
4946
import numpy
@@ -53,6 +50,18 @@
5350

5451
from typing import Optional, List, Dict
5552

53+
from UM.Resources import Resources
54+
from UM.i18n import i18nCatalog
55+
56+
Resources.addSearchPath(
57+
os.path.join(os.path.abspath(os.path.dirname(__file__)))
58+
) # Plugin translation file import
59+
60+
catalog = i18nCatalog("meshtools")
61+
62+
if catalog.hasTranslationLoaded():
63+
Logger.log("i", "Mesh-Tool Plugin translation loaded!")
64+
5665
class MeshTools(Extension, QObject,):
5766
def __init__(self, parent = None) -> None:
5867
QObject.__init__(self, parent)
@@ -319,9 +328,9 @@ def analyseMeshes(self) -> None:
319328
for node in nodes_list:
320329
tri_node = self._toTriMesh(node.getMeshDataTransformed())
321330
message_body = message_body + "\n - %s:" % node.getName()
322-
message_body += "\n\t" + "%d vertices, %d faces" % (len(tri_node.vertices), len(tri_node.faces))
331+
message_body += "\n\t" + catalog.i18nc("@info:status", "%d vertices, %d faces") % (len(tri_node.vertices), len(tri_node.faces))
323332
if tri_node.is_watertight:
324-
message_body += "\n\t" + "area: %d mm2, volume: %d mm3" % (tri_node.area, tri_node.volume)
333+
message_body += "\n\t" + catalog.i18nc("@info:status", "area: %d mm2, volume: %d mm3") % (tri_node.area, tri_node.volume)
325334

326335
self._message.setText(message_body)
327336
self._message.show()

i18n/fr_FR/LC_MESSAGES/meshtools.mo

6.36 KB
Binary file not shown.

i18n/fr_FR/meshtools.po

Lines changed: 347 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,347 @@
1+
# SOME DESCRIPTIVE TITLE.
2+
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3+
# This file is distributed under the same license as the Mesh Tools package.
4+
# 5axes <[email protected]>, 2023.
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Mesh Tools\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2022-04-28 13:00+0000\n"
10+
"PO-Revision-Date: 2023-02-27 17:07+0200\n"
11+
"Last-Translator: 5axes <[email protected]>\n"
12+
"Language-Team: 5axes\n"
13+
"Language: fr\n"
14+
"MIME-Version: 1.0\n"
15+
"Content-Type: text/plain; charset=UTF-8\n"
16+
"Content-Transfer-Encoding: 8bit\n"
17+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
18+
"X-Generator: Virtaal 0.7.1\n"
19+
20+
#: MeshTools.py:81 qml_qt5/MeshToolsMenu.qml:18 qml/MeshToolsMenu.qml:19
21+
msgctxt "@item:inmenu"
22+
msgid "Reload model"
23+
msgstr "Recharger le modèle"
24+
25+
#: MeshTools.py:82 qml_qt5/MeshToolsMenu.qml:24 qml/MeshToolsMenu.qml:25
26+
msgctxt "@item:inmenu"
27+
msgid "Rename model..."
28+
msgstr "Renommer modèle..."
29+
30+
#: MeshTools.py:83
31+
msgctxt "@item:inmenu"
32+
msgid "Replace models..."
33+
msgstr "Remplacer modèles..."
34+
35+
#: MeshTools.py:85
36+
msgctxt "@item:inmenu"
37+
msgid "Check models"
38+
msgstr "Vérifier les modèles"
39+
40+
#: MeshTools.py:86
41+
msgctxt "@item:inmenu"
42+
msgid "Analyse models"
43+
msgstr "Analyser les modèles"
44+
45+
#: MeshTools.py:327
46+
#, python-format
47+
msgctxt "@info:status"
48+
msgid "%d vertices, %d faces"
49+
msgstr "%d sommets, %d faces"
50+
51+
#: MeshTools.py:329
52+
#, python-format
53+
msgctxt "@info:status"
54+
msgid "area: %d mm2, volume: %d mm3"
55+
msgstr "surface: %d mm2, volume: %d mm3"
56+
57+
#: MeshTools.py:87 qml_qt5/MeshToolsMenu.qml:49 qml/MeshToolsMenu.qml:50
58+
msgctxt "@item:inmenu"
59+
msgid "Fix simple holes"
60+
msgstr "Boucher les trous simples"
61+
62+
#: MeshTools.py:88 qml_qt5/MeshToolsMenu.qml:55 qml/MeshToolsMenu.qml:56
63+
msgctxt "@item:inmenu"
64+
msgid "Fix model normals"
65+
msgstr "Recalculer les normales du modèle"
66+
67+
#: MeshTools.py:89 qml_qt5/MeshToolsMenu.qml:61 qml/MeshToolsMenu.qml:62
68+
msgctxt "@item:inmenu"
69+
msgid "Split model into parts"
70+
msgid_plural "Split models into parts"
71+
msgstr[0] "Diviser le modèle en plusieurs parties"
72+
msgstr[1] "Diviser les modèles en plusieurs parties"
73+
74+
#: MeshTools.py:91 qml_qt5/MeshToolsMenu.qml:68 qml/MeshToolsMenu.qml:69
75+
msgctxt "@item:inmenu"
76+
msgid "Randomise location"
77+
msgstr "Localisation aléatoire"
78+
79+
#: MeshTools.py:92 qml_qt5/MeshToolsMenu.qml:74 qml/MeshToolsMenu.qml:75
80+
msgctxt "@item:inmenu"
81+
msgid "Apply transformations to mesh"
82+
msgstr "Appliquer les transformations au maillage"
83+
84+
#: MeshTools.py:93 qml_qt5/MeshToolsMenu.qml:80 qml/MeshToolsMenu.qml:81
85+
msgctxt "@item:inmenu"
86+
msgid "Reset origin to center of mesh"
87+
msgstr "Remettre l'origine au centre du maillage"
88+
89+
#: MeshTools.py:95
90+
msgctxt "@item:inmenu"
91+
msgid "Mesh Tools settings..."
92+
msgstr "Paramètres de Mesh Tools..."
93+
94+
#: MeshTools.py:97 MeshTools.py:138 MeshTools.py:212
95+
msgctxt "@info:title"
96+
msgid "Mesh Tools"
97+
msgstr "Mesh Tools"
98+
99+
#: MeshTools.py:206 MeshTools.py:483 MeshTools.py:547
100+
msgctxt "@text Print job name"
101+
msgid "Untitled"
102+
msgstr "Sans Nom"
103+
104+
#: MeshTools.py:213
105+
#, python-format
106+
msgctxt "@info:status"
107+
msgid "Model %s is not watertight, and may not print properly."
108+
msgstr ""
109+
"Le modèle %s n'est pas étanche et risque de ne pas s'imprimer correctement."
110+
111+
#: MeshTools.py:218
112+
msgctxt "@info:status"
113+
msgid "Check X-Ray View and repair the model before printing it."
114+
msgstr "Vérifiez la vue aux Rayons-X et réparez le modèle avant de l'imprimer."
115+
116+
#: MeshTools.py:219
117+
msgctxt "@action:button"
118+
msgid "Show X-Ray View"
119+
msgstr "Afficher la vue aux Rayons-X"
120+
121+
#: MeshTools.py:222
122+
msgctxt "@info:status"
123+
msgid "Repair the model before printing it."
124+
msgstr "Réparez le modèle avant de l'imprimer."
125+
126+
#: MeshTools.py:260
127+
msgctxt "@info:status"
128+
msgid "Please select a single model first"
129+
msgstr "Sélectionnez tout d'abord une pièce"
130+
131+
#: MeshTools.py:265 MeshTools.py:283
132+
msgctxt "@info:status"
133+
msgid "Please select one or more models first"
134+
msgstr "Sélectionnez tout d'abord des pièces"
135+
136+
#: MeshTools.py:294
137+
msgctxt "@info:status"
138+
msgid "Check summary:"
139+
msgstr "Résumé de la vérification :"
140+
141+
#: MeshTools.py:299
142+
msgctxt "@info:status"
143+
msgid "is watertight"
144+
msgstr "est étanche"
145+
146+
#: MeshTools.py:301
147+
msgctxt "@info:status"
148+
msgid "is not watertight and may not print properly"
149+
msgstr "n'est pas étanche et peut ne pas imprimer correctement"
150+
151+
#: MeshTools.py:303
152+
#, python-brace-format
153+
msgctxt "@info:status"
154+
msgid "and consists of {body_count} submeshes"
155+
msgstr "et consiste en {body_count} sous-ensembles"
156+
157+
#: MeshTools.py:314
158+
msgctxt "@info:status"
159+
msgid "Analysis summary:"
160+
msgstr "Résumé de l'analyse :"
161+
162+
#: MeshTools.py:336
163+
msgctxt "@info:status"
164+
msgid "The mesh needs more extensive repair to become watertight"
165+
msgstr ""
166+
"La maille a besoin de réparations plus importantes pour devenir étanche."
167+
168+
#: MeshTools.py:356
169+
msgctxt "@info:status"
170+
msgid "Split result:"
171+
msgstr "Résultat du fractionnement :"
172+
173+
#: MeshTools.py:362
174+
#, python-format
175+
msgctxt "@info:status"
176+
msgid "was split in %d submeshes"
177+
msgstr "a été divisé en %d sous-maillages"
178+
179+
#: MeshTools.py:364
180+
msgctxt "@info:status"
181+
msgid "could not be split into submeshes"
182+
msgstr "n'a pas pu être divisé en sous-ensembles"
183+
184+
#: MeshTools.py:378
185+
msgctxt "@info:status"
186+
msgid "Replacing a group is not supported"
187+
msgstr "Le remplacement d'un groupe n'est pas pris en charge"
188+
189+
#: MeshTools.py:399 MeshTools.py:404
190+
msgctxt "@title:window"
191+
msgid "Select Replacement Mesh File"
192+
msgstr "Sélectionnez le fichier de maillage de remplacement"
193+
194+
#: MeshTools.py:448
195+
msgctxt "@info:status"
196+
msgid "Reloading a group is not supported"
197+
msgstr "Le rechargement d'un groupe n'est pas pris en charge"
198+
199+
#: MeshTools.py:455
200+
msgctxt "@info:status"
201+
msgid "No link to the original file was found"
202+
msgstr "Aucun lien vers le fichier original n'a été trouvé"
203+
204+
#: MeshTools.py:467
205+
msgctxt "@info:status"
206+
msgid "Failed to load mesh"
207+
msgstr "Échec du chargement du maillage"
208+
209+
#: MeshTools.py:474
210+
msgctxt "@info:status"
211+
msgid "Replacing meshes with a group of meshes is not supported"
212+
msgstr ""
213+
"Le remplacement des maillages par un groupe de maillages n'est pas pris en "
214+
"charge."
215+
216+
#: qml_qt5/RenameDialog.qml:24 qml/RenameDialog.qml:25
217+
msgctxt "@title:window"
218+
msgid "Rename"
219+
msgstr "Renommer"
220+
221+
#: qml_qt5/RenameDialog.qml:25 qml/RenameDialog.qml:26
222+
msgctxt "@info"
223+
msgid "Please provide a new name."
224+
msgstr "Veuillez indiquer un nouveau nom."
225+
226+
#: qml_qt5/RenameDialog.qml:74 qml/RenameDialog.qml:66
227+
msgctxt "@action:button"
228+
msgid "Cancel"
229+
msgstr "Annuler"
230+
231+
#: qml_qt5/RenameDialog.qml:79 qml/RenameDialog.qml:72
232+
msgctxt "@action:button"
233+
msgid "OK"
234+
msgstr "OK"
235+
236+
#: qml_qt5/MeshToolsMenu.qml:30 qml/MeshToolsMenu.qml:31
237+
msgctxt "@item:inmenu"
238+
msgid "Replace model..."
239+
msgid_plural "Replace models..."
240+
msgstr[0] "Remplacer modèle..."
241+
msgstr[1] "Remplacer modèles..."
242+
243+
#: qml_qt5/MeshToolsMenu.qml:37 qml/MeshToolsMenu.qml:38
244+
msgctxt "@item:inmenu"
245+
msgid "Check mesh"
246+
msgid_plural "Check meshes"
247+
msgstr[0] "Vérifier le maillage"
248+
msgstr[1] "Vérifier les maillages"
249+
250+
#: qml_qt5/MeshToolsMenu.qml:43 qml/MeshToolsMenu.qml:44
251+
msgctxt "@item:inmenu"
252+
msgid "Analyse mesh"
253+
msgid_plural "Analyse meshes"
254+
msgstr[0] "Analyser maillage"
255+
msgstr[1] "Analyser maillages"
256+
257+
#: qml_qt5/SettingsDialog.qml:17 qml/SettingsDialog.qml:15
258+
msgctxt "@title:window"
259+
msgid "Mesh Tools Settings"
260+
msgstr "Paramètres du plugin"
261+
262+
#: qml_qt5/SettingsDialog.qml:51 qml/SettingsDialog.qml:49
263+
msgctxt "@info:tooltip"
264+
msgid "Check if models are watertight when loading them"
265+
msgstr "Vérifier l'étanchéité des modèles lors de leur chargement"
266+
267+
#: qml_qt5/SettingsDialog.qml:55 qml/SettingsDialog.qml:53
268+
msgctxt "@option:check"
269+
msgid "Check models on load"
270+
msgstr "Vérifier les modèles au chargement"
271+
272+
#: qml_qt5/SettingsDialog.qml:65 qml/SettingsDialog.qml:63
273+
msgctxt "@info:tooltip"
274+
msgid "Always recalculate model normals when loading them"
275+
msgstr "Toujours recalculer les normales des modèles lors de leur chargement"
276+
277+
#: qml_qt5/SettingsDialog.qml:69 qml/SettingsDialog.qml:67
278+
msgctxt "@option:check"
279+
msgid "Fix normals on load"
280+
msgstr "Corriger les normales au chargement"
281+
282+
#: qml_qt5/SettingsDialog.qml:82 qml/SettingsDialog.qml:80
283+
msgctxt "@info:tooltip"
284+
msgid ""
285+
"Unit to convert meshes from when the file does not specify a unit (such as "
286+
"STL files). All units will be converted to millimeters."
287+
msgstr ""
288+
"Unité à partir de laquelle convertir les mailles lorsque le fichier ne "
289+
"spécifie pas d'unité (comme les fichiers STL). Toutes les unités seront "
290+
"converties en millimètres."
291+
292+
#: qml_qt5/SettingsDialog.qml:90 qml/SettingsDialog.qml:88
293+
msgctxt "@window:text"
294+
msgid "Unit for files that don't specify a unit:"
295+
msgstr "Unité pour les fichiers qui ne spécifient pas d'unité :"
296+
297+
#: qml_qt5/SettingsDialog.qml:104 qml/SettingsDialog.qml:96
298+
msgctxt "@option:unit"
299+
msgid "Micron"
300+
msgstr "Micron"
301+
302+
#: qml_qt5/SettingsDialog.qml:105 qml/SettingsDialog.qml:97
303+
msgctxt "@option:unit"
304+
msgid "Millimeter (default)"
305+
msgstr "Millimètre (défaut)"
306+
307+
#: qml_qt5/SettingsDialog.qml:106 qml/SettingsDialog.qml:98
308+
msgctxt "@option:unit"
309+
msgid "Centimeter"
310+
msgstr "Centimètre"
311+
312+
#: qml_qt5/SettingsDialog.qml:107 qml/SettingsDialog.qml:99
313+
msgctxt "@option:unit"
314+
msgid "Meter"
315+
msgstr "Mètre"
316+
317+
#: qml_qt5/SettingsDialog.qml:108 qml/SettingsDialog.qml:100
318+
msgctxt "@option:unit"
319+
msgid "Inch"
320+
msgstr "Pouce"
321+
322+
#: qml_qt5/SettingsDialog.qml:109 qml/SettingsDialog.qml:101
323+
msgctxt "@option:unit"
324+
msgid "Feet"
325+
msgstr "Pied"
326+
327+
#: qml_qt5/SettingsDialog.qml:140 qml/SettingsDialog.qml:143
328+
msgctxt "@info:tooltip"
329+
msgid "Place models at a random location on the build plate when loading them"
330+
msgstr ""
331+
"Placez les modèles à une position aléatoire sur le plateau d'impression "
332+
"lorsque vous les chargez."
333+
334+
#: qml_qt5/SettingsDialog.qml:144 qml/SettingsDialog.qml:147
335+
msgctxt "@option:check"
336+
msgid "Randomize position on load"
337+
msgstr "Position aléatoire au chargement"
338+
339+
#: qml_qt5/SettingsDialog.qml:155 qml/SettingsDialog.qml:158
340+
msgctxt "@action:button"
341+
msgid "Close"
342+
msgstr "Fermer"
343+
344+
#: qml/MeshToolsMenu.qml:15
345+
msgctxt "@item:inmenu"
346+
msgid "Mesh Tools"
347+
msgstr "Mesh Tools"

0 commit comments

Comments
 (0)