diff -r 5df7b3d404e8 -r b5c0a10145f1 i18n/Beremiz_fr_FR.po --- a/i18n/Beremiz_fr_FR.po Thu Jun 22 16:08:50 2017 +0300 +++ b/i18n/Beremiz_fr_FR.po Thu Jun 22 16:43:38 2017 +0300 @@ -2,43 +2,23 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Beremiz\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-26 22:55+0100\n" -"PO-Revision-Date: 2013-03-26 23:08+0100\n" -"Last-Translator: Laurent BESSARD \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2017-03-09 15:28+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Fabien M , 2017\n" +"Language-Team: French (France) (https://www.transifex.com/beremiz/teams/75746/fr_FR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" - -#: ../PLCOpenEditor.py:405 -msgid "" -"\n" -"An error has occurred.\n" -"\n" -"Click OK to save an error report.\n" -"\n" -"Please be kind enough to send this file to:\n" -"edouard.tisserant@gmail.com\n" -"\n" -"Error:\n" -msgstr "" -"\n" -"Une erreur est apparue.\n" -"\n" -"Appuyer sur 'Valider' pour enregistrer un rapport d'erreur.\n" -"\n" -"Envoyez ce fichier à l'adresse :\n" -"edouard.tisserant@gmail.com\n" -"\n" -"Erreur:\n" - -#: ../Beremiz.py:1119 +"Language: fr_FR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: ../PLCOpenEditor.py:408 ../Beremiz.py:1191 #, python-format msgid "" "\n" @@ -48,223 +28,167 @@ "Please be kind enough to send this file to:\n" "beremiz-devel@lists.sourceforge.net\n" "\n" -"You should now restart Beremiz.\n" +"You should now restart program.\n" "\n" "Traceback:\n" msgstr "" "\n" -"Une erreur inconnue (bug) est apparu. Le rapport d'erreur a été sauvé dans :\n" +"Une exception non gérée (bug) est survenue. Le bug est inscrit dans :\n" "(%s)\n" "\n" -"Envoyez ce fichier à l'adresse :\n" +"S'il vous plaît, soyez sympa et envoyez ce fichier à :\n" "beremiz-devel@lists.sourceforge.net\n" "\n" -"Vous devriez redémarrer Beremiz.\n" -"\n" -"Trace d'exécution:\n" - -#: ../controls/VariablePanel.py:77 +"Vous devriez redémarrer le programme.\n" +"Trace:\n" + +#: ../controls/VariablePanel.py:72 msgid " External" msgstr " Externe" -#: ../controls/VariablePanel.py:76 +#: ../controls/VariablePanel.py:71 msgid " InOut" msgstr " Entrée-Sortie" -#: ../controls/VariablePanel.py:76 +#: ../controls/VariablePanel.py:71 msgid " Input" msgstr " Entrée" -#: ../controls/VariablePanel.py:77 +#: ../controls/VariablePanel.py:72 msgid " Local" msgstr " Locale" -#: ../controls/VariablePanel.py:76 +#: ../controls/VariablePanel.py:71 msgid " Output" msgstr " Sortie" -#: ../controls/VariablePanel.py:78 +#: ../controls/VariablePanel.py:73 msgid " Temp" msgstr " Temporaire" -#: ../PLCOpenEditor.py:415 -msgid " : " -msgstr " : " - -#: ../dialogs/PouTransitionDialog.py:94 -#: ../dialogs/PouActionDialog.py:91 -#: ../dialogs/PouDialog.py:111 -#: ../dialogs/SFCTransitionDialog.py:144 +#: ../dialogs/PouTransitionDialog.py:99 ../dialogs/ProjectDialog.py:66 +#: ../dialogs/PouActionDialog.py:91 ../dialogs/PouDialog.py:113 #, python-format msgid " and %s" msgstr " et %s" -#: ../ProjectController.py:917 +#: ../ProjectController.py:1110 msgid " generation failed !\n" msgstr "la construction a échouée !\n" -#: ../plcopen/plcopen.py:1051 +#: ../plcopen/plcopen.py:881 #, python-format msgid "\"%s\" Data Type doesn't exist !!!" msgstr "Le type de donnée \"%s\" n'existe pas !!!" -#: ../plcopen/plcopen.py:1069 +#: ../plcopen/plcopen.py:899 #, python-format msgid "\"%s\" POU already exists !!!" msgstr "Le POU \"%s\" existe déjà !!!" -#: ../plcopen/plcopen.py:1090 +#: ../plcopen/plcopen.py:920 #, python-format msgid "\"%s\" POU doesn't exist !!!" msgstr "Le POU \"%s\" n'existe pas !!!" -#: ../editors/Viewer.py:234 +#: ../editors/Viewer.py:246 #, python-format msgid "\"%s\" can't use itself!" msgstr "\"%s\" ne peut pas s'utiliser lui-même !" -#: ../IDEFrame.py:1587 -#: ../IDEFrame.py:1606 +#: ../IDEFrame.py:1651 ../IDEFrame.py:1670 #, python-format msgid "\"%s\" config already exists!" msgstr "La configuration \"%s\" existe déjà !" -#: ../plcopen/plcopen.py:315 +#: ../plcopen/plcopen.py:467 #, python-format msgid "\"%s\" configuration already exists !!!" msgstr "La configuration \"%s\" existe déjà !!!" -#: ../IDEFrame.py:1541 +#: ../IDEFrame.py:1601 #, python-format msgid "\"%s\" data type already exists!" msgstr "Le type de données \"%s\" existe déjà !" -#: ../PLCControler.py:2165 -#: ../PLCControler.py:2169 -#, python-format -msgid "\"%s\" element can't be pasted here!!!" -msgstr "L'élément \"%s\" ne peut être collé ici !!!" - -#: ../editors/TextViewer.py:298 -#: ../editors/TextViewer.py:318 -#: ../editors/Viewer.py:250 -#: ../dialogs/PouTransitionDialog.py:105 -#: ../dialogs/ConnectionDialog.py:157 -#: ../dialogs/PouActionDialog.py:102 -#: ../dialogs/FBDBlockDialog.py:162 +#: ../dialogs/PouTransitionDialog.py:110 ../dialogs/BlockPreviewDialog.py:219 +#: ../dialogs/PouActionDialog.py:102 ../editors/Viewer.py:262 +#: ../editors/Viewer.py:330 ../editors/Viewer.py:354 ../editors/Viewer.py:374 +#: ../editors/TextViewer.py:272 ../editors/TextViewer.py:301 +#: ../controls/VariablePanel.py:396 #, python-format msgid "\"%s\" element for this pou already exists!" msgstr "Un élément \"%s\" existe déjà dans ce POU !" -#: ../Beremiz.py:921 +#: ../Beremiz.py:994 #, python-format msgid "\"%s\" folder is not a valid Beremiz project\n" msgstr "Le dossier \"%s\" ne contient pas de projet Beremiz valide\n" -#: ../plcopen/structures.py:105 -#, python-format -msgid "\"%s\" function cancelled in \"%s\" POU: No input connected" -msgstr "L'appel à la fonction \"%s\" dans le POU \"%s\" a été abandonné : aucune entrée connectée" - -#: ../controls/VariablePanel.py:659 -#: ../IDEFrame.py:1532 -#: ../editors/DataTypeEditor.py:554 -#: ../editors/DataTypeEditor.py:583 -#: ../dialogs/PouNameDialog.py:49 -#: ../dialogs/PouTransitionDialog.py:101 -#: ../dialogs/SFCStepNameDialog.py:51 -#: ../dialogs/ConnectionDialog.py:153 -#: ../dialogs/FBDVariableDialog.py:199 -#: ../dialogs/PouActionDialog.py:98 -#: ../dialogs/PouDialog.py:118 -#: ../dialogs/SFCStepDialog.py:122 -#: ../dialogs/FBDBlockDialog.py:158 +#: ../dialogs/SFCStepNameDialog.py:52 ../dialogs/PouTransitionDialog.py:106 +#: ../dialogs/BlockPreviewDialog.py:207 ../dialogs/PouNameDialog.py:50 +#: ../dialogs/PouActionDialog.py:98 ../dialogs/PouDialog.py:120 +#: ../editors/ResourceEditor.py:449 ../editors/ResourceEditor.py:484 +#: ../editors/DataTypeEditor.py:555 ../editors/DataTypeEditor.py:584 +#: ../editors/CodeFileEditor.py:770 ../controls/VariablePanel.py:763 +#: ../IDEFrame.py:1592 #, python-format msgid "\"%s\" is a keyword. It can't be used!" msgstr "\"%s\" est un mot réservé. Il ne peut être utilisé !" -#: ../editors/Viewer.py:238 -#, python-format -msgid "\"%s\" is already used by \"%s\"!" -msgstr "\"%s\" est déjà utilisé par \"%s\" !" - -#: ../plcopen/plcopen.py:2836 +#: ../plcopen/plcopen.py:2412 #, python-format msgid "\"%s\" is an invalid value!" msgstr "\"%s\" n'est pas une valeur valide !" -#: ../PLCOpenEditor.py:341 -#: ../PLCOpenEditor.py:378 +#: ../PLCOpenEditor.py:339 ../PLCOpenEditor.py:381 #, python-format msgid "\"%s\" is not a valid folder!" msgstr "\"%s\" n'est pas un répertoire valide !" -#: ../controls/VariablePanel.py:657 -#: ../IDEFrame.py:1530 -#: ../editors/DataTypeEditor.py:578 -#: ../dialogs/PouNameDialog.py:47 -#: ../dialogs/PouTransitionDialog.py:99 -#: ../dialogs/SFCStepNameDialog.py:49 -#: ../dialogs/ConnectionDialog.py:151 -#: ../dialogs/PouActionDialog.py:96 -#: ../dialogs/PouDialog.py:116 -#: ../dialogs/SFCStepDialog.py:120 -#: ../dialogs/FBDBlockDialog.py:156 +#: ../dialogs/SFCStepNameDialog.py:50 ../dialogs/PouTransitionDialog.py:104 +#: ../dialogs/BlockPreviewDialog.py:203 ../dialogs/PouNameDialog.py:48 +#: ../dialogs/PouActionDialog.py:96 ../dialogs/PouDialog.py:118 +#: ../editors/ResourceEditor.py:447 ../editors/ResourceEditor.py:482 +#: ../editors/DataTypeEditor.py:579 ../editors/CodeFileEditor.py:768 +#: ../controls/VariablePanel.py:761 ../IDEFrame.py:1590 #, python-format msgid "\"%s\" is not a valid identifier!" msgstr "\"%s\" n'est pas un identifiant valide !" -#: ../IDEFrame.py:221 -#: ../IDEFrame.py:2313 -#: ../IDEFrame.py:2332 -#, python-format -msgid "\"%s\" is used by one or more POUs. It can't be removed!" -msgstr "Le POU \"%s\" est utilisé par un ou plusieurs POUs. Il ne peut être supprimé !" - -#: ../controls/VariablePanel.py:313 -#: ../IDEFrame.py:1550 -#: ../editors/TextViewer.py:296 -#: ../editors/TextViewer.py:316 -#: ../editors/TextViewer.py:353 -#: ../editors/Viewer.py:248 -#: ../editors/Viewer.py:293 -#: ../editors/Viewer.py:311 -#: ../dialogs/ConnectionDialog.py:155 -#: ../dialogs/PouDialog.py:120 -#: ../dialogs/FBDBlockDialog.py:160 +#: ../IDEFrame.py:2395 +#, python-format +msgid "\"%s\" is used by one or more POUs. Do you wish to continue?" +msgstr "" +"\"%s\" est utilisé par un POU ou plus. Souhaitez vous continuer malgré tout " +"?" + +#: ../dialogs/BlockPreviewDialog.py:211 ../dialogs/PouDialog.py:122 +#: ../editors/Viewer.py:260 ../editors/Viewer.py:315 ../editors/Viewer.py:345 +#: ../editors/Viewer.py:367 ../editors/TextViewer.py:270 +#: ../editors/TextViewer.py:299 ../editors/TextViewer.py:350 +#: ../editors/TextViewer.py:373 ../controls/VariablePanel.py:338 +#: ../IDEFrame.py:1610 #, python-format msgid "\"%s\" pou already exists!" msgstr "Le POU \"%s\" existe déjà !" -#: ../plcopen/plcopen.py:346 -#, python-format -msgid "\"%s\" resource already exists in \"%s\" configuration !!!" -msgstr "La ressource \"%s\" existe déjà dans la configuration \"%s\" !!!" - -#: ../plcopen/plcopen.py:362 -#, python-format -msgid "\"%s\" resource doesn't exist in \"%s\" configuration !!!" -msgstr "La ressource \"%s\" n'existe pas dans la configuration \"%s\" !!!" - -#: ../dialogs/SFCStepNameDialog.py:57 -#: ../dialogs/SFCStepDialog.py:128 +#: ../dialogs/SFCStepNameDialog.py:58 #, python-format msgid "\"%s\" step already exists!" msgstr "L'étape \"%s\" existe déjà !" -#: ../editors/DataTypeEditor.py:549 +#: ../editors/DataTypeEditor.py:550 #, python-format msgid "\"%s\" value already defined!" msgstr "La valeur \"%s\" est déjà définie !" -#: ../editors/DataTypeEditor.py:744 -#: ../dialogs/ArrayTypeDialog.py:97 +#: ../dialogs/ArrayTypeDialog.py:97 ../editors/DataTypeEditor.py:745 #, python-format msgid "\"%s\" value isn't a valid array dimension!" msgstr "\"%s\" n'est pas une dimension de tableau valide !" -#: ../editors/DataTypeEditor.py:751 -#: ../dialogs/ArrayTypeDialog.py:103 +#: ../dialogs/ArrayTypeDialog.py:103 ../editors/DataTypeEditor.py:752 #, python-format msgid "" "\"%s\" value isn't a valid array dimension!\n" @@ -273,202 +197,252 @@ "\"%s\" n'est pas une dimension de tableau valide !\n" "La valeur de droite doit être supérieur à celle de gauche." -#: ../PLCControler.py:847 -#, python-format -msgid "%s \"%s\" can't be pasted as a %s." -msgstr "Le %s \"%s\" ne peut être collé en tant que %s." - -#: ../PLCControler.py:1476 +#: ../PLCGenerator.py:1101 +#, python-brace-format +msgid "\"{a1}\" function cancelled in \"{a2}\" POU: No input connected" +msgstr "Fonction \"{a1}\" annulée dans \"{a2}\" POU: Pas d'entrée connectée" + +#: ../editors/Viewer.py:250 +#, python-brace-format +msgid "\"{a1}\" is already used by \"{a2}\"!" +msgstr "\"{a1}\" est déjà utilisé par \"{a2}\"!" + +#: ../plcopen/plcopen.py:491 +#, python-brace-format +msgid "\"{a1}\" resource already exists in \"{a2}\" configuration !!!" +msgstr "La ressource \"{a1}\" existe déjà dans la configuration \"{a2}\" !" + +#: ../plcopen/plcopen.py:509 +#, python-brace-format +msgid "\"{a1}\" resource doesn't exist in \"{a2}\" configuration !!!" +msgstr "La ressource \"${a1}\" n'existe pas dans la configuration \"{a2}\" !" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:578 +#, python-format +msgid "%03gms" +msgstr "%03gms" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:569 +#, python-format +msgid "%dd" +msgstr "%dj" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:56 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:570 +#, python-format +msgid "%dh" +msgstr "%dh" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:55 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:571 +#, python-format +msgid "%dm" +msgstr "%dm" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:53 +#, python-format +msgid "%dms" +msgstr "%dms" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:54 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:572 +#, python-format +msgid "%ds" +msgstr "%ds" + +#: ../PLCControler.py:1531 #, python-format msgid "%s Data Types" msgstr "Types de données de %s" -#: ../editors/GraphicViewer.py:278 -#, python-format -msgid "%s Graphics" -msgstr "Graphique %s" - -#: ../PLCControler.py:1471 +#: ../PLCControler.py:1514 #, python-format msgid "%s POUs" msgstr "POUs de %s" -#: ../canfestival/SlaveEditor.py:46 -#: ../canfestival/NetworkEditor.py:67 +#: ../canfestival/SlaveEditor.py:69 ../canfestival/NetworkEditor.py:90 #, python-format msgid "%s Profile" msgstr "Profil %s" -#: ../plcopen/plcopen.py:1790 -#: ../plcopen/plcopen.py:1800 -#: ../plcopen/plcopen.py:1810 -#: ../plcopen/plcopen.py:1820 -#: ../plcopen/plcopen.py:1829 +#: ../plcopen/plcopen.py:1645 ../plcopen/plcopen.py:1652 +#: ../plcopen/plcopen.py:1664 ../plcopen/plcopen.py:1672 +#: ../plcopen/plcopen.py:1682 #, python-format msgid "%s body don't have instances!" msgstr "Le code d'un %s n'a pas d'instances !" -#: ../plcopen/plcopen.py:1852 -#: ../plcopen/plcopen.py:1859 +#: ../plcopen/plcopen.py:1700 ../plcopen/plcopen.py:1707 +#: ../plcopen/plcopen.py:1714 #, python-format msgid "%s body don't have text!" msgstr "Le code d'un %s n'a pas de texte !" -#: ../IDEFrame.py:369 +#: ../IDEFrame.py:386 msgid "&Add Element" msgstr "&Ajouter un élément" -#: ../IDEFrame.py:339 +#: ../dialogs/AboutDialog.py:73 ../dialogs/AboutDialog.py:121 +#: ../dialogs/AboutDialog.py:158 +msgid "&Close" +msgstr "&Close" + +#: ../IDEFrame.py:356 msgid "&Configuration" msgstr "&Configuration" -#: ../IDEFrame.py:330 +#: ../IDEFrame.py:345 msgid "&Data Type" msgstr "&Type de donnée" -#: ../IDEFrame.py:373 +#: ../IDEFrame.py:390 msgid "&Delete" msgstr "&Supprimer" -#: ../IDEFrame.py:322 +#: ../IDEFrame.py:337 msgid "&Display" msgstr "&Affichage" -#: ../IDEFrame.py:321 +#: ../IDEFrame.py:336 msgid "&Edit" msgstr "&Editer" -#: ../IDEFrame.py:320 +#: ../IDEFrame.py:335 msgid "&File" msgstr "&Fichier" -#: ../IDEFrame.py:332 +#: ../IDEFrame.py:347 msgid "&Function" msgstr "&Fonction" -#: ../IDEFrame.py:323 +#: ../IDEFrame.py:338 msgid "&Help" msgstr "&Aide" -#: ../IDEFrame.py:336 +#: ../dialogs/AboutDialog.py:72 +msgid "&License" +msgstr "&License" + +#: ../IDEFrame.py:351 msgid "&Program" msgstr "&Programme" -#: ../PLCOpenEditor.py:129 +#: ../PLCOpenEditor.py:125 msgid "&Properties" msgstr "&Propriétés" -#: ../Beremiz.py:312 +#: ../Beremiz.py:324 msgid "&Recent Projects" msgstr "Projets &récent" -#: ../Beremiz.py:354 +#: ../IDEFrame.py:353 msgid "&Resource" msgstr "&Ressource" -#: ../controls/SearchResultPanel.py:252 -#, python-format -msgid "'%s' - %d match in project" -msgstr "'%s' - %d correspondance dans le projet" - -#: ../controls/SearchResultPanel.py:254 -#, python-format -msgid "'%s' - %d matches in project" -msgstr "'%s' - %d correspondances dans le projet" - -#: ../connectors/PYRO/__init__.py:51 -#, python-format -msgid "'%s' is located at %s\n" -msgstr "'%s' is disponible à l'adresse %s\n" - -#: ../controls/SearchResultPanel.py:304 +#: ../controls/SearchResultPanel.py:239 +#, python-brace-format +msgid "'{a1}' - {a2} match in project" +msgstr "'{a1}' - {a2} concordent dans le projet" + +#: ../controls/SearchResultPanel.py:241 +#, python-brace-format +msgid "'{a1}' - {a2} matches in project" +msgstr "'{a1}' - {a2} concordent dans le projet" + +#: ../connectors/PYRO/__init__.py:90 +#, python-brace-format +msgid "'{a1}' is located at {a2}\n" +msgstr "'{a1}' est situé dans {a2}\n" + +#: ../controls/SearchResultPanel.py:291 #, python-format msgid "(%d matches)" msgstr "(%d correspondances)" -#: ../PLCOpenEditor.py:393 -#: ../PLCOpenEditor.py:395 -#: ../PLCOpenEditor.py:396 +#: ../PLCOpenEditor.py:396 ../PLCOpenEditor.py:398 ../PLCOpenEditor.py:399 msgid ", " msgstr ", " -#: ../dialogs/PouTransitionDialog.py:96 -#: ../dialogs/PouActionDialog.py:93 -#: ../dialogs/PouDialog.py:113 -#: ../dialogs/SFCTransitionDialog.py:146 +#: ../dialogs/PouTransitionDialog.py:101 ../dialogs/PouActionDialog.py:93 +#: ../dialogs/PouDialog.py:115 #, python-format msgid ", %s" msgstr ", %s" -#: ../PLCOpenEditor.py:391 +#: ../PLCOpenEditor.py:394 msgid ". " msgstr ". " -#: ../ProjectController.py:1294 -msgid "... debugger recovered\n" -msgstr "... déboggueur operationel\n" - -#: ../IDEFrame.py:1553 -#: ../IDEFrame.py:1595 -#: ../IDEFrame.py:1614 -#: ../dialogs/PouDialog.py:122 -#, python-format -msgid "A POU has an element named \"%s\". This could cause a conflict. Do you wish to continue?" -msgstr "Un POU a un élément nommé \"%s\". Cela peut générer des conflits. Voulez-vous continuer ?" - -#: ../controls/VariablePanel.py:661 -#: ../IDEFrame.py:1565 -#: ../IDEFrame.py:1576 -#: ../dialogs/PouNameDialog.py:51 -#: ../dialogs/PouTransitionDialog.py:103 -#: ../dialogs/SFCStepNameDialog.py:53 -#: ../dialogs/PouActionDialog.py:100 -#: ../dialogs/SFCStepDialog.py:124 +#: ../controls/LogViewer.py:279 +msgid "1d" +msgstr "1j" + +#: ../controls/LogViewer.py:280 +msgid "1h" +msgstr "1h" + +#: ../controls/LogViewer.py:281 +msgid "1m" +msgstr "1m" + +#: ../controls/LogViewer.py:282 +msgid "1s" +msgstr "1s" + +#: ../dialogs/PouDialog.py:124 ../IDEFrame.py:1613 ../IDEFrame.py:1659 +#: ../IDEFrame.py:1678 +#, python-format +msgid "" +"A POU has an element named \"%s\". This could cause a conflict. Do you wish " +"to continue?" +msgstr "" +"Un POU a un élément nommé \"%s\". Cela peut générer des conflits. Voulez-" +"vous continuer ?" + +#: ../dialogs/SFCStepNameDialog.py:54 ../dialogs/PouTransitionDialog.py:108 +#: ../dialogs/PouNameDialog.py:52 ../dialogs/PouActionDialog.py:100 +#: ../controls/VariablePanel.py:765 ../IDEFrame.py:1627 ../IDEFrame.py:1640 #, python-format msgid "A POU named \"%s\" already exists!" msgstr "Un POU nommé \"%s\" existe déjà !" -#: ../ConfigTreeNode.py:388 -#, python-format -msgid "A child named \"%s\" already exist -> \"%s\"\n" -msgstr "Un noeud enfant nommé \"%s\" existe déjà -> \"%s\"\n" - -#: ../dialogs/BrowseLocationsDialog.py:212 +#: ../ConfigTreeNode.py:424 +#, python-brace-format +msgid "A child named \"{a1}\" already exists -> \"{a2}\"\n" +msgstr "Un enfant nommé \"{a1}\" existe déjà -> \"{a2}\"\n" + +#: ../dialogs/BrowseLocationsDialog.py:216 msgid "A location must be selected!" msgstr "Une adresse doit être sélectionné !" -#: ../controls/VariablePanel.py:663 -#: ../IDEFrame.py:1567 -#: ../IDEFrame.py:1578 -#: ../dialogs/SFCStepNameDialog.py:55 -#: ../dialogs/SFCStepDialog.py:126 +#: ../editors/ResourceEditor.py:451 +msgid "A task with the same name already exists!" +msgstr "Une tâche du même nom existe déjà" + +#: ../dialogs/SFCStepNameDialog.py:56 ../controls/VariablePanel.py:767 +#: ../IDEFrame.py:1629 ../IDEFrame.py:1642 #, python-format msgid "A variable with \"%s\" as name already exists in this pou!" msgstr "Une variable nommée \"%s\" existe déjà dans ce POU !" -#: ../Beremiz.py:364 -#: ../PLCOpenEditor.py:162 +#: ../editors/CodeFileEditor.py:774 +#, python-format +msgid "A variable with \"%s\" as name already exists!" +msgstr "Une variable avec le nom \"%s\" existe déjà !" + +#: ../dialogs/AboutDialog.py:48 ../PLCOpenEditor.py:158 ../Beremiz.py:381 msgid "About" msgstr "A propos" -#: ../Beremiz.py:957 -msgid "About Beremiz" -msgstr "A propos de Beremiz" - -#: ../PLCOpenEditor.py:355 -msgid "About PLCOpenEditor" -msgstr "A propos de PLCOpenEditor" - #: ../plcopen/iec_std.csv:22 msgid "Absolute number" msgstr "Nombre absolu" -#: ../dialogs/ActionBlockDialog.py:41 -#: ../dialogs/SFCStepDialog.py:69 +#: ../dialogs/SFCStepDialog.py:72 ../dialogs/ActionBlockDialog.py:42 msgid "Action" msgstr "Action" -#: ../editors/Viewer.py:494 +#: ../editors/Viewer.py:555 ../editors/Viewer.py:2356 msgid "Action Block" msgstr "Ajouter un bloc fonctionnel" @@ -480,116 +454,110 @@ msgid "Action Name:" msgstr "Nom de l'action :" -#: ../plcopen/plcopen.py:1490 +#: ../plcopen/plcopen.py:1359 #, python-format msgid "Action with name %s doesn't exist!" msgstr "L'action nommée %s n'existe pas !" -#: ../PLCControler.py:95 +#: ../PLCControler.py:96 msgid "Actions" msgstr "Actions" -#: ../dialogs/ActionBlockDialog.py:134 +#: ../dialogs/ActionBlockDialog.py:133 msgid "Actions:" msgstr "Actions :" -#: ../editors/Viewer.py:999 +#: ../editors/Viewer.py:1110 msgid "Active" msgstr "Actif" -#: ../canfestival/SlaveEditor.py:57 -#: ../canfestival/NetworkEditor.py:78 -#: ../Beremiz.py:987 -#: ../editors/Viewer.py:527 +#: ../canfestival/SlaveEditor.py:80 ../canfestival/NetworkEditor.py:101 +#: ../editors/Viewer.py:588 ../Beremiz.py:1060 msgid "Add" msgstr "Ajouter" -#: ../IDEFrame.py:1801 -#: ../IDEFrame.py:1832 +#: ../IDEFrame.py:1889 ../IDEFrame.py:1924 msgid "Add Action" msgstr "Ajouter une action" -#: ../features.py:8 +#: ../features.py:32 msgid "Add C code accessing located variables synchronously" -msgstr "Ajoute un code C ayant accès à des variables localisées de façon synchrone" - -#: ../IDEFrame.py:1784 +msgstr "" +"Ajoute un code C ayant accès à des variables localisées de façon synchrone" + +#: ../IDEFrame.py:1872 msgid "Add Configuration" msgstr "Ajouter une configuration" -#: ../IDEFrame.py:1764 +#: ../IDEFrame.py:1852 msgid "Add DataType" msgstr "Ajouter un type de donnée" -#: ../editors/Viewer.py:452 +#: ../editors/Viewer.py:513 msgid "Add Divergence Branch" msgstr "Ajouter une branche à la divergence" -#: ../dialogs/DiscoveryDialog.py:115 +#: ../dialogs/DiscoveryDialog.py:116 msgid "Add IP" msgstr "Ajouter IP" -#: ../IDEFrame.py:1772 +#: ../IDEFrame.py:1860 msgid "Add POU" msgstr "Ajouter un POU" -#: ../features.py:9 +#: ../features.py:33 msgid "Add Python code executed asynchronously" msgstr "Ajoute un code Python executé de façon asynchone" -#: ../IDEFrame.py:1812 -#: ../IDEFrame.py:1858 +#: ../IDEFrame.py:1900 ../IDEFrame.py:1950 msgid "Add Resource" msgstr "Ajouter une resource" -#: ../IDEFrame.py:1790 -#: ../IDEFrame.py:1829 +#: ../IDEFrame.py:1878 ../IDEFrame.py:1921 msgid "Add Transition" msgstr "Ajouter une transition" -#: ../editors/Viewer.py:441 +#: ../editors/Viewer.py:500 msgid "Add Wire Segment" msgstr "Ajouter un segment au fil" -#: ../editors/SFCViewer.py:359 +#: ../editors/SFCViewer.py:433 msgid "Add a new initial step" msgstr "Ajouter une nouvelle étape initiale" -#: ../editors/Viewer.py:2363 -#: ../editors/SFCViewer.py:696 +#: ../editors/Viewer.py:2717 ../editors/SFCViewer.py:770 msgid "Add a new jump" msgstr "Ajouter un nouveau renvoi" -#: ../editors/SFCViewer.py:381 +#: ../editors/SFCViewer.py:455 msgid "Add a new step" msgstr "Ajouter une nouvelle étape" -#: ../features.py:10 +#: ../features.py:34 msgid "Add a simple WxGlade based GUI." msgstr "Ajoute une interface simple utilisant WxGlade" -#: ../dialogs/ActionBlockDialog.py:138 +#: ../dialogs/ActionBlockDialog.py:137 msgid "Add action" msgstr "Ajouter une action" -#: ../editors/DataTypeEditor.py:351 +#: ../editors/DataTypeEditor.py:352 msgid "Add element" msgstr "Ajouter un élément" -#: ../editors/ResourceEditor.py:259 +#: ../editors/ResourceEditor.py:268 msgid "Add instance" msgstr "Ajouter une instance" -#: ../canfestival/NetworkEditor.py:80 +#: ../canfestival/NetworkEditor.py:103 msgid "Add slave" msgstr "Ajouter un esclave" -#: ../editors/ResourceEditor.py:230 +#: ../editors/ResourceEditor.py:239 msgid "Add task" msgstr "Ajouter une tâche" -#: ../controls/VariablePanel.py:380 -#: ../c_ext/CFileEditor.py:517 +#: ../editors/CodeFileEditor.py:658 ../controls/VariablePanel.py:450 msgid "Add variable" msgstr "Ajouter une variable" @@ -597,23 +565,23 @@ msgid "Addition" msgstr "Addition" -#: ../plcopen/structures.py:249 +#: ../plcopen/definitions.py:47 msgid "Additional function blocks" msgstr "Blocs fonctionnels additionnels" -#: ../editors/Viewer.py:510 +#: ../editors/Viewer.py:571 msgid "Adjust Block Size" msgstr "Ajuster la taille des blocs" -#: ../editors/Viewer.py:1458 +#: ../editors/Viewer.py:1648 msgid "Alignment" msgstr "Alignement" -#: ../controls/VariablePanel.py:75 -#: ../dialogs/BrowseLocationsDialog.py:34 -#: ../dialogs/BrowseLocationsDialog.py:43 -#: ../dialogs/BrowseLocationsDialog.py:136 -#: ../dialogs/BrowseLocationsDialog.py:139 +#: ../dialogs/BrowseLocationsDialog.py:39 +#: ../dialogs/BrowseLocationsDialog.py:47 +#: ../dialogs/BrowseLocationsDialog.py:140 +#: ../dialogs/BrowseLocationsDialog.py:143 ../controls/LogViewer.py:298 +#: ../controls/VariablePanel.py:70 msgid "All" msgstr "Tout" @@ -621,18 +589,24 @@ msgid "All files (*.*)|*.*|CSV files (*.csv)|*.csv" msgstr "Tous les fichiers|*.*|Fichiers CSV (*.csv)|*.csv" -#: ../ProjectController.py:1373 +#: ../ProjectController.py:1644 msgid "Already connected. Please disconnect\n" msgstr "Déjà connecté. Veuillez déconnecter\n" -#: ../editors/DataTypeEditor.py:593 +#: ../editors/DataTypeEditor.py:594 #, python-format msgid "An element named \"%s\" already exists in this structure!" msgstr "Un élément nommé \"%s\" existe déjà dans la structure !" -#: ../dialogs/ConnectionDialog.py:98 +#: ../editors/ResourceEditor.py:486 +msgid "An instance with the same name already exists!" +msgstr "Une instance avec le même nom existe déjà !" + +#: ../dialogs/ConnectionDialog.py:96 msgid "Apply name modification to all continuations with the same name" -msgstr "Appliquer la modification de nom à toutes les prolongements portant ce même nom" +msgstr "" +"Appliquer la modification de nom à toutes les prolongements portant ce même " +"nom" #: ../plcopen/iec_std.csv:31 msgid "Arc cosine" @@ -650,9 +624,8 @@ msgid "Arithmetic" msgstr "Arithmétique" -#: ../controls/VariablePanel.py:732 -#: ../editors/DataTypeEditor.py:54 -#: ../editors/DataTypeEditor.py:634 +#: ../editors/DataTypeEditor.py:54 ../editors/DataTypeEditor.py:635 +#: ../controls/VariablePanel.py:841 msgid "Array" msgstr "Tableau" @@ -660,7 +633,7 @@ msgid "Assignment" msgstr "Assignation" -#: ../dialogs/FBDVariableDialog.py:197 +#: ../dialogs/FBDVariableDialog.py:217 msgid "At least a variable or an expression must be selected!" msgstr "Au moins une variable ou une expression doit être sélectionné !" @@ -672,7 +645,7 @@ msgid "Author Name (optional):" msgstr "Nom de l'auteur (optionel) :" -#: ../dialogs/FindInPouDialog.py:72 +#: ../dialogs/FindInPouDialog.py:79 msgid "Backward" msgstr "Vers le haut" @@ -684,25 +657,21 @@ msgid "Bad domain name at " msgstr "Mauvais nom de domaine à l'adresse" -#: ../canfestival/config_utils.py:341 -#: ../canfestival/config_utils.py:623 +#: ../canfestival/config_utils.py:342 ../canfestival/config_utils.py:630 #, python-format msgid "Bad location size : %s" msgstr "Mauvaise taille d'adresse : %s" -#: ../editors/DataTypeEditor.py:174 -#: ../editors/DataTypeEditor.py:204 -#: ../editors/DataTypeEditor.py:296 -#: ../dialogs/ArrayTypeDialog.py:55 +#: ../dialogs/ArrayTypeDialog.py:55 ../editors/DataTypeEditor.py:175 +#: ../editors/DataTypeEditor.py:205 ../editors/DataTypeEditor.py:297 msgid "Base Type:" msgstr "Type de base :" -#: ../controls/VariablePanel.py:702 -#: ../editors/DataTypeEditor.py:624 +#: ../editors/DataTypeEditor.py:625 ../controls/VariablePanel.py:799 msgid "Base Types" msgstr "Types de base" -#: ../Beremiz.py:511 +#: ../Beremiz.py:553 msgid "Beremiz" msgstr "Beremiz" @@ -734,154 +703,173 @@ msgid "Bitwise inverting" msgstr "Inversion bit à bit" -#: ../editors/Viewer.py:464 +#: ../editors/Viewer.py:525 ../editors/Viewer.py:2369 msgid "Block" msgstr "Block" -#: ../dialogs/FBDBlockDialog.py:38 +#: ../dialogs/FBDBlockDialog.py:59 msgid "Block Properties" msgstr "Propriétés du bloc" -#: ../editors/Viewer.py:433 +#: ../editors/TextViewer.py:262 +msgid "Block name" +msgstr "Nom du bloc" + +#: ../editors/Viewer.py:491 msgid "Bottom" msgstr "Bas" +#: ../ProjectController.py:1322 +msgid "Broken" +msgstr "Cassé" + #: ../dialogs/BrowseValuesLibraryDialog.py:37 #, python-format msgid "Browse %s values library" msgstr "Explorer la liste des valeurs du paramètre '%s'" -#: ../dialogs/BrowseLocationsDialog.py:61 +#: ../dialogs/BrowseLocationsDialog.py:65 msgid "Browse Locations" msgstr "Naviger dans les adresses" -#: ../ProjectController.py:1519 +#: ../ProjectController.py:1790 msgid "Build" msgstr "Compiler" -#: ../ProjectController.py:1079 +#: ../ProjectController.py:1256 msgid "Build directory already clean\n" msgstr "Le répertoire de compilation est déjà nettoyé\n" -#: ../ProjectController.py:1520 +#: ../ProjectController.py:1791 msgid "Build project into build folder" msgstr "Compiler le projet dans le répertoire ce compilation" -#: ../ProjectController.py:937 +#: ../ProjectController.py:1039 msgid "C Build crashed !\n" msgstr "La compilation du C a mal fonctionné !\n" -#: ../ProjectController.py:934 +#: ../ProjectController.py:1036 msgid "C Build failed.\n" msgstr "La compilation du C a échouée !\n" -#: ../c_ext/CFileEditor.py:731 +#: ../c_ext/CFileEditor.py:63 msgid "C code" msgstr "Code C" -#: ../ProjectController.py:922 +#: ../ProjectController.py:1114 msgid "C code generated successfully.\n" msgstr "Code C généré avec succès.\n" -#: ../targets/toolchain_gcc.py:132 +#: ../targets/toolchain_makefile.py:122 +msgid "C compilation failed.\n" +msgstr "La compilation a échouée\n" + +#: ../targets/toolchain_gcc.py:156 #, python-format msgid "C compilation of %s failed.\n" msgstr "La compilation C de %s a échouée.\n" -#: ../features.py:8 +#: ../features.py:32 msgid "C extension" msgstr "Extension C" -#: ../canfestival/NetworkEditor.py:29 +#: ../dialogs/AboutDialog.py:71 +msgid "C&redits" +msgstr "C&redits" + +#: ../canfestival/NetworkEditor.py:52 msgid "CANOpen network" msgstr "Réseau CANOpen" -#: ../canfestival/SlaveEditor.py:21 +#: ../canfestival/SlaveEditor.py:44 msgid "CANOpen slave" msgstr "Esclave CANOpen" -#: ../features.py:7 +#: ../features.py:31 msgid "CANopen support" msgstr "Support CANopen" -#: ../plcopen/plcopen.py:1732 -#: ../plcopen/plcopen.py:1746 -#: ../plcopen/plcopen.py:1767 -#: ../plcopen/plcopen.py:1783 +#: ../plcopen/plcopen.py:1584 ../plcopen/plcopen.py:1598 +#: ../plcopen/plcopen.py:1622 ../plcopen/plcopen.py:1638 msgid "Can only generate execution order on FBD networks!" msgstr "L'ordre d'exécution ne peut être généré que dans les FBD !" -#: ../controls/VariablePanel.py:256 +#: ../controls/VariablePanel.py:267 msgid "Can only give a location to local or global variables" -msgstr "Une adresse ne peut être affecté qu'à des variables locales ou globales" - -#: ../PLCOpenEditor.py:336 +msgstr "" +"Une adresse ne peut être affecté qu'à des variables locales ou globales" + +#: ../PLCOpenEditor.py:334 #, python-format msgid "Can't generate program to file %s!" msgstr "Le programme n'a pu être généré dans le fichier \"%s\" !" -#: ../controls/VariablePanel.py:254 +#: ../controls/VariablePanel.py:265 msgid "Can't give a location to a function block instance" msgstr "Une adresse ne peut être affectée à une instance de Function Block" -#: ../PLCOpenEditor.py:376 +#: ../PLCOpenEditor.py:379 #, python-format msgid "Can't save project to file %s!" msgstr "Le projet n'a pu être sauvé dans le fichier \"%s\" !" -#: ../controls/VariablePanel.py:300 +#: ../controls/VariablePanel.py:313 msgid "Can't set an initial value to a function block instance" -msgstr "Une valeur initiale ne peut être affectée une instance de Function Block" - -#: ../ConfigTreeNode.py:490 -#, python-format -msgid "Cannot create child %s of type %s " -msgstr "Impossible d'ajouter un élément \"%s\" de type \"%s\"" - -#: ../ConfigTreeNode.py:417 +msgstr "" +"Une valeur initiale ne peut être affectée une instance de Function Block" + +#: ../ConfigTreeNode.py:529 +#, python-brace-format +msgid "Cannot create child {a1} of type {a2} " +msgstr "Impossible de créer l'enfant {a1} de type {a2}" + +#: ../ConfigTreeNode.py:454 #, python-format msgid "Cannot find lower free IEC channel than %d\n" msgstr "Impossible de trouver un numéro IEC inférieur à %d libre\n" -#: ../connectors/PYRO/__init__.py:92 +#: ../connectors/PYRO/__init__.py:131 msgid "Cannot get PLC status - connection failed.\n" msgstr "Impossible d'obtenir le statut de l'automate - la connexion a échoué.\n" -#: ../ProjectController.py:737 +#: ../ProjectController.py:902 msgid "Cannot open/parse VARIABLES.csv!\n" msgstr "Impossible d'ouvrir ou d'analyser le fichier VARIABLES.csv !\n" -#: ../canfestival/config_utils.py:371 -#, python-format -msgid "Cannot set bit offset for non bool '%s' variable (ID:%d,Idx:%x,sIdx:%x))" -msgstr "Impossible de définir un numéro de bit sur la variable '%s' non booléenne (ID:%d,Idx:%x,sIdx:%x)" - -#: ../dialogs/FindInPouDialog.py:81 -#: ../dialogs/SearchInProjectDialog.py:67 +#: ../canfestival/config_utils.py:374 +#, python-brace-format +msgid "" +"Cannot set bit offset for non bool '{a1}' variable " +"(ID:{a2},Idx:{a3},sIdx:{a4}))" +msgstr "" +"Impossible de configurer l'offset du bit de la variable non booléenne '{a1}'" +" (ID:{a2},Idx:{a3},sIdx:{a4}))" + +#: ../dialogs/SearchInProjectDialog.py:59 ../dialogs/FindInPouDialog.py:88 msgid "Case sensitive" msgstr "Respecter la casse" -#: ../editors/Viewer.py:428 +#: ../editors/Viewer.py:486 msgid "Center" msgstr "Centre" -#: ../Beremiz_service.py:326 +#: ../Beremiz_service.py:266 msgid "Change IP of interface to bind" msgstr "Changer l'adresse IP de l'interface à lier" -#: ../Beremiz_service.py:325 +#: ../Beremiz_service.py:265 msgid "Change Name" msgstr "Changer le nom" -#: ../IDEFrame.py:1850 +#: ../IDEFrame.py:1942 msgid "Change POU Type To" msgstr "Changer le type du POU pour" -#: ../Beremiz_service.py:327 +#: ../Beremiz_service.py:267 msgid "Change Port Number" msgstr "Changer le numéro de port" -#: ../Beremiz_service.py:328 +#: ../Beremiz_service.py:268 msgid "Change working directory" msgstr "Changer le dossier de travail" @@ -889,23 +877,20 @@ msgid "Character string" msgstr "Chaîne de caractères" -#: ../svgui/svgui.py:92 +#: ../svgui/svgui.py:125 msgid "Choose a SVG file" msgstr "Choisissez un fichier SVG" -#: ../ProjectController.py:364 +#: ../ProjectController.py:501 msgid "Choose a directory to save project" msgstr "Choisissez un dossier où enregistrer le projet" -#: ../canfestival/canfestival.py:136 -#: ../PLCOpenEditor.py:294 -#: ../PLCOpenEditor.py:326 -#: ../PLCOpenEditor.py:370 +#: ../canfestival/canfestival.py:160 ../PLCOpenEditor.py:292 +#: ../PLCOpenEditor.py:324 ../PLCOpenEditor.py:373 msgid "Choose a file" msgstr "Choisissez un fichier" -#: ../Beremiz.py:858 -#: ../Beremiz.py:893 +#: ../Beremiz.py:931 ../Beremiz.py:966 msgid "Choose a project" msgstr "Choisissez un projet" @@ -914,81 +899,86 @@ msgid "Choose a value for %s:" msgstr "Choisissez une valeur pour le paramètre %s :" -#: ../Beremiz_service.py:378 +#: ../Beremiz_service.py:323 msgid "Choose a working directory " msgstr "Choisissez un dossier de travail" -#: ../ProjectController.py:288 +#: ../ProjectController.py:408 msgid "Chosen folder doesn't contain a program. It's not a valid project!" -msgstr "Le répertoire ne contient pas de programme. Ce n'est pas un projet valide !" - -#: ../ProjectController.py:255 +msgstr "" +"Le répertoire ne contient pas de programme. Ce n'est pas un projet valide !" + +#: ../ProjectController.py:375 msgid "Chosen folder isn't empty. You can't use it for a new project!" -msgstr "Le répertoire n'est pas vide. Vous ne pouvez pas l'utiliser pour créer un nouveau projet !" - -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 +msgstr "" +"Le répertoire n'est pas vide. Vous ne pouvez pas l'utiliser pour créer un " +"nouveau projet !" + +#: ../controls/VariablePanel.py:53 ../controls/VariablePanel.py:54 msgid "Class" msgstr "Classe" -#: ../controls/VariablePanel.py:371 +#: ../controls/VariablePanel.py:441 msgid "Class Filter:" msgstr "Filtre de classe :" -#: ../dialogs/FBDVariableDialog.py:62 +#: ../dialogs/FBDVariableDialog.py:69 msgid "Class:" msgstr "Classe :" -#: ../ProjectController.py:1523 +#: ../ProjectController.py:1794 msgid "Clean" msgstr "Nettoyer" -#: ../ProjectController.py:1525 +#: ../controls/LogViewer.py:318 +msgid "Clean log messages" +msgstr "Nettoyer les messages de log" + +#: ../ProjectController.py:1796 msgid "Clean project build folder" msgstr "Nettoyer le répertoire de compilation" -#: ../ProjectController.py:1076 +#: ../ProjectController.py:1253 msgid "Cleaning the build directory\n" msgstr "Répertoire de compilation en cours de nettoyage\n" -#: ../IDEFrame.py:416 +#: ../IDEFrame.py:435 msgid "Clear Errors" msgstr "Effacer les erreurs" -#: ../editors/Viewer.py:520 +#: ../editors/Viewer.py:582 msgid "Clear Execution Order" msgstr "Effacer l'ordre d'exécution" -#: ../editors/GraphicViewer.py:125 -msgid "Clear the graph values" -msgstr "Vider les valeurs du graphique" - -#: ../Beremiz.py:633 -#: ../PLCOpenEditor.py:202 +#: ../dialogs/SearchInProjectDialog.py:105 ../dialogs/FindInPouDialog.py:111 +msgid "Close" +msgstr "Fermer" + +#: ../PLCOpenEditor.py:199 ../Beremiz.py:693 msgid "Close Application" msgstr "Fermer l'application" -#: ../IDEFrame.py:972 -#: ../Beremiz.py:321 -#: ../Beremiz.py:587 -#: ../PLCOpenEditor.py:112 +#: ../PLCOpenEditor.py:108 ../Beremiz.py:333 ../Beremiz.py:637 +#: ../IDEFrame.py:1009 msgid "Close Project" msgstr "Fermer le projet" -#: ../Beremiz.py:319 -#: ../PLCOpenEditor.py:110 +#: ../PLCOpenEditor.py:106 ../Beremiz.py:331 msgid "Close Tab" msgstr "Fermer l'onglet" -#: ../editors/Viewer.py:480 +#: ../editors/Viewer.py:541 ../editors/Viewer.py:2377 msgid "Coil" msgstr "Relai" -#: ../editors/Viewer.py:500 -#: ../editors/LDViewer.py:506 +#: ../editors/Viewer.py:561 ../editors/LDViewer.py:506 msgid "Comment" msgstr "Commentaire" +#: ../dialogs/ProjectDialog.py:57 +msgid "Company Name" +msgstr "Nom de l'entreprise" + #: ../controls/ProjectPropertiesPanel.py:94 msgid "Company Name (required):" msgstr "Nom de l'entreprise (obligatoire) :" @@ -1001,7 +991,7 @@ msgid "Comparison" msgstr "Comparaison" -#: ../ProjectController.py:552 +#: ../ProjectController.py:693 msgid "Compiling IEC Program into C code...\n" msgstr "Compilation du program en IEC vers du code C en cours...\n" @@ -1009,81 +999,85 @@ msgid "Concatenation" msgstr "Concaténation" -#: ../editors/ConfTreeNodeEditor.py:249 +#: ../editors/ConfTreeNodeEditor.py:229 msgid "Config" msgstr "Configuration" -#: ../editors/ProjectNodeEditor.py:13 +#: ../editors/ProjectNodeEditor.py:36 msgid "Config variables" msgstr "Variables de configuration" -#: ../dialogs/SearchInProjectDialog.py:47 +#: ../dialogs/SearchInProjectDialog.py:39 msgid "Configuration" msgstr "Configuration" -#: ../PLCControler.py:96 +#: ../PLCControler.py:97 msgid "Configurations" msgstr "Configurations" -#: ../ProjectController.py:1538 +#: ../editors/Viewer.py:307 ../editors/Viewer.py:337 ../editors/Viewer.py:359 +#: ../editors/TextViewer.py:291 ../editors/TextViewer.py:342 +#: ../editors/TextViewer.py:365 ../controls/VariablePanel.py:328 +msgid "Confirm or change variable name" +msgstr "Confirmer ou changer de nom de variable" + +#: ../ProjectController.py:1809 msgid "Connect" msgstr "Connecter" -#: ../ProjectController.py:1539 +#: ../ProjectController.py:1810 msgid "Connect to the target PLC" msgstr "Connecter à l'automate cible" -#: ../ProjectController.py:1125 +#: ../ProjectController.py:1313 #, python-format msgid "Connected to URI: %s" msgstr "Connecté à l'URI : %s" -#: ../connectors/PYRO/__init__.py:40 -#, python-format -msgid "Connecting to URI : %s\n" -msgstr "Connection à l'URI %s en cours...\n" - -#: ../editors/Viewer.py:466 -#: ../dialogs/SFCTransitionDialog.py:76 +#: ../dialogs/SFCTransitionDialog.py:76 ../editors/Viewer.py:527 +#: ../editors/Viewer.py:2370 msgid "Connection" msgstr "Connexion" -#: ../dialogs/ConnectionDialog.py:37 +#: ../dialogs/ConnectionDialog.py:52 msgid "Connection Properties" msgstr "Propriétés de la connexion" -#: ../ProjectController.py:1397 +#: ../ProjectController.py:1668 msgid "Connection canceled!\n" msgstr "La connection a été abandonnée !\n" -#: ../ProjectController.py:1422 +#: ../ProjectController.py:1693 #, python-format msgid "Connection failed to %s!\n" msgstr "La connection à \"%s\" a échouée !\n" -#: ../connectors/PYRO/__init__.py:63 +#: ../connectors/PYRO/__init__.py:115 ../connectors/WAMP/__init__.py:111 +msgid "Connection lost!\n" +msgstr "Connexion perdu\n" + +#: ../connectors/PYRO/__init__.py:102 #, python-format msgid "Connection to '%s' failed.\n" msgstr "La connexion à l'adresse '%s' a échouée.\n" -#: ../editors/Viewer.py:1426 -#: ../dialogs/ConnectionDialog.py:56 +#: ../dialogs/ConnectionDialog.py:64 ../editors/Viewer.py:1605 msgid "Connector" msgstr "Connecteur" -#: ../dialogs/SFCStepDialog.py:58 +#: ../dialogs/SFCStepDialog.py:65 msgid "Connectors:" msgstr "Connecteurs :" -#: ../Beremiz.py:420 +#: ../Beremiz.py:448 msgid "Console" msgstr "Console" -#: ../controls/VariablePanel.py:65 +#: ../controls/VariablePanel.py:60 msgid "Constant" msgstr "Constante" -#: ../editors/Viewer.py:476 +#: ../editors/Viewer.py:537 ../editors/Viewer.py:2373 msgid "Contact" msgstr "Contact" @@ -1091,8 +1085,7 @@ msgid "Content Description (optional):" msgstr "Description du contenu (optionel) :" -#: ../editors/Viewer.py:1427 -#: ../dialogs/ConnectionDialog.py:61 +#: ../dialogs/ConnectionDialog.py:65 ../editors/Viewer.py:1606 msgid "Continuation" msgstr "Prolongement" @@ -1112,13 +1105,12 @@ msgid "Conversion to time-of-day" msgstr "Conversion en heure de la journée" -#: ../IDEFrame.py:353 -#: ../IDEFrame.py:406 -#: ../editors/Viewer.py:536 +#: ../editors/Viewer.py:597 ../controls/LogViewer.py:693 ../IDEFrame.py:370 +#: ../IDEFrame.py:425 msgid "Copy" msgstr "Copier" -#: ../IDEFrame.py:1837 +#: ../IDEFrame.py:1929 msgid "Copy POU" msgstr "Copier ce POU" @@ -1134,55 +1126,59 @@ msgid "Cosine" msgstr "Cosinus" -#: ../ConfigTreeNode.py:602 -#, python-format -msgid "" -"Could not add child \"%s\", type %s :\n" -"%s\n" -msgstr "" -"Impossible d'ajouter le noeud enfant \"%s\", de type %s :\n" -"%s\n" - -#: ../ConfigTreeNode.py:579 -#, python-format -msgid "" -"Couldn't load confnode base parameters %s :\n" -" %s" -msgstr "" -"Impossible de charger les paramètres de base du plugin %s :\n" -" %s" - -#: ../ConfigTreeNode.py:590 -#, python-format -msgid "" -"Couldn't load confnode parameters %s :\n" -" %s" -msgstr "" -"Impossible de charger les paramètres du plugin %s :\n" -" %s" - -#: ../PLCControler.py:819 -#: ../PLCControler.py:856 +#: ../ConfigTreeNode.py:656 +#, python-brace-format +msgid "" +"Could not add child \"{a1}\", type {a2} :\n" +"{a3}\n" +msgstr "" +"Impossible d'ajouter l'enfant \"{a1}\", de type {a2}:\n" +"{a3}\n" + +#: ../py_ext/PythonFileCTNMixin.py:77 +#, python-format +msgid "Couldn't import old %s file." +msgstr "Impossible d'importer l'ancien fichier %s" + +#: ../ConfigTreeNode.py:626 +#, python-brace-format +msgid "" +"Couldn't load confnode base parameters {a1} :\n" +" {a2}" +msgstr "" +"Impossible de charger les parametres de base confnode {a1}:\n" +"{a2}" + +#: ../ConfigTreeNode.py:643 ../CodeFileTreeNode.py:124 +#, python-brace-format +msgid "" +"Couldn't load confnode parameters {a1} :\n" +" {a2}" +msgstr "" +"Impossible de charger les parametres confnode {a1}:\n" +"{a2}" + +#: ../PLCControler.py:946 msgid "Couldn't paste non-POU object." msgstr "Impossible de coller autre chose qu'un POU." -#: ../ProjectController.py:1344 +#: ../ProjectController.py:1610 msgid "Couldn't start PLC !\n" msgstr "Impossible de démarrer l'automate !\n" -#: ../ProjectController.py:1352 +#: ../ProjectController.py:1618 msgid "Couldn't stop PLC !\n" msgstr "Impossible d'arrêter l'automate !\n" -#: ../ProjectController.py:1321 +#: ../ProjectController.py:1582 msgid "Couldn't stop debugger.\n" msgstr "Impossible d'arrêter le débogage de l'automate !\n" -#: ../svgui/svgui.py:22 +#: ../svgui/svgui.py:47 msgid "Create HMI" msgstr "Créer une IHM" -#: ../dialogs/PouDialog.py:43 +#: ../dialogs/PouDialog.py:45 msgid "Create a new POU" msgstr "Créer un nouveau POU" @@ -1190,84 +1186,79 @@ msgid "Create a new action" msgstr "Créer une nouvelle action" -#: ../IDEFrame.py:142 +#: ../IDEFrame.py:159 msgid "Create a new action block" msgstr "Créer un nouveau bloc d'actions" -#: ../IDEFrame.py:91 -#: ../IDEFrame.py:121 -#: ../IDEFrame.py:154 +#: ../IDEFrame.py:108 ../IDEFrame.py:138 ../IDEFrame.py:171 msgid "Create a new block" msgstr "Créer un nouveau bloc" -#: ../IDEFrame.py:115 +#: ../IDEFrame.py:132 msgid "Create a new branch" msgstr "Créer une nouvelle branche" -#: ../IDEFrame.py:109 +#: ../IDEFrame.py:126 msgid "Create a new coil" msgstr "Créer un nouveau relai" -#: ../IDEFrame.py:85 -#: ../IDEFrame.py:100 -#: ../IDEFrame.py:130 +#: ../IDEFrame.py:102 ../IDEFrame.py:117 ../IDEFrame.py:147 msgid "Create a new comment" msgstr "Créer un nouveau copmmentaire" -#: ../IDEFrame.py:94 -#: ../IDEFrame.py:124 -#: ../IDEFrame.py:157 +#: ../IDEFrame.py:111 ../IDEFrame.py:141 ../IDEFrame.py:174 msgid "Create a new connection" msgstr "Créer une nouvelle connexion" -#: ../IDEFrame.py:112 -#: ../IDEFrame.py:163 +#: ../IDEFrame.py:129 ../IDEFrame.py:180 msgid "Create a new contact" msgstr "Créer un nouveau contact" -#: ../IDEFrame.py:145 +#: ../IDEFrame.py:162 msgid "Create a new divergence" msgstr "Créer une nouvelle divergence" -#: ../dialogs/SFCDivergenceDialog.py:36 +#: ../dialogs/SFCDivergenceDialog.py:53 msgid "Create a new divergence or convergence" msgstr "Créer une nouvelle divergence ou convergence" -#: ../IDEFrame.py:133 +#: ../IDEFrame.py:150 msgid "Create a new initial step" msgstr "Créer une nouvelle étape initiale" -#: ../IDEFrame.py:148 +#: ../IDEFrame.py:165 msgid "Create a new jump" msgstr "Créer un nouveau renvoi" -#: ../IDEFrame.py:103 -#: ../IDEFrame.py:160 +#: ../IDEFrame.py:120 ../IDEFrame.py:177 msgid "Create a new power rail" msgstr "Créer une nouvelle barre d'alimentation" -#: ../IDEFrame.py:106 +#: ../IDEFrame.py:123 msgid "Create a new rung" msgstr "Créer un nouvel échelon" -#: ../IDEFrame.py:136 +#: ../IDEFrame.py:153 msgid "Create a new step" msgstr "Créer une nouvelle étape" -#: ../IDEFrame.py:139 -#: ../dialogs/PouTransitionDialog.py:42 +#: ../dialogs/PouTransitionDialog.py:47 ../IDEFrame.py:156 msgid "Create a new transition" msgstr "Créer une nouvelle transition" -#: ../IDEFrame.py:88 -#: ../IDEFrame.py:118 -#: ../IDEFrame.py:151 +#: ../IDEFrame.py:105 ../IDEFrame.py:135 ../IDEFrame.py:168 msgid "Create a new variable" msgstr "Créer une nouvelle variable" -#: ../IDEFrame.py:351 -#: ../IDEFrame.py:405 -#: ../editors/Viewer.py:535 +#: ../dialogs/AboutDialog.py:113 +msgid "Credits" +msgstr "Credits" + +#: ../Beremiz_service.py:432 +msgid "Current working directory :" +msgstr "Répertoire de travail actuel :" + +#: ../editors/Viewer.py:596 ../IDEFrame.py:368 ../IDEFrame.py:424 msgid "Cut" msgstr "Couper" @@ -1275,33 +1266,27 @@ msgid "Cyclic" msgstr "Périodique" -#: ../plcopen/iec_std.csv:42 -#: ../plcopen/iec_std.csv:44 -#: ../plcopen/iec_std.csv:46 -#: ../plcopen/iec_std.csv:50 -#: ../plcopen/iec_std.csv:52 -#: ../plcopen/iec_std.csv:54 -#: ../plcopen/iec_std.csv:56 -#: ../plcopen/iec_std.csv:58 +#: ../plcopen/iec_std.csv:42 ../plcopen/iec_std.csv:44 +#: ../plcopen/iec_std.csv:46 ../plcopen/iec_std.csv:50 +#: ../plcopen/iec_std.csv:52 ../plcopen/iec_std.csv:54 +#: ../plcopen/iec_std.csv:56 ../plcopen/iec_std.csv:58 #: ../plcopen/iec_std.csv:60 msgid "DEPRECATED" msgstr "OBSOLETE" -#: ../canfestival/SlaveEditor.py:53 -#: ../canfestival/NetworkEditor.py:74 +#: ../canfestival/SlaveEditor.py:76 ../canfestival/NetworkEditor.py:97 msgid "DS-301 Profile" msgstr "Profil DS-301" -#: ../canfestival/SlaveEditor.py:54 -#: ../canfestival/NetworkEditor.py:75 +#: ../canfestival/SlaveEditor.py:77 ../canfestival/NetworkEditor.py:98 msgid "DS-302 Profile" msgstr "Profil DS-302" -#: ../dialogs/SearchInProjectDialog.py:43 +#: ../dialogs/SearchInProjectDialog.py:35 msgid "Data Type" msgstr "Type de donnée" -#: ../PLCControler.py:95 +#: ../PLCControler.py:96 msgid "Data Types" msgstr "Types de données" @@ -1309,20 +1294,16 @@ msgid "Data type conversion" msgstr "Conversion entre types de donnée" -#: ../plcopen/iec_std.csv:44 -#: ../plcopen/iec_std.csv:45 +#: ../plcopen/iec_std.csv:44 ../plcopen/iec_std.csv:45 msgid "Date addition" msgstr "Addition de dates" -#: ../plcopen/iec_std.csv:56 -#: ../plcopen/iec_std.csv:57 -#: ../plcopen/iec_std.csv:58 -#: ../plcopen/iec_std.csv:59 +#: ../plcopen/iec_std.csv:56 ../plcopen/iec_std.csv:57 +#: ../plcopen/iec_std.csv:58 ../plcopen/iec_std.csv:59 msgid "Date and time subtraction" msgstr "Soustraction entre horodatage" -#: ../plcopen/iec_std.csv:50 -#: ../plcopen/iec_std.csv:51 +#: ../plcopen/iec_std.csv:50 ../plcopen/iec_std.csv:51 msgid "Date subtraction" msgstr "Soustraction de date" @@ -1330,53 +1311,52 @@ msgid "Days:" msgstr "Jours :" -#: ../ProjectController.py:1444 +#: ../ProjectController.py:1715 msgid "Debug does not match PLC - stop/transfert/start to re-enable\n" -msgstr "Les informations de débogage ne correspond pas l'automate connecté - Arrêter/transférez/démarrer pour pouvoir débogguer.\n" - -#: ../controls/PouInstanceVariablesPanel.py:59 +msgstr "" +"Les informations de débogage ne correspond pas l'automate connecté - " +"Arrêter/transférez/démarrer pour pouvoir débogguer.\n" + +#: ../controls/PouInstanceVariablesPanel.py:134 msgid "Debug instance" msgstr "Déboguer l'instance" -#: ../editors/Viewer.py:1016 -#: ../editors/Viewer.py:3326 +#: ../editors/Viewer.py:1127 ../editors/Viewer.py:3664 #, python-format msgid "Debug: %s" msgstr "Débogage : %s" -#: ../ProjectController.py:1153 +#: ../ProjectController.py:1371 #, python-format msgid "Debug: Unknown variable '%s'\n" msgstr "Débogage : Variable '%s' inconnue\n" -#: ../ProjectController.py:1151 +#: ../ProjectController.py:1369 #, python-format msgid "Debug: Unsupported type to debug '%s'\n" msgstr "Débogage : Type non supporté dans le débogage '%'\n" -#: ../IDEFrame.py:612 +#: ../IDEFrame.py:639 msgid "Debugger" msgstr "Déboggueur" -#: ../ProjectController.py:1311 +#: ../ProjectController.py:1551 msgid "Debugger disabled\n" msgstr "Débogueur désactivé\n" -#: ../ProjectController.py:1441 +#: ../ProjectController.py:1712 msgid "Debugger ready\n" msgstr "Débogueur \n" -#: ../ProjectController.py:1323 +#: ../ProjectController.py:1584 msgid "Debugger stopped.\n" msgstr "Débogueur désactivé\n" -#: ../IDEFrame.py:1866 -#: ../Beremiz.py:991 -#: ../editors/Viewer.py:511 +#: ../editors/Viewer.py:572 ../Beremiz.py:1064 ../IDEFrame.py:1958 msgid "Delete" msgstr "Supprimer" -#: ../editors/Viewer.py:453 +#: ../editors/Viewer.py:514 msgid "Delete Divergence Branch" msgstr "Supprimer une branche de divergence" @@ -1384,7 +1364,7 @@ msgid "Delete File" msgstr "Supprimer un fichier" -#: ../editors/Viewer.py:442 +#: ../editors/Viewer.py:501 msgid "Delete Wire Segment" msgstr "Supprimer un segment de fil" @@ -1396,32 +1376,23 @@ msgid "Deletion (within)" msgstr "Suppression (au milieu)" -#: ../editors/DataTypeEditor.py:152 +#: ../editors/DataTypeEditor.py:153 msgid "Derivation Type:" msgstr "Type de dérivation :" -#: ../plcopen/structures.py:263 -msgid "" -"Derivative\n" -"The derivative function block produces an output XOUT proportional to the rate of change of the input XIN." -msgstr "" -"Dérivée\n" -"Le Function Block derivative produit une sortie XOUT proportionnelle au rapport de changement de l'entrée XIN." - -#: ../controls/VariablePanel.py:362 +#: ../controls/VariablePanel.py:432 msgid "Description:" msgstr "Description :" -#: ../editors/DataTypeEditor.py:320 -#: ../dialogs/ArrayTypeDialog.py:61 +#: ../dialogs/ArrayTypeDialog.py:61 ../editors/DataTypeEditor.py:321 msgid "Dimensions:" msgstr "Dimensions :" -#: ../dialogs/FindInPouDialog.py:61 +#: ../dialogs/FindInPouDialog.py:68 msgid "Direction" msgstr "Direction" -#: ../dialogs/BrowseLocationsDialog.py:86 +#: ../dialogs/BrowseLocationsDialog.py:90 msgid "Direction:" msgstr "Direction :" @@ -1429,15 +1400,19 @@ msgid "Directly" msgstr "Direct" -#: ../ProjectController.py:1547 +#: ../ProjectController.py:1818 msgid "Disconnect" msgstr "Déconnecter" -#: ../ProjectController.py:1549 +#: ../ProjectController.py:1820 msgid "Disconnect from PLC" msgstr "Déconnecter l'automate" -#: ../editors/Viewer.py:495 +#: ../ProjectController.py:1323 +msgid "Disconnected" +msgstr "Déconnecté" + +#: ../editors/Viewer.py:556 ../editors/Viewer.py:2365 msgid "Divergence" msgstr "Divergence" @@ -1450,40 +1425,31 @@ msgid "Do you really want to delete the file '%s'?" msgstr "Êtes-vous sûr de vouloir supprimer le fichier '%s' ?" -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 +#: ../controls/VariablePanel.py:53 ../controls/VariablePanel.py:54 msgid "Documentation" msgstr "Documentation" -#: ../PLCOpenEditor.py:330 +#: ../PLCOpenEditor.py:328 msgid "Done" msgstr "Terminé" -#: ../plcopen/structures.py:226 -msgid "" -"Down-counter\n" -"The down-counter can be used to signal when a count has reached zero, on counting down from a preset value." -msgstr "" -"Compteur décrémental\n" -"Le compteur décrémental peut être utilisé pour signaler lorsque le compteur atteint zéro en partant d'une valeur prédéfinie." - -#: ../dialogs/ActionBlockDialog.py:37 +#: ../dialogs/ActionBlockDialog.py:38 msgid "Duration" msgstr "Durée" -#: ../canfestival/canfestival.py:139 +#: ../canfestival/canfestival.py:163 msgid "EDS files (*.eds)|*.eds|All files|*.*" msgstr "Fichiers EDS (*.eds)|*.eds|Tous les fichiers|*.*" -#: ../editors/Viewer.py:509 +#: ../editors/Viewer.py:570 msgid "Edit Block" msgstr "Editer le block" -#: ../dialogs/LDElementDialog.py:41 +#: ../dialogs/LDElementDialog.py:56 msgid "Edit Coil Values" msgstr "Editer les valeurs du relai" -#: ../dialogs/LDElementDialog.py:38 +#: ../dialogs/LDElementDialog.py:54 msgid "Edit Contact Values" msgstr "Editer les valeurs du contact" @@ -1491,15 +1457,15 @@ msgid "Edit Duration" msgstr "Editer une durée" -#: ../dialogs/SFCStepDialog.py:35 +#: ../dialogs/SFCStepDialog.py:50 msgid "Edit Step" msgstr "Editer l'étape" -#: ../wxglade_hmi/wxglade_hmi.py:12 +#: ../wxglade_hmi/wxglade_hmi.py:36 msgid "Edit a WxWidgets GUI with WXGlade" msgstr "Editer une IHM WxWidgets à l'aide de WXGlade" -#: ../dialogs/ActionBlockDialog.py:122 +#: ../dialogs/ActionBlockDialog.py:121 msgid "Edit action block properties" msgstr "Editer les propriétés du block d'actions" @@ -1507,10 +1473,7 @@ msgid "Edit array type properties" msgstr "Editer les propriétés d'un type de données tableau" -#: ../editors/Viewer.py:2186 -#: ../editors/Viewer.py:2188 -#: ../editors/Viewer.py:2706 -#: ../editors/Viewer.py:2708 +#: ../editors/Viewer.py:2586 ../editors/Viewer.py:3015 msgid "Edit comment" msgstr "Editer le commentaire" @@ -1522,47 +1485,51 @@ msgid "Edit item" msgstr "Editer l'élément" -#: ../editors/Viewer.py:2670 +#: ../editors/Viewer.py:2974 msgid "Edit jump target" msgstr "Editer la cible du renvoi" -#: ../ProjectController.py:1561 +#: ../ProjectController.py:1832 msgid "Edit raw IEC code added to code generated by PLCGenerator" msgstr "Editer le code IEC ajouté au code généré par PLCGenerator" -#: ../editors/SFCViewer.py:725 +#: ../editors/SFCViewer.py:799 msgid "Edit step name" msgstr "Editer le nom de l'étape" -#: ../dialogs/SFCTransitionDialog.py:38 +#: ../dialogs/SFCTransitionDialog.py:51 msgid "Edit transition" msgstr "Editer la transition" -#: ../IDEFrame.py:584 +#: ../IDEFrame.py:611 msgid "Editor ToolBar" msgstr "Barre d'outils d'édition" -#: ../ProjectController.py:1039 +#: ../ProjectController.py:1216 msgid "Editor selection" msgstr "Selection d'un éditeur" -#: ../editors/DataTypeEditor.py:347 +#: ../editors/DataTypeEditor.py:348 msgid "Elements :" msgstr "Eléments :" -#: ../IDEFrame.py:348 +#: ../ProjectController.py:1321 +msgid "Empty" +msgstr "Vide" + +#: ../IDEFrame.py:365 msgid "Enable Undo/Redo" msgstr "Activer Défaire/Refaire" -#: ../Beremiz_service.py:385 +#: ../Beremiz_service.py:331 msgid "Enter a name " msgstr "Saisissez un nom" -#: ../Beremiz_service.py:370 +#: ../Beremiz_service.py:316 msgid "Enter a port number " msgstr "Saisissez un numéro de port" -#: ../Beremiz_service.py:360 +#: ../Beremiz_service.py:307 msgid "Enter the IP of the interface to bind" msgstr "Saisissez l'adresse IP de l'interface à lier" @@ -1574,67 +1541,51 @@ msgid "Equal to" msgstr "Egal à" -#: ../Beremiz_service.py:271 -#: ../controls/VariablePanel.py:332 -#: ../controls/VariablePanel.py:681 -#: ../controls/DebugVariablePanel.py:379 -#: ../IDEFrame.py:966 -#: ../IDEFrame.py:1553 -#: ../IDEFrame.py:1590 -#: ../IDEFrame.py:1595 -#: ../IDEFrame.py:1609 -#: ../IDEFrame.py:1614 -#: ../IDEFrame.py:2290 -#: ../Beremiz.py:1131 -#: ../PLCOpenEditor.py:337 -#: ../PLCOpenEditor.py:342 -#: ../PLCOpenEditor.py:416 -#: ../PLCOpenEditor.py:426 -#: ../editors/TextViewer.py:369 -#: ../editors/DataTypeEditor.py:549 -#: ../editors/DataTypeEditor.py:554 -#: ../editors/DataTypeEditor.py:578 -#: ../editors/DataTypeEditor.py:583 -#: ../editors/DataTypeEditor.py:593 -#: ../editors/DataTypeEditor.py:744 -#: ../editors/DataTypeEditor.py:751 -#: ../editors/Viewer.py:365 -#: ../editors/LDViewer.py:666 -#: ../editors/LDViewer.py:882 -#: ../editors/LDViewer.py:886 -#: ../ProjectController.py:225 -#: ../dialogs/PouNameDialog.py:53 -#: ../dialogs/PouTransitionDialog.py:107 -#: ../dialogs/BrowseLocationsDialog.py:212 -#: ../dialogs/ProjectDialog.py:71 -#: ../dialogs/SFCStepNameDialog.py:59 -#: ../dialogs/ConnectionDialog.py:159 -#: ../dialogs/FBDVariableDialog.py:201 -#: ../dialogs/PouActionDialog.py:104 -#: ../dialogs/BrowseValuesLibraryDialog.py:83 -#: ../dialogs/PouDialog.py:132 -#: ../dialogs/SFCTransitionDialog.py:147 +#: ../dialogs/ForceVariableDialog.py:179 +#: ../dialogs/SearchInProjectDialog.py:168 ../dialogs/SFCStepNameDialog.py:60 #: ../dialogs/DurationEditorDialog.py:121 #: ../dialogs/DurationEditorDialog.py:163 -#: ../dialogs/SearchInProjectDialog.py:157 -#: ../dialogs/SFCStepDialog.py:130 -#: ../dialogs/ArrayTypeDialog.py:97 -#: ../dialogs/ArrayTypeDialog.py:103 -#: ../dialogs/FBDBlockDialog.py:164 -#: ../dialogs/ForceVariableDialog.py:179 +#: ../dialogs/PouTransitionDialog.py:112 ../dialogs/BlockPreviewDialog.py:236 +#: ../dialogs/ProjectDialog.py:71 ../dialogs/ArrayTypeDialog.py:97 +#: ../dialogs/ArrayTypeDialog.py:103 ../dialogs/PouNameDialog.py:54 +#: ../dialogs/BrowseLocationsDialog.py:216 +#: ../dialogs/BrowseValuesLibraryDialog.py:83 +#: ../dialogs/PouActionDialog.py:104 ../dialogs/PouDialog.py:134 +#: ../PLCOpenEditor.py:335 ../PLCOpenEditor.py:340 ../PLCOpenEditor.py:420 +#: ../PLCOpenEditor.py:430 ../editors/ResourceEditor.py:436 +#: ../editors/Viewer.py:423 ../editors/LDViewer.py:666 +#: ../editors/LDViewer.py:882 ../editors/LDViewer.py:886 +#: ../editors/DataTypeEditor.py:550 ../editors/DataTypeEditor.py:555 +#: ../editors/DataTypeEditor.py:579 ../editors/DataTypeEditor.py:584 +#: ../editors/DataTypeEditor.py:594 ../editors/DataTypeEditor.py:745 +#: ../editors/DataTypeEditor.py:752 ../editors/TextViewer.py:389 +#: ../editors/CodeFileEditor.py:783 ../ProjectController.py:343 +#: ../ProjectController.py:471 ../ProjectController.py:478 +#: ../controls/FolderTree.py:217 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:166 +#: ../controls/DebugVariablePanel/DebugVariableTextViewer.py:137 +#: ../controls/DebugVariablePanel/DebugVariableGraphicViewer.py:231 +#: ../controls/VariablePanel.py:402 ../controls/VariablePanel.py:784 +#: ../Beremiz.py:1203 ../IDEFrame.py:1003 ../IDEFrame.py:1613 +#: ../IDEFrame.py:1654 ../IDEFrame.py:1659 ../IDEFrame.py:1673 +#: ../IDEFrame.py:1678 ../Beremiz_service.py:211 msgid "Error" msgstr "Erreur" -#: ../ProjectController.py:601 -msgid "Error : At least one configuration and one resource must be declared in PLC !\n" -msgstr "Erreur : Au moins une configuration ou une ressource doit être déclarée dans l'automate !\n" - -#: ../ProjectController.py:593 +#: ../ProjectController.py:748 +msgid "" +"Error : At least one configuration and one resource must be declared in PLC " +"!\n" +msgstr "" +"Erreur : Au moins une configuration ou une ressource doit être déclarée dans" +" l'automate !\n" + +#: ../ProjectController.py:740 #, python-format msgid "Error : IEC to C compiler returned %d\n" msgstr "Erreur : Le compilateur d'IEC en C a retourné %d\n" -#: ../ProjectController.py:534 +#: ../ProjectController.py:671 #, python-format msgid "" "Error in ST/IL/SFC code generator :\n" @@ -1643,38 +1594,37 @@ "Erreur dans le générateur de code ST/IL/SFC :\n" "%s\n" -#: ../ConfigTreeNode.py:183 +#: ../ConfigTreeNode.py:216 #, python-format msgid "Error while saving \"%s\"\n" msgstr "Erreur lors de l'enregistrement de \"%s\"\n" -#: ../canfestival/canfestival.py:144 +#: ../canfestival/canfestival.py:168 msgid "Error: Export slave failed\n" msgstr "Erreur : L'export de l'esclave a échoué\n" -#: ../canfestival/canfestival.py:345 +#: ../canfestival/canfestival.py:369 msgid "Error: No Master generated\n" msgstr "Erreur : Aucun maître généré\n" -#: ../canfestival/canfestival.py:340 +#: ../canfestival/canfestival.py:364 msgid "Error: No PLC built\n" msgstr "Erreur : Aucun automate compilé\n" -#: ../ProjectController.py:1416 +#: ../ProjectController.py:1687 #, python-format msgid "Exception while connecting %s!\n" msgstr "Une exception est apparu au cours de la connexion %s !\n" -#: ../dialogs/FBDBlockDialog.py:95 +#: ../dialogs/FBDBlockDialog.py:117 msgid "Execution Control:" msgstr "Contrôle d'exécution :" -#: ../dialogs/FBDVariableDialog.py:76 -#: ../dialogs/FBDBlockDialog.py:87 +#: ../dialogs/FBDVariableDialog.py:79 ../dialogs/FBDBlockDialog.py:105 msgid "Execution Order:" msgstr "Ordre d'exécution :" -#: ../features.py:11 +#: ../features.py:35 msgid "Experimental web based HMI" msgstr "IHM expérimentale utilisant les technologies web" @@ -1686,59 +1636,52 @@ msgid "Exponentiation" msgstr "Exponentiel" -#: ../canfestival/canfestival.py:150 +#: ../canfestival/canfestival.py:174 msgid "Export CanOpen slave to EDS file" msgstr "Exporter un esclave CANopen sous la forme d'un fichier EDS" -#: ../controls/DebugVariablePanel.py:1472 -#: ../editors/GraphicViewer.py:144 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:243 msgid "Export graph values to clipboard" msgstr "Exporter les valeurs du graphique vers le presse-papier" -#: ../canfestival/canfestival.py:149 +#: ../canfestival/canfestival.py:173 msgid "Export slave" msgstr "Exporter un esclave" -#: ../dialogs/FBDVariableDialog.py:69 +#: ../dialogs/FBDVariableDialog.py:89 msgid "Expression:" msgstr "Expression :" -#: ../controls/VariablePanel.py:77 +#: ../controls/VariablePanel.py:72 msgid "External" msgstr "Externe" -#: ../ProjectController.py:605 +#: ../ProjectController.py:761 msgid "Extracting Located Variables...\n" msgstr "Extraction des variables adressées en cours...\n" -#: ../controls/ProjectPropertiesPanel.py:143 -#: ../dialogs/PouTransitionDialog.py:35 -#: ../dialogs/PouActionDialog.py:31 -#: ../dialogs/PouDialog.py:36 +#: ../dialogs/PouTransitionDialog.py:40 ../dialogs/PouActionDialog.py:31 +#: ../dialogs/PouDialog.py:36 ../controls/ProjectPropertiesPanel.py:143 msgid "FBD" msgstr "FBD" -#: ../ProjectController.py:1480 +#: ../ProjectController.py:1750 msgid "Failed : Must build before transfer.\n" msgstr "Echec : Le projet doit être compilé avant d'être transféré.\n" -#: ../editors/Viewer.py:404 -#: ../dialogs/LDElementDialog.py:84 +#: ../dialogs/LDElementDialog.py:77 ../editors/Viewer.py:462 msgid "Falling Edge" msgstr "Front descendant" -#: ../plcopen/structures.py:216 -msgid "" -"Falling edge detector\n" -"The output produces a single pulse when a falling edge is detected." -msgstr "" -"Détecteur de front descendant\n" -"La sortie produit une impulsion unique lorsqu'un front descendant est détecté." - -#: ../ProjectController.py:927 +#: ../ProjectController.py:1029 msgid "Fatal : cannot get builder.\n" msgstr "Erreur fatale : impossible de trouver un compilateur.\n" +#: ../Beremiz.py:118 +#, python-format +msgid "Fetching %s" +msgstr "Recherche %s" + #: ../dialogs/DurationEditorDialog.py:160 #, python-format msgid "Field %s hasn't a valid value!" @@ -1749,17 +1692,21 @@ msgid "Fields %s haven't a valid value!" msgstr "Les champs %s n'ont pas une valeur valide !" -#: ../IDEFrame.py:358 -#: ../dialogs/FindInPouDialog.py:30 -#: ../dialogs/FindInPouDialog.py:99 +#: ../controls/FolderTree.py:216 +#, python-format +msgid "File '%s' already exists!" +msgstr "Le fichier '%s' existe déjà !" + +#: ../dialogs/SearchInProjectDialog.py:100 ../dialogs/FindInPouDialog.py:36 +#: ../dialogs/FindInPouDialog.py:106 ../IDEFrame.py:375 msgid "Find" msgstr "Rechercher" -#: ../IDEFrame.py:360 +#: ../IDEFrame.py:377 msgid "Find Next" msgstr "Recherche suivante" -#: ../IDEFrame.py:362 +#: ../IDEFrame.py:379 msgid "Find Previous" msgstr "Recherche précédente" @@ -1767,16 +1714,15 @@ msgid "Find position" msgstr "Trouver la position" -#: ../dialogs/FindInPouDialog.py:51 +#: ../dialogs/FindInPouDialog.py:57 msgid "Find:" msgstr "Rechercher :" -#: ../connectors/PYRO/__init__.py:125 +#: ../connectors/PYRO/__init__.py:163 msgid "Force runtime reload\n" msgstr "Redémarrage du runtime forcé\n" -#: ../controls/DebugVariablePanel.py:1934 -#: ../editors/Viewer.py:1385 +#: ../editors/Viewer.py:1564 msgid "Force value" msgstr "Forcer la valeur" @@ -1784,80 +1730,74 @@ msgid "Forcing Variable Value" msgstr "Forcer la valeur de la variable" -#: ../dialogs/PouTransitionDialog.py:97 -#: ../dialogs/ProjectDialog.py:70 -#: ../dialogs/PouActionDialog.py:94 -#: ../dialogs/PouDialog.py:114 -#: ../dialogs/SFCTransitionDialog.py:147 +#: ../dialogs/SFCTransitionDialog.py:179 ../dialogs/PouTransitionDialog.py:102 +#: ../dialogs/ProjectDialog.py:70 ../dialogs/PouActionDialog.py:94 +#: ../dialogs/PouDialog.py:116 #, python-format msgid "Form isn't complete. %s must be filled!" msgstr "Le formulaire est incomplet. %s doit être complété !" -#: ../dialogs/ConnectionDialog.py:149 -#: ../dialogs/FBDBlockDialog.py:154 +#: ../dialogs/SFCStepDialog.py:144 ../dialogs/FBDBlockDialog.py:232 +#: ../dialogs/ConnectionDialog.py:160 msgid "Form isn't complete. Name must be filled!" msgstr "Le formulaire est incomplet. Le nom doit être complété !" -#: ../dialogs/SearchInProjectDialog.py:145 -msgid "Form isn't complete. Pattern to search must be filled!" -msgstr "Le formulaire est incomplet. Le modèle à chercher doit être complété !" - -#: ../dialogs/FBDBlockDialog.py:152 +#: ../dialogs/FBDBlockDialog.py:228 msgid "Form isn't complete. Valid block type must be selected!" -msgstr "Le formulaire est incomplet. Un type de bloc valide doit être sélectionné !" - -#: ../dialogs/FindInPouDialog.py:67 +msgstr "" +"Le formulaire est incomplet. Un type de bloc valide doit être sélectionné !" + +#: ../dialogs/FindInPouDialog.py:74 msgid "Forward" msgstr "Vers le bas" -#: ../dialogs/SearchInProjectDialog.py:44 +#: ../dialogs/SearchInProjectDialog.py:36 ../IDEFrame.py:1745 msgid "Function" msgstr "Fonction" -#: ../IDEFrame.py:334 +#: ../IDEFrame.py:349 msgid "Function &Block" msgstr "&Bloc Fonctionnel" -#: ../IDEFrame.py:1845 -#: ../dialogs/SearchInProjectDialog.py:45 +#: ../dialogs/SearchInProjectDialog.py:37 ../IDEFrame.py:1744 +#: ../IDEFrame.py:1937 msgid "Function Block" msgstr "Bloc fonctionnel" -#: ../controls/VariablePanel.py:744 +#: ../controls/VariablePanel.py:837 msgid "Function Block Types" msgstr "Types de blocs fonctionnels" -#: ../PLCControler.py:94 +#: ../PLCControler.py:95 msgid "Function Blocks" msgstr "Blocs fonctionnels" -#: ../editors/Viewer.py:236 +#: ../editors/Viewer.py:248 msgid "Function Blocks can't be used in Functions!" msgstr "Les blocs fonctionnels ne peuvent être utilisés dans des functions !" -#: ../PLCControler.py:2180 +#: ../PLCControler.py:2337 #, python-format msgid "FunctionBlock \"%s\" can't be pasted in a Function!!!" msgstr "Le bloc fonctionnel \"%s\" ne peuvent être collés dans une function !" -#: ../PLCControler.py:94 +#: ../PLCControler.py:95 msgid "Functions" msgstr "Fonctions" -#: ../PLCOpenEditor.py:119 +#: ../PLCOpenEditor.py:115 msgid "Generate Program" msgstr "Générer le program" -#: ../ProjectController.py:524 +#: ../ProjectController.py:662 msgid "Generating SoftPLC IEC-61131 ST/IL/SFC code...\n" msgstr "Création du code ST/IL/SFC de l'automate IEC-61131 en cours...\n" -#: ../controls/VariablePanel.py:78 +#: ../controls/VariablePanel.py:73 msgid "Global" msgstr "Globale" -#: ../controls/DebugVariablePanel.py:1471 -#: ../editors/GraphicViewer.py:131 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:242 msgid "Go to current value" msgstr "Aller à la valeur actuelle" @@ -1877,6 +1817,10 @@ msgid "Grid Resolution:" msgstr "Résolution de la grille :" +#: ../runtime/NevowServer.py:181 +msgid "HTTP interface port :" +msgstr "Port d'interface HTTP:" + #: ../controls/ProjectPropertiesPanel.py:120 msgid "Height:" msgstr "Hauteur :" @@ -1893,99 +1837,81 @@ msgid "Hours:" msgstr "Heures :" -#: ../plcopen/structures.py:278 -msgid "" -"Hysteresis\n" -"The hysteresis function block provides a hysteresis boolean output driven by the difference of two floating point (REAL) inputs XIN1 and XIN2." -msgstr "" -"Hystérésis\n" -"Le bloc functionnel hystérésis fourni un booléen en sortie suivant une courbe d'hystérésis entre les deux entrées réelles (REAL) XIN1 et XIN2." - -#: ../ProjectController.py:851 -msgid "IEC-61131-3 code generation failed !\n" -msgstr "La création du code IEC-61131-3 a échouée !\n" - -#: ../dialogs/PouTransitionDialog.py:35 -#: ../dialogs/PouActionDialog.py:31 -#: ../dialogs/PouDialog.py:36 +#: ../dialogs/PouActionDialog.py:31 ../dialogs/PouDialog.py:36 msgid "IL" msgstr "IL" -#: ../Beremiz_service.py:361 -#: ../Beremiz_service.py:362 +#: ../dialogs/DiscoveryDialog.py:94 +msgid "IP" +msgstr "IP" + +#: ../Beremiz_service.py:308 ../Beremiz_service.py:309 msgid "IP is not valid!" msgstr "l'IP est invalide !" -#: ../svgui/svgui.py:17 -#: ../svgui/svgui.py:18 +#: ../svgui/svgui.py:42 ../svgui/svgui.py:43 msgid "Import SVG" msgstr "Importer un SVG" -#: ../controls/VariablePanel.py:76 -#: ../editors/Viewer.py:1412 -#: ../dialogs/FBDVariableDialog.py:34 +#: ../dialogs/FBDVariableDialog.py:38 ../editors/Viewer.py:1591 +#: ../controls/VariablePanel.py:71 msgid "InOut" msgstr "Entrée-Sortie" -#: ../editors/Viewer.py:999 +#: ../editors/Viewer.py:1110 msgid "Inactive" msgstr "Inactif" -#: ../controls/VariablePanel.py:265 -#, python-format -msgid "Incompatible data types between \"%s\" and \"%s\"" -msgstr "Types de donnée imcompatible entre \"%s\" et \"%s\"" - -#: ../controls/VariablePanel.py:274 -#, python-format -msgid "Incompatible size of data between \"%s\" and \"%s\"" -msgstr "Taille de donnée incompatible entre \"%s\" et \"%s\"" - -#: ../controls/VariablePanel.py:270 +#: ../controls/VariablePanel.py:276 +#, python-brace-format +msgid "Incompatible data types between \"{a1}\" and \"{a2}\"" +msgstr "Type de données incompatible entre \"{a1}\" et \"{a2}\"" + +#: ../controls/VariablePanel.py:282 #, python-format msgid "Incompatible size of data between \"%s\" and \"BOOL\"" msgstr "Taille de donnée incompatible entre \"%s\" et \"BOOL\"" -#: ../dialogs/ActionBlockDialog.py:37 +#: ../controls/VariablePanel.py:286 +#, python-brace-format +msgid "Incompatible size of data between \"{a1}\" and \"{a2}\"" +msgstr "Taille de données incompatible entre \"{a1}\" et \"{a2}\"" + +#: ../dialogs/ActionBlockDialog.py:38 msgid "Indicator" msgstr "Indicateur" -#: ../editors/Viewer.py:491 +#: ../editors/Viewer.py:552 msgid "Initial Step" msgstr "Étape initiale" -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 -#: ../editors/DataTypeEditor.py:50 +#: ../editors/DataTypeEditor.py:50 ../controls/VariablePanel.py:53 +#: ../controls/VariablePanel.py:54 msgid "Initial Value" msgstr "Valeur initiale" -#: ../editors/DataTypeEditor.py:184 -#: ../editors/DataTypeEditor.py:215 -#: ../editors/DataTypeEditor.py:271 -#: ../editors/DataTypeEditor.py:309 +#: ../editors/DataTypeEditor.py:185 ../editors/DataTypeEditor.py:216 +#: ../editors/DataTypeEditor.py:272 ../editors/DataTypeEditor.py:310 msgid "Initial Value:" msgstr "Valeur initiale :" -#: ../svgui/svgui.py:21 +#: ../svgui/svgui.py:46 msgid "Inkscape" msgstr "Inkscape" -#: ../dialogs/ActionBlockDialog.py:41 -#: ../dialogs/SFCTransitionDialog.py:66 -#: ../dialogs/SFCTransitionDialog.py:137 +#: ../dialogs/SFCTransitionDialog.py:75 ../dialogs/ActionBlockDialog.py:42 msgid "Inline" msgstr "Inline" -#: ../controls/VariablePanel.py:76 -#: ../editors/Viewer.py:1410 -#: ../dialogs/BrowseLocationsDialog.py:35 -#: ../dialogs/FBDVariableDialog.py:33 -#: ../dialogs/SFCStepDialog.py:61 +#: ../dialogs/SFCStepDialog.py:70 ../dialogs/FBDVariableDialog.py:37 +#: ../dialogs/BrowseLocationsDialog.py:40 ../editors/Viewer.py:289 +#: ../editors/Viewer.py:1589 ../editors/TextViewer.py:307 +#: ../controls/LocationCellEditor.py:98 ../controls/VariablePanel.py:71 +#: ../controls/VariablePanel.py:291 ../controls/VariablePanel.py:351 msgid "Input" msgstr "Entrée" -#: ../dialogs/FBDBlockDialog.py:78 +#: ../dialogs/FBDBlockDialog.py:93 msgid "Inputs:" msgstr "Entrées :" @@ -1993,24 +1919,16 @@ msgid "Insertion (into)" msgstr "Insertion (au milieu)" -#: ../plcopen/plcopen.py:1843 +#: ../plcopen/plcopen.py:1691 #, python-format msgid "Instance with id %d doesn't exist!" msgstr "L'instance dont l'id est %d n'existe pas !" -#: ../editors/ResourceEditor.py:255 +#: ../editors/ResourceEditor.py:264 msgid "Instances:" msgstr "Instances :" -#: ../plcopen/structures.py:258 -msgid "" -"Integral\n" -"The integral function block integrates the value of input XIN over time." -msgstr "" -"Intégrale\n" -"Le bloc fonctionnel INTEGRAL intègre les valeurs de l'entrée XIN en fonction du temps." - -#: ../controls/VariablePanel.py:75 +#: ../controls/VariablePanel.py:70 msgid "Interface" msgstr "Interface" @@ -2022,40 +1940,42 @@ msgid "Interval" msgstr "Interval" -#: ../PLCControler.py:2157 -#: ../PLCControler.py:2195 +#: ../PLCControler.py:2325 msgid "Invalid plcopen element(s)!!!" msgstr "Les éléments plcopen ne sont pas valides !!! " -#: ../canfestival/config_utils.py:376 -#: ../canfestival/config_utils.py:637 -#, python-format -msgid "Invalid type \"%s\"-> %d != %d for location\"%s\"" -msgstr "Type invalide \"%s\"-> %d != %d pour cette adresse \"%s\"" - -#: ../dialogs/ForceVariableDialog.py:177 -#, python-format -msgid "Invalid value \"%s\" for \"%s\" variable!" -msgstr "Valeur \"%s\" invalide pour une variable de type \"%s\" !" - -#: ../controls/DebugVariablePanel.py:319 -#: ../controls/DebugVariablePanel.py:322 +#: ../canfestival/config_utils.py:381 +#, python-brace-format +msgid "Invalid type \"{a1}\"-> {a2} != {a3} for location\"{a4}\"" +msgstr "Type invalide \"{a1}\"-> {a2} != {a3} pour \"{a4}\"" + +#: ../canfestival/config_utils.py:645 +#, python-brace-format +msgid "Invalid type \"{a1}\"-> {a2} != {a3} for location \"{a4}\"" +msgstr "Type invalide \"{a1}\"-> {a2} != {a3} pour \"{a4}\"" + +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:132 +#: ../controls/DebugVariablePanel/DebugVariableTextViewer.py:92 +#: ../controls/DebugVariablePanel/DebugVariableGraphicViewer.py:166 #, python-format msgid "Invalid value \"%s\" for debug variable" msgstr "Chemin de variable à déboguer \"%s\" invalide" -#: ../controls/VariablePanel.py:244 -#: ../controls/VariablePanel.py:247 +#: ../controls/VariablePanel.py:255 ../controls/VariablePanel.py:258 #, python-format msgid "Invalid value \"%s\" for variable grid element" msgstr "Valeur \"%s\" invalide pour un élément de la grille de variables" -#: ../editors/Viewer.py:221 -#: ../editors/Viewer.py:224 +#: ../editors/Viewer.py:233 ../editors/Viewer.py:236 #, python-format msgid "Invalid value \"%s\" for viewer block" msgstr "Valeur \"%s\" invalide pour un élément graphique" +#: ../dialogs/ForceVariableDialog.py:177 +#, python-brace-format +msgid "Invalid value \"{a1}\" for \"{a2}\" variable!" +msgstr "Valeur invalide \"{a1}\" pour la variable \"{a2}\"" + #: ../dialogs/DurationEditorDialog.py:121 msgid "" "Invalid value!\n" @@ -2064,26 +1984,22 @@ "Valeur invalide !\n" "Vous devez rentrer une valeur numérique." -#: ../editors/Viewer.py:496 +#: ../editors/Viewer.py:557 ../editors/Viewer.py:2354 msgid "Jump" msgstr "Renvoi" -#: ../controls/ProjectPropertiesPanel.py:143 -#: ../dialogs/PouTransitionDialog.py:35 -#: ../dialogs/PouActionDialog.py:31 -#: ../dialogs/PouDialog.py:36 +#: ../dialogs/PouTransitionDialog.py:40 ../dialogs/PouActionDialog.py:31 +#: ../dialogs/PouDialog.py:36 ../controls/ProjectPropertiesPanel.py:143 msgid "LD" msgstr "LD" -#: ../editors/LDViewer.py:215 -#: ../editors/LDViewer.py:231 +#: ../editors/LDViewer.py:215 ../editors/LDViewer.py:231 #, python-format msgid "Ladder element with id %d is on more than one rung." msgstr "L'élément de LD dont l'id est %d apparait dans plusieurs échelons. " -#: ../dialogs/PouTransitionDialog.py:86 -#: ../dialogs/PouActionDialog.py:83 -#: ../dialogs/PouDialog.py:102 +#: ../dialogs/PouTransitionDialog.py:91 ../dialogs/PouActionDialog.py:83 +#: ../dialogs/PouDialog.py:104 msgid "Language" msgstr "Langue" @@ -2091,29 +2007,28 @@ msgid "Language (optional):" msgstr "Langue (optionnel) :" -#: ../dialogs/PouTransitionDialog.py:60 -#: ../dialogs/PouActionDialog.py:56 -#: ../dialogs/PouDialog.py:71 +#: ../dialogs/PouTransitionDialog.py:65 ../dialogs/PouActionDialog.py:56 +#: ../dialogs/PouDialog.py:73 msgid "Language:" msgstr "Langue :" -#: ../ProjectController.py:1486 +#: ../ProjectController.py:1756 msgid "Latest build already matches current target. Transfering anyway...\n" msgstr "La dernière compilation correspond à la cible actuelle...\n" -#: ../Beremiz_service.py:331 +#: ../Beremiz_service.py:271 msgid "Launch WX GUI inspector" msgstr "Lancer un inspecteur d'IHM WX" -#: ../Beremiz_service.py:330 +#: ../Beremiz_service.py:270 msgid "Launch a live Python shell" msgstr "Lancer une console Python" -#: ../editors/Viewer.py:427 +#: ../editors/Viewer.py:485 msgid "Left" msgstr "Gauche" -#: ../dialogs/LDPowerRailDialog.py:55 +#: ../dialogs/LDPowerRailDialog.py:62 msgid "Left PowerRail" msgstr "Barre d'alimentation à gauche" @@ -2129,36 +2044,39 @@ msgid "Less than or equal to" msgstr "Inférieur ou égal à" -#: ../IDEFrame.py:604 +#: ../IDEFrame.py:631 msgid "Library" msgstr "Librairie" +#: ../dialogs/AboutDialog.py:151 +msgid "License" +msgstr "Licence" + #: ../plcopen/iec_std.csv:73 msgid "Limitation" msgstr "Limitation" -#: ../targets/toolchain_gcc.py:142 +#: ../targets/toolchain_gcc.py:166 msgid "Linking :\n" msgstr "Linkage :\n" -#: ../controls/VariablePanel.py:77 -#: ../dialogs/DiscoveryDialog.py:110 +#: ../dialogs/DiscoveryDialog.py:111 ../controls/VariablePanel.py:72 msgid "Local" msgstr "Locale" -#: ../canfestival/canfestival.py:322 +#: ../canfestival/canfestival.py:346 msgid "Local entries" msgstr "Entrées locales" -#: ../ProjectController.py:1391 +#: ../ProjectController.py:1662 msgid "Local service discovery failed!\n" msgstr "Echec de la sélection d'un service!\n" -#: ../controls/VariablePanel.py:58 +#: ../controls/VariablePanel.py:53 msgid "Location" msgstr "Adresse" -#: ../dialogs/BrowseLocationsDialog.py:68 +#: ../dialogs/BrowseLocationsDialog.py:72 msgid "Locations available:" msgstr "Adresses disponibles :" @@ -2166,42 +2084,44 @@ msgid "Logarithm to base 10" msgstr "Logarithme de base 10" -#: ../connectors/PYRO/__init__.py:55 +#: ../connectors/PYRO/__init__.py:94 #, python-format msgid "MDNS resolution failure for '%s'\n" msgstr "Echec de la résolution MDNS pour '%s'\n" -#: ../canfestival/SlaveEditor.py:41 -#: ../canfestival/NetworkEditor.py:62 +#: ../canfestival/SlaveEditor.py:64 ../canfestival/NetworkEditor.py:85 msgid "Map Variable" msgstr "Variable mappable" -#: ../features.py:7 +#: ../features.py:31 msgid "Map located variables over CANopen" msgstr "Mappe des variables localisées sur un bus CANopen" -#: ../canfestival/NetworkEditor.py:83 +#: ../canfestival/NetworkEditor.py:106 msgid "Master" msgstr "Maître" -#: ../ConfigTreeNode.py:500 -#, python-format -msgid "Max count (%d) reached for this confnode of type %s " -msgstr "Nombre limite(%d) atteint pour les plugin de type %s" +#: ../ConfigTreeNode.py:539 +#, python-brace-format +msgid "Max count ({a1}) reached for this confnode of type {a2} " +msgstr "" +"Valeur maximal du compteur atteinte ({a1}) pour ce confnode de type {a2}" #: ../plcopen/iec_std.csv:71 msgid "Maximum" msgstr "Maximum" -#: ../editors/DataTypeEditor.py:238 +#: ../editors/DataTypeEditor.py:239 msgid "Maximum:" msgstr "Maximum :" -#: ../dialogs/BrowseLocationsDialog.py:37 +#: ../dialogs/BrowseLocationsDialog.py:42 ../editors/Viewer.py:289 +#: ../editors/TextViewer.py:307 ../controls/LocationCellEditor.py:98 +#: ../controls/VariablePanel.py:291 ../controls/VariablePanel.py:351 msgid "Memory" msgstr "Mémoire" -#: ../IDEFrame.py:572 +#: ../IDEFrame.py:599 msgid "Menu ToolBar" msgstr "Barre d'outils du menu principal" @@ -2209,7 +2129,7 @@ msgid "Microseconds:" msgstr "Microsecondes :" -#: ../editors/Viewer.py:432 +#: ../editors/Viewer.py:490 msgid "Middle" msgstr "Milieu" @@ -2221,7 +2141,7 @@ msgid "Minimum" msgstr "Minimum" -#: ../editors/DataTypeEditor.py:225 +#: ../editors/DataTypeEditor.py:226 msgid "Minimum:" msgstr "Minimum :" @@ -2233,64 +2153,56 @@ msgid "Miscellaneous" msgstr "Divers" -#: ../dialogs/LDElementDialog.py:59 +#: ../dialogs/LDElementDialog.py:63 msgid "Modifier:" msgstr "Modificateur :" -#: ../PLCGenerator.py:732 -#: ../PLCGenerator.py:975 -#, python-format -msgid "More than one connector found corresponding to \"%s\" continuation in \"%s\" POU" -msgstr "Plusieurs connecteurs trouvés pour le prolongement \"%s\" dans le POU \"%s\"" - -#: ../dialogs/ActionBlockDialog.py:141 +#: ../PLCGenerator.py:786 ../PLCGenerator.py:1230 +#, python-brace-format +msgid "" +"More than one connector found corresponding to \"{a1}\" continuation in " +"\"{a2}\" POU" +msgstr "" +"Plus d'un connecteur correspondant à \"{a1}\" trouvé dans la continuité de " +"\"{a2}\" POU" + +#: ../dialogs/ActionBlockDialog.py:140 msgid "Move action down" msgstr "Déplacer une action vers le bas" -#: ../dialogs/ActionBlockDialog.py:140 +#: ../dialogs/ActionBlockDialog.py:139 msgid "Move action up" msgstr "Déplacer une action vers le haut" -#: ../controls/DebugVariablePanel.py:1532 -msgid "Move debug variable down" -msgstr "Déplacer une variable à déboguer vers le bas" - -#: ../controls/DebugVariablePanel.py:1531 -msgid "Move debug variable up" -msgstr "Déplacer une variable à déboguer vers le haut" - #: ../controls/CustomEditableListBox.py:43 msgid "Move down" msgstr "Déplacer vers le haut" -#: ../editors/DataTypeEditor.py:354 +#: ../editors/DataTypeEditor.py:355 msgid "Move element down" msgstr "Déplcer un élément vers le bas" -#: ../editors/DataTypeEditor.py:353 +#: ../editors/DataTypeEditor.py:354 msgid "Move element up" msgstr "Déplacer un élément vers le haut" -#: ../editors/ResourceEditor.py:262 +#: ../editors/ResourceEditor.py:271 msgid "Move instance down" msgstr "Déplacer une instance vers le bas" -#: ../editors/ResourceEditor.py:261 +#: ../editors/ResourceEditor.py:270 msgid "Move instance up" msgstr "Déplacer une instance vers le haut" -#: ../editors/ResourceEditor.py:233 +#: ../editors/ResourceEditor.py:242 msgid "Move task down" msgstr "Déplcer une tâche vers le bas" -#: ../editors/ResourceEditor.py:232 +#: ../editors/ResourceEditor.py:241 msgid "Move task up" msgstr "Déplacer une tâche vers le haut" -#: ../IDEFrame.py:82 -#: ../IDEFrame.py:97 -#: ../IDEFrame.py:127 -#: ../IDEFrame.py:168 +#: ../IDEFrame.py:99 ../IDEFrame.py:114 ../IDEFrame.py:144 ../IDEFrame.py:185 msgid "Move the view" msgstr "Déplacer la vue" @@ -2298,13 +2210,11 @@ msgid "Move up" msgstr "Déplacer vers le bas" -#: ../controls/VariablePanel.py:383 -#: ../c_ext/CFileEditor.py:520 +#: ../editors/CodeFileEditor.py:661 ../controls/VariablePanel.py:453 msgid "Move variable down" msgstr "Déplacer une variable vers le bas" -#: ../controls/VariablePanel.py:382 -#: ../c_ext/CFileEditor.py:519 +#: ../editors/CodeFileEditor.py:660 ../controls/VariablePanel.py:452 msgid "Move variable up" msgstr "Déplacer une variable vers le haut" @@ -2320,23 +2230,22 @@ msgid "My Computer:" msgstr "Poste de travail :" -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 -#: ../editors/DataTypeEditor.py:50 -#: ../editors/ResourceEditor.py:68 -#: ../editors/ResourceEditor.py:77 +#: ../dialogs/DiscoveryDialog.py:92 +msgid "NAME" +msgstr "NOM" + +#: ../editors/ResourceEditor.py:68 ../editors/ResourceEditor.py:83 +#: ../editors/DataTypeEditor.py:50 ../controls/VariablePanel.py:53 +#: ../controls/VariablePanel.py:54 msgid "Name" msgstr "Nom" -#: ../Beremiz_service.py:386 +#: ../Beremiz_service.py:332 msgid "Name must not be null!" msgstr "Le nom ne doit pas être vide !" -#: ../dialogs/ConnectionDialog.py:65 -#: ../dialogs/FBDVariableDialog.py:89 -#: ../dialogs/LDElementDialog.py:88 -#: ../dialogs/SFCStepDialog.py:51 -#: ../dialogs/FBDBlockDialog.py:70 +#: ../dialogs/SFCStepDialog.py:56 ../dialogs/FBDBlockDialog.py:83 +#: ../dialogs/ConnectionDialog.py:75 msgid "Name:" msgstr "Nom :" @@ -2344,15 +2253,20 @@ msgid "Natural logarithm" msgstr "Logarithme népérien" -#: ../editors/Viewer.py:402 -#: ../dialogs/LDElementDialog.py:67 +#: ../dialogs/LDElementDialog.py:75 ../editors/Viewer.py:460 msgid "Negated" msgstr "Inversé" -#: ../Beremiz.py:309 -#: ../Beremiz.py:344 -#: ../PLCOpenEditor.py:106 -#: ../PLCOpenEditor.py:148 +#: ../Beremiz_service.py:578 +msgid "Nevow Web service failed. " +msgstr "Service Web Nevow échoué." + +#: ../Beremiz_service.py:554 +msgid "Nevow/Athena import failed :" +msgstr "Import Nevow/Athena échoué:" + +#: ../PLCOpenEditor.py:102 ../PLCOpenEditor.py:144 ../Beremiz.py:321 +#: ../Beremiz.py:356 msgid "New" msgstr "Nouveau" @@ -2360,30 +2274,25 @@ msgid "New item" msgstr "Nouvel élément" -#: ../editors/Viewer.py:401 +#: ../editors/Viewer.py:459 msgid "No Modifier" msgstr "Pas de modificateur" -#: ../PLCControler.py:3054 -msgid "No PLC project found" -msgstr "Pas de projet d'automate trouvé" - -#: ../ProjectController.py:1513 +#: ../ProjectController.py:1784 msgid "No PLC to transfer (did build succeed ?)\n" msgstr "Aucun automate à transférer (la compilation a-t-elle réussi ?)\n" -#: ../PLCGenerator.py:1360 +#: ../PLCGenerator.py:1631 #, python-format msgid "No body defined in \"%s\" POU" msgstr "Pas de code défini dans le POU \"%s\"" -#: ../PLCGenerator.py:751 -#: ../PLCGenerator.py:984 -#, python-format -msgid "No connector found corresponding to \"%s\" continuation in \"%s\" POU" -msgstr "Pas de connecteur trouvé pour le prolongement \"%s\" dans le POU \"%s\"" - -#: ../PLCOpenEditor.py:349 +#: ../PLCGenerator.py:806 ../PLCGenerator.py:1241 +#, python-brace-format +msgid "No connector found corresponding to \"{a1}\" continuation in \"{a2}\" POU" +msgstr "Pas de connecteur correspondant à \"{a1}\" dans la continuité de \"{a2}\" POU" + +#: ../PLCOpenEditor.py:347 msgid "" "No documentation available.\n" "Coming soon." @@ -2391,66 +2300,72 @@ "Pas de documentation.\n" "Bientôt disponible." -#: ../PLCGenerator.py:773 +#: ../PLCGenerator.py:829 #, python-format msgid "No informations found for \"%s\" block" msgstr "Aucune information trouvée pour le block \"%s\"" -#: ../plcopen/structures.py:166 -msgid "No output variable found" -msgstr "Pas de variable de sortie trouvée." +#: ../PLCGenerator.py:1194 +#, python-brace-format +msgid "" +"No output {a1} variable found in block {a2} in POU {a3}. Connection must be " +"broken" +msgstr "" +"Pas de variable de sortie {a1} trouvée dans le bloc {a2} dans POU {a3}. La " +"connection doit-être cassée" #: ../controls/SearchResultPanel.py:169 msgid "No search results available." msgstr "Pas de résultat de recherche disponible." -#: ../svgui/svgui.py:98 +#: ../svgui/svgui.py:131 #, python-format msgid "No such SVG file: %s\n" msgstr "Fichier SVG inconnu : %s\n" -#: ../canfestival/config_utils.py:632 -#, python-format -msgid "No such index/subindex (%x,%x) (variable %s)" -msgstr "indice et sous-indice inconnu (%x,%x) (variable %s)" - -#: ../canfestival/config_utils.py:361 -#, python-format -msgid "No such index/subindex (%x,%x) in ID : %d (variable %s)" -msgstr "indice et sous-indice inconnu (%x,%x) pour l'ID : %d (variable %s)" +#: ../canfestival/config_utils.py:639 +#, python-brace-format +msgid "No such index/subindex ({a1},{a2}) (variable {a3})" +msgstr "Pas de tel index/sous-index ({a1},{a2}) (variable {a3})" + +#: ../canfestival/config_utils.py:362 +#, python-brace-format +msgid "No such index/subindex ({a1},{a2}) in ID : {a3} (variable {a4})" +msgstr "" +"Pas de tel index/sous-index ({a1},{a2}) avec l'ID : {a3} (variable {a4})" #: ../dialogs/BrowseValuesLibraryDialog.py:83 msgid "No valid value selected!" msgstr "Aucune valeur valide sélectionnée !" -#: ../PLCGenerator.py:1358 +#: ../PLCGenerator.py:1629 #, python-format msgid "No variable defined in \"%s\" POU" msgstr "Pas de varaibles définies dans le POU \"%s\"" -#: ../canfestival/config_utils.py:354 -#, python-format -msgid "Non existing node ID : %d (variable %s)" -msgstr "Le node ID n'existe pas : %d (variable %s)" - -#: ../controls/VariablePanel.py:69 +#: ../canfestival/config_utils.py:355 +#, python-brace-format +msgid "Non existing node ID : {a1} (variable {a2})" +msgstr "Node ID inexistant : {a1} (variable {a2})" + +#: ../controls/VariablePanel.py:64 msgid "Non-Retain" msgstr "Non-Persistante" -#: ../dialogs/LDElementDialog.py:62 +#: ../dialogs/LDElementDialog.py:75 msgid "Normal" msgstr "Normal" -#: ../canfestival/config_utils.py:383 -#, python-format -msgid "Not PDO mappable variable : '%s' (ID:%d,Idx:%x,sIdx:%x))" -msgstr "Variable non mappable dans un PDO : '%s' (ID:%d,Idx:%x,sIdx:%x))" +#: ../canfestival/config_utils.py:389 +#, python-brace-format +msgid "Not PDO mappable variable : '{a1}' (ID:{a2},Idx:{a3},sIdx:{a4}))" +msgstr "Variable non mappable PDO : '{a1}' (ID:{a2},Idx:{a3},sIdx:{a4}))" #: ../plcopen/iec_std.csv:80 msgid "Not equal to" msgstr "Non égal à" -#: ../dialogs/SFCDivergenceDialog.py:80 +#: ../dialogs/SFCDivergenceDialog.py:89 msgid "Number of sequences:" msgstr "Nombre de branches :" @@ -2458,51 +2373,40 @@ msgid "Numerical" msgstr "Numérique" -#: ../plcopen/structures.py:246 -msgid "" -"Off-delay timer\n" -"The off-delay timer can be used to delay setting an output false, for fixed period after input goes false." -msgstr "" -"Temporisation avec retard à l'extinction\n" -"La temporisation avec retard à l'extinction peut être utilisé pour retarder le passage de la sortie à l'état faux, d'une période fixe après le passage de l'entrée à l'état faux" - -#: ../plcopen/structures.py:241 -msgid "" -"On-delay timer\n" -"The on-delay timer can be used to delay setting an output true, for fixed period after an input becomes true." -msgstr "" -"Temporisation avec retard à l'allumage\n" -"La temporisation avec retard à l'allumage peut être utilisé pour retarder le passage de la sortie à l'état vrai, d'une période fixe après le passage de l'entrée à l'état vrai" - -#: ../dialogs/SearchInProjectDialog.py:93 +#: ../dialogs/SearchInProjectDialog.py:86 msgid "Only Elements" msgstr "Uniquement les éléments" -#: ../Beremiz.py:311 -#: ../Beremiz.py:345 -#: ../PLCOpenEditor.py:108 -#: ../PLCOpenEditor.py:149 +#: ../PLCOpenEditor.py:104 ../PLCOpenEditor.py:145 ../Beremiz.py:323 +#: ../Beremiz.py:357 msgid "Open" msgstr "Ouvrir" -#: ../svgui/svgui.py:107 +#: ../svgui/svgui.py:140 msgid "Open Inkscape" msgstr "Ouverture de Inkscape" -#: ../ProjectController.py:1565 +#: ../version.py:66 +msgid "" +"Open Source framework for automation, implemented IEC 61131 IDE with " +"constantly growing set of extensions and flexible PLC runtime." +msgstr "" +"Cadriciel Open Source pour l'automatisme, IDE implémenté en IEC 61131 avec " +"un lot d'extensions constament croissant et un executable PLC flexible." + +#: ../ProjectController.py:1836 msgid "Open a file explorer to manage project files" msgstr "Ouvrir un explorateur de fichier pour gérer les fichiers de projet" -#: ../wxglade_hmi/wxglade_hmi.py:109 +#: ../wxglade_hmi/wxglade_hmi.py:138 msgid "Open wxGlade" msgstr "Ouverture de wxGlade" -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 +#: ../controls/VariablePanel.py:53 ../controls/VariablePanel.py:54 msgid "Option" msgstr "Option" -#: ../dialogs/FindInPouDialog.py:76 +#: ../dialogs/FindInPouDialog.py:83 msgid "Options" msgstr "Options" @@ -2510,73 +2414,104 @@ msgid "Organization (optional):" msgstr "Groupe (optionnel) :" -#: ../canfestival/SlaveEditor.py:51 -#: ../canfestival/NetworkEditor.py:72 +#: ../canfestival/SlaveEditor.py:74 ../canfestival/NetworkEditor.py:95 msgid "Other Profile" msgstr "Autre profil" -#: ../controls/VariablePanel.py:76 -#: ../editors/Viewer.py:1411 -#: ../dialogs/BrowseLocationsDialog.py:36 -#: ../dialogs/FBDVariableDialog.py:35 -#: ../dialogs/SFCStepDialog.py:65 +#: ../dialogs/SFCStepDialog.py:71 ../dialogs/FBDVariableDialog.py:39 +#: ../dialogs/BrowseLocationsDialog.py:41 ../editors/Viewer.py:289 +#: ../editors/Viewer.py:1590 ../editors/TextViewer.py:307 +#: ../controls/LocationCellEditor.py:98 ../controls/VariablePanel.py:71 +#: ../controls/VariablePanel.py:291 ../controls/VariablePanel.py:351 msgid "Output" msgstr "Sortie" -#: ../canfestival/SlaveEditor.py:40 -#: ../canfestival/NetworkEditor.py:61 +#: ../canfestival/SlaveEditor.py:63 ../canfestival/NetworkEditor.py:84 msgid "PDO Receive" msgstr "PDO reçu" -#: ../canfestival/SlaveEditor.py:39 -#: ../canfestival/NetworkEditor.py:60 +#: ../canfestival/SlaveEditor.py:62 ../canfestival/NetworkEditor.py:83 msgid "PDO Transmit" msgstr "PDO transmis" -#: ../plcopen/structures.py:268 -msgid "" -"PID\n" -"The PID (proportional, Integral, Derivative) function block provides the classical three term controller for closed loop control." -msgstr "" -"PID\n" -"Le bloc fonctionnel PID (Proportionnel, Intégrale, Dérivée) fournit un controller de boucle fermé classique à trois paramètres." - -#: ../targets/toolchain_gcc.py:107 +#: ../targets/toolchain_gcc.py:131 msgid "PLC :\n" msgstr "Automate :\n" -#: ../Beremiz.py:425 +#: ../Beremiz.py:453 msgid "PLC Log" msgstr "Log de l'automate" -#: ../PLCOpenEditor.py:294 -#: ../PLCOpenEditor.py:370 +#: ../ProjectController.py:1013 +msgid "PLC code generation failed !\n" +msgstr "Génération du code PLC échouée !\n" + +#: ../Beremiz_service.py:295 +msgid "PLC is empty or already started." +msgstr "Le PLC est vide ou déjà lancé." + +#: ../Beremiz_service.py:302 +msgid "PLC is not started." +msgstr "PLC non démarré" + +#: ../PLCOpenEditor.py:196 ../PLCOpenEditor.py:309 +#, python-brace-format +msgid "" +"PLC syntax error at line {a1}:\n" +"{a2}" +msgstr "" +"Erreur de syntaxe PLC à la ligne {a1}:\n" +"{a2}" + +#: ../PLCOpenEditor.py:292 ../PLCOpenEditor.py:373 msgid "PLCOpen files (*.xml)|*.xml|All files|*.*" msgstr "Fichiers PLCOpen (*.xml)|*.xml|Tous les fichiers|*.*" -#: ../PLCOpenEditor.py:156 -#: ../PLCOpenEditor.py:212 +#: ../PLCOpenEditor.py:152 ../PLCOpenEditor.py:209 msgid "PLCOpenEditor" msgstr "PLCOpenEditor" -#: ../dialogs/PouDialog.py:98 +#: ../PLCOpenEditor.py:355 +msgid "" +"PLCOpenEditor is part of Beremiz project.\n" +"\n" +"Beremiz is an " +msgstr "" +"PLCOpenEditor fait partie du projet Beremiz.\n" +"\n" +"Beremiz est un " + +#: ../dialogs/DiscoveryDialog.py:95 +msgid "PORT" +msgstr "PORT" + +#: ../dialogs/PouDialog.py:100 msgid "POU Name" msgstr "Nom du POU" -#: ../dialogs/PouDialog.py:56 +#: ../dialogs/PouDialog.py:58 msgid "POU Name:" msgstr "Nom du POU :" -#: ../dialogs/PouDialog.py:100 +#: ../dialogs/PouDialog.py:102 msgid "POU Type" msgstr "Type du POU" -#: ../dialogs/PouDialog.py:63 +#: ../dialogs/PouDialog.py:65 msgid "POU Type:" msgstr "Type du POU :" -#: ../Beremiz.py:324 -#: ../PLCOpenEditor.py:122 +#: ../connectors/PYRO/__init__.py:45 +#, python-format +msgid "PYRO connecting to URI : %s\n" +msgstr "Connexion de PYRO à l'URI:%s\n" + +#: ../connectors/PYRO/__init__.py:61 +#, python-format +msgid "PYRO using certificates in '%s' \n" +msgstr "PYRO utilise les certificats dans '%s'\n" + +#: ../PLCOpenEditor.py:118 ../Beremiz.py:336 msgid "Page Setup" msgstr "Mise en page..." @@ -2584,101 +2519,88 @@ msgid "Page Size (optional):" msgstr "Taille de la page (optionnel) :" -#: ../IDEFrame.py:2492 +#: ../IDEFrame.py:2598 #, python-format msgid "Page: %d" msgstr "Page: %d" -#: ../controls/PouInstanceVariablesPanel.py:48 +#: ../controls/PouInstanceVariablesPanel.py:124 msgid "Parent instance" msgstr "Instance parent" -#: ../IDEFrame.py:355 -#: ../IDEFrame.py:407 -#: ../editors/Viewer.py:537 +#: ../editors/Viewer.py:598 ../IDEFrame.py:372 ../IDEFrame.py:426 msgid "Paste" msgstr "Coller" -#: ../IDEFrame.py:1776 +#: ../IDEFrame.py:1864 msgid "Paste POU" msgstr "Coller un POU" -#: ../dialogs/SearchInProjectDialog.py:64 +#: ../dialogs/SearchInProjectDialog.py:56 msgid "Pattern to search:" msgstr "Modèle à rechercher :" -#: ../dialogs/LDPowerRailDialog.py:64 +#: ../dialogs/LDPowerRailDialog.py:73 msgid "Pin number:" msgstr "Nombre de pattes :" -#: ../editors/Viewer.py:2363 -#: ../editors/Viewer.py:2670 -#: ../editors/SFCViewer.py:696 +#: ../editors/Viewer.py:2717 ../editors/Viewer.py:2974 +#: ../editors/SFCViewer.py:770 msgid "Please choose a target" msgstr "Choisissez une cible" -#: ../editors/Viewer.py:2186 -#: ../editors/Viewer.py:2188 -#: ../editors/Viewer.py:2706 -#: ../editors/Viewer.py:2708 +#: ../editors/TextViewer.py:262 +msgid "Please enter a block name" +msgstr "Entrer un nom de bloc s'il vous plaît" + +#: ../editors/Viewer.py:2587 ../editors/Viewer.py:3016 msgid "Please enter comment text" msgstr "Saisissez le texte du commentaire" -#: ../editors/SFCViewer.py:359 -#: ../editors/SFCViewer.py:381 -#: ../editors/SFCViewer.py:725 +#: ../editors/SFCViewer.py:433 ../editors/SFCViewer.py:455 +#: ../editors/SFCViewer.py:799 msgid "Please enter step name" msgstr "Saisissez le nom de l'étape" +#: ../Beremiz_service.py:194 +msgid "Please enter text" +msgstr "Saisissez le texte" + #: ../dialogs/ForceVariableDialog.py:163 #, python-format msgid "Please enter value for a \"%s\" variable:" msgstr "Veuillez entrer la valeur pour une variable de type \"%s\" :" -#: ../Beremiz_service.py:371 +#: ../Beremiz_service.py:317 msgid "Port number must be 0 <= port <= 65535!" msgstr "Le numéro de port doit être compris entre 0 et 65535 !" -#: ../Beremiz_service.py:371 +#: ../Beremiz_service.py:317 msgid "Port number must be an integer!" msgstr "Le numéro de port doit être un entier !" -#: ../editors/GraphicViewer.py:105 -msgid "Position:" -msgstr "Position :" - -#: ../editors/Viewer.py:475 +#: ../editors/Viewer.py:536 ../editors/Viewer.py:2378 msgid "Power Rail" msgstr "Barre d'alimentation" -#: ../dialogs/LDPowerRailDialog.py:36 +#: ../dialogs/LDPowerRailDialog.py:50 msgid "Power Rail Properties" msgstr "Propriétés de la barre d'alimentation" -#: ../Beremiz.py:326 -#: ../PLCOpenEditor.py:124 +#: ../PLCOpenEditor.py:120 ../Beremiz.py:338 msgid "Preview" msgstr "Aperçu avant impression" -#: ../dialogs/SFCDivergenceDialog.py:93 -#: ../dialogs/LDPowerRailDialog.py:78 -#: ../dialogs/ConnectionDialog.py:78 -#: ../dialogs/FBDVariableDialog.py:97 -#: ../dialogs/SFCTransitionDialog.py:96 -#: ../dialogs/LDElementDialog.py:101 -#: ../dialogs/SFCStepDialog.py:79 -#: ../dialogs/FBDBlockDialog.py:103 +#: ../dialogs/BlockPreviewDialog.py:57 msgid "Preview:" msgstr "Aperçu :" -#: ../Beremiz.py:328 -#: ../Beremiz.py:348 -#: ../PLCOpenEditor.py:126 -#: ../PLCOpenEditor.py:152 +#: ../PLCOpenEditor.py:122 ../PLCOpenEditor.py:148 ../Beremiz.py:340 +#: ../Beremiz.py:360 msgid "Print" msgstr "Imprimer" -#: ../IDEFrame.py:1038 +#: ../IDEFrame.py:1075 msgid "Print preview" msgstr "Aperçu avant impression" @@ -2686,15 +2608,19 @@ msgid "Priority" msgstr "Priorité" -#: ../dialogs/SFCTransitionDialog.py:83 +#: ../dialogs/SFCTransitionDialog.py:89 msgid "Priority:" msgstr "Priorité :" -#: ../runtime/PLCObject.py:318 +#: ../runtime/PLCObject.py:370 #, python-format msgid "Problem starting PLC : error %d" msgstr "Problème au démarrage du PLC : erreur %d" +#: ../dialogs/ProjectDialog.py:55 +msgid "Product Name" +msgstr "Nom de produit" + #: ../controls/ProjectPropertiesPanel.py:80 msgid "Product Name (required):" msgstr "Nom du produit (obligatoire) :" @@ -2703,29 +2629,32 @@ msgid "Product Release (optional):" msgstr "Publication du produit (optionnel) :" +#: ../dialogs/ProjectDialog.py:56 +msgid "Product Version" +msgstr "Version du produit" + #: ../controls/ProjectPropertiesPanel.py:81 msgid "Product Version (required):" msgstr "Version du produit (obligatoire) :" -#: ../IDEFrame.py:1848 -#: ../dialogs/SearchInProjectDialog.py:46 +#: ../dialogs/SearchInProjectDialog.py:38 ../IDEFrame.py:1743 +#: ../IDEFrame.py:1940 msgid "Program" msgstr "Programme" -#: ../PLCOpenEditor.py:339 +#: ../PLCOpenEditor.py:337 msgid "Program was successfully generated!" msgstr "Le programme a été généré avec succès !" -#: ../PLCControler.py:95 +#: ../PLCControler.py:96 msgid "Programs" msgstr "Programmes" -#: ../editors/Viewer.py:230 +#: ../editors/Viewer.py:242 msgid "Programs can't be used by other POUs!" msgstr "Les programmes ne peuvent être utilisés par les autres POUs !" -#: ../controls/ProjectPropertiesPanel.py:84 -#: ../IDEFrame.py:557 +#: ../controls/ProjectPropertiesPanel.py:84 ../IDEFrame.py:584 msgid "Project" msgstr "Projet" @@ -2734,10 +2663,14 @@ msgid "Project '%s':" msgstr "Projet '%s' :" -#: ../ProjectController.py:1564 +#: ../ProjectController.py:1835 msgid "Project Files" msgstr "Fichiers de projet" +#: ../dialogs/ProjectDialog.py:54 +msgid "Project Name" +msgstr "Nom du projet" + #: ../controls/ProjectPropertiesPanel.py:78 msgid "Project Name (required):" msgstr "Nom du projet (obligatoire) :" @@ -2746,7 +2679,7 @@ msgid "Project Version (optional):" msgstr "Version du projet (optionnel) :" -#: ../PLCControler.py:3041 +#: ../PLCControler.py:3158 msgid "" "Project file syntax error:\n" "\n" @@ -2754,113 +2687,90 @@ "Erreur de syntaxe dans le fichier du projet :\n" "\n" -#: ../editors/ProjectNodeEditor.py:14 -#: ../dialogs/ProjectDialog.py:32 +#: ../dialogs/ProjectDialog.py:32 ../editors/ProjectNodeEditor.py:37 msgid "Project properties" msgstr "Propriétés du projet" -#: ../ConfigTreeNode.py:526 -#, python-format -msgid "Project tree layout do not match confnode.xml %s!=%s " -msgstr "L'organisation du projet ne correspond pas à plugin.xml %s!=%s" - -#: ../dialogs/ConnectionDialog.py:96 +#: ../ConfigTreeNode.py:566 +#, python-brace-format +msgid "Project tree layout do not match confnode.xml {a1}!={a2} " +msgstr "" + +#: ../dialogs/ConnectionDialog.py:94 msgid "Propagate Name" msgstr "Propager le nom" -#: ../PLCControler.py:96 +#: ../PLCControler.py:97 msgid "Properties" msgstr "Propriétés" -#: ../plcopen/structures.py:236 -msgid "" -"Pulse timer\n" -"The pulse timer can be used to generate output pulses of a given time duration." -msgstr "" -"Temporisation à impulsion\n" -"La temporisation à impulsion peut être utilisée pour générer sur la sortie des impulsions d'une durée déterminée." - -#: ../py_ext/PythonEditor.py:61 +#: ../Beremiz_service.py:440 +msgid "Publishing service on local network" +msgstr "" + +#: ../connectors/PYRO/__init__.py:118 +#, python-format +msgid "Pyro exception: %s\n" +msgstr "" + +#: ../Beremiz_service.py:427 +msgid "Pyro object's uri :" +msgstr "" + +#: ../Beremiz_service.py:426 +msgid "Pyro port :" +msgstr "Pyro port :" + +#: ../py_ext/PythonEditor.py:81 msgid "Python code" msgstr "Code Python" -#: ../features.py:9 +#: ../features.py:33 msgid "Python file" msgstr "Fichier Python" -#: ../dialogs/ActionBlockDialog.py:37 +#: ../dialogs/ActionBlockDialog.py:38 msgid "Qualifier" msgstr "Qualificatif" -#: ../Beremiz_service.py:333 -#: ../Beremiz.py:331 -#: ../PLCOpenEditor.py:132 +#: ../PLCOpenEditor.py:128 ../Beremiz.py:343 ../Beremiz_service.py:273 msgid "Quit" msgstr "Quitter" -#: ../plcopen/structures.py:201 -msgid "" -"RS bistable\n" -"The RS bistable is a latch where the Reset dominates." -msgstr "" -"Bascule RS\n" -"La bascule RS est une bascule où le Reset est dominant." - -#: ../plcopen/structures.py:273 -msgid "" -"Ramp\n" -"The RAMP function block is modelled on example given in the standard." -msgstr "" -"Rampe\n" -"Le bloc fonctionnel RAMP est basé sur l'exemple du standard." - -#: ../controls/DebugVariablePanel.py:1462 -#: ../editors/GraphicViewer.py:89 +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:225 msgid "Range:" msgstr "Echelle :" -#: ../ProjectController.py:1560 +#: ../ProjectController.py:1831 msgid "Raw IEC code" msgstr "Ajout code IEC" -#: ../plcopen/structures.py:253 -msgid "" -"Real time clock\n" -"The real time clock has many uses including time stamping, setting dates and times of day in batch reports, in alarm messages and so on." -msgstr "" -"Horloge temps réel\n" -"L'horloge temps réel est utilisée dans de nombreux cas tels que l'horodatage, la définition des dates et heures dans des rapports de commandes, dans des messages d'alarme et bien d'autres." - -#: ../Beremiz.py:1072 +#: ../Beremiz.py:1143 #, python-format msgid "Really delete node '%s'?" msgstr "Êtes-vous sûr de vouloir supprimer le noeud '%s' ?" -#: ../IDEFrame.py:345 -#: ../IDEFrame.py:403 +#: ../IDEFrame.py:362 ../IDEFrame.py:422 msgid "Redo" msgstr "Refaire" -#: ../dialogs/SFCTransitionDialog.py:57 -#: ../dialogs/SFCTransitionDialog.py:135 +#: ../dialogs/SFCTransitionDialog.py:74 msgid "Reference" msgstr "Référence" -#: ../IDEFrame.py:413 -#: ../dialogs/DiscoveryDialog.py:105 +#: ../dialogs/DiscoveryDialog.py:106 ../IDEFrame.py:432 msgid "Refresh" msgstr "Actualiser" -#: ../dialogs/SearchInProjectDialog.py:73 +#: ../dialogs/SearchInProjectDialog.py:66 msgid "Regular expression" msgstr "Expression régulière" -#: ../dialogs/FindInPouDialog.py:91 +#: ../dialogs/FindInPouDialog.py:98 msgid "Regular expressions" msgstr "Expressions régulières" -#: ../controls/DebugVariablePanel.py:1938 -#: ../editors/Viewer.py:1388 +#: ../editors/Viewer.py:1567 msgid "Release value" msgstr "Relacher la valeur" @@ -2868,20 +2778,24 @@ msgid "Remainder (modulo)" msgstr "Modulo" -#: ../Beremiz.py:1073 +#: ../Beremiz.py:1144 #, python-format msgid "Remove %s node" msgstr "Enlever un noeud %s" -#: ../dialogs/ActionBlockDialog.py:139 +#: ../IDEFrame.py:2404 +msgid "Remove Datatype" +msgstr "Supprimer le Datatype" + +#: ../IDEFrame.py:2409 +msgid "Remove Pou" +msgstr "Supprimer le Pou" + +#: ../dialogs/ActionBlockDialog.py:138 msgid "Remove action" msgstr "Supprimer une action" -#: ../controls/DebugVariablePanel.py:1530 -msgid "Remove debug variable" -msgstr "Supprimer une variable à déboguer" - -#: ../editors/DataTypeEditor.py:352 +#: ../editors/DataTypeEditor.py:353 msgid "Remove element" msgstr "Supprimer un élément" @@ -2889,24 +2803,23 @@ msgid "Remove file from left folder" msgstr "Supprimer un fichier du dossier de gauche" -#: ../editors/ResourceEditor.py:260 +#: ../editors/ResourceEditor.py:269 msgid "Remove instance" msgstr "Supprimer une instance" -#: ../canfestival/NetworkEditor.py:81 +#: ../canfestival/NetworkEditor.py:104 msgid "Remove slave" msgstr "Enlever l'esclave" -#: ../editors/ResourceEditor.py:231 +#: ../editors/ResourceEditor.py:240 msgid "Remove task" msgstr "Supprimer la tâche" -#: ../controls/VariablePanel.py:381 -#: ../c_ext/CFileEditor.py:518 +#: ../editors/CodeFileEditor.py:659 ../controls/VariablePanel.py:451 msgid "Remove variable" msgstr "Supprimer une variable" -#: ../IDEFrame.py:1852 +#: ../IDEFrame.py:1944 msgid "Rename" msgstr "Renommer" @@ -2914,6 +2827,10 @@ msgid "Replace File" msgstr "Remplacer un fichier" +#: ../editors/Viewer.py:502 +msgid "Replace Wire by connections" +msgstr "Remplacer le fil par les connexions" + #: ../plcopen/iec_std.csv:89 msgid "Replacement (within)" msgstr "Remplacement (au milieu)" @@ -2922,11 +2839,11 @@ msgid "Reset" msgstr "Mise à zéro" -#: ../editors/Viewer.py:521 +#: ../editors/Viewer.py:583 msgid "Reset Execution Order" msgstr "Réinitialiser l'order d'exécution" -#: ../IDEFrame.py:428 +#: ../IDEFrame.py:451 msgid "Reset Perspective" msgstr "Réinitialiser l'interface" @@ -2934,43 +2851,30 @@ msgid "Reset search result" msgstr "Réinitialiser le résultat de la recherche" -#: ../editors/GraphicViewer.py:137 -msgid "Reset zoom and offset" -msgstr "Réinitialisation du zoom et de l'offset" - -#: ../PLCControler.py:96 +#: ../PLCControler.py:97 ../Beremiz.py:1075 msgid "Resources" msgstr "Ressources" -#: ../controls/VariablePanel.py:67 +#: ../controls/VariablePanel.py:62 msgid "Retain" msgstr "Persistante" -#: ../controls/VariablePanel.py:354 +#: ../controls/VariablePanel.py:424 msgid "Return Type:" msgstr "Type de retour :" -#: ../editors/Viewer.py:429 +#: ../editors/Viewer.py:487 msgid "Right" msgstr "Droite" -#: ../dialogs/LDPowerRailDialog.py:60 +#: ../dialogs/LDPowerRailDialog.py:63 msgid "Right PowerRail" msgstr "Barre d'alimentation à droite" -#: ../editors/Viewer.py:403 -#: ../dialogs/LDElementDialog.py:80 +#: ../dialogs/LDElementDialog.py:77 ../editors/Viewer.py:461 msgid "Rising Edge" msgstr "Front montant" -#: ../plcopen/structures.py:211 -msgid "" -"Rising edge detector\n" -"The output produces a single pulse when a rising edge is detected." -msgstr "" -"Détecteur de front montant\n" -"La sortie produit une impulsion unique lorsqu'un front montant est détecté." - #: ../plcopen/iec_std.csv:65 msgid "Rotate left" msgstr "Rotation à gauche" @@ -2983,85 +2887,84 @@ msgid "Rounding up/down" msgstr "Arrondi" -#: ../ProjectController.py:1528 +#: ../ProjectController.py:1799 msgid "Run" msgstr "Exécuter" -#: ../ProjectController.py:865 -#: ../ProjectController.py:874 -msgid "Runtime extensions C code generation failed !\n" -msgstr "La génération du code des plugins a échoué !\n" - -#: ../canfestival/SlaveEditor.py:38 -#: ../canfestival/NetworkEditor.py:59 +#: ../ProjectController.py:1058 +msgid "Runtime IO extensions C code generation failed !\n" +msgstr "" + +#: ../ProjectController.py:1067 +msgid "Runtime library extensions C code generation failed !\n" +msgstr "" + +#: ../canfestival/SlaveEditor.py:61 ../canfestival/NetworkEditor.py:82 msgid "SDO Client" msgstr "Client SDO" -#: ../canfestival/SlaveEditor.py:37 -#: ../canfestival/NetworkEditor.py:58 +#: ../canfestival/SlaveEditor.py:60 ../canfestival/NetworkEditor.py:81 msgid "SDO Server" msgstr "Serveur SDO" -#: ../controls/ProjectPropertiesPanel.py:143 -#: ../dialogs/PouDialog.py:36 +#: ../dialogs/PouDialog.py:36 ../controls/ProjectPropertiesPanel.py:143 msgid "SFC" msgstr "SFC" -#: ../plcopen/structures.py:196 -msgid "" -"SR bistable\n" -"The SR bistable is a latch where the Set dominates." -msgstr "" -"Bascule SR\n" -"La bascule SR est une bascule où le Set est dominant." - -#: ../dialogs/PouTransitionDialog.py:35 -#: ../dialogs/PouActionDialog.py:31 +#: ../PLCGenerator.py:1392 +#, python-brace-format +msgid "SFC jump in pou \"{a1}\" refers to non-existent SFC step \"{a2}\"" +msgstr "" + +#: ../PLCGenerator.py:773 +#, python-format +msgid "SFC transition in POU \"%s\" must be connected." +msgstr "" + +#: ../dialogs/PouTransitionDialog.py:40 ../dialogs/PouActionDialog.py:31 #: ../dialogs/PouDialog.py:36 msgid "ST" msgstr "ST" -#: ../PLCOpenEditor.py:326 +#: ../PLCOpenEditor.py:324 msgid "ST files (*.st)|*.st|All files|*.*" msgstr "Fichiers ST (*.st)|*.st|Tous les fichiers|*.*" -#: ../svgui/svgui.py:92 +#: ../svgui/svgui.py:125 msgid "SVG files (*.svg)|*.svg|All files|*.*" msgstr "Fichiers SVG (*.svg)|*.svg|Tous les fichiers|*.*" -#: ../features.py:11 +#: ../features.py:35 msgid "SVGUI" msgstr "SVGUI" -#: ../Beremiz.py:315 -#: ../Beremiz.py:346 -#: ../PLCOpenEditor.py:115 -#: ../PLCOpenEditor.py:150 +#: ../PLCOpenEditor.py:111 ../PLCOpenEditor.py:146 ../Beremiz.py:327 +#: ../Beremiz.py:358 msgid "Save" msgstr "Enregistrer" -#: ../Beremiz.py:347 -#: ../PLCOpenEditor.py:117 -#: ../PLCOpenEditor.py:151 +#: ../PLCOpenEditor.py:113 ../PLCOpenEditor.py:147 ../Beremiz.py:359 msgid "Save As..." msgstr "Enregistrer sous..." -#: ../Beremiz.py:317 +#: ../Beremiz.py:329 msgid "Save as" msgstr "Enregistrer sous..." -#: ../dialogs/SearchInProjectDialog.py:76 +#: ../ProjectController.py:470 +msgid "Save path is the same as path of a project! \n" +msgstr "" + +#: ../dialogs/SearchInProjectDialog.py:69 msgid "Scope" msgstr "Contexte" -#: ../IDEFrame.py:596 -#: ../dialogs/SearchInProjectDialog.py:105 +#: ../IDEFrame.py:623 msgid "Search" msgstr "Rechercher" -#: ../IDEFrame.py:365 -#: ../IDEFrame.py:409 -#: ../dialogs/SearchInProjectDialog.py:52 +#: ../dialogs/SearchInProjectDialog.py:44 ../IDEFrame.py:382 +#: ../IDEFrame.py:428 msgid "Search in Project" msgstr "Rechercher dans le projet" @@ -3069,54 +2972,53 @@ msgid "Seconds:" msgstr "Secondes :" -#: ../IDEFrame.py:371 +#: ../IDEFrame.py:388 msgid "Select All" msgstr "Tout sélectionner" -#: ../controls/LocationCellEditor.py:97 -#: ../controls/VariablePanel.py:277 -#: ../editors/TextViewer.py:323 -#: ../editors/Viewer.py:275 +#: ../editors/Viewer.py:288 ../editors/TextViewer.py:306 +#: ../controls/LocationCellEditor.py:97 ../controls/VariablePanel.py:290 +#: ../controls/VariablePanel.py:350 msgid "Select a variable class:" msgstr "Sélectionner une direction pour la variable :" -#: ../ProjectController.py:1039 +#: ../ProjectController.py:1216 msgid "Select an editor:" msgstr "Sélectionner un éditeur :" -#: ../controls/PouInstanceVariablesPanel.py:209 +#: ../controls/PouInstanceVariablesPanel.py:276 msgid "Select an instance" msgstr "Sélectionnez une instance" -#: ../IDEFrame.py:580 +#: ../IDEFrame.py:607 msgid "Select an object" msgstr "Sélectionner un objet" +#: ../ProjectController.py:477 +msgid "Selected directory already contains another project. Overwrite? \n" +msgstr "" + #: ../plcopen/iec_std.csv:70 msgid "Selection" msgstr "Sélection" -#: ../dialogs/SFCDivergenceDialog.py:62 +#: ../dialogs/SFCDivergenceDialog.py:65 msgid "Selection Convergence" msgstr "Convergence simple" -#: ../dialogs/SFCDivergenceDialog.py:55 +#: ../dialogs/SFCDivergenceDialog.py:64 msgid "Selection Divergence" msgstr "Divergence simple" -#: ../plcopen/structures.py:206 -msgid "" -"Semaphore\n" -"The semaphore provides a mechanism to allow software elements mutually exclusive access to certain ressources." -msgstr "" -"Sémaphore\n" -"La sémaphore fournit un mécanisme permettant à des éléments du programme d'accéder de façon exclusive à certaines resources." - -#: ../dialogs/DiscoveryDialog.py:84 +#: ../dialogs/DiscoveryDialog.py:82 +msgid "Service Discovery" +msgstr "Recherche de service" + +#: ../dialogs/DiscoveryDialog.py:85 msgid "Services available:" msgstr "Services disponibles:" -#: ../dialogs/LDElementDialog.py:72 +#: ../dialogs/LDElementDialog.py:76 msgid "Set" msgstr "Mise à 1" @@ -3128,27 +3030,27 @@ msgid "Shift right" msgstr "Décalage à droite" -#: ../ProjectController.py:1554 +#: ../ProjectController.py:1825 msgid "Show IEC code generated by PLCGenerator" msgstr "Afficher le code IEC généré par PLCGenerator" -#: ../canfestival/canfestival.py:363 +#: ../canfestival/canfestival.py:387 msgid "Show Master" msgstr "Afficher le maître" -#: ../canfestival/canfestival.py:364 +#: ../canfestival/canfestival.py:388 msgid "Show Master generated by config_utils" msgstr "Afficher le maître généré par config_utils" -#: ../ProjectController.py:1552 +#: ../ProjectController.py:1823 msgid "Show code" msgstr "Afficher le code" -#: ../dialogs/SFCDivergenceDialog.py:74 +#: ../dialogs/SFCDivergenceDialog.py:67 msgid "Simultaneous Convergence" msgstr "Convergence double" -#: ../dialogs/SFCDivergenceDialog.py:68 +#: ../dialogs/SFCDivergenceDialog.py:66 msgid "Simultaneous Divergence" msgstr "Divergence double" @@ -3160,49 +3062,67 @@ msgid "Single" msgstr "Evènement" +#: ../targets/toolchain_makefile.py:126 +msgid "Source didn't change, no build.\n" +msgstr "" + +#: ../PLCGenerator.py:397 +#, python-brace-format +msgid "" +"Source signal has to be defined for single task '{a1}' in resource " +"'{a2}.{a3}'." +msgstr "" + #: ../plcopen/iec_std.csv:23 msgid "Square root (base 2)" msgstr "Racine carré (base 2)" -#: ../plcopen/structures.py:192 +#: ../plcopen/definitions.py:46 msgid "Standard function blocks" msgstr "Blocs fonctionnels standards" -#: ../Beremiz_service.py:321 -#: ../ProjectController.py:1530 +#: ../ProjectController.py:1801 ../Beremiz_service.py:261 msgid "Start PLC" msgstr "Démarrer l'automate" -#: ../ProjectController.py:843 +#: ../ProjectController.py:1005 #, python-format msgid "Start build in %s\n" msgstr "Début de la compilation dans %s\n" -#: ../ProjectController.py:1341 +#: ../ProjectController.py:1319 +msgid "Started" +msgstr "Démarré" + +#: ../ProjectController.py:1607 msgid "Starting PLC\n" msgstr "Démarrer l'automate\n" -#: ../Beremiz.py:435 +#: ../Beremiz.py:463 msgid "Status ToolBar" msgstr "Barre d'outils de statut" -#: ../editors/Viewer.py:492 +#: ../editors/Viewer.py:553 ../editors/Viewer.py:2353 msgid "Step" msgstr "Étape" -#: ../ProjectController.py:1533 +#: ../ProjectController.py:1804 msgid "Stop" msgstr "Arrêter" -#: ../Beremiz_service.py:322 +#: ../Beremiz_service.py:262 msgid "Stop PLC" msgstr "Arrêter l'automate" -#: ../ProjectController.py:1535 +#: ../ProjectController.py:1806 msgid "Stop Running PLC" msgstr "Arrêter l'automate en cours d'exécution" -#: ../ProjectController.py:1318 +#: ../ProjectController.py:1320 +msgid "Stopped" +msgstr "Arrêté" + +#: ../ProjectController.py:1579 msgid "Stopping debugger...\n" msgstr "Arrêt du débogage en cours\n" @@ -3218,27 +3138,36 @@ msgid "Subtraction" msgstr "Soustraction" -#: ../ProjectController.py:942 +#: ../ProjectController.py:1044 msgid "Successfully built.\n" msgstr "Compilé avec succès.\n" -#: ../dialogs/SearchInProjectDialog.py:154 +#: ../IDEFrame.py:447 +msgid "Switch perspective" +msgstr "" + +#: ../dialogs/SearchInProjectDialog.py:165 ../dialogs/FindInPouDialog.py:172 msgid "Syntax error in regular expression of pattern to search!" -msgstr "Erreur de syntaxe dans l'expression régulière du modèle à rechercher !" +msgstr "" +"Erreur de syntaxe dans l'expression régulière du modèle à rechercher !" + +#: ../dialogs/DiscoveryDialog.py:93 +msgid "TYPE" +msgstr "TYPE" #: ../plcopen/iec_std.csv:29 msgid "Tangent" msgstr "Tangente" -#: ../editors/ResourceEditor.py:77 +#: ../editors/ResourceEditor.py:83 msgid "Task" msgstr "Tâche" -#: ../editors/ResourceEditor.py:226 +#: ../editors/ResourceEditor.py:235 msgid "Tasks:" msgstr "Tâches :" -#: ../controls/VariablePanel.py:78 +#: ../controls/VariablePanel.py:73 msgid "Temp" msgstr "Temporaire" @@ -3255,18 +3184,20 @@ msgid "The group of block must be coherent!" msgstr "Le groupe de blocs doit être cohérent !" -#: ../IDEFrame.py:974 -#: ../Beremiz.py:590 +#: ../Beremiz.py:640 ../IDEFrame.py:1011 msgid "There are changes, do you want to save?" msgstr "Le projet a été modifié. Voulez-vous l'enregistrer ?" -#: ../IDEFrame.py:1590 -#: ../IDEFrame.py:1609 -#, python-format -msgid "There is a POU named \"%s\". This could cause a conflict. Do you wish to continue?" -msgstr "Un POU a pour nom \"%s\". Cela peut générer des conflits. Voulez-vous continuer ?" - -#: ../IDEFrame.py:1061 +#: ../IDEFrame.py:1654 ../IDEFrame.py:1673 +#, python-format +msgid "" +"There is a POU named \"%s\". This could cause a conflict. Do you wish to " +"continue?" +msgstr "" +"Un POU a pour nom \"%s\". Cela peut générer des conflits. Voulez-vous " +"continuer ?" + +#: ../IDEFrame.py:1098 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" @@ -3278,16 +3209,16 @@ msgid "This option isn't available yet!" msgstr "Cette option n'a pas encore disponible" -#: ../editors/GraphicViewer.py:278 -msgid "Tick" -msgstr "Tick" +#: ../controls/DebugVariablePanel/DebugVariablePanel.py:565 +#, python-format +msgid "Tick: %d" +msgstr "" #: ../plcopen/iec_std.csv:40 msgid "Time" msgstr "Temps" -#: ../plcopen/iec_std.csv:40 -#: ../plcopen/iec_std.csv:41 +#: ../plcopen/iec_std.csv:40 ../plcopen/iec_std.csv:41 msgid "Time addition" msgstr "Addition de durée" @@ -3295,107 +3226,113 @@ msgid "Time concatenation" msgstr "Concaténation de date et de durée" -#: ../plcopen/iec_std.csv:60 -#: ../plcopen/iec_std.csv:61 +#: ../plcopen/iec_std.csv:60 ../plcopen/iec_std.csv:61 msgid "Time division" msgstr "Division de durée" -#: ../plcopen/iec_std.csv:46 -#: ../plcopen/iec_std.csv:47 +#: ../plcopen/iec_std.csv:46 ../plcopen/iec_std.csv:47 msgid "Time multiplication" msgstr "Multiplication de durée" -#: ../plcopen/iec_std.csv:48 -#: ../plcopen/iec_std.csv:49 +#: ../plcopen/iec_std.csv:48 ../plcopen/iec_std.csv:49 msgid "Time subtraction" msgstr "Soustraction de durée" -#: ../plcopen/iec_std.csv:42 -#: ../plcopen/iec_std.csv:43 +#: ../plcopen/iec_std.csv:42 ../plcopen/iec_std.csv:43 msgid "Time-of-day addition" msgstr "Addition d'horodatage" -#: ../plcopen/iec_std.csv:52 -#: ../plcopen/iec_std.csv:53 -#: ../plcopen/iec_std.csv:54 -#: ../plcopen/iec_std.csv:55 +#: ../plcopen/iec_std.csv:52 ../plcopen/iec_std.csv:53 +#: ../plcopen/iec_std.csv:54 ../plcopen/iec_std.csv:55 msgid "Time-of-day subtraction" msgstr "Soustraction d'horodatage" -#: ../editors/Viewer.py:431 +#: ../editors/Viewer.py:489 msgid "Top" msgstr "Haut" -#: ../ProjectController.py:1542 +#: ../ProjectController.py:1813 msgid "Transfer" msgstr "Transférer" -#: ../ProjectController.py:1544 +#: ../ProjectController.py:1815 msgid "Transfer PLC" msgstr "Transférer l'automate" -#: ../ProjectController.py:1509 +#: ../ProjectController.py:1779 msgid "Transfer completed successfully.\n" msgstr "Transfert effectué avec succès.\n" -#: ../ProjectController.py:1511 +#: ../ProjectController.py:1781 msgid "Transfer failed\n" msgstr "Le transfert a échoué\n" -#: ../editors/Viewer.py:493 +#: ../editors/Viewer.py:554 ../editors/Viewer.py:2355 +#: ../editors/Viewer.py:2382 msgid "Transition" msgstr "Transition" -#: ../PLCGenerator.py:1252 -#, python-format -msgid "Transition \"%s\" body must contain an output variable or coil referring to its name" -msgstr "Le code de la transition \"%s\" doit contenir une variable de sortie ou un relai dont la référence est son nom" - -#: ../dialogs/PouTransitionDialog.py:84 +#: ../PLCGenerator.py:1518 +#, python-format +msgid "" +"Transition \"%s\" body must contain an output variable or coil referring to " +"its name" +msgstr "" +"Le code de la transition \"%s\" doit contenir une variable de sortie ou un " +"relai dont la référence est son nom" + +#: ../dialogs/PouTransitionDialog.py:89 msgid "Transition Name" msgstr "Nom de la transition" -#: ../dialogs/PouTransitionDialog.py:53 +#: ../dialogs/PouTransitionDialog.py:58 msgid "Transition Name:" msgstr "Nom de la transition :" -#: ../PLCGenerator.py:1340 -#, python-format -msgid "Transition with content \"%s\" not connected to a next step in \"%s\" POU" -msgstr "La transition contenant \"%s\" n'est pas connectée à une étape en sortie dans le POU \"%s\" !" - -#: ../PLCGenerator.py:1331 -#, python-format -msgid "Transition with content \"%s\" not connected to a previous step in \"%s\" POU" -msgstr "La transition contenant \"%s\" n'est pas connectée à une étape en entrée dans le POU \"%s\" !" - -#: ../plcopen/plcopen.py:1447 +#: ../PLCGenerator.py:1609 +#, python-brace-format +msgid "Transition with content \"{a1}\" not connected to a next step in \"{a2}\" POU" +msgstr "" + +#: ../PLCGenerator.py:1598 +#, python-brace-format +msgid "" +"Transition with content \"{a1}\" not connected to a previous step in " +"\"{a2}\" POU" +msgstr "" + +#: ../plcopen/plcopen.py:1318 #, python-format msgid "Transition with name %s doesn't exist!" msgstr "La transition nommée %s n'existe pas !" -#: ../PLCControler.py:95 +#: ../PLCControler.py:96 msgid "Transitions" msgstr "Transitions" +#: ../dialogs/AboutDialog.py:131 +msgid "Translated by" +msgstr "" + #: ../editors/ResourceEditor.py:68 msgid "Triggering" msgstr "Activation" -#: ../controls/VariablePanel.py:58 -#: ../controls/VariablePanel.py:59 -#: ../editors/DataTypeEditor.py:50 -#: ../editors/ResourceEditor.py:77 -#: ../dialogs/ActionBlockDialog.py:37 +#: ../Beremiz_service.py:476 +msgid "Twisted unavailable." +msgstr "" + +#: ../dialogs/ActionBlockDialog.py:38 ../editors/ResourceEditor.py:83 +#: ../editors/DataTypeEditor.py:50 ../controls/VariablePanel.py:53 +#: ../controls/VariablePanel.py:54 msgid "Type" msgstr "Type" -#: ../dialogs/BrowseLocationsDialog.py:44 +#: ../dialogs/BrowseLocationsDialog.py:48 msgid "Type and derivated" msgstr "Type et ses dérivés" -#: ../canfestival/config_utils.py:335 -#: ../canfestival/config_utils.py:617 +#: ../canfestival/config_utils.py:336 ../canfestival/config_utils.py:624 #, python-format msgid "Type conflict for location \"%s\"" msgstr "Conflit entre types pour l'adresse \"%s\"" @@ -3404,140 +3341,117 @@ msgid "Type conversion" msgstr "Conversion de type" -#: ../editors/DataTypeEditor.py:161 +#: ../editors/DataTypeEditor.py:162 msgid "Type infos:" msgstr "Propriétés du type :" -#: ../dialogs/BrowseLocationsDialog.py:45 +#: ../dialogs/BrowseLocationsDialog.py:49 msgid "Type strict" msgstr "Type uniquement" -#: ../dialogs/SFCDivergenceDialog.py:51 -#: ../dialogs/LDPowerRailDialog.py:51 -#: ../dialogs/BrowseLocationsDialog.py:95 -#: ../dialogs/ConnectionDialog.py:52 -#: ../dialogs/SFCTransitionDialog.py:53 -#: ../dialogs/FBDBlockDialog.py:48 +#: ../dialogs/SFCDivergenceDialog.py:59 ../dialogs/SFCTransitionDialog.py:57 +#: ../dialogs/LDPowerRailDialog.py:56 ../dialogs/BrowseLocationsDialog.py:99 +#: ../dialogs/FBDBlockDialog.py:65 ../dialogs/ConnectionDialog.py:58 msgid "Type:" msgstr "Type :" -#: ../canfestival/config_utils.py:455 -#: ../canfestival/config_utils.py:469 +#: ../canfestival/config_utils.py:462 ../canfestival/config_utils.py:476 #, python-format msgid "Unable to define PDO mapping for node %02x" msgstr "Impossible de définir le mappage des PDO pour le noeud %02x" -#: ../targets/Xenomai/__init__.py:14 +#: ../targets/Xenomai/__init__.py:39 #, python-format msgid "Unable to get Xenomai's %s \n" msgstr "Unable to get Xenomai's %s \n" -#: ../PLCGenerator.py:904 -#: ../PLCGenerator.py:963 -#, python-format -msgid "Undefined block type \"%s\" in \"%s\" POU" -msgstr "Type de block \"%s\" indéfini dans le POU \"%s\"" - -#: ../PLCGenerator.py:252 +#: ../PLCGenerator.py:961 ../PLCGenerator.py:1214 +#, python-brace-format +msgid "Undefined block type \"{a1}\" in \"{a2}\" POU" +msgstr "" + +#: ../PLCGenerator.py:254 #, python-format msgid "Undefined pou type \"%s\"" msgstr "Type de POU \"%s\" indéterminé !" -#: ../IDEFrame.py:343 -#: ../IDEFrame.py:402 +#: ../IDEFrame.py:360 ../IDEFrame.py:421 msgid "Undo" msgstr "Défaire" -#: ../ProjectController.py:262 +#: ../ProjectController.py:382 msgid "Unknown" msgstr "Inconnu" -#: ../editors/Viewer.py:335 +#: ../editors/Viewer.py:393 #, python-format msgid "Unknown variable \"%s\" for this POU!" msgstr "Variable \"%s\" inconnue dans ce POU !" -#: ../ProjectController.py:259 -#: ../ProjectController.py:260 +#: ../ProjectController.py:379 ../ProjectController.py:380 msgid "Unnamed" msgstr "SansNom" -#: ../PLCControler.py:305 +#: ../PLCControler.py:636 #, python-format msgid "Unnamed%d" msgstr "Sansnom%d" -#: ../controls/VariablePanel.py:272 +#: ../controls/VariablePanel.py:284 #, python-format msgid "Unrecognized data size \"%s\"" msgstr "Taille de donnée \"%s\" non identifié !" -#: ../plcopen/structures.py:221 -msgid "" -"Up-counter\n" -"The up-counter can be used to signal when a count has reached a maximum value." -msgstr "" -"Compteur incrémental\n" -"Le compteur incrémental peut être utilisé pour signaler lorsque le compteur a atteint la valeur maximale." - -#: ../plcopen/structures.py:231 -msgid "" -"Up-down counter\n" -"The up-down counter has two inputs CU and CD. It can be used to both count up on one input and down on the other." -msgstr "" -"Compteur bidirectionnel\n" -"Le compteur bidirectionnel a deux entrées CU et CD. Il peut être utilisé pour compter de façon incrémentale ou décrémentale sur l'une ou l'autre des entrées." - -#: ../controls/VariablePanel.py:712 -#: ../editors/DataTypeEditor.py:631 +#: ../editors/DataTypeEditor.py:632 ../controls/VariablePanel.py:810 msgid "User Data Types" msgstr "Types de donnée du projet" -#: ../canfestival/SlaveEditor.py:42 -#: ../canfestival/NetworkEditor.py:63 +#: ../canfestival/SlaveEditor.py:65 ../canfestival/NetworkEditor.py:86 msgid "User Type" msgstr "Type utilisateur" -#: ../PLCControler.py:94 +#: ../PLCControler.py:95 msgid "User-defined POUs" msgstr "POUs du projet" -#: ../controls/DebugVariablePanel.py:58 -#: ../dialogs/ActionBlockDialog.py:37 +#: ../dialogs/ActionBlockDialog.py:38 msgid "Value" msgstr "Valeur" -#: ../editors/GraphicViewer.py:278 -msgid "Values" -msgstr "Valeurs" - -#: ../editors/DataTypeEditor.py:258 +#: ../editors/DataTypeEditor.py:259 msgid "Values:" msgstr "Valeurs" -#: ../controls/DebugVariablePanel.py:58 -#: ../editors/Viewer.py:465 -#: ../dialogs/ActionBlockDialog.py:41 +#: ../dialogs/ActionBlockDialog.py:42 ../editors/Viewer.py:526 +#: ../editors/Viewer.py:2385 msgid "Variable" msgstr "Variable" -#: ../dialogs/FBDVariableDialog.py:47 +#: ../editors/Viewer.py:308 ../editors/Viewer.py:338 ../editors/Viewer.py:360 +#: ../editors/TextViewer.py:292 ../editors/TextViewer.py:343 +#: ../editors/TextViewer.py:366 ../controls/VariablePanel.py:329 +msgid "Variable Drop" +msgstr "" + +#: ../dialogs/FBDVariableDialog.py:63 msgid "Variable Properties" msgstr "Propriétés de la variable" -#: ../controls/LocationCellEditor.py:97 -#: ../controls/VariablePanel.py:277 -#: ../editors/TextViewer.py:323 -#: ../editors/Viewer.py:275 +#: ../editors/Viewer.py:288 ../editors/TextViewer.py:306 +#: ../controls/LocationCellEditor.py:97 ../controls/VariablePanel.py:290 +#: ../controls/VariablePanel.py:350 msgid "Variable class" msgstr "Direction de la variable" -#: ../editors/TextViewer.py:367 -#: ../editors/Viewer.py:337 +#: ../editors/Viewer.py:395 ../editors/TextViewer.py:387 msgid "Variable don't belong to this POU!" msgstr "La variable n'appartient pas à ce POU !" -#: ../controls/VariablePanel.py:77 +#: ../dialogs/LDElementDialog.py:89 +msgid "Variable:" +msgstr "Variable:" + +#: ../controls/VariablePanel.py:72 msgid "Variables" msgstr "Variables" @@ -3545,24 +3459,41 @@ msgid "Vertical:" msgstr "Vertical :" -#: ../wxglade_hmi/wxglade_hmi.py:11 +#: ../Beremiz_service.py:586 +msgid "WAMP client startup failed. " +msgstr "" + +#: ../connectors/WAMP/__init__.py:91 +#, python-format +msgid "WAMP connecting to URL : %s\n" +msgstr "" + +#: ../connectors/WAMP/__init__.py:131 +msgid "WAMP connection timeout" +msgstr "" + +#: ../connectors/WAMP/__init__.py:150 +#, python-format +msgid "WAMP connection to '%s' failed.\n" +msgstr "" + +#: ../Beremiz_service.py:562 +msgid "WAMP import failed :" +msgstr "" + +#: ../wxglade_hmi/wxglade_hmi.py:35 msgid "WXGLADE GUI" msgstr "IHM WXGlade" -#: ../ProjectController.py:1302 -msgid "Waiting debugger to recover...\n" -msgstr "En attente de la mise en route du déboggueur...\n" - -#: ../editors/LDViewer.py:891 -#: ../dialogs/PouDialog.py:126 +#: ../dialogs/PouDialog.py:128 ../editors/LDViewer.py:891 msgid "Warning" msgstr "Attention" -#: ../ProjectController.py:529 +#: ../ProjectController.py:666 msgid "Warnings in ST/IL/SFC code generator :\n" msgstr "Mises en garde du generateur de code ST/IL/SFC :\n" -#: ../dialogs/SearchInProjectDialog.py:85 +#: ../dialogs/SearchInProjectDialog.py:78 msgid "Whole Project" msgstr "Tout le projet" @@ -3570,15 +3501,19 @@ msgid "Width:" msgstr "Longueur :" -#: ../dialogs/FindInPouDialog.py:86 +#: ../dialogs/FindInPouDialog.py:93 msgid "Wrap search" msgstr "Boucler" -#: ../features.py:10 +#: ../dialogs/AboutDialog.py:130 +msgid "Written by" +msgstr "Écrit par" + +#: ../features.py:34 msgid "WxGlade GUI" msgstr "Interface WxGlade" -#: ../svgui/svgui.py:106 +#: ../svgui/svgui.py:139 msgid "" "You don't have write permissions.\n" "Open Inkscape anyway ?" @@ -3586,7 +3521,7 @@ "Vous n'avez pas les permissions d'écriture.\n" "Ouvrir Inkscape tout de même ?" -#: ../wxglade_hmi/wxglade_hmi.py:108 +#: ../wxglade_hmi/wxglade_hmi.py:137 msgid "" "You don't have write permissions.\n" "Open wxGlade anyway ?" @@ -3594,7 +3529,7 @@ "Vous n'avez pas les permissions d'écriture.\n" "Ouvrir wxGlade tout de même ?" -#: ../ProjectController.py:224 +#: ../ProjectController.py:342 msgid "" "You must have permission to work on the project\n" "Work on a project copy ?" @@ -3603,16 +3538,19 @@ "Travailler sur une copie du projet ?" #: ../editors/LDViewer.py:886 -msgid "You must select the block or group of blocks around which a branch should be added!" -msgstr "Vous devez sélectionné le bloc ou le group autour duquel un ebranche doit être ajoutée !" +msgid "" +"You must select the block or group of blocks around which a branch should be" +" added!" +msgstr "" +"Vous devez sélectionné le bloc ou le group autour duquel un ebranche doit " +"être ajoutée !" #: ../editors/LDViewer.py:666 msgid "You must select the wire where a contact should be added!" -msgstr "Vous devez sélectionner le fil sur lequel le contact doit être ajouté !" - -#: ../dialogs/PouNameDialog.py:45 -#: ../dialogs/SFCStepNameDialog.py:47 -#: ../dialogs/SFCStepDialog.py:118 +msgstr "" +"Vous devez sélectionner le fil sur lequel le contact doit être ajouté !" + +#: ../dialogs/SFCStepNameDialog.py:48 ../dialogs/PouNameDialog.py:46 msgid "You must type a name!" msgstr "Vous devez saisir un nom !" @@ -3620,26 +3558,25 @@ msgid "You must type a value!" msgstr "Vous devez saisir une valeur !" -#: ../IDEFrame.py:419 +#: ../IDEFrame.py:438 msgid "Zoom" msgstr "Zoom" -#: ../editors/GraphicViewer.py:97 -msgid "Zoom:" -msgstr "Zoom :" - -#: ../PLCOpenEditor.py:335 +#: ../dialogs/DurationEditorDialog.py:151 +msgid "days" +msgstr "jours" + +#: ../PLCOpenEditor.py:333 #, python-format msgid "error: %s\n" msgstr "erreur: %s\n" -#: ../util/ProcessLogger.py:161 -#, python-format -msgid "exited with status %s (pid %s)\n" -msgstr "a quitté avec le status %s (pid %s)\n" - -#: ../PLCOpenEditor.py:393 -#: ../PLCOpenEditor.py:395 +#: ../util/ProcessLogger.py:169 +#, python-brace-format +msgid "exited with status {a1} (pid {a2})\n" +msgstr "" + +#: ../PLCOpenEditor.py:396 ../PLCOpenEditor.py:398 msgid "file : " msgstr "fichier :" @@ -3647,7 +3584,7 @@ msgid "function" msgstr "fonction" -#: ../PLCOpenEditor.py:396 +#: ../PLCOpenEditor.py:399 msgid "function : " msgstr "fonction :" @@ -3655,14 +3592,30 @@ msgid "functionBlock" msgstr "Bloc fonctionnel" -#: ../PLCOpenEditor.py:396 +#: ../dialogs/DurationEditorDialog.py:151 +msgid "hours" +msgstr "heures" + +#: ../PLCOpenEditor.py:399 msgid "line : " msgstr "ligne :" +#: ../dialogs/DurationEditorDialog.py:153 +msgid "milliseconds" +msgstr "" + +#: ../dialogs/DurationEditorDialog.py:152 +msgid "minutes" +msgstr "minutes" + #: ../dialogs/PouDialog.py:31 msgid "program" msgstr "programme" +#: ../dialogs/DurationEditorDialog.py:152 +msgid "seconds" +msgstr "secondes" + #: ../plcopen/iec_std.csv:84 msgid "string from the middle" msgstr "Caractères du milieu" @@ -3675,11 +3628,27 @@ msgid "string right of" msgstr "Caractères à droite de" -#: ../PLCOpenEditor.py:333 +#: ../Beremiz.py:126 +msgid "update info unavailable." +msgstr "Information de mise à jour non disponible." + +#: ../PLCOpenEditor.py:331 #, python-format msgid "warning: %s\n" msgstr "attention: %s\n" +#: ../PLCControler.py:970 +#, python-brace-format +msgid "{a1} \"{a2}\" can't be pasted as a {a3}." +msgstr "" + +#: ../ConfigTreeNode.py:56 +#, python-brace-format +msgid "" +"{a1} XML file doesn't follow XSD schema at line %{a2}:\n" +"{a3}" +msgstr "" + #: Extra XSD strings msgid "CanFestivalSlaveNode" msgstr "Noeud esclave CanFestival" @@ -3711,15 +3680,39 @@ msgid "CAN_Driver" msgstr "Driver CAN" -msgid "CExtension" -msgstr "Extension C" +msgid "Generic" +msgstr "" + +msgid "Command" +msgstr "" + +msgid "Xenomai" +msgstr "Xenomai" + +msgid "XenoConfig" +msgstr "Config Xenomai" + +msgid "Compiler" +msgstr "Compileur" msgid "CFLAGS" msgstr "CFLAGS" +msgid "Linker" +msgstr "Linkeur" + msgid "LDFLAGS" msgstr "LDFLAGS" +msgid "PLC" +msgstr "PLC" + +msgid "Linux" +msgstr "Linux" + +msgid "Win32" +msgstr "Win32" + msgid "BaseParams" msgstr "Paramètres de base" @@ -3729,24 +3722,6 @@ msgid "Enabled" msgstr "Actif" -msgid "Linux" -msgstr "Linux" - -msgid "Compiler" -msgstr "Compileur" - -msgid "Linker" -msgstr "Linkeur" - -msgid "Win32" -msgstr "Win32" - -msgid "Xenomai" -msgstr "Xenomai" - -msgid "XenoConfig" -msgstr "Config Xenomai" - msgid "BeremizRoot" msgstr "Racine de Beremiz" @@ -3762,201 +3737,206 @@ msgid "Disable_Extensions" msgstr "Disable_Extensions" -#~ msgid "Debug connect matching running PLC\n" -#~ msgstr "L'automate connecté correspond au project ouvert.\n" - -#~ msgid "File '%s' already exists!" -#~ msgstr "Le fichier '%s' existe déjà !" - -#~ msgid "Function Blocks can't be used in Transitions!" -#~ msgstr "" -#~ "Les blocs fonctionnels ne peuvent être utilisés dans des transitions" - -#~ msgid "No running PLC" -#~ msgstr "Aucun automate en cours d'exécution" - -#~ msgid "Node infos" -#~ msgstr "Propriétés du noeud" - -#~ msgid "PLC is %s\n" -#~ msgstr "L'automate est dans l'état %s\n" - -#~ msgid "Debug_mode" -#~ msgstr "Mode de débogage" - -#, fuzzy -#~ msgid "Close Project\tCTRL+SHIFT+W" -#~ msgstr "" -#~ "#-#-#-#-# Beremiz_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Fermer le project\tCTRL+SHIFT+W\n" -#~ "#-#-#-#-# PLCOpenEditor_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Fermer le projet\tCTRL+SHIFT+W" - -#~ msgid "New\tCTRL+N" -#~ msgstr "Nouveau\tCTRL+N" - -#~ msgid "Open\tCTRL+O" -#~ msgstr "Ouvrir\tCTRL+O" - -#, fuzzy -#~ msgid "Preview\tCTRL+SHIFT+P" -#~ msgstr "" -#~ "#-#-#-#-# Beremiz_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Preview\tCTRL+SHIFT+P\n" -#~ "#-#-#-#-# PLCOpenEditor_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Aperçu avant impression\tCTRL+SHIFT+S" - -#, fuzzy -#~ msgid "Print\tCTRL+P" -#~ msgstr "" -#~ "#-#-#-#-# Beremiz_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Imprimer\tCTRL+P\n" -#~ "#-#-#-#-# PLCOpenEditor_fr_FR.po (PACKAGE VERSION) #-#-#-#-#\n" -#~ "Imprimer...\tCTRL+Q" - -#~ msgid "Quit\tCTRL+Q" -#~ msgstr "Quitter\tCTRL+Q" - -#~ msgid "Save\tCTRL+S" -#~ msgstr "Enregistrer\tCTRL+S" - -#~ msgid "Save as\tCTRL+SHIFT+S" -#~ msgstr "Enregistrer sous...\tCTRL+SHIFT+S" - -#~ msgid "Copy\tCTRL+C" -#~ msgstr "Copier\tCtrl+C" - -#~ msgid "Cut\tCTRL+X" -#~ msgstr "Couper\tCTRL+X" - -#~ msgid "Find\tCTRL+F" -#~ msgstr "Rechercher...\tCTRL+Z" - -#~ msgid "PLCOpenEditor\tF1" -#~ msgstr "PLCOpenEditor\tF1" - -#~ msgid "Paste\tCTRL+V" -#~ msgstr "Coller\tCTRL+V" - -#~ msgid "Redo\tCTRL+Y" -#~ msgstr "Refaire\tCTRL+Y" - -#~ msgid "Refresh\tCTRL+R" -#~ msgstr "Actualiser\tCTRL+R" - -#~ msgid "Save As...\tCTRL+SHIFT+S" -#~ msgstr "Enregistrer sous...\tCTRL+SHIFT+S" - -#~ msgid "Search in Project\tCTRL+SHIFT+F" -#~ msgstr "Rechercher dans le projet\tCTRL+SHIFT+F" - -#~ msgid "Undo\tCTRL+Z" -#~ msgstr "Défaire\tCTRL+Z" - -#~ msgid "Add a sub confnode" -#~ msgstr "Add a sub confnode" - -#~ msgid "Append " -#~ msgstr "Ajouter " - -#~ msgid "Delete this confnode" -#~ msgstr "Supprimer ce plugin" - -#~ msgid "Edit CanOpen Network with NetworkEdit" -#~ msgstr "Editer le réseau CANOpen à l'aide de NetworkEdit" - -#~ msgid "Edit Python File" -#~ msgstr "Editer le fichier Python" - -#~ msgid "Edit network" -#~ msgstr "Editer le réseau" - -#~ msgid "Enable/Disable this confnode" -#~ msgstr "Activer/Désactiver le plugin" - -#~ msgid "Please enter a name for confnode:" -#~ msgstr "Saisissez un nom pour le plugin :" - -#~ msgid "Project not created" -#~ msgstr "Le projet n'a pu être créé" - -#~ msgid "Topology" -#~ msgstr "Topologie" - -#~ msgid "Wrong URI, please check it !\n" -#~ msgstr "URI inconnue, veuillez vérifier l'adresse !\n" - -#~ msgid "Add a new data type" -#~ msgstr "Ajouter un nouveau type de données" - -#~ msgid "Add new configuration" -#~ msgstr "Ajouter une nouvelle configuration" - -#~ msgid "Add new resource" -#~ msgstr "Ajouter une nouvelle resource" - -#~ msgid "Block Types" -#~ msgstr "Types de blocs" - -#~ msgid "Delete Task" -#~ msgstr "Supprimer une tâche" - -#~ msgid "Graphic Panel" -#~ msgstr "Graphique" - -#~ msgid "Instances" -#~ msgstr "Instances" - -#~ msgid "Invalid value \"%s\" for location" -#~ msgstr "Adresse \"%s\" invalide " - -#~ msgid "Please enter configuration name" -#~ msgstr "Saisissez le nom de la configuration" - -#~ msgid "Please enter data type name" -#~ msgstr "Saisissez le nom du type de donnée" - -#~ msgid "Please enter resource name" -#~ msgstr "Saisissez le nom de la ressource" - -#~ msgid "Please enter text" -#~ msgstr "Saisissez le texte" - -#~ msgid "Plugins" -#~ msgstr "Plugins" - -#~ msgid "Create a new POU from" -#~ msgstr "Créer un nouveau POU à partir de" - -#~ msgid "Please enter POU name" -#~ msgstr "Saisissez le nom du POU" - -#~ msgid "Scaling:" -#~ msgstr "Echelle :" - -#~ msgid "X Scale:" -#~ msgstr "Echelle X :" - -#~ msgid "Y Scale:" -#~ msgstr "Echelle Y :" - -#~ msgid "No" -#~ msgstr "Non" - -#~ msgid "Yes" -#~ msgstr "Oui" - -#, fuzzy -#~ msgid "A pou with \"%s\" as name exists!" -#~ msgstr "Un POU nommé \"%s\" existe déjà !" - -#~ msgid "Close\tCTRL+Q" -#~ msgstr "Fermer\tCTRL+Q" - -#~ msgid "" -#~ "A variable is defined with \"%s\" as name. It can generate a conflict. Do " -#~ "you wish to continue?" -#~ msgstr "Une variable" - -#~ msgid "Create A New POU From" -#~ msgstr "Créer un nouveau POU à partir de" +msgid "%(codefile_name)s" +msgstr "" + +msgid "variables" +msgstr "variables" + +msgid "variable" +msgstr "variable" + +msgid "name" +msgstr "nom" + +msgid "type" +msgstr "type" + +msgid "class" +msgstr "classe" + +msgid "initial" +msgstr "initiale" + +msgid "desc" +msgstr "desc" + +msgid "onchange" +msgstr "" + +msgid "opts" +msgstr "" + +#: Extra TC6 documentation strings +msgid "0 - current time, 1 - load time from PDT" +msgstr "" + +msgid "Preset datetime" +msgstr "" + +msgid "Copy of IN" +msgstr "Copie de IN" + +msgid "Datetime, current or relative to PDT" +msgstr "" + +msgid "" +"The real time clock has many uses including time stamping, setting dates and" +" times of day in batch reports, in alarm messages and so on." +msgstr "" + +msgid "1 = integrate, 0 = hold" +msgstr "" + +msgid "Overriding reset" +msgstr "" + +msgid "Input variable" +msgstr "Variable d'entrée" + +msgid "Initial value" +msgstr "Valeur initiale" + +msgid "Sampling period" +msgstr "Période d'échantillonnage" + +msgid "NOT R1" +msgstr "" + +msgid "Integrated output" +msgstr "" + +msgid "" +"The integral function block integrates the value of input XIN over time." +msgstr "" + +msgid "0 = reset" +msgstr "0 = reset" + +msgid "Input to be differentiated" +msgstr "" + +msgid "Differentiated output" +msgstr "" + +msgid "" +"The derivative function block produces an output XOUT proportional to the " +"rate of change of the input XIN." +msgstr "" + +msgid "0 - manual , 1 - automatic" +msgstr "" + +msgid "Process variable" +msgstr "" + +msgid "Set point" +msgstr "" + +msgid "Manual output adjustment - Typically from transfer station" +msgstr "" + +msgid "Proportionality constant" +msgstr "" + +msgid "Reset time" +msgstr "Temps de reset" + +msgid "Derivative time constant" +msgstr "" + +msgid "PV - SP" +msgstr "" + +msgid "FB for integral term" +msgstr "" + +msgid "FB for derivative term" +msgstr "" + +msgid "" +"The PID (proportional, Integral, Derivative) function block provides the " +"classical three term controller for closed loop control." +msgstr "" + +msgid "0 - track X0, 1 - ramp to/track X1" +msgstr "" + +msgid "Ramp duration" +msgstr "" + +msgid "BUSY = 1 during ramping period" +msgstr "" + +msgid "Elapsed time of ramp" +msgstr "" + +msgid "The RAMP function block is modelled on example given in the standard." +msgstr "" + +msgid "" +"The hysteresis function block provides a hysteresis boolean output driven by" +" the difference of two floating point (REAL) inputs XIN1 and XIN2." +msgstr "" + +msgid "The SR bistable is a latch where the Set dominates." +msgstr "" + +msgid "The RS bistable is a latch where the Reset dominates." +msgstr "" + +msgid "" +"The semaphore provides a mechanism to allow software elements mutually " +"exclusive access to certain ressources." +msgstr "" + +msgid "The output produces a single pulse when a rising edge is detected." +msgstr "" + +msgid "The output produces a single pulse when a falling edge is detected." +msgstr "" + +msgid "" +"The up-counter can be used to signal when a count has reached a maximum " +"value." +msgstr "" + +msgid "" +"The down-counter can be used to signal when a count has reached zero, on " +"counting down from a preset value." +msgstr "" + +msgid "" +"The up-down counter has two inputs CU and CD. It can be used to both count " +"up on one input and down on the other." +msgstr "" + +msgid "first input parameter" +msgstr "Premier paramètre d'entrée" + +msgid "second input parameter" +msgstr "Second paramètre d'entrée" + +msgid "first output parameter" +msgstr "Premier paramètre de sortie" + +msgid "second output parameter" +msgstr "Second paramètre de sortie" + +msgid "internal state: 0-reset, 1-counting, 2-set" +msgstr "" + +msgid "" +"The pulse timer can be used to generate output pulses of a given time " +"duration." +msgstr "" + +msgid "" +"The on-delay timer can be used to delay setting an output true, for fixed " +"period after an input becomes true." +msgstr "" + +msgid "" +"The off-delay timer can be used to delay setting an output false, for fixed " +"period after input goes false." +msgstr ""