diff --git a/.env.sample b/.env.sample
index c34fff2..b8f2166 100644
--- a/.env.sample
+++ b/.env.sample
@@ -36,6 +36,7 @@ PREVIEW_MAX_BUFFER=
IMPORT_LIMIT=
PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH=
MAX_WORKERS=
+DISABLE_PRESERVATION=
# AWS S3 Settings
SPACES_KEY=
diff --git a/README.md b/README.md
index 480d763..f6cd278 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,8 @@
-
+
diff --git a/lib/api/archiveHandler.ts b/lib/api/archiveHandler.ts
index 87dafb0..e54ad65 100644
--- a/lib/api/archiveHandler.ts
+++ b/lib/api/archiveHandler.ts
@@ -21,6 +21,19 @@ type LinksAndCollectionAndOwner = Link & {
const BROWSER_TIMEOUT = Number(process.env.BROWSER_TIMEOUT) || 5;
export default async function archiveHandler(link: LinksAndCollectionAndOwner) {
+ if (process.env.DISABLE_PRESERVATION === "true")
+ return await prisma.link.update({
+ where: { id: link.id },
+ data: {
+ lastPreserved: new Date().toISOString(),
+ readable: "unavailable",
+ image: "unavailable",
+ monolith: "unavailable",
+ pdf: "unavailable",
+ preview: "unavailable",
+ },
+ });
+
const timeoutPromise = new Promise((_, reject) => {
setTimeout(
() =>
@@ -44,7 +57,8 @@ export default async function archiveHandler(link: LinksAndCollectionAndOwner) {
};
}
if (process.env.PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH) {
- browserOptions.executablePath = process.env.PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH;
+ browserOptions.executablePath =
+ process.env.PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH;
}
const browser = await chromium.launch(browserOptions);
diff --git a/lib/api/controllers/migration/importFromLinkwarden.ts b/lib/api/controllers/migration/importFromLinkwarden.ts
index 2ef1b52..202b114 100644
--- a/lib/api/controllers/migration/importFromLinkwarden.ts
+++ b/lib/api/controllers/migration/importFromLinkwarden.ts
@@ -66,6 +66,7 @@ export default async function importFromLinkwarden(
url: link.url?.trim().slice(0, 254),
name: link.name?.trim().slice(0, 254),
description: link.description?.trim().slice(0, 254),
+ importDate: new Date(link.importDate || link.createdAt),
collection: {
connect: {
id: newCollection.id,
diff --git a/lib/api/preservationScheme/handleMonolith.ts b/lib/api/preservationScheme/handleMonolith.ts
index d00850c..b6d0f66 100644
--- a/lib/api/preservationScheme/handleMonolith.ts
+++ b/lib/api/preservationScheme/handleMonolith.ts
@@ -8,7 +8,7 @@ const handleMonolith = async (link: Link, content: string) => {
try {
let html = execSync(
- `monolith - -I -b ${link.url} ${
+ `monolith - -I -b "${link.url}" ${
process.env.MONOLITH_CUSTOM_OPTIONS || "-j -F -s"
} -o -`,
{
diff --git a/package.json b/package.json
index 9d2b799..442e74f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "linkwarden",
- "version": "v2.8.3",
+ "version": "v2.8.4",
"main": "index.js",
"repository": "https://github.com/linkwarden/linkwarden.git",
"author": "Daniel31X13 ",
diff --git a/public/locales/de/common.json b/public/locales/de/common.json
index b26dbf4..2a42778 100644
--- a/public/locales/de/common.json
+++ b/public/locales/de/common.json
@@ -236,7 +236,7 @@
"pwa_install_prompt": "Installiere Linkwarden auf deinem Startbildschirm für einen schnelleren Zugriff und ein besseres Erlebnis. <0>Mehr erfahren0>",
"full_content": "Vollständiger Inhalt",
"slower": "Langsamer",
- "new_version_announcement": "Schau, was neu ist in <0>Linkwarden {{Version}}!0>",
+ "new_version_announcement": "Schau, was neu ist in <0>Linkwarden {{version}}!0>",
"creating": "Erstellen...",
"upload_file": "Datei hochladen",
"file": "Datei",
@@ -343,8 +343,8 @@
"shift_key_tip": "Halte die Umschalttaste gedrückt, während du auf „Löschen“ klickst, um diese Bestätigung in Zukunft zu umgehen.",
"deleting_collection": "Lösche...",
"collection_deleted": "Sammlung gelöscht.",
- "confirm_deletion_prompt": "Zur Bestätigung tippe „{{Name}}“ in das Feld unten:",
- "type_name_placeholder": "Tippe „{{Name}}“ hier.",
+ "confirm_deletion_prompt": "Zur Bestätigung tippe „{{name}}“ in das Feld unten:",
+ "type_name_placeholder": "Tippe „{{name}}“ hier.",
"deletion_warning": "Wenn Du diese Sammlung löschst, wird ihr gesamter Inhalt unwiderruflich gelöscht und sie wird für jeden unzugänglich, auch für Mitglieder mit vorherigem Zugriff.",
"leave_prompt": "Klicke auf die Schaltfläche unten, um die aktuelle Sammlung zu verlassen.",
"leave": "Verlassen",
diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json
index 733341f..c560434 100644
--- a/public/locales/fr/common.json
+++ b/public/locales/fr/common.json
@@ -3,29 +3,29 @@
"search_users": "Rechercher des utilisateurs",
"no_users_found": "Aucun utilisateur trouvé.",
"no_user_found_in_search": "Aucun utilisateur trouvé avec la requête de recherche donnée.",
- "username": "Nom d'utilisateur",
+ "username": "Nom d’utilisateur",
"email": "E-mail",
"subscribed": "Abonné(e)",
"created_at": "Créé le",
"not_available": "S/O",
"check_your_email": "Veuillez vérifier votre adresse e-mail",
"authenticating": "Authentification...",
- "verification_email_sent": "Envoi de l'email de vérification.",
- "verification_email_sent_desc": "Un lien de connexion a été envoyé à votre adresse électronique. Si vous ne voyez pas l'e-mail, vérifiez votre dossier de courrier indésirable.",
- "resend_email": "Renvoyez l'e-mail",
- "invalid_credentials": "Informations d'identification invalides.",
+ "verification_email_sent": "Envoi de l’email de vérification.",
+ "verification_email_sent_desc": "Un lien de connexion a été envoyé à votre adresse électronique. Si vous ne voyez pas l’e-mail, vérifiez votre dossier de courrier indésirable.",
+ "resend_email": "Renvoyer l’e-mail",
+ "invalid_credentials": "Informations d’identification invalides.",
"fill_all_fields": "Veuillez remplir tous les champs.",
- "enter_credentials": "Entrez vos données d'identification",
- "username_or_email": "Nom d'utilisateur ou e-mail",
+ "enter_credentials": "Entrez vos données d’identification",
+ "username_or_email": "Nom d’utilisateur ou e-mail",
"password": "Mot de passe",
"confirm_password": "Confirmer le mot de passe",
"forgot_password": "Mot de passe oublié ?",
"login": "Se connecter",
"or_continue_with": "Ou continuer avec",
- "new_here": "Vous êtes nouveau ?",
- "sign_up": "S'inscrire",
+ "new_here": "Vous êtes nouvelle/nouveau ?",
+ "sign_up": "S’inscrire",
"sign_in_to_your_account": "Connectez-vous à votre compte",
- "dashboard_desc": "Un bref aperçu de vos données",
+ "dashboard_desc": "Aperçu rapide de vos données",
"link": "Lien",
"links": "Liens",
"collection": "Collection",
@@ -40,59 +40,59 @@
"add_link": "Ajouter un nouveau lien",
"import_links": "Importer des liens",
"from_linkwarden": "De Linkwarden",
- "from_html": "À partir d'un fichier HTML de signets",
+ "from_html": "À partir d’un fichier HTML de signets",
"from_wallabag": "À partir de Wallabag (fichier JSON)",
- "pinned": "Épinglé",
+ "pinned": "Épinglés",
"pinned_links_desc": "Vos liens épinglés",
"pin_favorite_links_here": "Épinglez vos liens favoris ici !",
"pin_favorite_links_here_desc": "Vous pouvez épingler vos liens préférés en cliquant sur les trois points sur chaque lien et en cliquant sur Épingler au tableau de bord.",
"sending_password_link": "Envoi du lien de récupération du mot de passe...",
"password_email_prompt": "Entrez votre e-mail afin que nous puissions vous envoyer un lien pour créer un nouveau mot de passe.",
"send_reset_link": "Envoyer le lien de réinitialisation",
- "reset_email_sent_desc": "Vérifiez votre e-mail pour trouver un lien permettant de réinitialiser votre mot de passe. S'il n'apparaît pas au bout de quelques minutes, vérifiez votre dossier spam.",
+ "reset_email_sent_desc": "Vérifiez votre e-mail pour trouver un lien permettant de réinitialiser votre mot de passe. S’il n’apparaît pas au bout de quelques minutes, vérifiez votre dossier spam.",
"back_to_login": "Retour à la page de connexion",
"email_sent": "Email envoyé!",
"passwords_mismatch": "Les mots de passe ne correspondent pas.",
"password_too_short": "Les mots de passe doivent comporter au moins 8 caractères.",
- "creating_account": "Création d'un compte...",
- "account_created": "Compte créé!",
+ "creating_account": "Création d’un compte...",
+ "account_created": "Compte créé !",
"trial_offer_desc": "Débloquez {{count}} jours de service Premium sans frais !",
"register_desc": "Créer un nouveau compte",
- "registration_disabled_desc": "L'inscription est désactivée pour cette instance, veuillez contacter l'administrateur en cas de problème.",
+ "registration_disabled_desc": "L’inscription est désactivée pour cette instance, veuillez contacter l’administrateur en cas de problème.",
"enter_details": "Entrez vos coordonnées",
"display_name": "Nom affiché",
- "sign_up_agreement": "En vous inscrivant, vous acceptez nos <0>Conditions d'utilisation0> et notre <1>Politique de confidentialité1>.",
- "need_help": "Besoin d'aide?",
+ "sign_up_agreement": "En vous inscrivant, vous acceptez nos <0>Conditions d’utilisation0> et notre <1>Politique de confidentialité1>.",
+ "need_help": "Besoin d’aide ?",
"get_in_touch": "Prenez contact avec nous",
- "already_registered": "Vous avez déjà un compte?",
+ "already_registered": "Vous avez déjà un compte ?",
"deleting_selections": "Suppression des sélections...",
- "links_deleted": "{{count}} Liens supprimés.",
- "link_deleted": "1 Lien supprimé.",
- "links_selected": "{{count}} Liens sélectionnés",
- "link_selected": "1 Lien sélectionné",
+ "links_deleted": "{{count}} liens supprimés.",
+ "link_deleted": "1 lien supprimé.",
+ "links_selected": "{{count}} liens sélectionnés",
+ "link_selected": "1 lien sélectionné",
"nothing_selected": "Rien de sélectionné",
"edit": "Modifier",
"delete": "Supprimer",
- "nothing_found": "Rien n'a été trouvé.",
+ "nothing_found": "Rien n’a été trouvé.",
"redirecting_to_stripe": "Redirection vers Stripe...",
- "subscribe_title": "Abonnez-vous à Linkwarden!",
- "subscribe_desc": "Vous serez redirigé vers Stripe, n'hésitez pas à nous contacter à <0>support@linkwarden.app0> en cas de problème.",
+ "subscribe_title": "Abonnez-vous à Linkwarden !",
+ "subscribe_desc": "Vous serez redirigé vers Stripe, n’hésitez pas à nous contacter à <0>support@linkwarden.app0> en cas de problème.",
"monthly": "Mensuel",
"yearly": "Annuel",
"discount_percent": "{{percent}}% de réduction",
"billed_monthly": "Facturé mensuellement",
"billed_yearly": "Facturé annuellement",
"total": "Total",
- "total_annual_desc": "{{count}}-jour d'essai gratuit, puis ${{annualPrice}} annuellement",
- "total_monthly_desc": "{{count}}-jour d'essai gratuit, puis ${{monthlyPrice}} par mois",
+ "total_annual_desc": "{{count}}-jour d’essai gratuit, puis ${{annualPrice}} annuellement",
+ "total_monthly_desc": "{{count}}-jour d’essai gratuit, puis ${{monthlyPrice}} par mois",
"plus_tax": "+ TVA si applicable",
"complete_subscription": "Abonnement complet",
"sign_out": "Se déconnecter",
- "access_tokens": "Jetons d'accès",
- "access_tokens_description": "Les jetons d'accès peuvent être utilisés pour accéder à Linkwarden à partir d'autres applications et services sans divulguer votre nom d'utilisateur et votre mot de passe.",
- "new_token": "Nouveau jeton d'accès",
+ "access_tokens": "Jetons d’accès",
+ "access_tokens_description": "Les jetons d’accès peuvent être utilisés pour accéder à Linkwarden à partir d’autres applications et services sans divulguer votre nom d’utilisateur et votre mot de passe.",
+ "new_token": "Nouveau jeton d’accès",
"name": "Nom",
- "created_success": "Créé!",
+ "created_success": "Créé !",
"created": "Créé",
"expires": "Expire",
"accountSettings": "Paramètres du compte",
@@ -103,11 +103,11 @@
"make_profile_private": "Rendre le profil privé",
"profile_privacy_info": "Cela limitera le nombre de personnes pouvant vous trouver et vous ajouter à de nouvelles collections..",
"whitelisted_users": "Utilisateurs sur liste blanche",
- "whitelisted_users_info": "Veuillez fournir le nom d'utilisateur des utilisateurs auxquels vous souhaitez accorder de la visibilité à votre profil. Séparé par une virgule.",
+ "whitelisted_users_info": "Veuillez fournir le nom d’utilisateur des personnes auxquelles vous souhaitez accorder la visibilité de votre profil. Séparés par une virgule.",
"whitelisted_users_placeholder": "Votre profil est actuellement caché à tout le monde...",
"save_changes": "Sauvegarder les modifications",
"import_export": "Importer & Exporter",
- "import_data": "Importez vos données depuis d'autres plateformes.",
+ "import_data": "Importez vos données depuis d’autres plateformes.",
"download_data": "Téléchargez vos données instantanément.",
"export_data": "Exporter des données",
"delete_account": "Supprimer le compte",
@@ -117,32 +117,33 @@
"applying_settings": "Application des paramètres...",
"settings_applied": "Paramètres appliqués !",
"email_change_request": "Demande de modification par e-mail envoyée. Veuillez vérifier la nouvelle adresse e-mail.",
+ "image_upload_no_file_error": "Aucun fichier sélectionné, veuillez choisir une image à téléverser",
"image_upload_size_error": "Veuillez sélectionner un fichier PNG ou JPEG de moins de 1 Mo.",
"image_upload_format_error": "Format de fichier invalide.",
"importing_bookmarks": "Importer des favoris...",
"import_success": "Importation des signets ! Rechargement de la page...",
- "more_coming_soon": "Plus à venir bientôt!",
+ "more_coming_soon": "Plus à venir bientôt !",
"billing_settings": "Paramètres de facturation",
"manage_subscription_intro": "Pour gérer/annuler votre abonnement, visitez le",
"billing_portal": "Portail de facturation",
- "help_contact_intro": "Si vous avez encore besoin d'aide ou rencontrez des problèmes, n'hésitez pas à nous contacter à l'adresse suivante :",
+ "help_contact_intro": "Si vous avez encore besoin d’aide ou rencontrez des problèmes, n’hésitez pas à nous contacter à l’adresse suivante :",
"fill_required_fields": "Veuillez remplir les champs requis.",
- "deleting_message": "Tout supprimer, veuillez patienter...",
+ "deleting_message": "Suppresion totale en cours, veuillez patienter...",
"delete_warning": "Cela supprimera définitivement tous les liens, collections, balises et données archivées que vous possédez. Cela vous déconnectera également. Cette action est irréversible !",
"optional": "Facultatif",
"feedback_help": "(mais ça nous aide vraiment à nous améliorer !)",
- "reason_for_cancellation": "Raison pour l'annulation",
+ "reason_for_cancellation": "Raison de l’annulation",
"please_specify": "Veuillez préciser",
"customer_service": "Service client",
"low_quality": "Qualité médiocre",
"missing_features": "Fonctionnalités manquantes",
- "switched_service": "Service commuté",
+ "switched_service": "Changement de plateforme",
"too_complex": "Trop compliqué",
"too_expensive": "Trop cher",
- "unused": "Inutilisé",
+ "unused": "Pas l’utilité",
"other": "Autre",
- "more_information": "Plus d'informations (plus il y a de détails, plus cela serait utile)",
- "feedback_placeholder": "Par exemple: J'avais besoin d'une fonctionnalité qui...",
+ "more_information": "Plus d’informations (n’hésitez pas à détailler pour nous aider à mieux comprendre)",
+ "feedback_placeholder": "Par exemple: J’avais besoin d’une fonctionnalité qui...",
"delete_your_account": "Supprimer votre compte",
"change_password": "Changer le mot de passe",
"password_length_error": "Les mots de passe doivent comporter au moins 8 caractères.",
@@ -154,33 +155,33 @@
"select_theme": "Sélectionner un thème",
"dark": "Sombre",
"light": "Clair",
- "archive_settings": "Paramètres d'archivage",
+ "archive_settings": "Paramètres d’archivage",
"formats_to_archive": "Formats pour archiver/préserver les pages Web:",
- "screenshot": "Capture d'écran",
+ "screenshot": "Capture d’écran",
"pdf": "PDF",
- "archive_org_snapshot": "Instantané d'Archive.org",
+ "archive_org_snapshot": "Instantané d’Archive.org",
"link_settings": "Paramètres du lien",
"prevent_duplicate_links": "Empêcher les liens en double",
"clicking_on_links_should": "Cliquer sur les liens devrait:",
"open_original_content": "Ouvrir le contenu original",
"open_pdf_if_available": "Ouvrir le PDF, si disponible",
"open_readable_if_available": "Ouvrir Readable, si disponible",
- "open_screenshot_if_available": "Ouvrez la capture d'écran, si disponible",
+ "open_screenshot_if_available": "Ouvrez la capture d’écran, si disponible",
"open_webpage_if_available": "Ouvrir la copie de la page Web, si disponible",
- "tag_renamed": "L'étiquette a été renommée !",
- "tag_deleted": "Étiquette supprimée!",
- "rename_tag": "Renommer l'étiquette",
- "delete_tag": "Supprimer l'étiquette",
+ "tag_renamed": "L’étiquette a été renommée !",
+ "tag_deleted": "Étiquette supprimée !",
+ "rename_tag": "Renommer l’étiquette",
+ "delete_tag": "Supprimer l’étiquette",
"list_created_with_linkwarden": "Liste créée avec Linkwarden",
"by_author": "Par {{author}}.",
"by_author_and_other": "Par {{author}} et {{count}} autre.",
"by_author_and_others": "Par {{author}} et {{count}} autres.",
- "search_count_link": "Recherche {{count}} Lien",
- "search_count_links": "Recherche {{count}} Liens",
+ "search_count_link": "Recherche {{count}} lien",
+ "search_count_links": "Recherche {{count}} liens",
"collection_is_empty": "Cette collection est vide...",
"all_links": "Tous les liens",
"all_links_desc": "Liens de chaque collection",
- "you_have_not_added_any_links": "Vous n'avez pas encore créé de liens",
+ "you_have_not_added_any_links": "Vous n’avez pas encore créé de liens",
"collections_you_own": "Collections que vous possédez",
"new_collection": "Nouvelle collection",
"other_collections": "Autres collections",
@@ -189,8 +190,8 @@
"showing_count_result": "Afficher {{count}} résultat",
"edit_collection_info": "Modifier les informations sur la collection",
"share_and_collaborate": "Partager et collaborer",
- "view_team": "Voir l'équipe",
- "team": "L'équipe",
+ "view_team": "Voir l’équipe",
+ "team": "L’équipe",
"create_subcollection": "Créer une sous-collection",
"delete_collection": "Supprimer la collection",
"leave_collection": "Quitter la collection",
@@ -198,12 +199,12 @@
"invalid_token": "Jeton non valide.",
"sending_password_recovery_link": "Envoi du lien de récupération du mot de passe...",
"please_fill_all_fields": "Veuillez remplir tous les champs.",
- "password_updated": "Mot de passe mis à jour!",
+ "password_updated": "Mot de passe mis à jour !",
"reset_password": "Réinitialiser le mot de passe",
"enter_email_for_new_password": "Saisissez votre adresse électronique afin que nous puissions vous envoyer un lien pour créer un nouveau mot de passe.",
"update_password": "Mise à jour du mot de passe",
"password_successfully_updated": "Votre mot de passe a été mis à jour avec succès.",
- "user_already_member": "L'utilisateur existe déjà.",
+ "user_already_member": "L’utilisateur existe déjà.",
"you_are_already_collection_owner": "Vous êtes déjà le propriétaire de la collection.",
"date_newest_first": "Date (la plus récente en premier)",
"date_oldest_first": "Date (la plus ancienne en premier)",
@@ -212,9 +213,9 @@
"description_az": "Description (A-Z)",
"description_za": "Description (Z-A)",
"all_rights_reserved": "© {{date}} <0>Linkwarden0>. Tous droits réservés.",
- "you_have_no_collections": "Vous n'avez pas de Collections...",
+ "you_have_no_collections": "Vous n’avez pas de collections...",
"you_have_no_tags": "Vous n’avez pas d’étiquettes...",
- "cant_change_collection_you_dont_own": "Vous ne pouvez pas modifier une collection dont vous n'êtes pas propriétaire.",
+ "cant_change_collection_you_dont_own": "Vous ne pouvez pas modifier une collection dont vous n’êtes pas le propriétaire.",
"account": "Compte",
"billing": "Facturation",
"linkwarden_version": "Linkwarden {{version}}",
@@ -222,26 +223,26 @@
"github": "GitHub",
"twitter": "Twitter",
"mastodon": "Mastodon",
- "link_preservation_in_queue": "La préservation du lien est actuellement dans la file d'attente",
+ "link_preservation_in_queue": "La préservation du lien est actuellement dans la file d’attente",
"check_back_later": "Revenez plus tard pour voir le résultat",
- "there_are_more_formats": "Il y a plus de formats conservés dans la file d'attente",
+ "there_are_more_formats": "Il y a d’autres formats conservés dans la file d’attente",
"settings": "Paramètres",
"switch_to": "Basculer vers {{theme}}",
"logout": "Déconnexion",
- "start_journey": "Commencez votre voyage en créant un nouveau lien!",
+ "start_journey": "Démarrer l’expérience en créant un nouveau lien !",
"create_new_link": "Créer un nouveau lien",
"new_link": "Nouveau lien",
"create_new": "Créer nouveau...",
- "pwa_install_prompt": "Installez Linkwarden sur votre écran d'accueil pour un accès plus rapide et une expérience améliorée. <0>En savoir plus0>",
+ "pwa_install_prompt": "Installez Linkwarden sur votre écran d’accueil pour un accès plus rapide et une expérience améliorée. <0>En savoir plus0>",
"full_content": "Contenu complet",
"slower": "Plus lent",
- "new_version_announcement": "Voir ce qu'il y a de nouveau dans <0>Linkwarden {{version}}!0>",
+ "new_version_announcement": "Voir ce qu’il y a de nouveau dans <0>Linkwarden {{version}}!0>",
"creating": "Création...",
"upload_file": "Envoyer fichier",
"file": "Ficher",
- "file_types": "PDF, PNG, JPG (Jusqu'à {{size}} MB)",
+ "file_types": "PDF, PNG, JPG (Jusqu’à {{size}} MB)",
"description": "Description",
- "auto_generated": "Sera généré automatiquement si rien n'est fourni.",
+ "auto_generated": "Sera généré automatiquement si rien n’est fourni.",
"example_link": "Par exemple: Exemple de lien",
"hide": "Cacher",
"more": "Plus",
@@ -250,46 +251,46 @@
"deleting": "Suppression...",
"token_revoked": "Jeton révoqué.",
"revoke_token": "Révoquer le jeton",
- "revoke_confirmation": "Êtes-vous sûr de vouloir révoquer ce jeton d'accès ? Les applications ou services utilisant ce jeton ne pourront plus accéder à Linkwarden en l'utilisant.",
+ "revoke_confirmation": "Êtes-vous sûr de vouloir révoquer ce jeton d’accès ? Les applications ou services utilisant ce jeton ne pourront plus l’exploiter pour accéder à Linkwarden.",
"revoke": "Révoquer",
"sending_request": "Envoi de la demande...",
- "link_being_archived": "Le lien est en cours d'archivage...",
+ "link_being_archived": "Le lien est en cours d’archivage...",
"preserved_formats": "Formats conservés",
"available_formats": "Les formats suivants sont disponibles pour ce lien",
"readable": "Lisible",
- "preservation_in_queue": "La préservation du lien est dans la file d'attente",
- "view_latest_snapshot": "Voir le dernier instantané sur archive.org",
- "refresh_preserved_formats": "Rafraîchir les formats conservés",
+ "preservation_in_queue": "La préservation du lien est en file d’attente",
+ "view_latest_snapshot": "Voir le dernier instantané sur Archive.org",
+ "refresh_preserved_formats": "Réactualiser les formats conservés",
"this_deletes_current_preservations": "Cette opération supprime les conservations en cours",
"create_new_user": "Créer un nouvel utilisateur",
"placeholder_johnny": "Johnny",
"placeholder_email": "johnny@exemple.com",
"placeholder_john": "john",
- "user_created": "Utilisateur créé!",
+ "user_created": "Utilisateur créé !",
"fill_all_fields_error": "Veuillez remplir tous les champs.",
- "password_change_note": "<0>Note:0> Veillez à informer l'utilisateur qu'il doit modifier son mot de passe..",
+ "password_change_note": "<0>Note:0> Veillez à informer l’utilisateur qu’il doit modifier son mot de passe..",
"create_user": "Créer un utilisateur",
- "creating_token": "Création d'un jeton...",
- "token_created": "Jeton créé!",
- "access_token_created": "Jeton d'accès créé",
- "token_creation_notice": "Votre nouveau jeton a été créé. Veuillez le copier et le conserver en lieu sûr. Vous ne pourrez plus le voir.",
+ "creating_token": "Création d’un jeton...",
+ "token_created": "Jeton créé !",
+ "access_token_created": "Jeton d’accès créé",
+ "token_creation_notice": "Votre nouveau jeton a été créé. Veuillez le copier et le conserver en lieu sûr. Vous ne pourrez plus le consulter par la suite.",
"copied_to_clipboard": "Copié dans le presse-papiers !",
"copy_to_clipboard": "Copier dans le presse-papiers",
- "create_access_token": "Créer un jeton d'accès",
+ "create_access_token": "Créer un jeton d’accès",
"expires_in": "Expire dans",
"token_name_placeholder": "Par exemple: Pour le raccourci iOS",
- "create_token": "Créer un jeton d'accès",
+ "create_token": "Créer un jeton d’accès",
"7_days": "7 jous",
"30_days": "30 jours",
"60_days": "60 jours",
"90_days": "90 jous",
- "no_expiration": "Pas d'expiration",
- "creating_link": "Création d'un lien...",
- "link_created": "Lien créé!",
- "link_name_placeholder": "Sera généré automatiquement s'il n'est pas renseigné.",
- "link_url_placeholder": "Par exemple: http://exemple.com/",
+ "no_expiration": "Pas d’expiration",
+ "creating_link": "Création d’un lien...",
+ "link_created": "Lien créé !",
+ "link_name_placeholder": "Sera généré automatiquement s’il n’est pas renseigné.",
+ "link_url_placeholder": "Par exemple : http://exemple.com/",
"link_description_placeholder": "Notes, réflexions, etc.",
- "more_options": "Plus d'options",
+ "more_options": "Plus d’options",
"hide_options": "Cacher les options",
"create_link": "Créer un lien",
"new_sub_collection": "Nouvelle sous-collection",
@@ -297,26 +298,27 @@
"create_new_collection": "Créer une nouvelle collection",
"color": "Couleur",
"reset": "Réinitialiser",
- "collection_name_placeholder": "Par exemple: Exemple de collection",
- "collection_description_placeholder": "L'objectif de cette collection...",
+ "updating_collection": "Mise à jour de la collection...",
+ "collection_name_placeholder": "Par exemple : Exemple de collection",
+ "collection_description_placeholder": "L’objectif de cette collection...",
"create_collection_button": "Créer une collection",
"password_change_warning": "Veuillez confirmer votre mot de passe avant de modifier votre adresse électronique.",
"stripe_update_note": " La mise à jour de ce champ modifiera également votre email de facturation sur Stripe.",
- "sso_will_be_removed_warning": "Si vous changez d'adresse électronique, toutes les connexions SSO {{service}} existantes seront supprimées.",
+ "sso_will_be_removed_warning": "Si vous changez d’adresse électronique, toutes les connexions SSO {{service}} existantes seront supprimées.",
"old_email": "Ancien e-mail",
"new_email": "Nouvel e-mail",
"confirm": "Confirmer",
"edit_link": "Modifier le lien",
"updating": "Mise à jour...",
"updated": "Mis à jour!",
- "placeholder_example_link": "Par exemple: Lien d'exemple",
+ "placeholder_example_link": "Par exemple: Lien d’exemple",
"make_collection_public": "Rendre la collection publique",
"make_collection_public_checkbox": "Faire de cette collection une collection publique",
- "make_collection_public_desc": "Cela permettra à n'importe qui de consulter cette collection et ses utilisateurs.",
+ "make_collection_public_desc": "Cela permettra à n’importe qui de consulter cette collection et ses utilisateurs.",
"sharable_link_guide": "Lien partageable (Cliquez pour copier)",
"copied": "Copié!",
"members": "Membres",
- "members_username_placeholder": "Nom d'utilisateur (sans le '@')",
+ "members_username_placeholder": "Nom d’utilisateur (sans le ’@’)",
"owner": "Propriétaire",
"admin": "Administrateur",
"contributor": "Contributeur",
@@ -326,10 +328,10 @@
"admin_desc": "Accès complet à tous les liens",
"remove_member": "Supprimer le membre",
"placeholder_example_collection": "Par exemple: Exemple de collection",
- "placeholder_collection_purpose": "L'objectif de cette collection...",
+ "placeholder_collection_purpose": "L’objectif de cette collection...",
"deleting_user": "Suppression...",
"user_deleted": "Utilisateur supprimé.",
- "delete_user": "Supprimer l'utilisateur",
+ "delete_user": "Supprimer l’utilisateur",
"confirm_user_deletion": "Êtes-vous sûr de vouloir supprimer cet utilisateur ?",
"irreversible_action_warning": "Cette action est irréversible !",
"delete_confirmation": "Supprimer, je sais ce que je fais",
@@ -338,7 +340,7 @@
"link_deletion_confirmation_message": "Êtes-vous sûr de vouloir supprimer ce lien ?",
"warning": "Attention",
"irreversible_warning": "Cette action est irréversible !",
- "shift_key_tip": "Maintenez la touche Majuscule enfoncée tout en cliquant sur « Supprimer » pour éviter cette confirmation à l'avenir.",
+ "shift_key_tip": "Maintenez la touche Majuscule enfoncée tout en cliquant sur « Supprimer » pour éviter cette confirmation à l’avenir.",
"deleting_collection": "Suppression...",
"collection_deleted": "Collection supprimée.",
"confirm_deletion_prompt": "Pour confirmer, tapez \"{{name}}\" dans le champ ci-dessous:",
@@ -353,14 +355,13 @@
"delete_links": "Supprimer {{count}} liens",
"links_deletion_confirmation_message": "Êtes-vous sûr de vouloir supprimer {{count}} liens ? ",
"warning_irreversible": "Avertissement : Cette action est irréversible !",
- "shift_key_instruction": "Maintenez la touche « Shift » enfoncée tout en cliquant sur « Supprimer » pour éviter cette confirmation à l'avenir.",
- "link_selection_error": "Vous n'avez pas l'autorisation de modifier ou de supprimer cet élément.",
- "no_description": "Aucune description n'est fournie.",
+ "shift_key_instruction": "Maintenez la touche « Shift » enfoncée tout en cliquant sur « Supprimer » pour éviter cette confirmation à l’avenir.",
+ "link_selection_error": "Vous n’avez pas l’autorisation de modifier ou de supprimer cet élément.",
+ "no_description": "Aucune description n’est fournie.",
"applying": "Appliquer...",
"unpin": "Épingler",
"pin_to_dashboard": "Épingler au tableau de bord",
"show_link_details": "Afficher les détails du lien",
- "hide_link_details": "Cacher les détails du lien",
"link_pinned": "Lien épinglé !",
"link_unpinned": "Lien désépinglé !",
"webpage": "Page web",
@@ -368,7 +369,65 @@
"all_collections": "Toutes les collections",
"dashboard": "Tableau de bord",
"demo_title": "Démonstration uniquement",
- "demo_desc": "Il s'agit d'une instance de démonstration de Linkwarden et les téléchargements sont désactivés.",
- "demo_desc_2": "Si vous souhaitez tester la version complète, vous pouvez vous inscrire pour un essai gratuit à l'adresse suivante:",
- "demo_button": "Se connecter en tant qu'utilisateur de démonstration"
+ "demo_desc": "Il s’agit d’une instance de démonstration de Linkwarden, de ce fait les téléversements sont désactivés.",
+ "demo_desc_2": "Si vous souhaitez tester la version complète, vous pouvez vous inscrire pour un essai gratuit à l’adresse suivante :",
+ "demo_button": "Se connecter en tant qu’utilisateur de démonstration",
+ "regular": "Normal",
+ "thin": "Fin",
+ "bold": "Gras",
+ "fill": "Rempli",
+ "duotone": "Bicolore",
+ "light_icon": "Léger",
+ "search": "Rechercher",
+ "set_custom_icon": "Définir une icône personnalisée",
+ "view": "Voir",
+ "show": "Afficher",
+ "image": "Image",
+ "icon": "Icône",
+ "date": "Date",
+ "preview_unavailable": "Aperçu indisponible",
+ "saved": "Sauvegardé",
+ "untitled": "Sans titre",
+ "no_tags": "Aucun tags",
+ "no_description_provided": "Aucune description fournie.",
+ "change_icon": "Changer l’icône",
+ "upload_preview_image": "Téléverser la prévisualisation",
+ "columns": "Colonnes",
+ "default": "Défaut",
+ "invalid_url_guide":"Veuillez entrer une adresse valide pour le lien. (Commence généralement par http/https)",
+ "email_invalid": "Veuillez entrer une adresse email valide.",
+ "username_invalid_guide": "Le nom d’utilisateur doit comporter au minimum 3 caractères, les espaces et les caractères spéciaux ne sont pas autorisés.",
+ "team_management": "Gestion d’équipe",
+ "invite_user": "Inviter une personne",
+ "invite_users": "Inviter des personnes",
+ "invite_user_desc": "Afin d’inviter une personne dans votre équipe, veuillez entrer son adresse email juste en-dessous :",
+ "invite_user_note": "Veuillez noter qu’une fois l’invitation acceptée, cela déclenche l’achat d’un emplacement supplémentaire et votre compte sera ainsi facturé automatiquement pour cet ajout.",
+ "invite_user_price": "Le prix d’un emplacement à l’unité est de ${{price}} par mois ou ${{priceAnnual}} par an, en fonction de votre type d’abonnement en cours.",
+ "send_invitation": "Envoyer l’invitation",
+ "learn_more": "En savoir plus",
+ "invitation_desc": "{{owner}} vous a invité à rejoindre Linkwarden. \nPour continuer, veuillez terminer la configuration de votre compte.",
+ "invitation_accepted": "Invitation acceptée !",
+ "status": "Statut",
+ "pending": "En attente",
+ "active": "Activé",
+ "manage_seats": "Gérer les emplacements",
+ "seats_purchased": "{{count}} emplacements achetées",
+ "seat_purchased": "{{count}} emplacement acheté",
+ "date_added": "Date ajoutée",
+ "resend_invite": "Renvoyer l’invitation",
+ "resend_invite_success": "Invitation renvoyée !",
+ "remove_user": "Supprimer l’utilisateur",
+ "continue_to_dashboard": "Continuer vers le tableau de bord",
+ "confirm_user_removal_desc": "Une nouvelle inscription sera nécessaire si ces personnes souhaitent accéder à nouveau à Linkwarden.",
+ "click_out_to_apply": "Cliquer en-dehors pour valider",
+ "submit": "Valider",
+ "thanks_for_feedback": "Merci pour ce retour !",
+ "quick_survey": "Sondage rapide",
+ "how_did_you_discover_linkwarden": "Comment avez-vous connu Linkwarden ?",
+ "rather_not_say": "Ne se prononce pas",
+ "search_engine": "Moteur de recherche (Google, Bing, etc.)",
+ "reddit": "Reddit",
+ "lemmy": "Lemmy",
+ "people_recommendation": "Recommandation (ami, famille, etc.)",
+ "open_all_links": "Ouvrir tous les liens"
}