From a7dee14c96c26b6c241b9d7000dde5325e3e10aa Mon Sep 17 00:00:00 2001 From: NaitLee Date: Tue, 23 Jan 2024 19:23:10 +0800 Subject: [PATCH] add french translation by @baudav (#68) --- www/i18n-ext.js | 17 ++++- www/lang/fr.json | 169 +++++++++++++++++++++++++++++++++++++++++++++ www/lang/list.json | 1 + 3 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 www/lang/fr.json diff --git a/www/i18n-ext.js b/www/i18n-ext.js index 1cfe535..29c1229 100644 --- a/www/i18n-ext.js +++ b/www/i18n-ext.js @@ -17,7 +17,8 @@ var I18nExtensions = (function() { 'en-US': English, 'zh-CN': Chinese, 'de-DE': German, - 'nl-NL': Dutch, + 'nl-NL': Dutch, + 'fr': French, 'ar': Arabic }; @@ -128,6 +129,20 @@ var I18nExtensions = (function() { } } } + /** + * @type {ExtensionOf<'fr'>} + */ + function French(things, conditions) { + if (typeof conditions === 'string') + return conditions; + for (let index in things) { + let value = things[index]; + if (typeof value === 'number') { + if (value == 1) return conditions['single']; + else return conditions['multiple']; + } + } + } /** * @type {ExtensionOf<'ar'>} */ diff --git a/www/lang/fr.json b/www/lang/fr.json new file mode 100644 index 0000000..9a06591 --- /dev/null +++ b/www/lang/fr.json @@ -0,0 +1,169 @@ +{ + "$language": "Français (FR)", + "cat-printer": "Cat Printer", + "printer": "Imprimante", + "device-": "Appareil:", + "refresh": "Actualiser", + "mode-": "Mode:", + "canvas": "Canvas", + "document": "Document", + "insert-picture": "Inserer Image", + "insert-text": "Inserer Texte", + "help": "Aide", + "javascript-license-information": "Information Licence JavaScript", + "settings": "Config", + "image": "Image", + "threshold-": "Seuil:", + "transmission-speed-": "Vitesse d'envoi:", + "low": "Faible", + "moderate": "Moderé", + "high": "Elevé", + "transparent-as-white": "Transparent comme blanc", + "misc": "Divers", + "system": "Système", + "disable-animation": "Animation désactivée", + "exit": "Quitter", + "error-message": "Message d'erreur", + "preview": "Aperçu", + "print": "Imprimer", + "expand": "Etendre", + "crop": "Couper", + "scanning-for-devices": "Scan appareil…", + "scan-time-": "Temps de scan:", + "-seconds": "seconde(s)", + "no-available-devices-found": "Aucun appareil trouvé", + "found-0-available-devices": { + "single": "{0} appareil trouvé", + "multiple": "{0} appareils trouvés" + }, + "please-check-if-the-printer-is-down": "Vérifiez si l'imprimante est éteinte", + "printing": "Imprime…", + "finished": "Terminé", + "coming-soon": "À venir…", + "dry-run": "Test à blanc", + "dry-run-test-print-process-only": "Test du process d'impression seulement", + "you-can-close-this-page-manually": "Vous pouvez fermer cette page manuellement", + "please-enable-bluetooth": "Veuillez activer Bluetooth", + "error-happened-please-check-error-message": "Erreur survenue, vérifiez message d'erreur", + "you-can-seek-for-help-with-detailed-info-below": "Vous pouvez demander de l'aide avec les infos ci-dessous", + "or-try-to-scan-longer": "Ou essayez un scan plus long", + "print-to-cat-printer": "Imprime vers Cat Printer", + "supported-models-": "Modèles supportés:", + "path-to-input-file-dash-for-stdin": "Chemin vers le fichier. '-' pour stdin", + "dump-the-traffic": "Dump du trafic", + "please-install-pyobjc-via-pip": "Installez `pyobjc` via pip", + "please-install-bleak-via-pip": "Installez `bleak` via pip", + "folder-printer_lib-is-incomplete-or-missing-please-check": "Dossier `printer_lib` incomplet ou manquant, vérifiez", + "input-is-not-pbm-image": "Entrée n'est pas un image PBM", + "unsuitable-image-width-expected-0-got-1": "Largeur image incorrecte, attendu {0}, obtenu {1}", + "broken-pbm-image": "Image PBM corrompue", + "input-is-not-text-file": "N'est pas un fichier texte", + "match-printer-with-this-name-or-address": "Faire correspondre l'imprimante avec ce nom ou cette adresse", + "virtual-run-on-specified-model": "Exécution virtuelle sur le modèle spécifié", + "font-size-0": "Taille police {0}", + "stopping": "Arrêt", + "connecting": "Connection", + "model-0-is-not-supported-yet": "Modèle '{0}' n'est pas supporté encore", + "invalid-address-0": "Addresse invalide: '{0}'", + "will-listen-on-all-addresses": "Écoutera sur TOUTES les adresses", + "serving-at-0": "Servir à {0}", + "disconnecting-from-printer": "Déconnexion de l'imprimante", + "connected-to-0-1": "Connecté à {0} {1}", + "flip-horizontally": "Retourner horizontalement", + "flip-vertically": "Retourner verticalement", + "dump-traffic": "Dump Trafic", + "right-to-left-text-order": "Texte de droite à gauche", + "auto-wrap-line": "Retour ligne Auto", + "process-as-": "Traiter comme:", + "text": "Texte", + "picture": "Image", + "pattern": "Motif", + "large-font": "Police Large", + "accessibility": "Accessibilité", + "language": "Langue", + "layout": "Mise en page", + "ok": "OK", + "cancel": "Annuler", + "yes": "Oui", + "no": "Non", + "about": "À propos", + "home-page-": "Page d'acceuil:", + "contributors": "Contributeurs", + "developer": "Developpeur", + "collaborator": "Collaborateur", + "translator": "Traducteur", + "all-users-and-developers": "Tous les utilisateurs et développeurs", + "everyone-is-awesome": "Tout le monde est génial !", + "license": "Licence", + "exiting": "Sortie…", + + "dark-theme": "Theme Sombre", + "high-contrast": "Haut Contraste", + "welcome": "Bienvenue!", + "copyright-and-license": "Droit d'auteur et licence", + "some-rights-reserved": "Certains droits réservés.", + "ENTER": "Entrer", + "SPACE": "Espace", + "ESCAPE": "Esc", + "TAB": "Tab", + "COMMA": "Virgule", + "DOT": "Point", + "to-enter-keyboard-mode-press-tab": "Pour entrer en mode clavier, appuyez sur Tab", + "usage-": "Utilisation:", + "positional-arguments-": "Arguments positionnels:", + "options-": "Options:", + "show-this-help-message": "Afficher ce message d'aide", + "do-nothing": "Ne fais rien", + "scan-for-a-printer": "Scan pour une imprimante", + "text-printing-mode-with-options": "Mode d'impression de texte avec options", + "image-printing-options": "Options d'impression d'images", + "convert-input-image-with-imagemagick": "Convertir l'image d'entrée avec ImageMagick", + "reset-configuration-": "Reset configuration?", + "brightness-": "Luminosité:", + "text-printing-mode": "Mode d'impression de texte", + "internal-error-please-see-terminal": "Erreur interne, veuillez consulter le terminal", + "control-printer-thermal-strength": "Contrôler la puissance thermique de l'imprimante", + "strength-": "Puissance:", + "or-drag-file-to-below": "Ou faites glisser le fichier ci-dessous", + "reset": "Reset", + "cat-face-toward": "Cat Face Toward", + "quality-": "Qualité:", + "print-quality": "Qualité d'impression", + "show-more-options": "Afficher plus d'options", + "text-font": "Police", + "text-size": "Taille", + "enter-text": "Entrez le texte", + "wrap-text": "Habillage du texte", + "you-can-see-all-javascript-programs-used": "Vous pouvez voir que tous les programmes JavaScript utilisés avec cette application sont des logiciels libres.", + "javascript-resource": "Ressource", + "javascript-license": "Licence", + "javascript-source": "Source", + "javascript-description": "Description", + "javascript-everyjs-description": "Concaténation dynamique de tous les scripts de développement", + "javascript-maincompjs-description": "Tous les scripts de développement suivants, transpilés pour la compatibilité.", + "javascript-loaderjs-description": "Pour charger dynamiquement d'autres scripts et se replier en cas de problème.", + "javascript-polyfilljs-description": "Ajoutez des fonctionnalités qui ne sont pas prises en charge par les anciens navigateurs.", + "javascript-i18nextjs-description": "I18n “extensions”", + "javascript-i18njs-description": "Pour l'internationalisation (support linguistique)", + "javascript-imagejs-description": "Pour la manipulation d'images canvas", + "javascript-accessibilityjs-description": "Fonctionnalités d'accessibilité", + "javascript-catprinter-description": "Le script principal de Cat-Printer", + "free-software": "Logiciel gratuit", + "free-software-description": "Un logiciel qui respecte votre liberté informatique.", + "wrap-words-by-spaces": "Enveloppez les mots par des espaces", + "minor-tweaks": "Ajustements mineurs", + "serif": "Serif", + "sans-serif": "Sans Serif", + "monospace": "Monospace", + "rotate-image": "Rotation Image", + "test-unknown-device": "Tester le périphérique inconnu", + "scan": "Scan", + "pf2-font-not-found-or-broken-0": "Police PF2 non trouvée ou corrompue: '{0}'", + "imagemagick-not-found": "ImageMagick non trouvé, installez le et ressayez.", + "try-to-print-through-an-unknown-device": "Essayez d'imprimer via un périphérique inconnu", + "scanning-for-all-bluetooth-devices-nearby": "Recherche tous les appareils Bluetooth à proximité…", + "there-are-multiple-devices-": "Il existe plusieurs appareils:", + "choose-which-one-0-": "Choisissez lequel? [{0}]: ", + "multiple-devices-found-please-specify-one": "Plusieurs appareils trouvés, veuillez en sélectionner un", + "no-prompt-for-multiple-devices": "Aucune invite pour plusieurs appareils" +} \ No newline at end of file diff --git a/www/lang/list.json b/www/lang/list.json index d18059b..841057e 100644 --- a/www/lang/list.json +++ b/www/lang/list.json @@ -2,6 +2,7 @@ "en-US": "English (US)", "de-DE": "Deutsch", "pl-PL": "Polski (Polska)", + "fr": "Français (FR)", "zh-CN": "中文(简体字)", "zh-TW": "中文(正體字)", "zh-HK": "中文(香港字)",