diff --git a/core/plugins/org.activitymgr.core.model/src/org/activitymgr/core/model/impl/ModelMgrImpl.java b/core/plugins/org.activitymgr.core.model/src/org/activitymgr/core/model/impl/ModelMgrImpl.java
index 5f9daf81..4ec5c73f 100644
--- a/core/plugins/org.activitymgr.core.model/src/org/activitymgr/core/model/impl/ModelMgrImpl.java
+++ b/core/plugins/org.activitymgr.core.model/src/org/activitymgr/core/model/impl/ModelMgrImpl.java
@@ -301,8 +301,8 @@ private void verifyTaskPath(Task task) throws ModelException {
try {
_task = getTask(task.getId());
verify("UNKNOWN_TASK", _task != null, task.getId()); //$NON-NLS-1$
- verify("TASK_PATH_UPDATE_DETECTED", _task.getPath().equals(task.getPath())); //$NON-NLS-1$
- verify("TASK_NUMBER_UPDATE_DETECTED", _task.getNumber() == task.getNumber()); //$NON-NLS-1$
+ verify("TASK_PATH_UPDATE_DETECTED", _task.getPath().equals(task.getPath()), task.getCode()); //$NON-NLS-1$
+ verify("TASK_NUMBER_UPDATE_DETECTED", _task.getNumber() == task.getNumber(), task.getCode()); //$NON-NLS-1$
noErrorOccured = true;
} finally {
diff --git a/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings.properties b/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings.properties
index 3490057b..a8ad9b35 100644
--- a/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings.properties
+++ b/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings.properties
@@ -202,8 +202,8 @@ ModelMgr.errors.TASK_CANNOT_BE_MOVED_UP=This task can not be moved up
ModelMgr.errors.TASK_CODE_ALREADY_IN_USE=This code is already in use: {0}
ModelMgr.errors.TASK_CODE_EXIST_AT_DESTINATION=The task''s code ''{0}'' already exists in the destination path.
ModelMgr.errors.TASK_HAS_SUBTASKS=This task and its subtasks have {0} contributions
-ModelMgr.errors.TASK_NUMBER_UPDATE_DETECTED=Task''s number has changed in the database
-ModelMgr.errors.TASK_PATH_UPDATE_DETECTED=Task''s path has changed in the database
+ModelMgr.errors.TASK_NUMBER_UPDATE_DETECTED=Task''s number, with code ''{0}'', has changed in the database
+ModelMgr.errors.TASK_PATH_UPDATE_DETECTED=Task''s path, with code ''{0}'', has changed in the database
ModelMgr.errors.TASK_USED_BY_CONTRIBUTIONS=The task ''{0}'' is already used (contribsNb={1}). It cannot accept sub tasks.
ModelMgr.errors.TASK_WITH_AT_LEAST_ONE_SUBTASK_CANNOT_ACCEPT_CONTRIBUTIONS=This task has one or more sub tasks. It cannot accept a contribution.
ModelMgr.errors.UNKNOWN_TASK=Task does not exist in the database
diff --git a/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings_fr.properties b/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings_fr.properties
index acfaf7b0..c994f3c6 100644
--- a/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings_fr.properties
+++ b/core/plugins/org.activitymgr.core.util/src/org/activitymgr/core/util/strings_fr.properties
@@ -1,310 +1,310 @@
-AboutUI.errors.COULDNT_OPEN_MAIL_OR_BROWSER_APP=Impossible de lancer le navigateur internet par défaut.\n''{0}'' a été copié dans le presse papier.\nVous pouver le coller dans votre navigateur pour continuer.
-AboutUI.infos.IO_ERROR_WHILE_PRINTING_STACKTRACE=Erreur entrée/sortie inattendue lors de l''impression d''une pile d''appel (stacktrace).
-AboutUI.infos.SEE_LOGS_FOR_MORE_DETAILS=Veuillez consulter les traces pour plus d''informations.
-AboutUI.labels.BSD_LICENCE=Activity Manager est distribué sous licence BSD :
-AboutUI.labels.BUG_REPORT=Pour rapporter un bug, demander une nouvelle fonctionnalité, poser une question ou pour tout autre sujet,\nveuillez écrire à jfbraz@yahoo.fr.
-AboutUI.labels.FOR_MORE_INFORMATION=Pour plus d''information à propos d''Activity Manager, veuillez vous reporter à la documentation \nà l'adresse: http://activitymanager.sourceforge.net
-AboutUI.labels.THIS_PRODUCT_INCLUDES_APACHE_SOFTWARE=Cette application contient des briques logicielles développées par la fondation Apache\n(http://www.apache.org/).
-AboutUI.labels.THIS_PRODUCT_INCLUDES_ECLIPSE_SOFTWARE=Cette application contient également des briques logicielles développées par\n - La fondation Eclipse (http://www.eclipse.org)\n - L'orgnisation MySQL (http://www.mysql.com)\n - Le groupe de développement HSQLDB (http://www.hsqldb.org)
-AboutUI.titles.INFORMATION=Information
-AbstractDialog.dialog.TITLE=Erreur
-CollaboratorsUI.columns.FIRST_NAME=Prénom
-CollaboratorsUI.columns.IDENTIFIER=Identifiant
-CollaboratorsUI.columns.LAST_NAME=Nom
-CollaboratorsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
-CollaboratorsUI.menuitems.EXPORT=Export
-CollaboratorsUI.menuitems.LIST_CONTRIBUTIONS=Liste des contrib.
-CollaboratorsUI.menuitems.NEW=Nouveau collaborateur
-CollaboratorsUI.menuitems.REMOVE=Supprimer
-CollaboratorsUI.table.TOOL_TIP=Utilisez la première colonne pour activer/désactiver les collaborateurs\n(les collaborateurs désactivés ne sont pas supprimés de la base de données mais sont cachés\ndans l'onglet de saisie des contributions)
-ContributionsUI.buttons.NEXT_MONTH=mois >>
-ContributionsUI.buttons.NEXT_MONTH_TOOLTIP=Mois prochain
-ContributionsUI.buttons.NEXT_WEEK=semaine >>
-ContributionsUI.buttons.NEXT_WEEK_TOOLTIP=Semaine prochaine
-ContributionsUI.buttons.NEXT_YEAR=année >>
-ContributionsUI.buttons.NEXT_YEAR_TOOLTIP=Année prochaine
-ContributionsUI.buttons.PREVIOUS_MONTH=<< mois
-ContributionsUI.buttons.PREVIOUS_MONTH_TOOLTIP=Mois précédent
-ContributionsUI.buttons.PREVIOUS_WEEK=<< semaine
-ContributionsUI.buttons.PREVIOUS_WEEK_TOOLTIP=Semaine précédente
-ContributionsUI.buttons.PREVIOUS_YEAR=<< année
-ContributionsUI.buttons.PREVIOUS_YEAR_TOOLTIP=Année précédente
-ContributionsUI.columns.FRIDAY=VEN
-ContributionsUI.columns.MONDAY=LUN
-ContributionsUI.columns.SATURDAY=SAM
-ContributionsUI.columns.SUNDAY=DIM
-ContributionsUI.columns.TASK_NAME=Nom
-ContributionsUI.columns.TASK_PATH=Chemin
-ContributionsUI.columns.THURSDAY=JEU
-ContributionsUI.columns.TUESDAY=MAR
-ContributionsUI.columns.WEDNESDAY=MER
-ContributionsUI.errors.PARENT_TASK_SELECTED=Cette tache est une tache "parente". Veuillez choisir une de ses sous-taches.
-ContributionsUI.errors.TASK_PATH_CANNOT_BE_MODIFIED=La colonne liée au chemin de tache n''est pas supposée être modifiée.
-ContributionsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
-ContributionsUI.labels.SELECT_A_COLLABORATOR=Selectionnez un collaborateur :
-ContributionsUI.labels.TOTAL=Total :
-ContributionsUI.labels.WEEK=Semaine : {0} -> {1}
-ContributionsUI.menuitems.EXPORT=Export
-ContributionsUI.menuitems.NEW_CONTRIBUTION=Nouvelle contribution
-ContributionsUI.menuitems.PASTE=Coller (Ctrl + v)
-ContributionsUI.menuitems.REMOVE=Supprimer
-ContributionsViewerDialog.texts.TITLE=Contributions sélectionnées
-ContributionsViewerTable.columns.COLLABORATOR=Collaborateur
-ContributionsViewerTable.columns.DURATION=Durée
-ContributionsViewerTable.columns.DATE=Date
-ContributionsViewerTable.columns.TASK_NAME=Nom de la tache
-ContributionsViewerTable.columns.TASK_PATH=Chemin de la tache
-ContributionsViewerTable.errors.UNKNOWN_COLUMN=Colonne inconnue
-ContributionsViewerTable.menuitems.EXPORT=Export
-DatabaseUI.buttons.CLOSE_DATABASE=Fermer la base
-DatabaseUI.buttons.EXPORT_DATABASE=Exporter la base
-DatabaseUI.buttons.IMPORT_DATABASE=Importer depuis XML
-DatabaseUI.buttons.OPEN_DATABASE=Ouvrir la base
-DatabaseUI.buttons.RESET_DATABASE=Réinitialiser les données
-DatabaseUI.databasetypes.MARIA_DB=Base de données MariaDB
-DatabaseUI.databasetypes.STANDALONE_MODE=Mode standalone (base HSQL embarquée)
-DatabaseUI.databasetypes.USER_DEFINED=Autre base de données
-DatabaseUI.errors.DATABASE_NOT_INSTALLED=La base de données n''est pas installée.\nLa connexion a échoué.
-DatabaseUI.errors.DURATIONS_CREATION_ERROR=Erreur inattendue lors de la création des durées par défaut
-DatabaseUI.errors.FILE_DOES_NOT_EXIST=Le fichier spécifié n'existe pas. Veuillez spécifier un nom valide.
-DatabaseUI.errors.FILE_ERROR=Erreur liée au fichier
-DatabaseUI.errors.FILE_NAME_ERROR=Erreur liée au nom du fichier
-DatabaseUI.errors.UNKNOWN_DATABASE_TYPE=Type de base de données inconnue
-DatabaseUI.errors.XML_FILE_NOT_SPECIFIED=Le fichier XML n'est pas spécifié\!
-DatabaseUI.informations.DATABASE_SUCCESSFULLY_EXPORTED=Base de données exportée avec succès.
-DatabaseUI.informations.DATABASE_SUCCESSFULLY_IMPORTED=Fichier XML importé avec succès.
-DatabaseUI.labels.CONFIRMATION=Confirmation
-DatabaseUI.labels.CONNECTION_PROPERTIES=Propriétés de connexion
-DatabaseUI.labels.DATABASE_HOST=Hote de la base de données :
-DatabaseUI.labels.DATABASE_NAME=Nom de la base de données :
-DatabaseUI.labels.DATABASE_PORT=Port :
-DatabaseUI.labels.DATABASE_TYPE=Type de la base de données :
-DatabaseUI.labels.DATA_FILE=Fichier de données :
-DatabaseUI.labels.ERROR=Erreur
-DatabaseUI.labels.EXPORT_IMPORT=Exportation/importation
-DatabaseUI.labels.INFORMATION=Information
-DatabaseUI.labels.JDBC_DRIVER=Pilote JDBC :
-DatabaseUI.labels.PASSWORD_WARNING=(stocké en clair)
-DatabaseUI.labels.SERVER_URL=URL du serveur :
-DatabaseUI.labels.USER_ID=Identifiant utilisateur :
-DatabaseUI.labels.USER_PASSWORD=Mot de passe :
-DatabaseUI.labels.XML_FILE=Fichier XML :
-DatabaseUI.questions.CREATE_DEFAULT_DURATIONS=L'initialisation des tables de la base de données est terminée.\nVoulez-vous créer les durées par défaut (0.25, 0.50, 0.75 & 1.00) ?\nAttention : \n - si vous êtes sur le point d'importer un fichier XML, choisissez 'non' pour éviter les conflits de données\n - si vous choisissez non, vous devrez les créer manuellement
-DatabaseUI.questions.DATABASE_NOT_INSTALLED=La base de données ne semble pas installée.\nSouhaitez-vous qu'elle soit installée dès à présent ?
-DatabaseUI.questions.DATABASE_RESET_BEFORE_IMPORTATION=Voulez-vous que les tables de la base de données soient réinitialisées avant l'importation ?
-DatabaseUI.questions.IMPORTATION_CONFIRMATION=Etes-vous certain de vouloir procéder à cette importation ?
-DatabaseUI.questions.OVERWRITE_CONFIRMATION=Le fichier existe. Souhaitez-vous l'écraser ?
-DatabaseUI.questions.RESET_CONFIRMATION_1=Etes-vous certain de vouloir réinitialiser les données stockées en base ?
-DatabaseUI.questions.RESET_CONFIRMATION_2=Réellement certain ???? (Vous pourriez DEFINITIVEMENT perdre vos données)
-ReportsUI.task=tache
-ReportsUI.task.budget=budget
-ReportsUI.task.name=nom
-ReportsUI.task.code=code
-ReportsUI.task.path=chemin
-ReportsUI.task.etc=raf
-ReportsUI.task.initiallyConsumed=cons. init.
-ReportsUI.task.comment=commentaire
-ReportsUI.collaborator=collaborator
-ReportsUI.collaborator.isActive=actif
-ReportsUI.collaborator.lastName=nom
-ReportsUI.collaborator.firstName=prénom
-ReportsUI.collaborator.login=login
-DateHelper.errors.UNKNOWN_DATE_INCREMENT_TYPE=Type d'incrément de date non supporté
-DbMgr.errors.COLLABORATORS_SELECTION_FAILURE=Un incident inattendue s'est produit pendant l'extraction des collaborateurs
-DbMgr.errors.COLLABORATOR_CREATION_FAILUE=Erreur lors de la création du collaborateur : ''{0}''
-DbMgr.errors.COLLABORATOR_DELETION_FAILURE=Erreur lors de la suppression du collaborateur ''{0}''
-DbMgr.errors.COLLABORATOR_SELECTION_BY_ID_FAILURE=Un incident inattendue s'est produit pendant la lecture des données du collaborateur à partir de l'identifiant : ''{0}''
-DbMgr.errors.COLLABORATOR_SELECTION_BY_LOGIN_FAILURE=Un incident inattendue s'est produit pendant la lecture des données du collaborateur à partir de l'identifiant de connexion ''{0}''
-DbMgr.errors.COLLABORATOR_UPDATE_FAILURE=La mise à jour du collaborateur ''{0}'' a échoué.
-DbMgr.errors.CONTRIBUTIONS_SELECTION_FAILURE=Un incident inattendu s'est produit lors de la sélection d'une contribution
-DbMgr.errors.CONTRIBUTIONS_SUM_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant le calcul de la somme des contributions
-DbMgr.errors.CONTRIBUTION_CREATION_FAILUE=Echec lors de la création de la contribution
-DbMgr.errors.CONTRIBUTION_DELETION_FAILURE=Echec lors de la suppression de la contribution
-DbMgr.errors.CONTRIBUTION_UPDATE_FAILURE=Echec lors de la mise à jour de la contribution
-DbMgr.errors.DURATIONS_SELECTION_FAILURE=Un incident inattendu s'est produit lors de la sélection des durées en base de données
-DbMgr.errors.DURATION_CREATION_FAILUE=Echec lors de la création de la durée : ''{0}''
-DbMgr.errors.DURATION_DELETION_FAILURE=Echec lors de la suppression de la durée ''{0}''
-DbMgr.errors.DURATION_SELECTION_BY_ID=Un incident inattendu s'est produit lors de la sélection de la durée ''{0}''
-DbMgr.errors.DURATION_UPDATE_FAILURE=La mise à jour de la durée ''{0}'' a échoué
-DbMgr.errors.MEMORY_IO_FAILURE=Incient I/O inattendu lors de la lecture d'un flux mémoire\!
-DbMgr.errors.SQL_AUTOINCREMENT_FAILURE=Un incident inattendu s'est produit lors de la récupération de l'identifiant d'un objet.
-DbMgr.errors.SQL_COMMIT_FAILURE=Echec lors d'une validation de transaction
-DbMgr.errors.SQL_CONNECTION_ESTABLISHMENT_FAILURE=La connexion à la base de donnée n'est pas établie.
-DbMgr.errors.SQL_CONNECTION_OPEN=Echec lors de l'ouverture de la connexion SQL
-DbMgr.errors.SQL_DATABASE_NAME_EXTRACTION_FAILURE=Echec lors de la r\u00E9cup\u00E9ration du nom de la BDD
-DbMgr.errors.SQL_DISCONNECTION_FAILURE=Echec lors de la déconnexion de la base de données
-DbMgr.errors.SQL_DURATION_CHECK_FAILURE=Echec lors de la vérification de la durée : ''{0}''
-DbMgr.errors.SQL_EMPTY_QUERY_RESULT=La requête SQL n'a retourné aucun résultat
-DbMgr.errors.SQL_MULTI_TRANSACTION_DETECTED=Un conflit de transaction a été détecté
-DbMgr.errors.SQL_ROLLBACK_FAILURE=Echec lors de l'annulation de la transaction
-DbMgr.errors.SQL_ROW_DELETION_FAILURE=Aucune ligne de la base de donnée n'a été supprimée
-DbMgr.errors.SQL_SCRIPT_LOAD_FAILURE=Erreur lors de la lecture du fichier SQL de création des tables.
-DbMgr.errors.SQL_TABLES_DETECTION_FAILURE=La table SQL ''{0}'' ne semble pas exister en base de données.
-DbMgr.errors.SQL_TABLE_CREATION_FAILURE=La création des tables en base de données a échoué
-DbMgr.errors.SQL_UPDATE_FAILURE=Aucune ligne n'a été mise à jour
-DbMgr.errors.TASKS_SELECTION_FAILURE=Incident inattendu lors de la recherche de taches
-DbMgr.errors.TASK_CREATION_FAILURE=La création de la tache ''{0}'' a échoué
-DbMgr.errors.TASK_DELETION_FAILURE=La suppression de la tache ''{0}'' a échoué
-DbMgr.errors.TASK_NUMBER_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant la génération d'un nouveau numéro pour la tache de chemin ''{0}''
-DbMgr.errors.TASK_SELECTION_BY_CODE_FAILURE=Un incident inattendu s'est produit pendant la récupération de la tache de code ''{0}''
-DbMgr.errors.TASK_SELECTION_BY_COLLABORATOR_FAILURE=Un incident inattendu s'est produit pendant la récupération des taches associées au collaborateur
-DbMgr.errors.TASK_MAX_PATH_DEPTH_RETRIEVAL=Un incident inattendu s'est produit pendant la lecture de la profondeur de l'arborescence de taches
-DbMgr.errors.TASK_SELECTION_BY_ID_FAILURE=Un incident inattendu s'est produit pendant la récupération de taches à partit de leuts identifiants
-DbMgr.errors.TASK_SELECTION_BY_NUMBER_FROM_PATH_FAILURE=Un incident inattendu s'est produit pendant la récupération de la tache N° ''{0}'' dans le chemin ''{1}''
-DbMgr.errors.TASK_SELECTION_BY_PATH=Un incident inattendu s'est produit pendant la récupération de la tache de chemin ''{0}''
-DbMgr.errors.TASK_SUMS_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant le calcul des cumuls pour la tache d'identifiant ''{0}''
-DbMgr.errors.TASK_UPDATE_FAILURE=La mise à jour de la tache ''{0}'' a échoué
-DbMgr.errors.UNKNOWN_CRITERIA_INDEX=Index de critère inconnu ''{0}''
-DbMgr.errors.UNKNOWN_FIELD_INDEX=Index de champ inconnu ''{0}''
-DurationsUI.columns.DURATION=Durée
-DurationsUI.errors.DATABASE_CONNECTION_FAILURE_WHILE_DURATION_EXISTENCE_CHECK=La connexion à la base de données a échoué lors de la vérification de l'existence de la durée
-DurationsUI.errors.DURATION_ALREADY_EXIST=Cette durée existe
-DurationsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
-DurationsUI.menuitems.NEW=Nouvelle durée
-DurationsUI.menuitems.EXPORT=Exportation
-DurationsUI.menuitems.REMOVE=Supprimer
-DurationsUI.menuitems.REFRESH=Rafraichir
-DurationsUI.questions.NEW_DURATION=Veuillez entrer une nouvelle durée
-DurationsUI.table.TOOL_TIP=Utilisez la première colonne pour activer ou désactiver les durées\n(les durées désactivées ne sont pas supprimées de la base de données mais sontr cachées)\ndans l'onglet des contributions)
-DurationsUI.titles.INPUT_DIALOG=Fenêtre de saisie
-ErrorDialog.infos.IO_ERROR_WHILE_PRINTING_STACKTRACE=Incident I/O inattendu pendant l'affichage de la pile (stacktrace).
-ErrorDialog.infos.SEE_LOGS_FOR_MORE_DETAILS=Consultez les traces pour plus de détails.
-ErrorDialog.texts.TITLE=Erreur
-Main.status.CONNECTED=Connecté
-Main.status.NOT_CONNECTED=Non connecté
-Main.tabs.ABOUT=A propos
-Main.tabs.COLLABORATORS=Collaborateurs
-Main.tabs.CONTRIBUTIONS=Contributions
-Main.tabs.REPORTS=Rapports
-Main.tabs.DATABASE=Base de données
-Main.tabs.DURATIONS=Durées
-Main.tabs.TASKS=Taches
-Main.texts.TITLE=ActivityManager
-ModelMgr.defaults.COLLABORATOR_FIRST_NAME=NOUVEAU
-ModelMgr.defaults.COLLABORATOR_LAST_NAME=NOUVEAU
-ModelMgr.defaults.COLLABORATOR_LOGIN_PREFIX=NOUVEAU
-ModelMgr.defaults.TASK_NAME=NOUVEAU
-ModelMgr.errors.A_TASK_WITH_SUBTASKS_CANNOT_ACCEPT_CONTRIBUTIONS=Cette tache contient au moins une tache fille ; elle ne peut accepter de contribution.
-ModelMgr.errors.DURATION_DOES_NOT_EXIST=Cette durée n'existe pas
-ModelMgr.errors.CONTRIBUTOR_MUST_BE_SPECIFIED=Le collaborateur doit être spécifié
-ModelMgr.errors.FROM_DATE_MUST_BE_BEFORE_TO_DATE=La date de début doit ête antérieure à la date de fin
-ModelMgr.errors.INVALID_TASK_CODE_PATH=Une tache valide doit commencer par un '/'
-ModelMgr.errors.NON_NULL_TASK_BUDGET=Le budget de cette tache est non nul ({0}); elle ne peut donc pas recevoir de tache fille.
-ModelMgr.errors.NON_NULL_TASK_ESTIMATED_TIME_TO_COMPLETE=Le reste à faire de cette tache est non nul ({0}); elle ne peut donc pas recevoir de tache fille
-ModelMgr.errors.NON_NULL_TASK_INITIALLY_CONSUMMED=Le consommé initial de cette tache n'est pas nul ({0}); elle ne peut donc pas recevoir de tache fille.
-ModelMgr.errors.NON_UNIQUE_COLLABORATOR_LOGIN=Le login "{0}" est déjà utilisé par un autre collaborateur
-ModelMgr.errors.NUL_DURATION_FORBIDDEN=Une durée ne peut pas être nulle
-ModelMgr.errors.TASK_CANNOT_BE_MOVED_DOWN=Cette tache ne peut pas être déplacée vers le bas.
-ModelMgr.errors.TASK_CANNOT_BE_MOVED_UNDER_ITSELF=Déplacer une tache sous elle-même ou sous une de ses taches filles n'est pas permis.
-ModelMgr.errors.TASK_CANNOT_BE_MOVED_UP=Cette tache ne peut pas être déplacée vers le haut.
-ModelMgr.errors.TASK_CODE_ALREADY_IN_USE=Ce code est déjà utilisé: {0}
-ModelMgr.errors.TASK_CODE_EXIST_AT_DESTINATION=Le code de tache ''{0}'' existe déjà à la destination choisie.
-ModelMgr.errors.TASK_HAS_SUBTASKS=Cette tache totalise avec ses taches filles {0} contributions
-ModelMgr.errors.TASK_NUMBER_UPDATE_DETECTED=Le numéro de la tache a changé en base de données.
-ModelMgr.errors.TASK_PATH_UPDATE_DETECTED=Le chemin de la tache a changé en base de données.
-ModelMgr.errors.TASK_USED_BY_CONTRIBUTIONS=La tache ''{0}'' est déjà utilisée (nombre de contributions={1}). Elle ne peut donc pas recevoir de tache fille.
-ModelMgr.errors.TASK_WITH_AT_LEAST_ONE_SUBTASK_CANNOT_ACCEPT_CONTRIBUTIONS=Cette tache a au moins une tache fille ; elle ne peut donc pas recevoir de contribution.
-ModelMgr.errors.UNKNOWN_TASK=La tache n'existe pas en base de données
-ModelMgr.errors.UNKNOWN_TASK=Tache inconnue : ''{0}''
-ModelMgr.errors.UNKNOWN_TASK_CODE_PATH=Chemin de tache inconnu : ''{0}''
-ModelMgr.errors.UNMOVEABLE_DURATION=Cette contribution est utilisée, elle ne peut donc pas être supprimée.
-ModelMgr.errros.COLLABORATOR_WITH_CONTRIBUTIONS_CANNOT_BE_REMOVED=Ce collaborateur a {0} contributions
-ModelMgr.errros.DUPLICATE_DURATION=La durée existe déjà
-ModelMgr.errors.CONTRIBUTION_UPDATE_DETECTED=La contribution a été mise à jour en base de données dans une autre transaction
-ModelMgr.errors.CONTRIBUTION_DELETION_DETECTED=La contribution n'existe pas en base de données
-ModelMgr.errors.INVALID_DURATION=Durée invalide
-ModelMgr.errors.BAD_REPORT_PARAMS_EMPTY_TASK_ATTRIBUTES=Rapport invalide : si les taches sont incluses dans le rapport, au moins un attribut de tache doit être sélectionné
-ModelMgr.errors.BAD_REPORT_PARAMS_EMPTY_COLLABORATOR_ATTRIBUTES=Rapport invalide : si les taches sont incluses dans le rapport, au moins un attribut de tache doit être sélectionnéRapport invalide : si les collaborateurs sont inclus dans le rapport, au moins un attribut de collaborateur doit être sélectionné
-ModelMgr.xmlexport.comment.BUDGET=\ \ \ \ - Budgets :
-ModelMgr.xmlexport.comment.CONSUMED=\ \ \ \ - Consommé :
-ModelMgr.xmlexport.comment.CONTRIBUTIONS_NUMBER=\ \ \ \ - Nombre de contributions :
-ModelMgr.xmlexport.comment.ESTIMATED_TIME_TO_COMPLETE=\ \ \ \ - Reste à faire :
-ModelMgr.xmlexport.comment.INITIALLY_CONSUMED=\ \ \ \ - Consommé initial :
-ModelMgr.xmlexport.comment.ROOT_TASKS_CHECK_SUMS=\ \ Sommes de controle des taches racines :
-ModelMgr.xmlexport.comment.ROOT_TASK=\ \ * Tache racine[{0}]='/{1}' ({2})
-PropertiesHelper.errors.CIRCULAR_REFERENCE=Référence circulaire détectée pour la propriété '$\{{0}\}'
-PropertiesHelper.errors.NOT_IMPLEMENTED=Non implémenté
-PropertiesHelper.errors.PARAMETER_NOT_SPECIFIED=Le paramètre ''{0}'' n'est pas spécifié (sous ''{1}'', '{2}' ou '{3}'
-ReportMgr.errors.DIRECTORY_CREATION_FAILURE=Echec lors de la création des répertoires ({0})
-ReportMgr.errors.OUTPUT_FILENAME_REQUIRED=Un fichier de sortie doit être spécifié pour l'identifiant ''{0}''
-ReportMgr.errors.REQUIRED_TEMPLATE_TYPE_OR_PATH=Un type ou un modèle doit être spécifié pour l'identifiant ''{0}''
-ReportMgr.errors.TEMPLATE_NOT_FOUND=Modèle de rapport non trouvé : ''{0}''
-ReportMgr.errors.UNEXPECTED_ERROR=Incident inattendu
-SWTHelper.errors.IO_EXCEPTION_WHILE_EXPORTING=Incident entrée/sortie lors de l'exportation.
-SWTHelper.errors.IO_EXCEPTION_WHILE_IMPORTING=Incident entrée/sortie lors de importation.
-SWTHelper.excelsheet.TAB_NAME=exporter
-SafeRunner.errors.UNABLE_TO_COMPLETE_OPERATION=Impossible de compléter l''opération : ''{0}''
-SafeRunner.errors.UNEXPECTED_ERROR=Incident inattendu
-SelectableCollaboratorPanel.columns.FIRST_NAME=Prénom
-SelectableCollaboratorPanel.columns.LAST_NAME=Nom
-SelectableCollaboratorPanel.errors.UNKNOWN_COLUMN=Colonne inconnue
-StringHelper.errors.MEMORY_IO_FAILURE=Incident inattendu lors d'un accès en lecture/écriture sur un buffer mémoire!
-StringHelper.errors.TOO_MANY_DIGITS=Trop de décimales
-StringHelper.errors.WRONG_NUMBER_FORMAT=Mauvais format (XXXXXX.XX)
-TableOrTreeColumnsMgr.errors.COLUMN_NAME_REQUIRED=Le nom de la colonne ne peut être nul
-TaskChooserDialog.labels.FOUND_TASKS=Taches trouvées :
-TaskChooserDialog.texts.TITLE=Choisissez une tache
-TaskChooserTable.columns.TASK_NAME=Tache
-TaskChooserTable.columns.TASK_PATH=Chemin
-TaskChooserTable.errors.UNKNOWN_COLUMN=Colonne inconnue
-TaskChooserTree.columns.TASK_CODE=Code
-TaskChooserTree.columns.TASK_NAME=Tache
-TaskChooserTree.errors.UNKNOWN_COLUMN=Colonne inconnue
-TaskChooserTree.labels.PLACEHOLDER=Entrez une chaine pour filtrer...
-TaskChooserTreeWithHistoryDialog.errors.TASK_REQUIRED=Veuillez choisir une tache
-TaskChooserTreeWithHistoryDialog.labels.PREVIOUS_SELECTION=Sélection(s) précédente(s)
-TaskChooserTreeWithHistoryDialog.labels.TASK_TREE=Arbre des taches
-TaskChooserTreeWithHistoryDialog.texts.TITLE=Choisissez une tache
-TaskFinderPanel.attributes.TASK_CODE=Code
-TaskFinderPanel.attributes.TASK_NAME=Tache
-TaskFinderPanel.buttons.FIND=Rechercher...
-TaskFinderPanel.criterias..ENDS_WITH=se termine par
-TaskFinderPanel.criterias.CONTAINS=contient
-TaskFinderPanel.criterias.IS_EQUAL_TO=est égal à
-TaskFinderPanel.criterias.STARTS_WITH=commence par
-TaskFinderPanel.errors.NOTHING_FOUND=Les critères de recherches ne correspondent à aucune donnée
-TaskFinderPanel.labels.SEARCH_FILTER=Filtre de recherche
-TaskFinderPanel.titles.SEARCH_STATUS=Statut de recherche
-TasksChooserTree.columns.TASK_CODE=Code
-TasksChooserTree.columns.TASK_NAME=Tache
-TasksChooserTree.errors.UNKNOWN_COLUMN=Colonne inconnue
-TasksUI.columns.TASK_NAME=Tache
-TasksUI.columns.TASK_BUDGET=Budget
-TasksUI.columns.TASK_CODE=Code
-TasksUI.columns.TASK_COMMENT=Commentaire
-TasksUI.columns.TASK_CONSUMED=Consommé
-TasksUI.columns.TASK_DELTA=Delta
-TasksUI.columns.TASK_ESTIMATED_TIME_TO_COMPLETE=RAF
-TasksUI.columns.TASK_INITIAL=Conso. initial
-TasksUI.columns.TASK_CLOSED=Fermée
-TasksUI.errors.MOVE_TO_SAME_PARENT=La tache parente de destination est identique à la tache parente source
-TasksUI.errors.TECHNICAL_ERROR=Incident technique : ''{0}''
-TasksUI.errors.UNKNOWN_COLUMN=Colonne inconnue
-TasksUI.errros.READ_ONLY_COLUMN=Cette colonne ne peut pas être modifiée
-TasksUI.menuitems.COLLAPSE_ALL=Tout plier
-TasksUI.menuitems.COPY=Copier (Ctrl + c)
-TasksUI.menuitems.EXPAND_ALL=Tout développer
-TasksUI.menuitems.EXPORT_IMPORT=Excel
-TasksUI.menuitems.XLS_EXPORT=Export
-TasksUI.menuitems.XLS_IMPORT=Import
-TasksUI.menuitems.XLS_SNAPSHOT_EXPORT=Instantané de l'arbre
-TasksUI.menuitems.LIST_CONTRIBUTIONS=Liste des contrib.
-TasksUI.menuitems.MOVE=Déplacer
-TasksUI.menuitems.MOVE_DOWN=en bas (Ctrl + flèche bas)
-TasksUI.menuitems.MOVE_BEFORE_ANOTHER_TASK=avant une autre tache
-TasksUI.menuitems.MOVE_AFTER_ANOTHER_TASK=après une autre tache
-TasksUI.menuitems.MOVE_UNDER_ANOTHER_TASK=sous une autre tache
-TasksUI.menuitems.MOVE_UNDER_ROOT=sous la racine
-TasksUI.menuitems.MOVE_UP=en haut (Ctrl + flèche haut)
-TasksUI.menuitems.NEW=Nouvelle
-TasksUI.menuitems.NEW_SUBTASK=sous tache
-TasksUI.menuitems.NEW_TASK=tache (même niveau)
-TasksUI.menuitems.REFRESH=Rafraîchir
-TasksUI.menuitems.REMOVE=Supprimer
-XmlHelper.errors.DATABASE_ACCESS_ERROR=Incident inattendu lors de l'accès à la base de données
-XmlHelper.errors.INVALID_ATTRIBUTE=Valeur d'attribut invalide ''{0}'' pour ''{1}''
-XmlHelper.errors.MISSING_ATTRIBUTE=Valeur de l'attribut manquant pour ''{0}''
-XmlHelper.errors.MODEL_VIOLATION=Violation du modèle :
-XmlHelper.errors.NOT_IMPLEMENTED=La fonctionnalité XML SAX n'est pas implémentée dans ActivityManager ('{0}')
-XmlHelper.errors.NUMBER_FORMAT_ERROR=Erreur de format (format numérique) :
-XmlHelper.errors.UNEXPECTED_NODE=Noeud XML inattendu : ''{0}''
+AboutUI.errors.COULDNT_OPEN_MAIL_OR_BROWSER_APP=Impossible de lancer le navigateur internet par défaut.\n''{0}'' a été copié dans le presse papier.\nVous pouver le coller dans votre navigateur pour continuer.
+AboutUI.infos.IO_ERROR_WHILE_PRINTING_STACKTRACE=Erreur entrée/sortie inattendue lors de l''impression d''une pile d''appel (stacktrace).
+AboutUI.infos.SEE_LOGS_FOR_MORE_DETAILS=Veuillez consulter les traces pour plus d''informations.
+AboutUI.labels.BSD_LICENCE=Activity Manager est distribué sous licence BSD :
+AboutUI.labels.BUG_REPORT=Pour rapporter un bug, demander une nouvelle fonctionnalité, poser une question ou pour tout autre sujet,\nveuillez écrire à jfbraz@yahoo.fr.
+AboutUI.labels.FOR_MORE_INFORMATION=Pour plus d''information à propos d''Activity Manager, veuillez vous reporter à la documentation \nà l'adresse: http://activitymanager.sourceforge.net
+AboutUI.labels.THIS_PRODUCT_INCLUDES_APACHE_SOFTWARE=Cette application contient des briques logicielles développées par la fondation Apache\n(http://www.apache.org/).
+AboutUI.labels.THIS_PRODUCT_INCLUDES_ECLIPSE_SOFTWARE=Cette application contient également des briques logicielles développées par\n - La fondation Eclipse (http://www.eclipse.org)\n - L'orgnisation MySQL (http://www.mysql.com)\n - Le groupe de développement HSQLDB (http://www.hsqldb.org)
+AboutUI.titles.INFORMATION=Information
+AbstractDialog.dialog.TITLE=Erreur
+CollaboratorsUI.columns.FIRST_NAME=Prénom
+CollaboratorsUI.columns.IDENTIFIER=Identifiant
+CollaboratorsUI.columns.LAST_NAME=Nom
+CollaboratorsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
+CollaboratorsUI.menuitems.EXPORT=Export
+CollaboratorsUI.menuitems.LIST_CONTRIBUTIONS=Liste des contrib.
+CollaboratorsUI.menuitems.NEW=Nouveau collaborateur
+CollaboratorsUI.menuitems.REMOVE=Supprimer
+CollaboratorsUI.table.TOOL_TIP=Utilisez la première colonne pour activer/désactiver les collaborateurs\n(les collaborateurs désactivés ne sont pas supprimés de la base de données mais sont cachés\ndans l'onglet de saisie des contributions)
+ContributionsUI.buttons.NEXT_MONTH=mois >>
+ContributionsUI.buttons.NEXT_MONTH_TOOLTIP=Mois prochain
+ContributionsUI.buttons.NEXT_WEEK=semaine >>
+ContributionsUI.buttons.NEXT_WEEK_TOOLTIP=Semaine prochaine
+ContributionsUI.buttons.NEXT_YEAR=année >>
+ContributionsUI.buttons.NEXT_YEAR_TOOLTIP=Année prochaine
+ContributionsUI.buttons.PREVIOUS_MONTH=<< mois
+ContributionsUI.buttons.PREVIOUS_MONTH_TOOLTIP=Mois précédent
+ContributionsUI.buttons.PREVIOUS_WEEK=<< semaine
+ContributionsUI.buttons.PREVIOUS_WEEK_TOOLTIP=Semaine précédente
+ContributionsUI.buttons.PREVIOUS_YEAR=<< année
+ContributionsUI.buttons.PREVIOUS_YEAR_TOOLTIP=Année précédente
+ContributionsUI.columns.FRIDAY=VEN
+ContributionsUI.columns.MONDAY=LUN
+ContributionsUI.columns.SATURDAY=SAM
+ContributionsUI.columns.SUNDAY=DIM
+ContributionsUI.columns.TASK_NAME=Nom
+ContributionsUI.columns.TASK_PATH=Chemin
+ContributionsUI.columns.THURSDAY=JEU
+ContributionsUI.columns.TUESDAY=MAR
+ContributionsUI.columns.WEDNESDAY=MER
+ContributionsUI.errors.PARENT_TASK_SELECTED=Cette tâche est une tâche "parente". Veuillez choisir une de ses sous-tâches.
+ContributionsUI.errors.TASK_PATH_CANNOT_BE_MODIFIED=La colonne liée au chemin de tâche n''est pas supposée être modifiée.
+ContributionsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
+ContributionsUI.labels.SELECT_A_COLLABORATOR=Selectionnez un collaborateur :
+ContributionsUI.labels.TOTAL=Total :
+ContributionsUI.labels.WEEK=Semaine : {0} -> {1}
+ContributionsUI.menuitems.EXPORT=Export
+ContributionsUI.menuitems.NEW_CONTRIBUTION=Nouvelle contribution
+ContributionsUI.menuitems.PASTE=Coller (Ctrl + v)
+ContributionsUI.menuitems.REMOVE=Supprimer
+ContributionsViewerDialog.texts.TITLE=Contributions sélectionnées
+ContributionsViewerTable.columns.COLLABORATOR=Collaborateur
+ContributionsViewerTable.columns.DURATION=Durée
+ContributionsViewerTable.columns.DATE=Date
+ContributionsViewerTable.columns.TASK_NAME=Nom de la tâche
+ContributionsViewerTable.columns.TASK_PATH=Chemin de la tâche
+ContributionsViewerTable.errors.UNKNOWN_COLUMN=Colonne inconnue
+ContributionsViewerTable.menuitems.EXPORT=Export
+DatabaseUI.buttons.CLOSE_DATABASE=Fermer la base
+DatabaseUI.buttons.EXPORT_DATABASE=Exporter la base
+DatabaseUI.buttons.IMPORT_DATABASE=Importer depuis XML
+DatabaseUI.buttons.OPEN_DATABASE=Ouvrir la base
+DatabaseUI.buttons.RESET_DATABASE=Réinitialiser les données
+DatabaseUI.databasetypes.MARIA_DB=Base de données MariaDB
+DatabaseUI.databasetypes.STANDALONE_MODE=Mode standalone (base HSQL embarquée)
+DatabaseUI.databasetypes.USER_DEFINED=Autre base de données
+DatabaseUI.errors.DATABASE_NOT_INSTALLED=La base de données n''est pas installée.\nLa connexion a échoué.
+DatabaseUI.errors.DURATIONS_CREATION_ERROR=Erreur inattendue lors de la création des durées par défaut
+DatabaseUI.errors.FILE_DOES_NOT_EXIST=Le fichier spécifié n'existe pas. Veuillez spécifier un nom valide.
+DatabaseUI.errors.FILE_ERROR=Erreur liée au fichier
+DatabaseUI.errors.FILE_NAME_ERROR=Erreur liée au nom du fichier
+DatabaseUI.errors.UNKNOWN_DATABASE_TYPE=Type de base de données inconnue
+DatabaseUI.errors.XML_FILE_NOT_SPECIFIED=Le fichier XML n'est pas spécifié\!
+DatabaseUI.informations.DATABASE_SUCCESSFULLY_EXPORTED=Base de données exportée avec succès.
+DatabaseUI.informations.DATABASE_SUCCESSFULLY_IMPORTED=Fichier XML importé avec succès.
+DatabaseUI.labels.CONFIRMATION=Confirmation
+DatabaseUI.labels.CONNECTION_PROPERTIES=Propriétés de connexion
+DatabaseUI.labels.DATABASE_HOST=Hote de la base de données :
+DatabaseUI.labels.DATABASE_NAME=Nom de la base de données :
+DatabaseUI.labels.DATABASE_PORT=Port :
+DatabaseUI.labels.DATABASE_TYPE=Type de la base de données :
+DatabaseUI.labels.DATA_FILE=Fichier de données :
+DatabaseUI.labels.ERROR=Erreur
+DatabaseUI.labels.EXPORT_IMPORT=Exportation/importation
+DatabaseUI.labels.INFORMATION=Information
+DatabaseUI.labels.JDBC_DRIVER=Pilote JDBC :
+DatabaseUI.labels.PASSWORD_WARNING=(stocké en clair)
+DatabaseUI.labels.SERVER_URL=URL du serveur :
+DatabaseUI.labels.USER_ID=Identifiant utilisateur :
+DatabaseUI.labels.USER_PASSWORD=Mot de passe :
+DatabaseUI.labels.XML_FILE=Fichier XML :
+DatabaseUI.questions.CREATE_DEFAULT_DURATIONS=L'initialisation des tables de la base de données est terminée.\nVoulez-vous créer les durées par défaut (0.25, 0.50, 0.75 & 1.00) ?\nAttention : \n - si vous êtes sur le point d'importer un fichier XML, choisissez 'non' pour éviter les conflits de données\n - si vous choisissez non, vous devrez les créer manuellement
+DatabaseUI.questions.DATABASE_NOT_INSTALLED=La base de données ne semble pas installée.\nSouhaitez-vous qu'elle soit installée dès à présent ?
+DatabaseUI.questions.DATABASE_RESET_BEFORE_IMPORTATION=Voulez-vous que les tables de la base de données soient réinitialisées avant l'importation ?
+DatabaseUI.questions.IMPORTATION_CONFIRMATION=Etes-vous certain de vouloir procéder à cette importation ?
+DatabaseUI.questions.OVERWRITE_CONFIRMATION=Le fichier existe. Souhaitez-vous l'écraser ?
+DatabaseUI.questions.RESET_CONFIRMATION_1=Etes-vous certain de vouloir réinitialiser les données stockées en base ?
+DatabaseUI.questions.RESET_CONFIRMATION_2=Réellement certain ???? (Vous pourriez DEFINITIVEMENT perdre vos données)
+ReportsUI.task=tâche
+ReportsUI.task.budget=budget
+ReportsUI.task.name=nom
+ReportsUI.task.code=code
+ReportsUI.task.path=chemin
+ReportsUI.task.etc=raf
+ReportsUI.task.initiallyConsumed=cons. init.
+ReportsUI.task.comment=commentaire
+ReportsUI.collaborator=collaborator
+ReportsUI.collaborator.isActive=actif
+ReportsUI.collaborator.lastName=nom
+ReportsUI.collaborator.firstName=prénom
+ReportsUI.collaborator.login=login
+DateHelper.errors.UNKNOWN_DATE_INCREMENT_TYPE=Type d'incrément de date non supporté
+DbMgr.errors.COLLABORATORS_SELECTION_FAILURE=Un incident inattendue s'est produit pendant l'extraction des collaborateurs
+DbMgr.errors.COLLABORATOR_CREATION_FAILUE=Erreur lors de la création du collaborateur : ''{0}''
+DbMgr.errors.COLLABORATOR_DELETION_FAILURE=Erreur lors de la suppression du collaborateur ''{0}''
+DbMgr.errors.COLLABORATOR_SELECTION_BY_ID_FAILURE=Un incident inattendue s'est produit pendant la lecture des données du collaborateur à partir de l'identifiant : ''{0}''
+DbMgr.errors.COLLABORATOR_SELECTION_BY_LOGIN_FAILURE=Un incident inattendue s'est produit pendant la lecture des données du collaborateur à partir de l'identifiant de connexion ''{0}''
+DbMgr.errors.COLLABORATOR_UPDATE_FAILURE=La mise à jour du collaborateur ''{0}'' a échoué.
+DbMgr.errors.CONTRIBUTIONS_SELECTION_FAILURE=Un incident inattendu s'est produit lors de la sélection d'une contribution
+DbMgr.errors.CONTRIBUTIONS_SUM_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant le calcul de la somme des contributions
+DbMgr.errors.CONTRIBUTION_CREATION_FAILUE=Echec lors de la création de la contribution
+DbMgr.errors.CONTRIBUTION_DELETION_FAILURE=Echec lors de la suppression de la contribution
+DbMgr.errors.CONTRIBUTION_UPDATE_FAILURE=Echec lors de la mise à jour de la contribution
+DbMgr.errors.DURATIONS_SELECTION_FAILURE=Un incident inattendu s'est produit lors de la sélection des durées en base de données
+DbMgr.errors.DURATION_CREATION_FAILUE=Echec lors de la création de la durée : ''{0}''
+DbMgr.errors.DURATION_DELETION_FAILURE=Echec lors de la suppression de la durée ''{0}''
+DbMgr.errors.DURATION_SELECTION_BY_ID=Un incident inattendu s'est produit lors de la sélection de la durée ''{0}''
+DbMgr.errors.DURATION_UPDATE_FAILURE=La mise à jour de la durée ''{0}'' a échoué
+DbMgr.errors.MEMORY_IO_FAILURE=Incient I/O inattendu lors de la lecture d'un flux mémoire\!
+DbMgr.errors.SQL_AUTOINCREMENT_FAILURE=Un incident inattendu s'est produit lors de la récupération de l'identifiant d'un objet.
+DbMgr.errors.SQL_COMMIT_FAILURE=Echec lors d'une validation de transaction
+DbMgr.errors.SQL_CONNECTION_ESTABLISHMENT_FAILURE=La connexion à la base de donnée n'est pas établie.
+DbMgr.errors.SQL_CONNECTION_OPEN=Echec lors de l'ouverture de la connexion SQL
+DbMgr.errors.SQL_DATABASE_NAME_EXTRACTION_FAILURE=Echec lors de la r\u00E9cup\u00E9ration du nom de la BDD
+DbMgr.errors.SQL_DISCONNECTION_FAILURE=Echec lors de la déconnexion de la base de données
+DbMgr.errors.SQL_DURATION_CHECK_FAILURE=Echec lors de la vérification de la durée : ''{0}''
+DbMgr.errors.SQL_EMPTY_QUERY_RESULT=La requête SQL n'a retourné aucun résultat
+DbMgr.errors.SQL_MULTI_TRANSACTION_DETECTED=Un conflit de transaction a été détecté
+DbMgr.errors.SQL_ROLLBACK_FAILURE=Echec lors de l'annulation de la transaction
+DbMgr.errors.SQL_ROW_DELETION_FAILURE=Aucune ligne de la base de donnée n'a été supprimée
+DbMgr.errors.SQL_SCRIPT_LOAD_FAILURE=Erreur lors de la lecture du fichier SQL de création des tables.
+DbMgr.errors.SQL_TABLES_DETECTION_FAILURE=La table SQL ''{0}'' ne semble pas exister en base de données.
+DbMgr.errors.SQL_TABLE_CREATION_FAILURE=La création des tables en base de données a échoué
+DbMgr.errors.SQL_UPDATE_FAILURE=Aucune ligne n'a été mise à jour
+DbMgr.errors.TASKS_SELECTION_FAILURE=Incident inattendu lors de la recherche de tâches
+DbMgr.errors.TASK_CREATION_FAILURE=La création de la tâche ''{0}'' a échoué
+DbMgr.errors.TASK_DELETION_FAILURE=La suppression de la tâche ''{0}'' a échoué
+DbMgr.errors.TASK_NUMBER_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant la génération d'un nouveau numéro pour la tâche de chemin ''{0}''
+DbMgr.errors.TASK_SELECTION_BY_CODE_FAILURE=Un incident inattendu s'est produit pendant la récupération de la tâche de code ''{0}''
+DbMgr.errors.TASK_SELECTION_BY_COLLABORATOR_FAILURE=Un incident inattendu s'est produit pendant la récupération des tâches associées au collaborateur
+DbMgr.errors.TASK_MAX_PATH_DEPTH_RETRIEVAL=Un incident inattendu s'est produit pendant la lecture de la profondeur de l'arborescence de tâches
+DbMgr.errors.TASK_SELECTION_BY_ID_FAILURE=Un incident inattendu s'est produit pendant la récupération de tâches à partit de leuts identifiants
+DbMgr.errors.TASK_SELECTION_BY_NUMBER_FROM_PATH_FAILURE=Un incident inattendu s'est produit pendant la récupération de la tâche N° ''{0}'' dans le chemin ''{1}''
+DbMgr.errors.TASK_SELECTION_BY_PATH=Un incident inattendu s'est produit pendant la récupération de la tâche de chemin ''{0}''
+DbMgr.errors.TASK_SUMS_COMPUTATION_FAILURE=Un incident inattendu s'est produit pendant le calcul des cumuls pour la tâche d'identifiant ''{0}''
+DbMgr.errors.TASK_UPDATE_FAILURE=La mise à jour de la tâche ''{0}'' a échoué
+DbMgr.errors.UNKNOWN_CRITERIA_INDEX=Index de critère inconnu ''{0}''
+DbMgr.errors.UNKNOWN_FIELD_INDEX=Index de champ inconnu ''{0}''
+DurationsUI.columns.DURATION=Durée
+DurationsUI.errors.DATABASE_CONNECTION_FAILURE_WHILE_DURATION_EXISTENCE_CHECK=La connexion à la base de données a échoué lors de la vérification de l'existence de la durée
+DurationsUI.errors.DURATION_ALREADY_EXIST=Cette durée existe
+DurationsUI.errors.UNKNOWN_COLUMN=Colonne inconnue
+DurationsUI.menuitems.NEW=Nouvelle durée
+DurationsUI.menuitems.EXPORT=Exportation
+DurationsUI.menuitems.REMOVE=Supprimer
+DurationsUI.menuitems.REFRESH=Rafraichir
+DurationsUI.questions.NEW_DURATION=Veuillez entrer une nouvelle durée
+DurationsUI.table.TOOL_TIP=Utilisez la première colonne pour activer ou désactiver les durées\n(les durées désactivées ne sont pas supprimées de la base de données mais sontr cachées)\ndans l'onglet des contributions)
+DurationsUI.titles.INPUT_DIALOG=Fenêtre de saisie
+ErrorDialog.infos.IO_ERROR_WHILE_PRINTING_STACKTRACE=Incident I/O inattendu pendant l'affichage de la pile (stacktrace).
+ErrorDialog.infos.SEE_LOGS_FOR_MORE_DETAILS=Consultez les traces pour plus de détails.
+ErrorDialog.texts.TITLE=Erreur
+Main.status.CONNECTED=Connecté
+Main.status.NOT_CONNECTED=Non connecté
+Main.tabs.ABOUT=A propos
+Main.tabs.COLLABORATORS=Collaborateurs
+Main.tabs.CONTRIBUTIONS=Contributions
+Main.tabs.REPORTS=Rapports
+Main.tabs.DATABASE=Base de données
+Main.tabs.DURATIONS=Durées
+Main.tabs.TASKS=Tâches
+Main.texts.TITLE=ActivityManager
+ModelMgr.defaults.COLLABORATOR_FIRST_NAME=NOUVEAU
+ModelMgr.defaults.COLLABORATOR_LAST_NAME=NOUVEAU
+ModelMgr.defaults.COLLABORATOR_LOGIN_PREFIX=NOUVEAU
+ModelMgr.defaults.TASK_NAME=NOUVEAU
+ModelMgr.errors.A_TASK_WITH_SUBTASKS_CANNOT_ACCEPT_CONTRIBUTIONS=Cette tâche contient au moins une tâche fille ; elle ne peut accepter de contribution.
+ModelMgr.errors.DURATION_DOES_NOT_EXIST=Cette durée n'existe pas
+ModelMgr.errors.CONTRIBUTOR_MUST_BE_SPECIFIED=Le collaborateur doit être spécifié
+ModelMgr.errors.FROM_DATE_MUST_BE_BEFORE_TO_DATE=La date de début doit ête antérieure à la date de fin
+ModelMgr.errors.INVALID_TASK_CODE_PATH=Une tâche valide doit commencer par un '/'
+ModelMgr.errors.NON_NULL_TASK_BUDGET=Le budget de cette tâche est non nul ({0}); elle ne peut donc pas recevoir de tâche fille.
+ModelMgr.errors.NON_NULL_TASK_ESTIMATED_TIME_TO_COMPLETE=Le reste à faire de cette tâche est non nul ({0}); elle ne peut donc pas recevoir de tâche fille
+ModelMgr.errors.NON_NULL_TASK_INITIALLY_CONSUMMED=Le consommé initial de cette tâche n'est pas nul ({0}); elle ne peut donc pas recevoir de tâche fille.
+ModelMgr.errors.NON_UNIQUE_COLLABORATOR_LOGIN=Le login "{0}" est déjà utilisé par un autre collaborateur
+ModelMgr.errors.NUL_DURATION_FORBIDDEN=Une durée ne peut pas être nulle
+ModelMgr.errors.TASK_CANNOT_BE_MOVED_DOWN=Cette tâche ne peut pas être déplacée vers le bas.
+ModelMgr.errors.TASK_CANNOT_BE_MOVED_UNDER_ITSELF=Déplacer une tâche sous elle-même ou sous une de ses tâches filles n'est pas permis.
+ModelMgr.errors.TASK_CANNOT_BE_MOVED_UP=Cette tâche ne peut pas être déplacée vers le haut.
+ModelMgr.errors.TASK_CODE_ALREADY_IN_USE=Ce code est déjà utilisé: {0}
+ModelMgr.errors.TASK_CODE_EXIST_AT_DESTINATION=Le code de tâche ''{0}'' existe déjà à la destination choisie.
+ModelMgr.errors.TASK_HAS_SUBTASKS=Cette tâche totalise avec ses tâches filles {0} contributions
+ModelMgr.errors.TASK_NUMBER_UPDATE_DETECTED=Le numéro de la tâche, avec le code ''{0}'', a changé en base de données.
+ModelMgr.errors.TASK_PATH_UPDATE_DETECTED=Le chemin de la tâche, avec le code ''{0}'', a changé en base de données.
+ModelMgr.errors.TASK_USED_BY_CONTRIBUTIONS=La tâche ''{0}'' est déjà utilisée (nombre de contributions={1}). Elle ne peut donc pas recevoir de tâche fille.
+ModelMgr.errors.TASK_WITH_AT_LEAST_ONE_SUBTASK_CANNOT_ACCEPT_CONTRIBUTIONS=Cette tâche a au moins une tâche fille ; elle ne peut donc pas recevoir de contribution.
+ModelMgr.errors.UNKNOWN_TASK=La tâche n'existe pas en base de données
+ModelMgr.errors.UNKNOWN_TASK=Tâche inconnue : ''{0}''
+ModelMgr.errors.UNKNOWN_TASK_CODE_PATH=Chemin de tâche inconnu : ''{0}''
+ModelMgr.errors.UNMOVEABLE_DURATION=Cette contribution est utilisée, elle ne peut donc pas être supprimée.
+ModelMgr.errros.COLLABORATOR_WITH_CONTRIBUTIONS_CANNOT_BE_REMOVED=Ce collaborateur a {0} contributions
+ModelMgr.errros.DUPLICATE_DURATION=La durée existe déjà
+ModelMgr.errors.CONTRIBUTION_UPDATE_DETECTED=La contribution a été mise à jour en base de données dans une autre transaction
+ModelMgr.errors.CONTRIBUTION_DELETION_DETECTED=La contribution n'existe pas en base de données
+ModelMgr.errors.INVALID_DURATION=Durée invalide
+ModelMgr.errors.BAD_REPORT_PARAMS_EMPTY_TASK_ATTRIBUTES=Rapport invalide : si les tâches sont incluses dans le rapport, au moins un attribut de tâche doit être sélectionné
+ModelMgr.errors.BAD_REPORT_PARAMS_EMPTY_COLLABORATOR_ATTRIBUTES=Rapport invalide : si les tâches sont incluses dans le rapport, au moins un attribut de tâche doit être sélectionnéRapport invalide : si les collaborateurs sont inclus dans le rapport, au moins un attribut de collaborateur doit être sélectionné
+ModelMgr.xmlexport.comment.BUDGET=\ \ \ \ - Budgets :
+ModelMgr.xmlexport.comment.CONSUMED=\ \ \ \ - Consommé :
+ModelMgr.xmlexport.comment.CONTRIBUTIONS_NUMBER=\ \ \ \ - Nombre de contributions :
+ModelMgr.xmlexport.comment.ESTIMATED_TIME_TO_COMPLETE=\ \ \ \ - Reste à faire :
+ModelMgr.xmlexport.comment.INITIALLY_CONSUMED=\ \ \ \ - Consommé initial :
+ModelMgr.xmlexport.comment.ROOT_TASKS_CHECK_SUMS=\ \ Sommes de controle des tâches racines :
+ModelMgr.xmlexport.comment.ROOT_TASK=\ \ * Tâche racine[{0}]='/{1}' ({2})
+PropertiesHelper.errors.CIRCULAR_REFERENCE=Référence circulaire détectée pour la propriété '$\{{0}\}'
+PropertiesHelper.errors.NOT_IMPLEMENTED=Non implémenté
+PropertiesHelper.errors.PARAMETER_NOT_SPECIFIED=Le paramètre ''{0}'' n'est pas spécifié (sous ''{1}'', '{2}' ou '{3}'
+ReportMgr.errors.DIRECTORY_CREATION_FAILURE=Echec lors de la création des répertoires ({0})
+ReportMgr.errors.OUTPUT_FILENAME_REQUIRED=Un fichier de sortie doit être spécifié pour l'identifiant ''{0}''
+ReportMgr.errors.REQUIRED_TEMPLATE_TYPE_OR_PATH=Un type ou un modèle doit être spécifié pour l'identifiant ''{0}''
+ReportMgr.errors.TEMPLATE_NOT_FOUND=Modèle de rapport non trouvé : ''{0}''
+ReportMgr.errors.UNEXPECTED_ERROR=Incident inattendu
+SWTHelper.errors.IO_EXCEPTION_WHILE_EXPORTING=Incident entrée/sortie lors de l'exportation.
+SWTHelper.errors.IO_EXCEPTION_WHILE_IMPORTING=Incident entrée/sortie lors de importation.
+SWTHelper.excelsheet.TAB_NAME=exporter
+SafeRunner.errors.UNABLE_TO_COMPLETE_OPERATION=Impossible de compléter l''opération : ''{0}''
+SafeRunner.errors.UNEXPECTED_ERROR=Incident inattendu
+SelectableCollaboratorPanel.columns.FIRST_NAME=Prénom
+SelectableCollaboratorPanel.columns.LAST_NAME=Nom
+SelectableCollaboratorPanel.errors.UNKNOWN_COLUMN=Colonne inconnue
+StringHelper.errors.MEMORY_IO_FAILURE=Incident inattendu lors d'un accès en lecture/écriture sur un buffer mémoire!
+StringHelper.errors.TOO_MANY_DIGITS=Trop de décimales
+StringHelper.errors.WRONG_NUMBER_FORMAT=Mauvais format (XXXXXX.XX)
+TableOrTreeColumnsMgr.errors.COLUMN_NAME_REQUIRED=Le nom de la colonne ne peut être nul
+TaskChooserDialog.labels.FOUND_TASKS=Tâches trouvées :
+TaskChooserDialog.texts.TITLE=Choisissez une tâche
+TaskChooserTable.columns.TASK_NAME=Tâche
+TaskChooserTable.columns.TASK_PATH=Chemin
+TaskChooserTable.errors.UNKNOWN_COLUMN=Colonne inconnue
+TaskChooserTree.columns.TASK_CODE=Code
+TaskChooserTree.columns.TASK_NAME=Tâche
+TaskChooserTree.errors.UNKNOWN_COLUMN=Colonne inconnue
+TaskChooserTree.labels.PLACEHOLDER=Entrez une chaine pour filtrer...
+TaskChooserTreeWithHistoryDialog.errors.TASK_REQUIRED=Veuillez choisir une tâche
+TaskChooserTreeWithHistoryDialog.labels.PREVIOUS_SELECTION=Sélection(s) précédente(s)
+TaskChooserTreeWithHistoryDialog.labels.TASK_TREE=Arbre des tâches
+TaskChooserTreeWithHistoryDialog.texts.TITLE=Choisissez une tâche
+TaskFinderPanel.attributes.TASK_CODE=Code
+TaskFinderPanel.attributes.TASK_NAME=Tâche
+TaskFinderPanel.buttons.FIND=Rechercher...
+TaskFinderPanel.criterias..ENDS_WITH=se termine par
+TaskFinderPanel.criterias.CONTAINS=contient
+TaskFinderPanel.criterias.IS_EQUAL_TO=est égal à
+TaskFinderPanel.criterias.STARTS_WITH=commence par
+TaskFinderPanel.errors.NOTHING_FOUND=Les critères de recherches ne correspondent à aucune donnée
+TaskFinderPanel.labels.SEARCH_FILTER=Filtre de recherche
+TaskFinderPanel.titles.SEARCH_STATUS=Statut de recherche
+TasksChooserTree.columns.TASK_CODE=Code
+TasksChooserTree.columns.TASK_NAME=Tâche
+TasksChooserTree.errors.UNKNOWN_COLUMN=Colonne inconnue
+TasksUI.columns.TASK_NAME=Tâche
+TasksUI.columns.TASK_BUDGET=Budget
+TasksUI.columns.TASK_CODE=Code
+TasksUI.columns.TASK_COMMENT=Commentaire
+TasksUI.columns.TASK_CONSUMED=Consommé
+TasksUI.columns.TASK_DELTA=Delta
+TasksUI.columns.TASK_ESTIMATED_TIME_TO_COMPLETE=RAF
+TasksUI.columns.TASK_INITIAL=Conso. initial
+TasksUI.columns.TASK_CLOSED=Fermée
+TasksUI.errors.MOVE_TO_SAME_PARENT=La tâche parente de destination est identique à la tâche parente source
+TasksUI.errors.TECHNICAL_ERROR=Incident technique : ''{0}''
+TasksUI.errors.UNKNOWN_COLUMN=Colonne inconnue
+TasksUI.errros.READ_ONLY_COLUMN=Cette colonne ne peut pas être modifiée
+TasksUI.menuitems.COLLAPSE_ALL=Tout plier
+TasksUI.menuitems.COPY=Copier (Ctrl + c)
+TasksUI.menuitems.EXPAND_ALL=Tout développer
+TasksUI.menuitems.EXPORT_IMPORT=Excel
+TasksUI.menuitems.XLS_EXPORT=Export
+TasksUI.menuitems.XLS_IMPORT=Import
+TasksUI.menuitems.XLS_SNAPSHOT_EXPORT=Instantané de l'arbre
+TasksUI.menuitems.LIST_CONTRIBUTIONS=Liste des contrib.
+TasksUI.menuitems.MOVE=Déplacer
+TasksUI.menuitems.MOVE_DOWN=en bas (Ctrl + flèche bas)
+TasksUI.menuitems.MOVE_BEFORE_ANOTHER_TASK=avant une autre tâche
+TasksUI.menuitems.MOVE_AFTER_ANOTHER_TASK=après une autre tâche
+TasksUI.menuitems.MOVE_UNDER_ANOTHER_TASK=sous une autre tâche
+TasksUI.menuitems.MOVE_UNDER_ROOT=sous la racine
+TasksUI.menuitems.MOVE_UP=en haut (Ctrl + flèche haut)
+TasksUI.menuitems.NEW=Nouvelle
+TasksUI.menuitems.NEW_SUBTASK=sous tâche
+TasksUI.menuitems.NEW_TASK=tâche (même niveau)
+TasksUI.menuitems.REFRESH=Rafraîchir
+TasksUI.menuitems.REMOVE=Supprimer
+XmlHelper.errors.DATABASE_ACCESS_ERROR=Incident inattendu lors de l'accès à la base de données
+XmlHelper.errors.INVALID_ATTRIBUTE=Valeur d'attribut invalide ''{0}'' pour ''{1}''
+XmlHelper.errors.MISSING_ATTRIBUTE=Valeur de l'attribut manquant pour ''{0}''
+XmlHelper.errors.MODEL_VIOLATION=Violation du modèle :
+XmlHelper.errors.NOT_IMPLEMENTED=La fonctionnalité XML SAX n'est pas implémentée dans ActivityManager ('{0}')
+XmlHelper.errors.NUMBER_FORMAT_ERROR=Erreur de format (format numérique) :
+XmlHelper.errors.UNEXPECTED_NODE=Noeud XML inattendu : ''{0}''
diff --git a/misc/docker/test-runner/README.md b/misc/docker/test-runner/README.md
index 927e2091..8ebd0335 100644
--- a/misc/docker/test-runner/README.md
+++ b/misc/docker/test-runner/README.md
@@ -1,9 +1,11 @@
# Docker test runner
-The image is intentionally based on Debian 8 / Jessie to stay close to the target environment.
+## Run tests in current production environment in Docker
+
+The image is intentionally based on Debian 8 / Jessie to stay close to the current production environment.
Because Jessie is end-of-life, Java 11 and Maven are installed manually in the container instead of relying on a modern Maven base image.
-Build the image:
+**Build the image:**
```bash
docker build -t activity-manager-tests misc/docker/test-runner
@@ -11,7 +13,7 @@ docker build -t activity-manager-tests misc/docker/test-runner
This build currently starts from `debian/eol:jessie`.
-Run the core Tycho tests from the repository root:
+**Run the core Tycho tests from the repository root:**
```bash
docker run --rm \
@@ -20,7 +22,7 @@ docker run --rm \
activity-manager-tests
```
-Run a single test pattern:
+**Run a single test pattern:**
```bash
docker run --rm \
@@ -31,7 +33,7 @@ docker run --rm \
-DfailIfNoTests=false
```
-Useful environment variables:
+**Useful environment variables:**
```text
TP_MODE=build
@@ -40,7 +42,7 @@ WORKSPACE_DIR=/workspace
M2_DIR=/m2/repository
```
-Notes:
+**Notes:**
- The script installs `parent/tpd` first because the Tycho test module resolves the target platform from that local artifact.
- The script then runs a root `install` with `-Dmaven.test.skip=true` so Tycho fragments are present in the local Maven repository before the test phase.
@@ -49,54 +51,54 @@ Notes:
- Maven dependencies are cached in the named Docker volume `activity-manager-m2`.
- The Dockerfile downloads a Java 11 JDK from Eclipse Adoptium and Maven 3.9.9 during image build time.
-Run the same tests against MySQL 5.5.47:
+## Run the same tests against MySQL 5.5.47
```bash
docker compose -f misc/docker/test-runner/compose.mysql55.yml up --build --abort-on-container-exit tests
```
-Stop the stack:
+**Stop the stack:**
```bash
docker compose -f misc/docker/test-runner/compose.mysql55.yml down -v
```
-Notes for the MySQL scenario:
+**Notes for the MySQL scenario:**
- The `tests` service keeps using the same runner image and script.
- The MySQL-specific JDBC settings are injected through environment variables, so the default H2 configuration remains unchanged outside Compose.
- The `mysql55` service installs MySQL from the official Debian Jessie repositories to stay close to a standard Jessie setup.
-Run the tests with a Debian 12 runner and MySQL 8:
+## Run the tests with a Debian 12 runner and MySQL 8
```bash
docker compose -f misc/docker/test-runner/compose.mysql8.yml up --build --abort-on-container-exit tests
```
-Stop that stack:
+**Stop that stack:**
```bash
docker compose -f misc/docker/test-runner/compose.mysql8.yml down -v
```
-Notes for the Debian 12 / MySQL 8 scenario:
+**Notes for the Debian 12 / MySQL 8 scenario:**
- The test runner uses `Dockerfile.debian12` and keeps the same Java 11 + Maven bootstrap approach.
- The MySQL service uses the official `mysql:8.0` image with `mysql_native_password` enabled to keep the test setup compatible with the current JDBC configuration.
-Run the tests with a full Debian 12 + MariaDB stack:
+## Run the tests with a full Debian 12 + MariaDB stack
```bash
docker compose -f misc/docker/test-runner/compose.mariadb12.yml up --build --abort-on-container-exit tests
```
-Stop that stack:
+**Stop that stack:**
```bash
docker compose -f misc/docker/test-runner/compose.mariadb12.yml down -v
```
-Notes for the Debian 12 / MariaDB scenario:
+**Notes for the Debian 12 / MariaDB scenario:**
- Both the runner and the database services are built from Debian 12 images.
- The database service installs `mariadb-server` from the official Debian 12 repositories.
diff --git a/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/ContributionsUI.java b/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/ContributionsUI.java
index 530460a9..098076d4 100644
--- a/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/ContributionsUI.java
+++ b/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/ContributionsUI.java
@@ -1266,8 +1266,8 @@ public void taskMoved(final String oldTaskFullpath, final Task movedTask) {
taskChooserDialog.taskMoved(oldTaskFullpath, movedTask);
// Déduction de l'ancien chemin de la tache à partir de l'ancien
// chemin complet
- String oldTaskPath = oldTaskFullpath.substring(0,
- oldTaskFullpath.length() - 2);
+ String oldTaskPath = oldTaskFullpath.substring(0,
+ oldTaskFullpath.length() - Task.PATH_SGM_SIZE);
// Parcours des taches présentes dans le tableau
int itemCount = tableViewer.getTable().getItemCount();
for (int i = 0; i < itemCount; i++) {
diff --git a/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/dialogs/TaskChooserTreeWithHistoryDialog.java b/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/dialogs/TaskChooserTreeWithHistoryDialog.java
index b7789af8..7454dbd3 100644
--- a/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/dialogs/TaskChooserTreeWithHistoryDialog.java
+++ b/ui.rcp/plugins/org.activitymgr.ui.rcp/src/org/activitymgr/ui/rcp/dialogs/TaskChooserTreeWithHistoryDialog.java
@@ -331,7 +331,7 @@ protected Object runUnsafe() throws Exception {
// Déduction de l'ancien chemin de la tache à partir de l'ancien
// chemin complet
String oldTaskPath = oldTaskFullpath.substring(0,
- oldTaskFullpath.length() - 2);
+ oldTaskFullpath.length() - Task.PATH_SGM_SIZE);
for (int i = 0; i < previouslySelectedTasks.size(); i++) {
Task currentTask = (Task) previouslySelectedTasks.get(i);
// Cas ou la tache modifiée est dans la liste