From 82e58108eeebd4e3c11ceb9a0a2e80350b334c46 Mon Sep 17 00:00:00 2001 From: Paul Leflon Date: Tue, 27 Aug 2024 12:11:58 +0200 Subject: [PATCH] Corrections to the french locale (#1073) --- js/menus.js | 205 ++++++++++++++++++++------------- locales/fr-FR/translation.json | 90 +++++++-------- 2 files changed, 172 insertions(+), 123 deletions(-) diff --git a/js/menus.js b/js/menus.js index 45533cf46..460c32d9d 100644 --- a/js/menus.js +++ b/js/menus.js @@ -6,10 +6,17 @@ import Store from 'electron-store'; const { checkForUpdates } = require('./update-manager'); const { getSavedPreferences } = require('./saved-preferences.js'); -const { importDatabaseFromFile, exportDatabaseToFile } = require('./import-export.js'); +const { + importDatabaseFromFile, + exportDatabaseToFile +} = require('./import-export.js'); const { createNotification } = require('./notification'); const { getCurrentTranslation } = require('../src/configs/i18next.config'); -let { openWaiverManagerWindow, prefWindow, getDialogCoordinates } = require('./windows'); +let { + openWaiverManagerWindow, + prefWindow, + getDialogCoordinates +} = require('./windows'); import { appConfig, getDetails } from './app-config.cjs'; import { savePreferences } from './user-preferences.js'; @@ -24,11 +31,11 @@ function getMainMenuTemplate(mainWindow) click(item, window, event) { openWaiverManagerWindow(mainWindow, event); - }, + } }, - {type: 'separator'}, + { type: 'separator' }, { - label:getCurrentTranslation('$Menu.exit'), + label: getCurrentTranslation('$Menu.exit'), accelerator: appConfig.macOS ? 'CommandOrControl+Q' : 'Control+Q', click() { @@ -49,7 +56,11 @@ function getContextMenuTemplate(mainWindow) mainWindow.webContents.send('PUNCH_DATE'); // Slice keeps "HH:MM" part of "HH:MM:SS GMT+HHMM (GMT+HH:MM)" time string - createNotification(`${getCurrentTranslation('$Menu.punched-time')} ${now.toTimeString().slice(0,5)}`).show(); + createNotification( + `${getCurrentTranslation( + '$Menu.punched-time' + )} ${now.toTimeString().slice(0, 5)}` + ).show(); } }, { @@ -73,13 +84,18 @@ function getDockMenuTemplate(mainWindow) { return [ { - label: getCurrentTranslation('$Menu.punch-time'), click: function() + label: getCurrentTranslation('$Menu.punch-time'), + click: function() { const now = new Date(); mainWindow.webContents.send('PUNCH_DATE'); // Slice keeps "HH:MM" part of "HH:MM:SS GMT+HHMM (GMT+HH:MM)" time string - createNotification(`${getCurrentTranslation('$Menu.punched-time')} ${now.toTimeString().slice(0,5)}`).show(); + createNotification( + `${getCurrentTranslation( + '$Menu.punched-time' + )} ${now.toTimeString().slice(0, 5)}` + ).show(); } } ]; @@ -108,7 +124,7 @@ function getEditMenuTemplate(mainWindow) accelerator: 'Command+A', selector: 'selectAll:' }, - {type: 'separator'}, + { type: 'separator' }, { label: getCurrentTranslation('$Menu.preferences'), accelerator: appConfig.macOS ? 'Command+,' : 'Control+,', @@ -120,9 +136,14 @@ function getEditMenuTemplate(mainWindow) return; } - const htmlPath = path.join('file://', __dirname, '../src/preferences.html'); + const htmlPath = path.join( + 'file://', + __dirname, + '../src/preferences.html' + ); const dialogCoordinates = getDialogCoordinates(500, 620, mainWindow); - prefWindow = new BrowserWindow({ width: 500, + prefWindow = new BrowserWindow({ + width: 550, height: 620, minWidth: 480, x: dialogCoordinates.x, @@ -132,9 +153,13 @@ function getEditMenuTemplate(mainWindow) icon: appConfig.iconpath, webPreferences: { nodeIntegration: true, - preload: path.join(__dirname, '../renderer/preload-scripts/preferences-bridge.js'), + preload: path.join( + __dirname, + '../renderer/preload-scripts/preferences-bridge.js' + ), contextIsolation: true - } }); + } + }); prefWindow.setMenu(null); prefWindow.loadURL(htmlPath); prefWindow.show(); @@ -155,37 +180,39 @@ function getEditMenuTemplate(mainWindow) BrowserWindow.getFocusedWindow().webContents.toggleDevTools(); } }); - }, + } }, - {type: 'separator'}, + { type: 'separator' }, { label: getCurrentTranslation('$Menu.export-database'), click() { const options = { title: getCurrentTranslation('$Menu.export-db-to-file'), - defaultPath : `time_to_leave_${getCurrentDateTimeStr()}`, - buttonLabel : getCurrentTranslation('$Menu.export'), + defaultPath: `time_to_leave_${getCurrentDateTimeStr()}`, + buttonLabel: getCurrentTranslation('$Menu.export'), - filters : [ - { name: '.ttldb', extensions: ['ttldb',] }, - { name: getCurrentTranslation('$Menu.all-files'), extensions: ['*'] } + filters: [ + { name: '.ttldb', extensions: ['ttldb'] }, + { + name: getCurrentTranslation('$Menu.all-files'), + extensions: ['*'] + } ] }; const response = dialog.showSaveDialogSync(options); if (response) { exportDatabaseToFile(response); - dialog.showMessageBox(BrowserWindow.getFocusedWindow(), - { - title: 'Time to Leave', - message: getCurrentTranslation('$Menu.database-export'), - type: 'info', - icon: appConfig.iconpath, - detail: getCurrentTranslation('$Menu.database-was-exported') - }); + dialog.showMessageBox(BrowserWindow.getFocusedWindow(), { + title: 'Time to Leave', + message: getCurrentTranslation('$Menu.database-export'), + type: 'info', + icon: appConfig.iconpath, + detail: getCurrentTranslation('$Menu.database-was-exported') + }); } - }, + } }, { label: getCurrentTranslation('$Menu.import-database'), @@ -193,11 +220,14 @@ function getEditMenuTemplate(mainWindow) { const options = { title: getCurrentTranslation('$Menu.import-db-from-file'), - buttonLabel : getCurrentTranslation('$Menu.import'), + buttonLabel: getCurrentTranslation('$Menu.import'), - filters : [ - {name: '.ttldb', extensions: ['ttldb',]}, - {name: getCurrentTranslation('$Menu.all-files'), extensions: ['*']} + filters: [ + { name: '.ttldb', extensions: ['ttldb'] }, + { + name: getCurrentTranslation('$Menu.all-files'), + extensions: ['*'] + } ] }; const response = dialog.showOpenDialogSync(options); @@ -205,32 +235,39 @@ function getEditMenuTemplate(mainWindow) { const options = { type: 'question', - buttons: [getCurrentTranslation('$Menu.yes-please'), getCurrentTranslation('$Menu.no-thanks')], + buttons: [ + getCurrentTranslation('$Menu.yes-please'), + getCurrentTranslation('$Menu.no-thanks') + ], defaultId: 2, title: getCurrentTranslation('$Menu.import-database'), - message: getCurrentTranslation('$Menu.confirm-import-db'), + message: getCurrentTranslation('$Menu.confirm-import-db') }; - const confirmation = dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow(), options); - if (confirmation === /*Yes*/0) + const confirmation = dialog.showMessageBoxSync( + BrowserWindow.getFocusedWindow(), + options + ); + if (confirmation === /*Yes*/ 0) { const importResult = importDatabaseFromFile(response); // Reload only the calendar itself to avoid a flash mainWindow.webContents.send('RELOAD_CALENDAR'); if (importResult['result']) { - dialog.showMessageBox(BrowserWindow.getFocusedWindow(), - { - title: 'Time to Leave', - message: getCurrentTranslation('$Menu.database-imported'), - type: 'info', - icon: appConfig.iconpath, - detail: getCurrentTranslation('$Menu.import-successful') - }); + dialog.showMessageBox(BrowserWindow.getFocusedWindow(), { + title: 'Time to Leave', + message: getCurrentTranslation('$Menu.database-imported'), + type: 'info', + icon: appConfig.iconpath, + detail: getCurrentTranslation('$Menu.import-successful') + }); } else if (importResult['failed'] !== 0) { - const message = `${importResult['failed']}/${importResult['total']} ${getCurrentTranslation('$Menu.could-not-be-loaded')}`; + const message = `${importResult['failed']}/${ + importResult['total'] + } ${getCurrentTranslation('$Menu.could-not-be-loaded')}`; dialog.showMessageBoxSync({ icon: appConfig.iconpath, type: 'warning', @@ -249,7 +286,7 @@ function getEditMenuTemplate(mainWindow) } } } - }, + } }, { label: getCurrentTranslation('$Menu.clear-database'), @@ -257,35 +294,41 @@ function getEditMenuTemplate(mainWindow) { const options = { type: 'question', - buttons: [getCurrentTranslation('$Menu.cancel'), getCurrentTranslation('$Menu.yes-please'), getCurrentTranslation('$Menu.no-thanks')], + buttons: [ + getCurrentTranslation('$Menu.cancel'), + getCurrentTranslation('$Menu.yes-please'), + getCurrentTranslation('$Menu.no-thanks') + ], defaultId: 2, title: getCurrentTranslation('$Menu.clear-database'), - message: getCurrentTranslation('$Menu.confirm-clear-all-data'), + message: getCurrentTranslation('$Menu.confirm-clear-all-data') }; - const response = dialog.showMessageBoxSync(BrowserWindow.getFocusedWindow(), options); + const response = dialog.showMessageBoxSync( + BrowserWindow.getFocusedWindow(), + options + ); if (response === 1) { const store = new Store(); - const waivedWorkdays = new Store({name: 'waived-workdays'}); - const flexibleStore = new Store({name: 'flexible-store'}); + const waivedWorkdays = new Store({ name: 'waived-workdays' }); + const flexibleStore = new Store({ name: 'flexible-store' }); store.clear(); waivedWorkdays.clear(); flexibleStore.clear(); // Reload only the calendar itself to avoid a flash mainWindow.webContents.send('RELOAD_CALENDAR'); - dialog.showMessageBox(BrowserWindow.getFocusedWindow(), - { - title: 'Time to Leave', - message: getCurrentTranslation('$Menu.clear-database'), - type: 'info', - icon: appConfig.iconpath, - detail: `\n${getCurrentTranslation('$Menu.all-clear')}` - }); + dialog.showMessageBox(BrowserWindow.getFocusedWindow(), { + title: 'Time to Leave', + message: getCurrentTranslation('$Menu.clear-database'), + type: 'info', + icon: appConfig.iconpath, + detail: `\n${getCurrentTranslation('$Menu.all-clear')}` + }); } } - }, + } ]; } @@ -325,14 +368,16 @@ function getHelpMenuTemplate() label: getCurrentTranslation('$Menu.check-for-updates'), click() { - checkForUpdates(/*showUpToDateDialog=*/true); + checkForUpdates(/*showUpToDateDialog=*/ true); } }, { label: getCurrentTranslation('$Menu.send-feedback'), click() { - shell.openExternal('https://github.com/thamara/time-to-leave/issues/new'); + shell.openExternal( + 'https://github.com/thamara/time-to-leave/issues/new' + ); } }, { @@ -343,27 +388,31 @@ function getHelpMenuTemplate() click() { const detail = getDetails(); - dialog.showMessageBox(BrowserWindow.getFocusedWindow(), - { + dialog + .showMessageBox(BrowserWindow.getFocusedWindow(), { title: 'Time to Leave', message: 'Time to Leave', type: 'info', icon: appConfig.iconpath, detail: `\n${detail}`, - buttons: [getCurrentTranslation('$Menu.copy'), getCurrentTranslation('$Menu.ok')], + buttons: [ + getCurrentTranslation('$Menu.copy'), + getCurrentTranslation('$Menu.ok') + ], noLink: true - } - ).then((result) => - { - const buttonId = result.response; - if (buttonId === 0) + }) + .then(result => { - clipboard.writeText(detail); - } - }).catch(err => - { - console.log(err); - }); + const buttonId = result.response; + if (buttonId === 0) + { + clipboard.writeText(detail); + } + }) + .catch(err => + { + console.log(err); + }); } } ]; @@ -375,5 +424,5 @@ module.exports = { getEditMenuTemplate, getHelpMenuTemplate, getMainMenuTemplate, - getViewMenuTemplate, + getViewMenuTemplate }; diff --git a/locales/fr-FR/translation.json b/locales/fr-FR/translation.json index 1aada1254..db463c73d 100644 --- a/locales/fr-FR/translation.json +++ b/locales/fr-FR/translation.json @@ -1,10 +1,10 @@ { "$BaseCalendar": { - "day-done-balance": "Tout est fait pour aujourd'hui. Bilan journée:", + "day-done-balance": "C'est tout pour aujourd'hui. Bilan de la journée :", "month-balance": "Solde mensuel", - "month-balance-title": "Solde jusqu'à aujourd'hui pour ce mois. Un solde positif signifie des heures supplémentaires dont vous n'avez pas besoin de travailler pour aujourd'hui (ou le reste du mois).", + "month-balance-title": "Solde du mois jusqu'à ajourd'hui. Un solde positif correspond à des heures supplémentaires durant lesquelles vous n'avez pas besoin de travailler.", "overall-balance": "Solde global", - "overall-balance-title": "Solde global jusqu'à la fin du mois ou le jour en cours", + "overall-balance-title": "Solde global jusqu'à la fin du mois ou du jour en cours", "switch-view": "Changer de vue" }, "$DateUtil": { @@ -29,11 +29,11 @@ "wed": "Mer" }, "$FlexibleDayCalendar": { - "current-day": "Aller au jour en cours", + "current-day": "Aller à Aujourd'hui", "day-total": "Total du jour", "entry": "Entrée", - "entry-removal-confirmation": "Voulez-vous vraiment supprimer la dernière ligne d'entrée?", - "leave-by": "Vous devriez partir dans:", + "entry-removal-confirmation": "Voulez-vous vraiment supprimer la dernière entrée ?", + "leave-by": "Vous devriez partir dans :", "next-day": "Jour suivant", "no": "Non", "not-a-working-day": "Pas un jour de travail", @@ -46,7 +46,7 @@ "add-waiver-day": "Ajouter une dispense pour ce jour", "current-month": "Aller au mois en cours", "day": "Jour", - "entry-removal-confirmation": "Voulez-vous vraiment supprimer les deux dernières entrées de la journée", + "entry-removal-confirmation": "Voulez-vous vraiment supprimer les deux dernières entrées de la journée ?", "last-day-balance": "Dernier jour utilisé pour le solde", "leave-by": "En fonction de l'heure à laquelle vous êtes arrivé aujourd'hui, vous devriez partir dans", "next-month": "Mois suivant", @@ -62,18 +62,18 @@ }, "$Menu": { "about": "À propos", - "all-clear": "Tout est effacé!", + "all-clear": "Tout a été effacé !", "all-files": "Tous les fichiers", "cancel": "Annuler", "check-for-updates": "Vérifier les mises à jour", "clear-database": "Effacer les données", - "confirm-clear-all-data": "Voulez-vous vraiment effacer toutes les données?", - "confirm-import-db": "Voulez-vous vraiment importer les données? Il remplacera toutes les informations actuelles.", + "confirm-clear-all-data": "Voulez-vous vraiment effacer toutes les données ?", + "confirm-import-db": "Voulez-vous vraiment importer les données ? Cela remplacera toutes les informations actuelles.", "copy": "Copier", "could-not-be-loaded": "n'a pas pu être chargé", "cut": "Couper", "database-export": "Exporter les données", - "database-imported": "Importer des données", + "database-imported": "Base de données importée", "database-migrated": "Base de données migrée", "database-was-exported": "Ok, les données ont été exportées.", "edit": "Éditer", @@ -83,48 +83,48 @@ "export-db-to-file": "Exporter la base de données vers un fichier", "failed-entries": "Entrées échouées", "failed-migrating": "Échec de la migration", - "fresh-start": "Recommencer entièrement", - "fresh-start-confirm": "Êtes-vous sûr de vouloir tout recommencer ?", + "fresh-start": "Réinitialiser", + "fresh-start-confirm": "Êtes-vous sûr de vouloir réinitialiser ?", "help": "Aide", "import": "Importer", "import-database": "Importer la base de données", "import-db-from-file": "Importer la base de données à partir d'un fichier", - "import-successful": "youpi! Importation réussie!", + "import-successful": "Youpi ! Importation réussie !", "menu": "Menu", "migrate": "Migrer", "migrate-calendar-to-flexible": "Migrer la base de données de calendrier fixe vers flexible", - "migration-successful": "youpi! Migration réussie!", + "migration-successful": "Youpi ! Migration réussie !", "no-thanks": "Non merci", "ok": "OK", "paste": "Coller", "preferences": "Préférences", - "punch-time": "Pointer heure", - "punched-time": "Pointage des heures", + "punch-time": "Pointer", + "punched-time": "Pointage", "quit": "Quitter", "reload": "Recharger", - "report": "Rapporter", + "report": "Envoyer le rapport d'échec", "select-all": "Tout sélectionner", "send-feedback": "Envoyez vos commentaires", - "should-migrate-to-flexible": "Une des nouvelles fonctionnalitée de Time to Leave est la possibilité d'avoir un nombre d'entrée flexible dans le calendrier.\n\nCette nouvelle vue utilise un autre format de données.\nPour l'utiliser, vous pouvez migrer votre base de donnée ou recommencer un clandrier.", + "should-migrate-to-flexible": "Une des nouvelles fonctionnalitée de Time to Leave est la possibilité d'avoir un nombre d'entrée flexible dans le calendrier.\n\nCette nouvelle vue utilise un autre format de données.\nPour l'utiliser, vous pouvez migrer votre base de données ou recommencer un calendrier.", "show-app": "Afficher l'application", "something-went-wrong": "Quelque chose s'est mal passé :(", - "toggle-dev-tools": "Basculer Outils de développement", - "ttl-github": "TTL GitHub", + "toggle-dev-tools": "Basculer les outils de développement", + "ttl-github": "GitHub", "view": "Vue", - "workday-waiver-manager": "Gestionnaire de dispense", - "yes-please": "Oui s'il vous plaît" + "workday-waiver-manager": "Gestionnaire de dispenses", + "yes-please": "Oui, s'il vous plaît" }, "$Notification": { - "punch-reminder": "N'oubliez pas de pointer!", - "time-to-leave": "Héy! Je pense qu'il est temps de partir.", + "punch-reminder": "N'oubliez pas de pointer !", + "time-to-leave": "Eh ! Je pense qu'il est temps de partir.", "dismiss-for-today": "Annuler le compte du jour" }, "$Preferences": { "allowRecurringNotifications": "Autoriser les notifications récurrentes", "appBehavior": "Comportement de l'application", "cadentStar": "Étoile filante", - "closeMinimizeToTray": "Le bouton de fermeture doit être réduit au bac", - "countTodayOnTotals": "Compter aujourd'hui dans les totaux", + "closeMinimizeToTray": "Le bouton Fermer doit réduire l'application dans la barre d'état", + "countTodayOnTotals": "Compter aujourd'hui dans le total", "dark": "Sombre", "day": "Jour", "fixed": "Fixée", @@ -137,17 +137,17 @@ "breakTimeInterval": "Intervalle de temps de pause", "language": "Langue", "light": "Clair", - "minimizeToTray": "Le bouton Réduire doit être réduit dans le bac", - "minutesBetweenNotifications": "Minutes entre les notifications", + "minimizeToTray": "Le bouton Minimiser doit réduire l'application dans la barre d'état", + "minutesBetweenNotifications": "Minutes entre chaque notification", "mon": "Lun", "month": "Mois", "notification": "Notification", "numberOfEntries": "Nombre d'entrées", "overallBalanceStart": "Date de début du solde global", "sat": "Sam", - "startOnLogin": "Commencer à la connexion", + "startOnLogin": "Lancer au démarrage", "sun": "Dim", - "systemDefault": "Système par défaut", + "systemDefault": "Système", "themes": "Thèmes", "thu": "Jeu", "title": "Préférences", @@ -160,29 +160,29 @@ "$UpdateManager": { "dismissBtn": "Rejeter", "downloadBtn": "Télécharger la dernière version", - "old-version-msg": "Vous utilisez une ancienne version de TTL et manquez beaucoup de nouvelles choses intéressantes!", - "remindBtn": "Rappelle-moi plus tard", + "old-version-msg": "Vous utilisez une ancienne version de TTL et manquez beaucoup de nouvelles fonctionnalités intéressantes !", + "remindBtn": "Me le rappeler plus tard", "title": "TTL Vérifier les mises à jour", "upto-date-msg": "Votre TTL est à jour." }, "$WorkdayWaiver": { "add-waiver": "Ajouter une dispense", "already-have-waiver": "Vous avez déjà une dispense sur", - "attention": "Attention: le chargement des jours fériés sur les jours de dispense écrasera l'entrée dispense.", - "city": "Ville:", - "conflicts": "Conflits?", - "country": "Pays:", + "attention": "Attention : le chargement des jours fériés sur les jours de dispense écrasera l'entrée dispense.", + "city": "Ville :", + "conflicts": "Conflits ?", + "country": "Pays :", "date": "Date", "day": "Jour", "delete-waiver-message": "Voulez-vous vraiment supprimer la dispense le jour", "end-date": "Date de fin", - "end-date-cannot-be-less": "La date de fin ne peut pas être inférieure à la date de début.", + "end-date-cannot-be-less": "La date de fin ne peut pas être avant la date de début.", "from": "Du", "header-help": "Les modifications prennent effet à la fermeture de cette fenêtre", "holiday": "Vacances", "hours": "Heures", - "hours-waived": "Heures dispenses", - "import": "Importer?", + "hours-waived": "Heures dispensées", + "import": "Importer ?", "loaded-waivers-holidays": "Charger dispenses pour les vacances.", "nav-holiday": "Vacances", "no": "Non", @@ -192,17 +192,17 @@ "remove-waiver": "Retirez-le avant d'en ajouter un nouveau.", "source-selected-holidays": "Source vacances sélectionnées", "start-date": "Date de début", - "state": "Etat:", - "title": "Gestionnaire de dispense", + "state": "État :", + "title": "Gestionnaire de dispenses", "to": "au", - "waive": "Dispense", + "waive": "Dispenser", "waived-workday-list": "Liste des jours de dispense", - "waiver-manager": "Gestionnaire de dispense", + "waiver-manager": "Gestionnaire de dispenses", "waiver-reason": "Motif de dispense", "year": "Année", "yes": "Oui" }, "$Generic": { - "hours-on-invalid": "this.setCustomValidity(\"Veuillez entrer l'heure au format valide 24 heures de 00h00 à 23h59\")" + "hours-on-invalid": "this.setCustomValidity(\"Veuillez entrer l'heure au format 24 heures de 00h00 à 23h59\")" } }