Files

1219 lines
85 KiB
PHP

<?php
// Vivier — English.
// Clé : le texte français affiché. Valeur : sa traduction. Les %s et %d sont remplacés à l'affichage :
// les garder, dans le même ordre. Une clé absente s'affiche en français.
return [
// --- Navigation et pages
'Aller au contenu' => 'Skip to content',
'Menu' => 'Menu',
'Navigation principale' => 'Main navigation',
'Kanban' => 'Board',
'Profils' => 'Profiles',
'Importer' => 'Import',
'Tableau de bord' => 'Dashboard',
'Conservation' => 'Retention',
'Journal' => 'Activity log',
'Comptes' => 'Accounts',
'Mon compte' => 'My account',
'Déconnexion' => 'Sign out',
'Rechercher' => 'Search',
'Rechercher un profil' => 'Search for a profile',
'développeur Java senior' => 'senior Java developer',
'Le suivi des CV d\'IT Club' => 'IT Club\'s CV tracker',
'Retour au Kanban' => 'Back to the board',
'Page introuvable' => 'Page not found',
'Profil introuvable' => 'Profile not found',
'Rapport introuvable' => 'Report not found',
'Document introuvable.' => 'Document not found.',
'Candidat introuvable.' => 'Candidate not found.',
'Une erreur est survenue' => 'Something went wrong',
'L\'action n\'a pas abouti. Revenez en arrière et réessayez. Si l\'erreur persiste, prévenez le gestionnaire de Vivier.' => 'The action did not go through. Go back and try again. If the error persists, tell the Vivier account manager.',
'Session expirée ou requête invalide. Rechargez la page.' => 'Session expired or invalid request. Reload the page.',
'Requête invalide.' => 'Invalid request.',
'Action non autorisée pour ce compte.' => 'This account is not allowed to do that.',
'Page réservée au gestionnaire des comptes.' => 'This page is for the account manager only.',
'Configuration absente : copiez config/config.exemple.php vers config/config.php.' => 'Configuration missing: copy config/config.exemple.php to config/config.php.',
'Dossier de stockage inaccessible.' => 'The storage folder cannot be reached.',
// --- Connexion et comptes
'Connexion' => 'Sign in',
'Installation' => 'Setup',
'Identifiant' => 'Username',
'Identifiant de connexion' => 'Username',
'Mot de passe' => 'Password',
'Se connecter' => 'Sign in',
'Identifiant ou mot de passe incorrect.' => 'Wrong username or password.',
'Trop d\'essais infructueux. Réessayez dans %d minutes.' => 'Too many failed attempts. Try again in %d minutes.',
'Premier lancement : créez votre compte. Vous gérerez ensuite ceux des autres.' => 'First run: create your account. You will then manage everyone else\'s.',
'Votre nom' => 'Your name',
'Mot de passe, %d caractères au moins' => 'Password, at least %d characters',
'Nouveau mot de passe, %d caractères au moins' => 'New password, at least %d characters',
'Nouveau mot de passe, à laisser vide pour le garder' => 'New password, leave empty to keep the current one',
'Confirmation' => 'Confirm password',
'Créer mon compte' => 'Create my account',
'Les deux mots de passe diffèrent.' => 'The two passwords do not match.',
'Les deux nouveaux mots de passe diffèrent.' => 'The two new passwords do not match.',
'Le mot de passe doit compter au moins %d caractères.' => 'The password must be at least %d characters long.',
'Le mot de passe actuel est incorrect.' => 'The current password is wrong.',
'Mot de passe actuel' => 'Current password',
'Changer de mot de passe' => 'Change password',
'Changer le mot de passe' => 'Change password',
'Mot de passe modifié.' => 'Password changed.',
'Nom' => 'Name',
'Chaque compte lit et modifie tous les profils. Vous choisissez l\'identifiant et le mot de passe de chacun.' => 'Every account can read and edit all profiles. You choose each person\'s username and password.',
'Créer un compte' => 'Create an account',
'Créer le compte' => 'Create account',
'Nom de la personne' => 'Person\'s name',
'prenom.nom' => 'first.last',
'vous' => 'you',
'Gère les comptes' => 'Manages accounts',
'Désactivé' => 'Disabled',
'Dernière connexion' => 'Last sign-in',
'jamais' => 'never',
'Modifier l\'identifiant ou le mot de passe' => 'Change username or password',
'Enregistrer' => 'Save',
'Désactiver le compte' => 'Disable account',
'Réactiver le compte' => 'Enable account',
'Retirer la gestion des comptes' => 'Remove account management',
'Confier la gestion des comptes' => 'Grant account management',
'Compte créé. Transmettez l\'identifiant et le mot de passe à la personne.' => 'Account created. Give the username and password to the person.',
'Compte modifié.' => 'Account updated.',
'Compte mis à jour.' => 'Account updated.',
'Cet identifiant est déjà pris.' => 'This username is already taken.',
'L\'identifiant compte 3 à 40 caractères : lettres sans accent, chiffres, point, tiret.' => 'A username has 3 to 40 characters: unaccented letters, digits, dot, hyphen.',
'Indiquez le nom de la personne.' => 'Enter the person\'s name.',
'Rôle inconnu.' => 'Unknown role.',
'Vous ne pouvez pas désactiver votre propre compte.' => 'You cannot disable your own account.',
'Vous ne pouvez pas retirer votre propre gestion des comptes.' => 'You cannot remove account management from yourself.',
'Gestionnaire des comptes' => 'Account manager',
'Utilisateur' => 'User',
'Index de recherche' => 'Search index',
'À relancer après une mise à jour de Vivier.' => 'Run again after a Vivier update.',
'Réindexer tous les profils' => 'Reindex all profiles',
'%d profil réindexé.' => '%d profile reindexed.',
'%d profils réindexés.' => '%d profiles reindexed.',
// --- Statuts, séniorité, tables de libellés
'Reçu' => 'Received',
'En cours' => 'In progress',
'Premier entretien validé' => 'First interview passed',
'Second entretien validé' => 'Second interview passed',
'Non retenu' => 'Rejected',
'Validé' => 'Approved',
'Embauché' => 'Hired',
'Junior' => 'Junior',
'Intermédiaire' => 'Mid-level',
'Confirmé' => 'Senior',
'Expert' => 'Expert',
'Métiers' => 'Roles',
'Spécialités' => 'Specialities',
'Secteurs' => 'Sectors',
'Mots-clés' => 'Keywords',
'Bac' => 'Secondary school diploma',
'Bac+2' => '2-year degree',
'Bac+3' => 'Bachelor\'s degree',
'Bac+4' => '4-year degree',
'Bac+5' => 'Master\'s degree',
'Doctorat' => 'Doctorate',
'Autre' => 'Other',
'CV d\'origine' => 'Original CV',
'Rapport' => 'Report',
'CV IT Club' => 'IT Club CV',
'CV anonymisé' => 'Anonymised CV',
'emploi' => 'employment',
'mission' => 'assignment',
'alternance' => 'work-study',
'stage' => 'internship',
'indépendant' => 'freelance',
'Langage' => 'Language',
'Framework' => 'Framework',
'Base de données' => 'Database',
'Outil' => 'Tool',
'Cloud' => 'Cloud',
'Méthode' => 'Method',
'Oui' => 'Yes',
'Non' => 'No',
'ou' => 'or',
'natif' => 'native',
// --- Kanban
'%d profil' => '%d profile',
'%d profils' => '%d profiles',
'Filtrer les cartes' => 'Filter cards',
'Nom, titre ou technologie' => 'Name, title or technology',
'Séniorité' => 'Seniority',
'Toutes' => 'All',
'Tous' => 'All',
'Importer un profil' => 'Import a profile',
'Motif du refus' => 'Reason for rejection',
'Pourquoi ce profil n\'est pas retenu ?' => 'Why is this profile rejected?',
'Annuler' => 'Cancel',
'Indiquez le motif du refus.' => 'Enter the reason for rejection.',
'Statut inconnu.' => 'Unknown status.',
'Statut mis à jour.' => 'Status updated.',
'Le changement n\'a pas été enregistré.' => 'The change was not saved.',
'Connexion perdue. Le changement n\'a pas été enregistré.' => 'Connection lost. The change was not saved.',
'%s ans' => '%s years',
'%s an' => '%s year',
// --- Import
'Import refusé : %d points à corriger.' => 'Import rejected: %d issues to fix.',
'Import refusé.' => 'Import rejected.',
'Analyse automatique' => 'Automatic analysis',
'Chargez le CV. Vivier l\'envoie à Claude, qui extrait le profil et rédige le rapport. Vous relisez avant d\'enregistrer.' => 'Upload the CV. Vivier sends it to Claude, which extracts the profile and writes the report. You review before saving.',
'Analyse en cours. Comptez une à deux minutes, sans fermer la page.' => 'Analysis in progress. Allow one to two minutes and keep this page open.',
'Analyse en cours…' => 'Analysing…',
'CV du candidat (PDF, DOCX, ODT, MD ou TXT)' => 'Candidate\'s CV (PDF, DOCX, ODT, MD or TXT)',
'Analyser le CV' => 'Analyse CV',
'Non configurée. Ajoutez une clé d\'API Claude dans' => 'Not set up. Add a Claude API key in',
'pour analyser un CV sans quitter Vivier.' => 'to analyse a CV without leaving Vivier.',
'Fichiers déjà analysés' => 'Files already analysed',
'Chargez les fichiers produits par votre projet Claude « Analyse CV IT Club », avec le CV d\'origine.' => 'Upload the files produced by your "Analyse CV IT Club" Claude project, along with the original CV.',
'Profil structuré (.json)' => 'Structured profile (.json)',
'CV d\'origine (PDF, DOCX, DOC, ODT, RTF, MD ou TXT)' => 'Original CV (PDF, DOCX, DOC, ODT, RTF, MD or TXT)',
'Rapport détaillé, facultatif (MD, TXT, PDF ou DOCX)' => 'Detailed report, optional (MD, TXT, PDF or DOCX)',
'Contrôler le profil' => 'Check profile',
'Relecture avant enregistrement' => 'Review before saving',
'Profil extrait par l\'analyse automatique. Vérifiez l\'identité et les dates avant d\'enregistrer.' => 'Profile extracted by automatic analysis. Check the identity and the dates before saving.',
'Photo trouvée dans le CV' => 'Photo found in the CV',
'Garder cette photo' => 'Keep this photo',
'Candidat' => 'Candidate',
'Titre' => 'Title',
'Email' => 'Email',
'Téléphone' => 'Phone',
'Adresse' => 'Address',
'non renseigné' => 'not provided',
'non renseignée' => 'not provided',
'%s, recalculés à partir des dates' => '%s, recomputed from the dates',
'Contenu' => 'Content',
'%d expérience' => '%d position',
'%d expériences' => '%d positions',
'%d technologie' => '%d technology',
'%d technologies' => '%d technologies',
'%d langue' => '%d language',
'%d langues' => '%d languages',
'%d formation' => '%d degree',
'%d formations' => '%d degrees',
'%d certification' => '%d certification',
'%d certifications' => '%d certifications',
'Fichiers' => 'Files',
'Écart avec l\'analyse : le fichier annonce %s (%s). Vivier retient la valeur recalculée. Vérifiez les dates des expériences.' => 'Mismatch with the analysis: the file states %s (%s). Vivier keeps the recomputed value. Check the dates of the positions.',
'Points d\'attention' => 'Points to check',
'Expériences' => 'Experience',
'Période' => 'Period',
'Poste' => 'Position',
'Employeur ou client' => 'Employer or client',
'Type' => 'Type',
'en cours' => 'present',
'Enregistrer le profil' => 'Save profile',
'Import annulé.' => 'Import cancelled.',
'Profil enregistré dans la colonne Reçu.' => 'Profile saved in the Received column.',
'Le chargement du fichier a échoué.' => 'The file upload failed.',
'Fichier trop volumineux (maximum %d Mo).' => 'File too large (maximum %d MB).',
'Format non accepté : .%s. Formats acceptés : %s.' => 'Format not accepted: .%s. Accepted formats: %s.',
'Le fichier de profil n\'est pas un JSON valide : %s.' => 'The profile file is not valid JSON: %s.',
'Le fichier de profil n\'est pas un JSON valide.' => 'The profile file is not valid JSON.',
'Le fichier n\'a pas pu être enregistré.' => 'The file could not be saved.',
'L\'analyse automatique n\'est pas configurée.' => 'Automatic analysis is not set up.',
'L\'analyse automatique a produit un profil non conforme. Relancez-la, ou passez par les fichiers déjà analysés.' => 'Automatic analysis produced a non-compliant profile. Run it again, or use the files already analysed.',
'L\'analyse automatique lit les fichiers PDF, DOCX, ODT, MD et TXT. Convertissez ce fichier en PDF.' => 'Automatic analysis reads PDF, DOCX, ODT, MD and TXT files. Convert this file to PDF.',
'Le fichier contient trop peu de texte. S\'il s\'agit d\'un document scanné, chargez-le en PDF.' => 'The file contains too little text. If it is a scanned document, upload it as a PDF.',
'Le fichier est illisible ou endommagé.' => 'The file is unreadable or damaged.',
'L\'analyse a été coupée avant la fin : le CV est trop long. Passez par l\'import de fichiers déjà analysés.' => 'The analysis was cut off before the end: the CV is too long. Use the import of files already analysed.',
'Analyse impossible : %s' => 'Analysis not possible: %s',
'La réponse de l\'analyse ne contient pas de profil. Réessayez.' => 'The analysis response contains no profile. Try again.',
'Le profil renvoyé par l\'analyse n\'est pas un JSON valide. Réessayez.' => 'The profile returned by the analysis is not valid JSON. Try again.',
'L\'analyse a dépassé le délai de %d secondes. Réessayez, ou passez par l\'import de fichiers déjà analysés.' => 'The analysis exceeded the %d-second limit. Try again, or use the import of files already analysed.',
'Le service d\'analyse est injoignable. Vérifiez la connexion du serveur.' => 'The analysis service cannot be reached. Check the server\'s connection.',
'La clé d\'API Claude est refusée. Vérifiez-la dans config/config.php.' => 'The Claude API key was rejected. Check it in config/config.php.',
'Trop de demandes ou crédit épuisé côté API Claude. Réessayez plus tard.' => 'Too many requests or no credit left on the Claude API side. Try again later.',
'Le service d\'analyse est momentanément indisponible. Réessayez dans quelques minutes.' => 'The analysis service is temporarily unavailable. Try again in a few minutes.',
'L\'analyse a échoué (code %d). %s' => 'The analysis failed (code %d). %s',
// --- Contrôle du fichier de profil
'Le fichier ne contient pas un objet JSON.' => 'The file does not contain a JSON object.',
'version non gérée (attendu : %s).' => 'unsupported version (expected: %s).',
'adresse invalide.' => 'invalid address.',
'objet attendu.' => 'object expected.',
'adresse http(s) attendue.' => 'http(s) address expected.',
'format AAAA-MM ou AAAA attendu.' => 'YYYY-MM or YYYY format expected.',
'format AAAA-MM, AAAA ou null attendu.' => 'YYYY-MM, YYYY or null expected.',
'la date de fin précède la date de début.' => 'the end date is before the start date.',
'texte attendu.' => 'text expected.',
'nombre positif ou null attendu.' => 'positive number or null expected.',
'nombre positif attendu.' => 'positive number expected.',
'valeur inconnue (attendu : %s ou null).' => 'unknown value (expected: %s or null).',
'valeur inconnue (attendu : %s).' => 'unknown value (expected: %s).',
'true, false ou null attendu.' => 'true, false or null expected.',
'date AAAA-MM-JJ attendue.' => 'YYYY-MM-DD date expected.',
'champ obligatoire manquant « %s ».' => 'required field "%s" is missing.',
'clé inconnue « %s ».' => 'unknown key "%s".',
'texte non vide attendu.' => 'non-empty text expected.',
'texte ou null attendu.' => 'text or null expected.',
'année entre 1950 et 2100 ou null attendue.' => 'year between 1950 and 2100, or null, expected.',
'%d éléments au maximum.' => '%d items at most.',
'texte de 1 à 80 caractères attendu.' => 'text of 1 to 80 characters expected.',
'liste attendue.' => 'list expected.',
// --- Fiche profil
'%s d\'expérience' => '%s of experience',
'Télécharger le CV d\'origine' => 'Download original CV',
'Modifier' => 'Edit',
'Statut' => 'Status',
'Mettre à jour' => 'Update',
'Synthèse' => 'Summary',
'client : %s' => 'client: %s',
'Aucune expérience renseignée.' => 'No position recorded.',
'Technologies' => 'Technologies',
'Technologie' => 'Technology',
'Catégorie' => 'Category',
'Années' => 'Years',
'Aucune technologie renseignée.' => 'No technology recorded.',
'Formation et certifications' => 'Education and certifications',
'Coordonnées' => 'Contact details',
'Disponibilité' => 'Availability',
'Langues' => 'Languages',
'Aucune langue renseignée.' => 'No language recorded.',
'Photo' => 'Photo',
'Sert à reconnaître le candidat dans Vivier. Elle ne figure pas sur les CV exportés.' => 'Helps recognise the candidate in Vivier. It never appears on exported CVs.',
'Remplacer la photo' => 'Replace photo',
'Ajouter une photo' => 'Add a photo',
'Enregistrer la photo' => 'Save photo',
'Retirer la photo' => 'Remove photo',
'Retirer la photo de ce profil ?' => 'Remove the photo from this profile?',
'Photo enregistrée.' => 'Photo saved.',
'Photo retirée.' => 'Photo removed.',
'Cette image est illisible. Chargez un fichier JPEG ou PNG.' => 'This image cannot be read. Upload a JPEG or PNG file.',
'La photo n\'a pas pu être enregistrée.' => 'The photo could not be saved.',
'Mots-clés et classement' => 'Keywords and classification',
'Études' => 'Education',
'Encadrement' => 'Team management',
'Ajouté à la main' => 'Added by hand',
'Retirer %s' => 'Remove %s',
'Aucun mot-clé. La recherche s\'appuie sur le reste de la fiche.' => 'No keywords. Search relies on the rest of the profile.',
'Ajouter' => 'Add',
'Documents' => 'Documents',
'Lire' => 'Read',
'Supprimer' => 'Delete',
'Supprimer ce document ?' => 'Delete this document?',
'Ajouter un document' => 'Add a document',
'Document ajouté.' => 'Document added.',
'Document supprimé.' => 'Document deleted.',
'Commentaires' => 'Comments',
'Nouveau commentaire' => 'New comment',
'Publier' => 'Post',
'Aucun commentaire.' => 'No comments.',
'Le commentaire est vide.' => 'The comment is empty.',
'Historique' => 'History',
'Gestion' => 'Manage',
'Mettre à jour depuis une nouvelle analyse' => 'Update from a new analysis',
'Remplace les expériences, technologies, langues et mots-clés. Garde le statut, les commentaires, les documents et les mots ajoutés à la main.' => 'Replaces positions, technologies, languages and keywords. Keeps the status, comments, documents and keywords added by hand.',
'Nouveau CV, facultatif' => 'New CV, optional',
'Nouveau rapport, facultatif' => 'New report, optional',
'Supprimer le profil' => 'Delete profile',
'Supprimer définitivement ce profil, ses documents, ses commentaires et son historique ?' => 'Permanently delete this profile, its documents, comments and history?',
'Supprimer définitivement ce profil et ses documents ?' => 'Permanently delete this profile and its documents?',
'Profil %s supprimé, avec ses documents.' => 'Profile %s deleted, along with its documents.',
'Profil mis à jour. Le statut, les commentaires et les documents sont conservés.' => 'Profile updated. The status, comments and documents are kept.',
'Mise à jour refusée : %s' => 'Update rejected: %s',
'L\'adresse email de ce fichier appartient à un autre profil.' => 'The email address in this file belongs to another profile.',
'Télécharger le fichier' => 'Download file',
// --- Modification
'Modifier %s' => 'Edit %s',
'Modifier la fiche' => 'Edit profile',
'Chaque changement est tracé dans l\'historique. Pour corriger les expériences, les technologies ou les langues, mettez la fiche à jour depuis une nouvelle analyse.' => 'Every change is recorded in the history. To correct positions, technologies or languages, update the profile from a new analysis.',
'Prénom' => 'First name',
'Rue' => 'Street',
'Code postal' => 'Postcode',
'Ville' => 'City',
'Pays' => 'Country',
'%d champ modifié.' => '%d field changed.',
'%d champs modifiés.' => '%d fields changed.',
'Aucun changement.' => 'No changes.',
'Le prénom et le nom sont obligatoires.' => 'First name and last name are required.',
'Adresse email invalide.' => 'Invalid email address.',
'Un autre profil utilise déjà cette adresse email.' => 'Another profile already uses this email address.',
// --- Recherche
'Recherche' => 'Search',
'Recherche : %s' => 'Search: %s',
'Tous les profils' => 'All profiles',
'Langue' => 'Language',
'Effacer' => 'Clear',
'Exporter en CSV' => 'Export to CSV',
'Séniorité déduite de la recherche : %s.' => 'Seniority inferred from the search: %s.',
'Aucun profil ne correspond.' => 'No profile matches.',
'Tous les mots doivent figurer sur la fiche. Retirez un mot, ou placez une expression entre guillemets pour la chercher telle quelle.' => 'Every word must appear on the profile. Remove a word, or put a phrase in quotation marks to search for it exactly.',
// --- Export CSV
'Référence' => 'Reference',
'Années d\'expérience' => 'Years of experience',
'Niveau d\'études' => 'Education level',
'Reçu le' => 'Received on',
'Conservation jusqu\'au' => 'Keep until',
// --- Tableau de bord
'Aucun profil pour l\'instant.' => 'No profiles yet.',
'Les chiffres apparaîtront après le premier import.' => 'Figures will appear after the first import.',
'Profils dans le vivier' => 'Profiles in the pool',
'Reçus sur 30 jours' => 'Received in the last 30 days',
'En cours de parcours' => 'In the pipeline',
'Embauchés' => 'Hired',
'Conservation à traiter' => 'Retention to review',
'Profils par statut' => 'Profiles by status',
'Temps moyen passé à chaque étape' => 'Average time spent at each stage',
'Aucun changement de statut enregistré. Les délais se calculent à partir du premier passage d\'une étape à l\'autre.' => 'No status change recorded yet. Durations are computed from the first move between two stages.',
'%s j' => '%s d',
'sur %d passage' => 'over %d move',
'sur %d passages' => 'over %d moves',
'Durée entre l\'entrée dans un statut et sa sortie. Les profils supprimés ne comptent plus.' => 'Time between entering a status and leaving it. Deleted profiles no longer count.',
'Technologies les plus présentes' => 'Most common technologies',
'Aucune technologie enregistrée.' => 'No technology recorded.',
// --- Conservation
'%d profil à traiter' => '%d profile to review',
'%d profils à traiter' => '%d profiles to review',
'Profils dont la durée de conservation est dépassée ou se termine dans 60 jours. Prolongez si le candidat a confirmé son accord, sinon supprimez. La durée par défaut est de %d mois.' => 'Profiles whose retention period has expired or ends within 60 days. Extend if the candidate has confirmed their consent, otherwise delete. The default period is %d months.',
'Aucun profil n\'arrive à échéance.' => 'No profile is reaching its retention date.',
'Profil' => 'Profile',
'Échéance' => 'Due date',
'dépassée de %d j' => '%d d overdue',
'dans %d j' => 'in %d d',
'Prolonger' => 'Extend',
'Conservation prolongée de %d mois.' => 'Retention extended by %d months.',
// --- Journal
'%d dernière action' => 'last %d action',
'%d dernières actions' => 'last %d actions',
'Compte' => 'Account',
'Filtrer' => 'Filter',
'Aucune action enregistrée.' => 'No action recorded.',
'Date' => 'Date',
'Action' => 'Action',
'Détail' => 'Details',
'supprimé' => 'deleted',
'Création' => 'Created',
'Modification' => 'Edited',
'Changement de statut' => 'Status changed',
'Ajout de document' => 'Document added',
'Suppression de document' => 'Document deleted',
'Commentaire' => 'Comment',
'Export' => 'Export',
'Suppression' => 'Deleted',
'Analyse' => 'Analysis',
'Traduction' => 'Translation',
'statut' => 'status',
'Import de %s' => 'Import of %s',
'Analyse automatique de %s' => 'Automatic analysis of %s',
'Mise à jour depuis %s' => 'Update from %s',
'Profil %s supprimé' => 'Profile %s deleted',
'Liste CSV (%s profils)' => 'CSV list (%s profiles)',
'Traduction en %s' => 'Translation into %s',
'français' => 'French',
'anglais' => 'English',
'allemand' => 'German',
'Photo ajoutée' => 'Photo added',
'Photo retirée' => 'Photo removed',
'CV IT Club FR (Word)' => 'IT Club CV FR (Word)',
'CV IT Club FR (PDF)' => 'IT Club CV FR (PDF)',
'CV anonymisé FR (Word)' => 'Anonymised CV FR (Word)',
'CV anonymisé FR (PDF)' => 'Anonymised CV FR (PDF)',
'CV IT Club EN (Word)' => 'IT Club CV EN (Word)',
'CV IT Club EN (PDF)' => 'IT Club CV EN (PDF)',
'CV anonymisé EN (Word)' => 'Anonymised CV EN (Word)',
'CV anonymisé EN (PDF)' => 'Anonymised CV EN (PDF)',
'CV IT Club DE (Word)' => 'IT Club CV DE (Word)',
'CV IT Club DE (PDF)' => 'IT Club CV DE (PDF)',
'CV anonymisé DE (Word)' => 'Anonymised CV DE (Word)',
'CV anonymisé DE (PDF)' => 'Anonymised CV DE (PDF)',
'CV Europass FR (Word)' => 'Europass CV FR (Word)',
'CV Europass anonymisé FR (Word)' => 'Anonymised Europass CV FR (Word)',
'CV Europass FR (PDF)' => 'Europass CV FR (PDF)',
'CV Europass anonymisé FR (PDF)' => 'Anonymised Europass CV FR (PDF)',
'CV Europass EN (Word)' => 'Europass CV EN (Word)',
'CV Europass anonymisé EN (Word)' => 'Anonymised Europass CV EN (Word)',
'CV Europass EN (PDF)' => 'Europass CV EN (PDF)',
'CV Europass anonymisé EN (PDF)' => 'Anonymised Europass CV EN (PDF)',
'CV Europass DE (Word)' => 'Europass CV DE (Word)',
'CV Europass anonymisé DE (Word)' => 'Anonymised Europass CV DE (Word)',
'CV Europass DE (PDF)' => 'Europass CV DE (PDF)',
'CV Europass anonymisé DE (PDF)' => 'Anonymised Europass CV DE (PDF)',
// --- Aperçu du CV et traduction
'Retour à la fiche' => 'Back to profile',
'Version' => 'Version',
'Nominatif' => 'Named',
'Anonymisé' => 'Anonymised',
'Langue du CV' => 'CV language',
'Télécharger en Word' => 'Download as Word',
'Enregistrer en PDF' => 'Save as PDF',
'La fiche a changé depuis la traduction : le contenu s\'affiche dans sa langue d\'origine.' => 'The profile has changed since it was translated: the content is shown in its original language.',
'Seuls les intitulés sont traduits : le contenu reste dans la langue du CV d\'origine (%s).' => 'Only the headings are translated: the content stays in the language of the original CV (%s).',
'Traduction en cours…' => 'Translating…',
'Traduire le contenu' => 'Translate content',
'Traduire par fichier' => 'Translate with a file',
'Télécharger le fichier à traduire' => 'Download the file to translate',
'Le déposer dans votre projet Claude d\'analyse, qui renvoie le fichier traduit.' => 'Drop it into your Claude analysis project, which returns the translated file.',
'Charger le fichier traduit' => 'Upload the translated file',
'Enregistrer la traduction' => 'Save translation',
'Contenu traduit automatiquement le %s. Relisez-le avant d\'envoyer le CV.' => 'Content translated automatically on %s. Review it before sending the CV.',
'Contenu traduit par fichier le %s.' => 'Content translated from a file on %s.',
'Contenu traduit. Relisez-le avant d\'envoyer le CV.' => 'Content translated. Review it before sending the CV.',
'Traduction enregistrée.' => 'Translation saved.',
'La traduction automatique n\'est pas disponible.' => 'Automatic translation is not available.',
'La traduction automatique n\'a pas abouti. Réessayez, ou passez par le fichier de traduction.' => 'Automatic translation did not complete. Try again, or use the translation file.',
'La traduction reçue est illisible.' => 'The translation received cannot be read.',
'La traduction reçue ne correspond pas à ce profil.' => 'The translation received does not match this profile.',
'Ce fichier n\'est pas une traduction produite pour Vivier.' => 'This file is not a translation made for Vivier.',
'Cette traduction concerne un autre profil (%s).' => 'This translation is for another profile (%s).',
'La langue de cette traduction n\'est pas gérée.' => 'The language of this translation is not supported.',
'Le fichier Word n\'a pas pu être créé.' => 'The Word file could not be created.',
// --- Libellés du CV généré
'Expérience' => 'Experience',
'Localisation' => 'Location',
'Compétences techniques' => 'Technical skills',
'Expériences professionnelles' => 'Professional experience',
'Formation' => 'Education',
'Certifications' => 'Certifications',
'Environnement :' => 'Environment:',
'Environnement' => 'Environment',
'Client : %s' => 'Client: %s',
'Profil %s' => 'Profile %s',
'Pour rencontrer ce consultant : %s' => 'To meet this consultant: %s',
'TVA %s' => 'VAT %s',
'Langages' => 'Programming languages',
'Frameworks' => 'Frameworks',
'Bases de données' => 'Databases',
'Outils' => 'Tools',
'Méthodes' => 'Methods',
'Autres' => 'Other',
// --- Noms de langues, tels que l'analyse les écrit
'Français' => 'French',
'Anglais' => 'English',
'Allemand' => 'German',
'Luxembourgeois' => 'Luxembourgish',
'Néerlandais' => 'Dutch',
'Espagnol' => 'Spanish',
'Italien' => 'Italian',
'Portugais' => 'Portuguese',
'Arabe' => 'Arabic',
'Russe' => 'Russian',
'Polonais' => 'Polish',
'Roumain' => 'Romanian',
'Chinois' => 'Chinese',
'Grec' => 'Greek',
'Turc' => 'Turkish',
// --- Version 1.4 : suivi, besoins clients, import en lot, sauvegarde
'%d CV attend son analyse. Elle démarre seule : gardez cette page ouverte.' => '%d CV is waiting to be analysed. It starts by itself: keep this page open.',
'%d CV attendent leur analyse. Elle démarre seule : gardez cette page ouverte.' => '%d CVs are waiting to be analysed. It starts by itself: keep this page open.',
'%d CV dans le lot' => '%d CVs in the batch',
'%d CV déposé.' => '%d CV added.',
'%d CV déposés.' => '%d CVs added.',
'%d besoin' => '%d request',
'%d besoins' => '%d requests',
'%d copie sur le serveur' => '%d copy on the server',
'%d copies sur le serveur' => '%d copies on the server',
'%d document' => '%d document',
'%d documents' => '%d documents',
'%d profil archivé' => '%d archived profile',
'%d profils archivés' => '%d archived profiles',
'%d profil déposé.' => '%d profile added.',
'%d profils déposés.' => '%d profiles added.',
'%d profil enregistré dans la colonne Reçu.' => '%d profile saved in the Received column.',
'%d profils enregistrés dans la colonne Reçu.' => '%d profiles saved in the Received column.',
'%d profil proposé' => '%d profile put forward',
'%d profils proposés' => '%d profiles put forward',
'%d profil ressemble à un profil existant : relisez-le avant de l\'enregistrer.' => '%d profile looks like an existing one: review it before saving.',
'%d profils ressemblent à des profils existants : relisez-les avant de les enregistrer.' => '%d profiles look like existing ones: review them before saving.',
'%d relance à faire' => '%d follow-up due',
'%d relances à faire' => '%d follow-ups due',
'%d semaine' => '%d week',
'%d semaines' => '%d weeks',
'%s (copie supprimée)' => '%s (copy deleted)',
'%s (créé)' => '%s (created)',
'%s (faite)' => '%s (done)',
'%s (mis à jour)' => '%s (updated)',
'%s (modifié)' => '%s (edited)',
'%s (profil retiré)' => '%s (profile removed)',
'%s (supprimé)' => '%s (deleted)',
'%s (supprimée)' => '%s (deleted)',
'%s (téléchargée)' => '%s (downloaded)',
'%s : analyse terminée.' => '%s: analysis complete.',
'%s : aucun profil JSON ne nomme ce fichier.' => '%s: no JSON profile names this file.',
'%s : date invalide.' => '%s: invalid date.',
'%s : le CV « %s » nommé dans ce profil n\'est pas parmi les fichiers déposés.' => '%s: the CV "%s" named in this profile is not among the files added.',
'%s : le lot est plein (%d CV au plus).' => '%s: the batch is full (%d CVs at most).',
'%s : nombre entier attendu, sans espace ni symbole.' => '%s: whole number expected, with no space or symbol.',
'%s : profil illisible ou sans nom de CV d\'origine.' => '%s: unreadable profile, or no original CV name in it.',
'%s : valeur inconnue.' => '%s: unknown value.',
'%s absent' => '%s missing',
'%s au moins' => '%s or above',
'%s brut par an' => '%s gross per year',
'%s par jour' => '%s per day',
'Accord' => 'Consent',
'Accord du %s' => 'Consent given on %s',
'Accord enregistré.' => 'Consent recorded.',
'Accord retiré' => 'Consent withdrawn',
'Accord retiré.' => 'Consent withdrawn.',
'Ajouter un entretien' => 'Add an interview',
'Analyser' => 'Analyse',
'Analyses terminées. La page se recharge.' => 'Analyses complete. The page is reloading.',
'Archivage' => 'Archived',
'Archive des fichiers' => 'Files archive',
'Archiver le profil' => 'Archive the profile',
'Archivé' => 'Archived',
'Archivé le' => 'Archived on',
'Archivés' => 'Archived',
'Aucun' => 'None',
'Aucun besoin avec ce statut.' => 'No request with this status.',
'Aucun besoin enregistré.' => 'No request recorded.',
'Aucun entretien enregistré.' => 'No interview recorded.',
'Aucun entretien prévu. Un entretien se saisit sur la fiche d\'un profil.' => 'No interview planned. Interviews are added from a profile page.',
'Aucun fichier reçu.' => 'No file received.',
'Aucun profil ne porte les technologies ni les mots de l\'intitulé. Élargissez la demande, ou importez de nouveaux CV.' => 'No profile has the technologies or the words of the job title. Widen the request, or import new CVs.',
'Aucun profil proposé. Choisissez-en dans la liste ci-dessous, ou depuis la fiche d\'un profil.' => 'No profile put forward. Pick some from the list below, or from a profile page.',
'Aucun profil prêt à enregistrer.' => 'No profile ready to save.',
'Aucune relance prévue.' => 'No follow-up planned.',
'Aucune relance prévue. Une relance se crée sur la fiche d\'un profil.' => 'No follow-up planned. Follow-ups are created from a profile page.',
'Aucune sauvegarde de la base n\'a encore été faite.' => 'No database backup has been made yet.',
'Aucune sauvegarde pour l\'instant.' => 'No backup yet.',
'Avis' => 'Assessment',
'Avis inconnu.' => 'Unknown assessment.',
'Besoin client' => 'Client request',
'Besoin client concerné' => 'Related client request',
'Besoin enregistré.' => 'Request saved.',
'Besoin introuvable' => 'Request not found',
'Besoin introuvable.' => 'Request not found.',
'Besoin mis à jour.' => 'Request updated.',
'Besoin supprimé.' => 'Request deleted.',
'Besoins' => 'Requests',
'Besoins clients' => 'Client requests',
'Besoins ouverts' => 'Open requests',
'Budget' => 'Budget',
'Budget journalier' => 'Daily budget',
'Budget journalier, en euros' => 'Daily budget, in euros',
'C\'est une autre personne : enregistrer un nouveau profil' => 'This is someone else: save a new profile',
'CV des candidats (PDF, DOCX, ODT, MD ou TXT)' => 'Candidates\' CVs (PDF, DOCX, ODT, MD or TXT)',
'CV retiré du lot.' => 'CV removed from the batch.',
'CV à analyser' => 'CVs to analyse',
'Ce CV n\'est plus dans le lot.' => 'This CV is no longer in the batch.',
'Ce candidat est déjà dans Vivier.' => 'This candidate is already in Vivier.',
'Ce profil est archivé. Désarchivez-le pour changer son statut.' => 'This profile is archived. Unarchive it to change its status.',
'Ce profil n\'est proposé pour aucun besoin.' => 'This profile is not put forward for any request.',
'Client' => 'Client',
'Compte rendu' => 'Notes',
'Consentement' => 'Consent',
'Consentement le' => 'Consent given on',
'Contenu du lot' => 'Batch contents',
'Copie supprimée du serveur.' => 'Copy deleted from the server.',
'Copies gardées' => 'Copies kept',
'Date de l\'accord' => 'Date of consent',
'Demande' => 'Requirements',
'Dernière réussie' => 'Last successful',
'Dernière sauvegarde réussie il y a %d jours.' => 'Last successful backup %d days ago.',
'Description' => 'Description',
'Disponible après le début de la mission' => 'Available after the assignment starts',
'Disponible le' => 'Available from',
'Donner l\'avis et le compte rendu' => 'Add the assessment and notes',
'Données commerciales' => 'Commercial details',
'Données personnelles' => 'Personal data',
'Début' => 'Start',
'Début souhaité' => 'Requested start',
'Défavorable' => 'Negative',
'Déposer les CV' => 'Add the CVs',
'Déposer les fichiers' => 'Add the files',
'Déposez plusieurs CV d\'un coup : %d au plus. Chaque profil est relu avant d\'entrer dans le Kanban. Un CV laissé dans le lot est retiré après 7 jours.' => 'Add several CVs at once: %d at most. Each profile is reviewed before it enters the board. A CV left in the batch is removed after 7 days.',
'Désarchivage' => 'Unarchived',
'Désarchiver' => 'Unarchive',
'Développeur Java senior' => 'Senior Java developer',
'Email d\'essai remis au serveur. Vérifiez les boîtes de réception, courriers indésirables compris.' => 'Test email handed to the server. Check the inboxes, spam folders included.',
'Email du candidat, formulaire, entretien' => 'Candidate\'s email, form, interview',
'Email envoyé avec la sauvegarde en pièce jointe.' => 'Email sent with the backup attached.',
'Email envoyé sans pièce jointe : le fichier dépasse la taille admise.' => 'Email sent without attachment: the file is over the size limit.',
'Email non parti' => 'Email not sent',
'Email sans pièce jointe' => 'Email without attachment',
'En attente' => 'Waiting',
'Enregistrer l\'accord du candidat' => 'Record the candidate\'s consent',
'Enregistrer l\'entretien' => 'Save the interview',
'Enregistrer le besoin' => 'Save the request',
'Enregistrer le profil prêt' => 'Save the ready profile',
'Enregistrer les %d profils prêts' => 'Save the %d ready profiles',
'Enregistrer tous les profils prêts, sans les relire un par un ?' => 'Save all ready profiles, without reviewing them one by one?',
'Entretien' => 'Interview',
'Entretien client' => 'Client interview',
'Entretien enregistré.' => 'Interview saved.',
'Entretien le %s' => 'Interview on %s',
'Entretien mis à jour.' => 'Interview updated.',
'Entretien supprimé.' => 'Interview deleted.',
'Entretien technique' => 'Technical interview',
'Entretiens' => 'Interviews',
'Entretiens des 30 prochains jours' => 'Interviews in the next 30 days',
'Entretiens en cours' => 'Interviewing',
'Entretiens passés sans avis' => 'Past interviews without assessment',
'Entretiens sur 7 jours' => 'Interviews within 7 days',
'Envoi' => 'Sent to',
'Envoyer aussi la sauvegarde par email' => 'Also send the backup by email',
'Envoyer un email d\'essai, sans pièce jointe' => 'Send a test email, without attachment',
'Envoyée par email' => 'Sent by email',
'Erreur' => 'Error',
'Export des données personnelles' => 'Personal data export',
'Exporter les données du candidat' => 'Export the candidate\'s data',
'Favorable' => 'Positive',
'Fermé' => 'Closed',
'Fichier' => 'File',
'Français, Anglais' => 'French, English',
'Heure invalide.' => 'Invalid time.',
'Heure, facultative' => 'Time, optional',
'Historique des sauvegardes' => 'Backup history',
'Il n\'apparaît plus dans le Kanban ni dans les chiffres. Ses données et ses documents sont conservés.' => 'It no longer shows on the board or in the figures. Its data and documents are kept.',
'Import en lot' => 'Batch import',
'Importer plusieurs CV' => 'Import several CVs',
'Inclus' => 'Included',
'Indifférente' => 'Any',
'Indiquez l\'objet de la relance.' => 'Say what the follow-up is about.',
'Intitulé du poste' => 'Job title',
'L\'archive n\'a pas pu être créée.' => 'The archive could not be created.',
'L\'email d\'essai n\'est pas parti. Vérifiez les adresses dans config/config.php.' => 'The test email was not sent. Check the addresses in config/config.php.',
'L\'email n\'est pas parti. %s' => 'The email was not sent. %s',
'La date de l\'accord ne peut pas être dans le futur.' => 'The date of consent cannot be in the future.',
'La dernière sauvegarde a rencontré un problème.' => 'The last backup ran into a problem.',
'La sauvegarde a échoué : %s' => 'The backup failed: %s',
'La tâche planifiée de l\'hébergement lance cette sauvegarde chaque semaine et l\'envoie par email. Le fichier contient les données des candidats et n\'est pas chiffré : la protection repose sur celle des boîtes de réception.' => 'The hosting\'s scheduled task runs this backup every week and emails it. The file holds candidates\' data and is not encrypted: its protection is that of the inboxes.',
'La tâche planifiée de l\'hébergement ne tourne pas, ou elle échoue. Lancez une sauvegarde ci-dessous, puis vérifiez la tâche dans l\'espace client OVH.' => 'The hosting\'s scheduled task is not running, or it fails. Run a backup below, then check the task in the OVH control panel.',
'Langue absente de la fiche : %s' => 'Language missing from the profile: %s',
'Langues demandées, séparées par des virgules' => 'Required languages, separated by commas',
'Le client et l\'intitulé sont obligatoires.' => 'The client and the job title are required.',
'Le lot est plein. Enregistrez ou retirez des CV pour en déposer d\'autres.' => 'The batch is full. Save or remove CVs to add more.',
'Le profil sort du Kanban et des chiffres. Il reste consultable dans Profils, filtre « Archivés ».' => 'The profile leaves the board and the figures. It stays available in Profiles, "Archived" filter.',
'Les CV, rapports, pièces jointes et photos sont trop lourds pour un email. Téléchargez leur archive et gardez-la avec la sauvegarde de la base du même jour.' => 'CVs, reports, attachments and photos are too heavy for an email. Download their archive and keep it with the database backup of the same day.',
'Lieu' => 'Location',
'Luxembourg, Metz, déplacements ponctuels' => 'Luxembourg, Metz, occasional travel',
'Manuelle, %s' => 'Manual, %s',
'Marquer comme faite' => 'Mark as done',
'Masqués' => 'Hidden',
'Mené par' => 'Conducted by',
'Mobilité' => 'Mobility',
'Modifier l\'accord' => 'Edit the consent',
'Modifier le besoin' => 'Edit the request',
'Non précisé' => 'Not specified',
'Note' => 'Note',
'Note de rapprochement sur 100' => 'Match score out of 100',
'Note sur 100 : technologies 55, intitulé 15, séniorité 10, langues 10, disponibilité 5, tarif 5. Une donnée inconnue vaut la moitié des points. Les profils archivés ou non retenus sont exclus.' => 'Score out of 100: technologies 55, job title 15, seniority 10, languages 10, availability 5, rate 5. An unknown value earns half the points. Archived and rejected profiles are left out.',
'Notez la date à laquelle le candidat a accepté que IT Club conserve son CV, et la façon dont il l\'a dit.' => 'Record the date the candidate agreed that IT Club keeps their CV, and how they said so.',
'Nouveau besoin' => 'New request',
'Origine' => 'Source',
'Ouvert' => 'Open',
'Ouvrir la page Sauvegarde' => 'Open the Backup page',
'Pas encore d\'avis' => 'No assessment yet',
'Passer le profil en « Entretiens en cours »' => 'Move the profile to "Interviewing"',
'Pour mettre sa fiche à jour, ouvrez le profil existant, carte Gestion, « Mettre à jour depuis une nouvelle analyse ».' => 'To update their record, open the existing profile, Management card, "Update from a new analysis".',
'Pourvu' => 'Filled',
'Profil ajouté à ce besoin.' => 'Profile added to this request.',
'Profil archivé le %s.' => 'Profile archived on %s.',
'Profil archivé. Il reste dans Profils, filtre « Archivés ».' => 'Profile archived. It stays in Profiles, "Archived" filter.',
'Profil désarchivé. Il est de retour dans le Kanban.' => 'Profile unarchived. It is back on the board.',
'Profil retiré de ce besoin.' => 'Profile removed from this request.',
'Profils (.json), CV et rapports' => 'Profiles (.json), CVs and reports',
'Profils archivés' => 'Archived profiles',
'Profils du vivier qui répondent au besoin' => 'Profiles in the pool that match the request',
'Profils déjà analysés' => 'Profiles already analysed',
'Profils proposés' => 'Profiles put forward',
'Proposer' => 'Put forward',
'Proposer pour un besoin ouvert' => 'Put forward for an open request',
'Proposition mise à jour.' => 'Proposal updated.',
'Présenté au client' => 'Presented to the client',
'Prévoir la relance' => 'Plan the follow-up',
'Prêt à relire' => 'Ready for review',
'Rappeler après sa fin de mission' => 'Call back after their assignment ends',
'Recueilli comment' => 'How it was obtained',
'Relance' => 'Follow-up',
'Relance enregistrée.' => 'Follow-up saved.',
'Relance faite.' => 'Follow-up done.',
'Relance supprimée.' => 'Follow-up deleted.',
'Relancer l\'analyse' => 'Run the analysis again',
'Relances' => 'Follow-ups',
'Relances à faire' => 'Follow-ups due',
'Relire' => 'Review',
'Ressemble à %s' => 'Looks like %s',
'Retenu par le client' => 'Selected by the client',
'Retirer' => 'Remove',
'Retirer de ce besoin' => 'Remove from this request',
'Retirer l\'accord' => 'Withdraw the consent',
'Retour au lot' => 'Back to the batch',
'Réservé' => 'Mixed',
'Réservées à IT Club. Elles ne figurent sur aucun CV exporté.' => 'For IT Club only. They never appear on an exported CV.',
'Résultat' => 'Result',
'Salaire annuel brut souhaité, en euros' => 'Expected gross annual salary, in euros',
'Salaire souhaité' => 'Expected salary',
'Sans email' => 'No email',
'Sauvegarde' => 'Backup',
'Sauvegarde en cours. Gardez la page ouverte.' => 'Backup in progress. Keep the page open.',
'Sauvegarde en cours…' => 'Backing up…',
'Sauvegarde faite : %s (%s).' => 'Backup done: %s (%s).',
'Sauvegarde introuvable' => 'Backup not found',
'Sauvegarder maintenant' => 'Back up now',
'Seulement' => 'Only',
'Statut du besoin' => 'Request status',
'Suivi' => 'Follow-up',
'Supprimer ce besoin et la liste des profils proposés ? Les profils eux-mêmes sont conservés.' => 'Delete this request and its list of profiles put forward? The profiles themselves are kept.',
'Supprimer cet entretien' => 'Delete this interview',
'Supprimer cet entretien ?' => 'Delete this interview?',
'Supprimer cette copie du serveur ? Les copies reçues par email ne sont pas touchées.' => 'Delete this copy from the server? Copies received by email are not affected.',
'Supprimer le besoin' => 'Delete the request',
'Sur place' => 'On site',
'Sur site' => 'On site',
'Sélectionnez ensemble les fichiers JSON, les CV d\'origine et les rapports. Vivier associe chaque profil au CV que nomme son JSON.' => 'Select the JSON files, the original CVs and the reports together. Vivier pairs each profile with the CV its JSON names.',
'Séniorité inférieure à la demande' => 'Seniority below the requirement',
'Séniorité minimale' => 'Minimum seniority',
'TJM %s' => 'Daily rate %s',
'TJM souhaité' => 'Expected daily rate',
'TJM souhaité au-dessus du budget' => 'Expected daily rate above the budget',
'TJM souhaité, en euros' => 'Expected daily rate, in euros',
'Taille' => 'Size',
'Technologies demandées, séparées par des virgules' => 'Required technologies, separated by commas',
'Type d\'entretien inconnu.' => 'Unknown interview type.',
'Tâche planifiée' => 'Scheduled task',
'Télécharger' => 'Download',
'Télécharger l\'archive des fichiers' => 'Download the files archive',
'Télétravail' => 'Remote work',
'Télétravail complet' => 'Fully remote',
'Télétravail partiel' => 'Partly remote',
'Un besoin décrit une mission à pourvoir chez un client. Vivier propose les profils qui y répondent le mieux.' => 'A request describes an assignment to fill at a client. Vivier suggests the profiles that match it best.',
'Un fichier zip avec tout ce que Vivier détient sur cette personne. À lui remettre s\'il demande l\'accès à ses données.' => 'A zip file with everything Vivier holds on this person. Hand it over if they ask for access to their data.',
'Un profil ressemblant existe déjà.' => 'A similar profile already exists.',
'Un profil ressemblant existe déjà. Cochez la case pour confirmer qu\'il s\'agit d\'une autre personne.' => 'A similar profile already exists. Tick the box to confirm this is someone else.',
'Visioconférence' => 'Video call',
'Vivier envoie chaque CV à Claude, l\'un après l\'autre. Comptez une à deux minutes par CV.' => 'Vivier sends each CV to Claude, one after the other. Allow one to two minutes per CV.',
'adresses absentes de config/config.php' => 'addresses missing from config/config.php',
'ajouté par %s le %s' => 'added by %s on %s',
'aucune' => 'none',
'aujourd\'hui' => 'today',
'avis : %s' => 'assessment: %s',
'avis à donner' => 'assessment needed',
'besoin %s' => 'request %s',
'copie supprimée' => 'copy deleted',
'créé par %s le %s' => 'created by %s on %s',
'créée par %s' => 'created by %s',
'depuis %s' => 'from %s',
'disponible le %s' => 'available from %s',
'donné le %s' => 'given on %s',
'début le %s' => 'starts on %s',
'en retard de %d j' => '%d d overdue',
'et les photos' => 'plus the photos',
'faite le %s par %s' => 'done on %s by %s',
'hors de ces chiffres.' => 'not counted in these figures.',
'jusqu\'au %s' => 'until %s',
'mené par %s' => 'conducted by %s',
'même adresse email' => 'same email address',
'même prénom et même nom' => 'same first name and name',
'même téléphone' => 'same phone number',
'non enregistré' => 'not recorded',
'profil archivé' => 'archived profile',
'saisi par %s' => 'entered by %s',
'sans limite de durée' => 'no time limit',
'À faire' => 'To do',
'À présenter' => 'To present',
'Écarté' => 'Set aside',
'Échec' => 'Failed',
'État' => 'Status',
'à venir' => 'upcoming',
'Sections de la fiche' => 'Profile sections',
'Aucun profil' => 'No profile',
'Fermer' => 'Close',
'Exemple : %s' => 'Example: %s',
'%d action plus ancienne' => '%d older entry',
'%d actions plus anciennes' => '%d older entries',
'Guide d\'utilisation' => 'User guide',
'Guide d\'administration' => 'Administration guide',
'Aide' => 'Help',
'Langue du guide' => 'Guide language',
'Imprimer ou enregistrer en PDF' => 'Print or save as PDF',
'Sommaire' => 'Contents',
// --- Version 1.5 : corbeille, demandes de compte
'Mise à la corbeille' => 'Moved to trash',
'Restauration' => 'Restore',
'Corbeille' => 'Trash',
'Pas encore de compte ? Demander un accès' => 'No account yet? Request access',
'Demander un accès' => 'Request access',
'La suppression revient au gestionnaire des comptes.' => 'Only the account manager can delete.',
'Un profil supprimé part à la corbeille, d\'où il est effacé après %d jours.' => 'A deleted profile goes to the trash and is erased after %d days.',
'Effacement' => 'Erased on',
'Effacer ce profil pour de bon, avec ses documents ? Cette action est sans retour.' => 'Erase this profile for good, along with its documents? This cannot be undone.',
'Effacer maintenant' => 'Erase now',
'La corbeille est vide.' => 'The trash is empty.',
'Restaurer' => 'Restore',
'Supprimé le' => 'Deleted on',
'Un profil supprimé reste ici %d jours, puis Vivier l\'efface avec ses documents, sa photo, ses commentaires, ses entretiens, ses relances et ses mots-clés. Pendant ce délai, il n\'apparaît nulle part ailleurs. Les sauvegardes déjà faites gardent leur contenu.' => 'A deleted profile stays here for %d days, then Vivier erases it along with its documents, photo, comments, interviews, follow-ups and keywords. Until then it appears nowhere else. Backups already made keep their content.',
'au prochain passage' => 'at the next run',
'%s (demande acceptée)' => '%s (request approved)',
'%s (demande refusée)' => '%s (request declined)',
'%s (désactivé)' => '%s (disabled)',
'%s (réactivé)' => '%s (re-enabled)',
'%s (à la corbeille depuis le %s)' => '%s (in the trash since %s)',
'Suppression impossible : aucun compte à qui l\'attribuer.' => 'Cannot delete: no account to attribute the action to.',
'Demandes de compte à valider' => 'Account requests to approve',
'Ce profil est à la corbeille : le gestionnaire des comptes peut le restaurer, ou l\'effacer pour libérer son adresse email.' => 'This profile is in the trash: the account manager can restore it, or erase it to free its email address.',
'profil à la corbeille' => 'profile in the trash',
'à la corbeille' => 'in the trash',
'%d profil effacé : son délai de %d jours était passé.' => '%d profile erased: its %d-day period had ended.',
'%d profils effacés : leur délai de %d jours était passé.' => '%d profiles erased: their %d-day period had ended.',
'Ce compte est désactivé. Adressez-vous au gestionnaire de Vivier.' => 'This account is disabled. Contact the Vivier account manager.',
'Ce profil n\'est plus dans la corbeille.' => 'This profile is no longer in the trash.',
'Cette demande n\'existe plus.' => 'This request no longer exists.',
'Compte %s accepté. Prévenez la personne : elle peut se connecter.' => 'Account %s approved. Let the person know: they can sign in.',
'Compte désactivé : il ne peut plus se connecter.' => 'Account disabled: it can no longer sign in.',
'Compte introuvable.' => 'Account not found.',
'Compte réactivé.' => 'Account re-enabled.',
'Demande de %s refusée et effacée.' => 'Request from %s declined and erased.',
'Profil %s effacé pour de bon, avec ses documents.' => 'Profile %s erased for good, along with its documents.',
'Profil %s mis à la corbeille. Il sera effacé pour de bon dans %d jours.' => 'Profile %s moved to the trash. It will be erased for good in %d days.',
'Profil %s restauré.' => 'Profile %s restored.',
'Trop de demandes pour le moment. Réessayez plus tard ou adressez-vous au gestionnaire de Vivier.' => 'Too many requests for now. Try again later or contact the Vivier account manager.',
'Votre demande de compte attend l\'accord du gestionnaire. Vous pourrez vous connecter ensuite.' => 'Your account request is waiting for the account manager\'s approval. You can sign in after that.',
'Demande enregistrée' => 'Request recorded',
'Demander un accès. Le gestionnaire valide chaque compte avant la première connexion.' => 'Request access. The account manager approves each account before its first sign-in.',
'Envoyer la demande' => 'Send request',
'J\'ai déjà un compte' => 'I already have an account',
'Ne pas remplir ce champ' => 'Leave this field empty',
'Retour à la connexion' => 'Back to sign-in',
'Votre demande est transmise au gestionnaire de Vivier. Vous pourrez vous connecter dès qu\'il l\'aura acceptée. Aucun message automatique ne vous préviendra.' => 'Your request has been sent to the Vivier account manager. You can sign in once it is approved. No automatic message will tell you.',
'Le profil part à la corbeille. Vous pouvez le restaurer pendant %d jours.' => 'The profile goes to the trash. You can restore it for %d days.',
'Seul le gestionnaire des comptes peut supprimer un profil.' => 'Only the account manager can delete a profile.',
'Supprimer ce profil ? Il part à la corbeille, puis il est effacé avec ses documents au bout de %d jours.' => 'Delete this profile? It goes to the trash, then it is erased with its documents after %d days.',
'Accepter' => 'Approve',
'Aucune demande en attente.' => 'No request pending.',
'Ces personnes ne peuvent pas se connecter avant votre accord. Vivier ne les prévient pas : faites-le vous-même.' => 'These people cannot sign in before you approve. Vivier does not notify them: do it yourself.',
'Chaque compte lit et modifie tous les profils. Une personne demande son compte depuis la page de connexion, ou vous le créez ici. Seul le gestionnaire accepte les demandes et supprime des profils.' => 'Every account reads and edits all profiles. A person requests an account from the sign-in page, or you create it here. Only the account manager approves requests and deletes profiles.',
'Demande du %s' => 'Requested on %s',
'Demandes à valider' => 'Account requests to approve',
'Refuser' => 'Decline',
'Refuser cette demande ? Elle est effacée.' => 'Decline this request? It is erased.',
// --- Fiche profil en onglets (1.6)
'le %s' => 'on %s',
'Relances en retard et avis à donner' => 'Overdue follow-ups and feedback to give',
'Missions' => 'Assignments',
'Dossier' => 'File',
'Conservation dépassée' => 'Retention period over',
'%d relance en retard' => '%d overdue follow-up',
'%d relances en retard' => '%d overdue follow-ups',
'%d avis d\'entretien à donner' => '%d interview feedback to give',
'Prochain entretien : %s' => 'Next interview: %s',
'Conservation dépassée depuis le %s' => 'Retention period over since %s',
'Voir %d expérience plus ancienne' => 'Show %d older position',
'Voir %d expériences plus anciennes' => 'Show %d older positions',
'Voir %d autre technologie' => 'Show %d more technology',
'Voir %d autres technologies' => 'Show %d more technologies',
'Prévoir une relance' => 'Plan a follow-up',
'Selon le CV' => 'According to the CV',
'Aucun document.' => 'No documents.',
// --- Finitions (1.7)
'Date ferme. Elle sert au rapprochement avec les besoins.' => 'A firm date. It feeds the matching with client requests.',
'Enregistré en capitales.' => 'Saved in capitals.',
'Identité et CV' => 'Identity and CV',
'L\'email, le téléphone et la rue ne figurent sur aucun CV. La ville et le pays apparaissent sur le CV nominatif.' => 'Email, phone and street never appear on a CV. City and country appear on the named CV.',
'Préavis de 2 mois' => '2 months\' notice',
'Telle qu\'affichée sur le CV.' => 'As shown on the CV.',
'%d relance prévue' => '%d follow-up planned',
'%d relances prévues' => '%d follow-ups planned',
'dont %d à faire aujourd\'hui ou en retard' => '%d due today or overdue',
'Filtres' => 'Filters',
'Ces informations figurent sur le CV IT Club.' => 'This information appears on the IT Club CV.',
// --- Sécurité des accès (1.8)
'Continuer' => 'Continue',
'Code' => 'Code',
'Activer' => 'Turn on',
'Étape suivante : le code de votre application d\'authentification.' => 'Next step: the code from your authenticator app.',
'Étape suivante : la double authentification. Gardez votre téléphone à portée de main.' => 'Next step: two-step verification. Keep your phone at hand.',
'Pas encore de compte ?' => 'No account yet?',
'Comment Vivier protège vos accès' => 'How Vivier protects your access',
'Saisissez le code à 6 chiffres affiché par votre application d\'authentification.' => 'Enter the 6-digit code shown by your authenticator app.',
'Téléphone perdu ou pas sous la main ?' => 'Lost your phone or don\'t have it with you?',
'Saisissez un de vos codes de secours dans le même champ, par exemple « abcd-efgh ». Chaque code ne sert qu\'une fois.' => 'Enter one of your backup codes in the same field, for example "abcd-efgh". Each code works once.',
'Plus de codes de secours ? Le gestionnaire de Vivier remet votre double authentification à zéro : vous en activerez une nouvelle à la connexion suivante.' => 'No backup codes left? The Vivier account manager resets your two-step verification. You set it up again at your next sign-in.',
'Vérification' => 'Verification',
'Code de secours accepté. Il vous en reste %d.' => 'Backup code accepted. You have %d left.',
'Générez-en de nouveaux dans Mon compte.' => 'Generate new ones in My account.',
'Code incorrect. Vérifiez l\'heure de votre téléphone, ou utilisez un code de secours.' => 'Wrong code. Check the time on your phone, or use a backup code.',
'Code incorrect. Vérifiez que l\'heure de votre téléphone est juste, puis saisissez le code affiché maintenant.' => 'Wrong code. Check that your phone shows the right time, then enter the code displayed now.',
'Votre session est terminée. Reconnectez-vous.' => 'Your session has ended. Please sign in again.',
'Vivier ne s\'utilise qu\'en HTTPS.' => 'Vivier only works over HTTPS.',
'Double authentification' => 'Two-step verification',
'Installez une application d\'authentification sur votre téléphone.' => 'Install an authenticator app on your phone.',
'Google Authenticator, Microsoft Authenticator ou le gestionnaire de mots de passe que vous utilisez déjà (Bitwarden, 1Password, Mots de passe d\'Apple).' => 'Google Authenticator, Microsoft Authenticator, or the password manager you already use (Bitwarden, 1Password, Apple Passwords).',
'Dans l\'application, ajoutez un compte et scannez ce QR code.' => 'In the app, add an account and scan this QR code.',
'QR code à scanner' => 'QR code to scan',
'Pas de QR code ? Saisissez cette clé à la main, en type « basé sur l\'heure » :' => 'Can\'t scan? Type this key by hand, as a "time-based" key:',
'Saisissez le code à 6 chiffres que l\'application affiche.' => 'Enter the 6-digit code the app shows.',
'Votre mot de passe' => 'Your password',
'Configurer une autre application' => 'Set up another app',
'Nouveau téléphone ou nouvelle application : l\'ancienne cessera de fonctionner dès que celle-ci sera activée. Vos autres sessions seront fermées et vous recevrez dix nouveaux codes de secours.' => 'New phone or new app: the old one stops working as soon as this one is on. Your other sessions close and you get ten new backup codes.',
'Dernière étape : la double authentification. À chaque connexion, Vivier vous demandera votre mot de passe puis un code de votre téléphone.' => 'Last step: two-step verification. Each time you sign in, Vivier asks for your password, then a code from your phone.',
'Pourquoi cette étape ?' => 'Why this step?',
'Vos codes de secours' => 'Your backup codes',
'Gardez ces dix codes en lieu sûr : gestionnaire de mots de passe, papier rangé. Chacun remplace une fois le code du téléphone, si vous le perdez ou l\'oubliez.' => 'Keep these ten codes somewhere safe: a password manager, or paper stored away. Each one replaces the phone code once, if you lose or forget your phone.',
'Ils ne seront plus jamais affichés. Les codes précédents ne marchent plus.' => 'They will never be shown again. Your previous codes no longer work.',
'Copier les codes' => 'Copy the codes',
'Copiés' => 'Copied',
'Copié' => 'Copied',
'Copier' => 'Copy',
'Imprimer' => 'Print',
'J\'ai gardé mes codes, continuer' => 'I have saved my codes, continue',
'Codes de secours' => 'Backup codes',
'Le gestionnaire vous a donné ce mot de passe. Choisissez le vôtre : lui seul le connaîtra.' => 'The account manager gave you this password. Choose your own: only you will know it.',
'Une phrase de plusieurs mots se retient mieux qu\'un mélange de signes. Vivier refuse les mots de passe connus dans des fuites de données.' => 'A phrase of several words is easier to remember than a jumble of symbols. Vivier rejects passwords found in known data breaches.',
'Nouveau mot de passe' => 'New password',
'Choisissez un mot de passe différent de celui que vous avez reçu.' => 'Choose a password different from the one you received.',
'Ce mot de passe figure dans des fuites de données connues. Choisissez-en un autre.' => 'This password appears in known data breaches. Choose another one.',
'Le mot de passe compte au plus %d caractères.' => 'The password can have at most %d characters.',
'Votre mot de passe est incorrect : action annulée.' => 'Your password is wrong: action cancelled.',
'Chiffrement impossible.' => 'Encryption failed.',
'La clé « cle_secrets » de la configuration est invalide : 32 octets en base64 attendus.' => 'The "cle_secrets" key in the configuration is invalid: 32 bytes in base64 expected.',
'Vivier ne peut pas écrire dans le dossier config/. Ajoutez la clé « cle_secrets » dans config/config.php (voir config.exemple.php).' => 'Vivier cannot write to the config/ folder. Add the "cle_secrets" key to config/config.php (see config.exemple.php).',
// Invitation
'Obtenir un accès' => 'Getting access',
'Vivier ne propose pas d\'inscription libre. Le gestionnaire de Vivier vous envoie un lien d\'invitation personnel, valable 48 heures et utilisable une seule fois.' => 'Vivier has no open sign-up. The Vivier account manager sends you a personal invitation link. It works once and expires after 48 hours.',
'Avec ce lien, vous choisissez votre identifiant et votre mot de passe, puis vous activez la double authentification sur votre téléphone.' => 'With this link, you choose your username and password, then set up two-step verification on your phone.',
'Pour recevoir un lien, adressez-vous au gestionnaire de Vivier chez IT Club.' => 'To get a link, contact the Vivier account manager at IT Club.',
'Rejoindre Vivier' => 'Join Vivier',
'Lien d\'invitation invalide' => 'Invalid invitation link',
'Ce lien a expiré, a déjà servi ou a été annulé. Demandez un nouveau lien au gestionnaire de Vivier.' => 'This link has expired, has already been used or was cancelled. Ask the Vivier account manager for a new one.',
'Créez votre compte. Le lien sert une seule fois, jusqu\'au %s.' => 'Create your account. The link works once, until %s.',
'3 à 40 caractères : lettres sans accent, chiffres, point, tiret.' => '3 to 40 characters: unaccented letters, digits, dot, hyphen.',
'Ce lien d\'invitation vient d\'être utilisé.' => 'This invitation link has just been used.',
// Mon compte
'Identité' => 'Identity',
'Rôle' => 'Role',
'Votre nom et votre identifiant se changent dans Gestion, Comptes.' => 'Change your name and username in Manage, Accounts.',
'Pour changer de nom ou d\'identifiant, adressez-vous au gestionnaire de Vivier.' => 'To change your name or username, contact the Vivier account manager.',
'Activée le %s' => 'On since %s',
'%d restant' => '%d left',
'%d restants' => '%d left',
'Générer de nouveaux codes de secours' => 'Generate new backup codes',
'Les dix nouveaux codes remplacent les anciens, qui ne marcheront plus.' => 'The ten new codes replace the old ones, which will stop working.',
'Générer les codes' => 'Generate the codes',
'Configurer une autre application (nouveau téléphone)' => 'Set up another app (new phone)',
'Vivier refuse les mots de passe connus dans des fuites de données. Vos autres sessions se fermeront.' => 'Vivier rejects passwords found in known data breaches. Your other sessions will close.',
'Sessions et connexions' => 'Sessions and sign-ins',
'Une session se ferme après 2 heures sans activité, et au plus tard 12 heures après la connexion.' => 'A session closes after 2 hours of inactivity, and at the latest 12 hours after sign-in.',
'Déconnecter mes autres sessions' => 'Sign out my other sessions',
'Utile si vous êtes resté connecté sur un autre ordinateur ou un téléphone perdu.' => 'Useful if you stayed signed in on another computer or a lost phone.',
'Vos dernières connexions' => 'Your latest sign-ins',
'Une connexion que vous ne reconnaissez pas ? Changez votre mot de passe et prévenez le gestionnaire de Vivier.' => 'A sign-in you don\'t recognise? Change your password and tell the Vivier account manager.',
'Mot de passe modifié. Vos autres sessions sont fermées.' => 'Password changed. Your other sessions are closed.',
'Vos autres sessions sont fermées. Celle-ci reste ouverte.' => 'Your other sessions are closed. This one stays open.',
'programme' => 'script',
'inconnu' => 'unknown',
// Comptes
'Journal des connexions' => 'Sign-in log',
'Chaque compte lit et modifie tous les profils. Une personne rejoint Vivier par un lien d\'invitation, ou vous créez son compte ici. À la première connexion, chacun active la double authentification.' => 'Every account reads and edits all profiles. A person joins Vivier through an invitation link, or you create their account here. At first sign-in, everyone sets up two-step verification.',
'Inviter une personne' => 'Invite someone',
'Lien d\'invitation' => 'Invitation link',
'Lien d\'invitation pour %s' => 'Invitation link for %s',
'Copiez-le et envoyez-le à la personne, par email ou messagerie interne. Il ne sera plus affiché. Il sert une fois et expire dans %d heures.' => 'Copy it and send it to the person, by email or internal chat. It will not be shown again. It works once and expires in %d hours.',
'Nom de la personne, facultatif' => 'Person\'s name, optional',
'Créer un lien d\'invitation' => 'Create an invitation link',
'La personne choisit son identifiant et son mot de passe, puis active la double authentification. Son compte est actif tout de suite.' => 'The person chooses a username and password, then sets up two-step verification. The account is active right away.',
'Liens en cours' => 'Open links',
'Sans nom' => 'No name',
'créé le %s par %s, expire le %s' => 'created on %s by %s, expires on %s',
'Annuler ce lien ? Il ne fonctionnera plus.' => 'Cancel this link? It will stop working.',
'Annuler le lien' => 'Cancel the link',
'Invitation annulée : le lien ne fonctionne plus.' => 'Invitation cancelled: the link no longer works.',
'Cette invitation n\'existe plus.' => 'This invitation no longer exists.',
'Demandes faites avant la version 1.8, par l\'ancienne page publique. Elles ne donnent aucun accès avant votre accord. Vivier ne prévient pas la personne : faites-le vous-même.' => 'Requests made before version 1.8, through the old public page. They give no access until you approve. Vivier does not notify the person: do it yourself.',
'Connexions bloquées' => 'Blocked sign-ins',
'Après 5 échecs, un identifiant est bloqué 15 minutes depuis l\'adresse en cause, puis 30 et 60 minutes. Une adresse qui accumule 20 échecs en une heure est bloquée pour tous les identifiants. Débloquez seulement si vous savez qui essaie.' => 'After 5 failures, a username is blocked for 15 minutes from the address involved, then 30 and 60 minutes. An address with 20 failures in an hour is blocked for every username. Unblock only if you know who is trying.',
'Bloqué' => 'Blocked',
'Adresse IP' => 'IP address',
'Échecs sur 24 h' => 'Failures in 24 h',
'Jusqu\'à' => 'Until',
'Identifiant %s' => 'Username %s',
'Toute l\'adresse' => 'Whole address',
'Débloquer' => 'Unblock',
'Blocage levé. La connexion est de nouveau possible.' => 'Block lifted. Signing in works again.',
'Préférez le lien d\'invitation : personne d\'autre que la personne ne connaît alors son mot de passe. Un compte créé ici change son mot de passe à la première connexion.' => 'Prefer the invitation link: then nobody but the person knows the password. An account created here changes its password at first sign-in.',
'Mot de passe provisoire, %d caractères au moins' => 'Temporary password, at least %d characters',
'Compte créé. Transmettez l\'identifiant et le mot de passe à la personne : elle le changera à sa première connexion, puis activera la double authentification.' => 'Account created. Give the username and password to the person: they change it at first sign-in, then set up two-step verification.',
'Double authentification active' => 'Two-step verification on',
'Double authentification à activer' => 'Two-step verification to set up',
'Mot de passe à changer' => 'Password to change',
'Modifier le nom, l\'identifiant ou le mot de passe' => 'Change the name, username or password',
'Nouveau mot de passe provisoire, à laisser vide pour le garder' => 'New temporary password, leave empty to keep the current one',
'Pour votre propre mot de passe, passez plutôt par Mon compte.' => 'For your own password, use My account instead.',
'La personne le changera à sa prochaine connexion. Ses sessions ouvertes se ferment.' => 'The person changes it at next sign-in. Their open sessions close.',
'Votre mot de passe, seulement pour un nouveau mot de passe' => 'Your password, only for a new password',
'Votre mot de passe, pour confirmer' => 'Your password, to confirm',
'Remettre à zéro la double authentification' => 'Reset two-step verification',
'Pour une personne qui a perdu son téléphone et ses codes de secours. Elle activera une nouvelle application à sa prochaine connexion. Vérifiez d\'abord son identité, par téléphone ou en personne.' => 'For someone who lost their phone and backup codes. They set up a new app at next sign-in. Check who they are first, by phone or in person.',
'Remettre à zéro' => 'Reset',
'Double authentification remise à zéro. La personne en active une nouvelle à sa prochaine connexion. Ses sessions ouvertes sont fermées.' => 'Two-step verification reset. The person sets it up again at next sign-in. Their open sessions are closed.',
'Un gestionnaire crée et modifie les comptes, supprime des profils, voit le journal, les connexions et les sauvegardes.' => 'An account manager creates and edits accounts, deletes profiles, and sees the activity log, sign-ins and backups.',
'Confier' => 'Grant',
'Gestion des comptes confiée.' => 'Account management granted.',
'Gestion des comptes retirée.' => 'Account management removed.',
'Désactiver ce compte ? Ses sessions se ferment tout de suite.' => 'Disable this account? Its sessions close right away.',
'Compte désactivé : il ne peut plus se connecter et ses sessions sont fermées.' => 'Account disabled: it can no longer sign in and its sessions are closed.',
'Ses connexions' => 'Sign-ins',
'Maintenance' => 'Maintenance',
'Traduction des profils' => 'Profile translation',
'Chaque profil est traduit dans les langues de l\'interface, en arrière-plan, tant qu\'une page de Vivier reste ouverte. À lancer une fois après la mise à jour 1.8.' => 'Each profile is translated into the interface languages, in the background, while a Vivier page stays open. Run once after the 1.8 update.',
'L\'analyse automatique n\'est pas configurée : les profils se traduisent un par un, par fichier, depuis l\'aperçu du CV IT Club.' => 'Automatic analysis is not set up: translate profiles one by one, by file, from the IT Club CV preview.',
'%d traduction à faire.' => '%d translation to do.',
'%d traductions à faire.' => '%d translations to do.',
'%d traduction à faire. Elles se font en arrière-plan, tant qu\'une page de Vivier reste ouverte.' => '%d translation to do. It runs in the background while a Vivier page stays open.',
'%d traductions à faire. Elles se font en arrière-plan, tant qu\'une page de Vivier reste ouverte.' => '%d translations to do. They run in the background while a Vivier page stays open.',
'%d traduction abandonnée après 3 essais :' => '%d translation dropped after 3 attempts:',
'%d traductions abandonnées après 3 essais :' => '%d translations dropped after 3 attempts:',
'Tous les profils sont déjà traduits.' => 'All profiles are already translated.',
'Traduire tous les profils' => 'Translate all profiles',
'L\'archive contient tous les CV : Vivier vérifie que c\'est bien vous.' => 'The archive holds every CV: Vivier checks that it is really you.',
// Journal des connexions et des erreurs
'Connexions' => 'Sign-ins',
'%d ligne' => '%d row',
'%d lignes' => '%d rows',
'Chaque essai de connexion, réussi ou non, avec l\'adresse IP et le navigateur. Gardé %d mois. Un compte gestionnaire qui se connecte depuis un réseau jamais vu déclenche un email d\'alerte.' => 'Every sign-in attempt, successful or not, with the IP address and browser. Kept for %d months. An account manager signing in from a never-seen network triggers an alert email.',
'Échecs seulement' => 'Failures only',
'Aucune connexion enregistrée.' => 'No sign-ins recorded.',
'Navigateur' => 'Browser',
'identifiant inconnu' => 'unknown username',
'Connexion réussie' => 'Signed in',
'Mot de passe incorrect' => 'Wrong password',
'Code incorrect' => 'Wrong code',
'Essai bloqué' => 'Attempt blocked',
'Compte désactivé' => 'Account disabled',
'Demande en attente' => 'Request pending',
'Erreurs' => 'Errors',
'Les erreurs imprévues des %d derniers incidents. Une personne qui voit « Une erreur est survenue » reçoit une référence : cherchez-la ici. Aucune donnée de candidat n\'y figure.' => 'Unexpected errors, last %d incidents. Someone who sees "Something went wrong" gets a reference: look it up here. No candidate data is stored.',
'Aucune erreur notée.' => 'No errors recorded.',
'Page' => 'Page',
'Cause' => 'Cause',
'Endroit du code' => 'Code location',
'Vider le journal' => 'Clear the log',
'Vider le journal des erreurs ?' => 'Clear the error log?',
'Journal des erreurs vidé.' => 'Error log cleared.',
'Une erreur est survenue (référence %s).' => 'Something went wrong (reference %s).',
'Référence à lui donner : %s' => 'Reference to give them: %s',
'Sécurité' => 'Security',
// Historique
'Invitation créée : %s' => 'Invitation created: %s',
'Invitation annulée' => 'Invitation cancelled',
'%s (compte créé par invitation)' => '%s (account created by invitation)',
'%s (compte créé)' => '%s (account created)',
'%s (mot de passe changé)' => '%s (password changed)',
'%s (double authentification remise à zéro)' => '%s (two-step verification reset)',
'%s (gestion des comptes confiée)' => '%s (account management granted)',
'%s (gestion des comptes retirée)' => '%s (account management removed)',
'%s (connexion débloquée)' => '%s (sign-in unblocked)',
'%s : nouvelle application d\'authentification' => '%s: new authenticator app',
'%s : mot de passe changé' => '%s: password changed',
'%s : nouveaux codes de secours' => '%s: new backup codes',
'%s : autres sessions fermées' => '%s: other sessions closed',
'Renouvellement du titre de séjour : il expire le %s' => 'Residence permit renewal: it expires on %s',
// --- Traduction des profils (1.8)
'en français' => 'into French',
'en anglais' => 'into English',
'Vous lisez le texte d\'origine de ce profil.' => 'You are reading this profile\'s original text.',
'Voir la traduction %s' => 'View the translation %s',
'Ce profil n\'est pas encore traduit %s : le texte s\'affiche dans sa langue d\'origine.' => 'This profile is not translated %s yet: the text shows in its original language.',
'La fiche a changé depuis sa traduction : le texte s\'affiche dans sa langue d\'origine.' => 'The profile changed since its translation: the text shows in its original language.',
'La traduction se fait en arrière-plan.' => 'The translation runs in the background.',
'Traduire maintenant' => 'Translate now',
'Texte traduit automatiquement le %s.' => 'Text translated automatically on %s.',
'Texte traduit le %s.' => 'Text translated on %s.',
'Voir l\'original' => 'View the original',
'Profil traduit. Relisez la traduction : elle est automatique.' => 'Profile translated. Review it: it is automatic.',
// --- Disponibilité, nationalité, permis de travail (1.8)
'Immédiate' => 'Immediate',
'Sous 1 mois' => 'Within 1 month',
'Sous 2 mois' => 'Within 2 months',
'Sous 3 mois' => 'Within 3 months',
'Date précise' => 'Specific date',
'À préciser' => 'To be confirmed',
'À partir du' => 'From',
'À partir du %s' => 'From %s',
'vers le %s' => 'around %s',
'Disponibilité : %s' => 'Availability: %s',
'Disponibilité : indiquez la date.' => 'Availability: enter the date.',
'« Sous N mois » donne une date estimée, utilisée pour les besoins clients.' => '"Within N months" gives an estimated date, used for client requests.',
'Précision libre, en interne : la formulation du CV, un préavis à négocier.' => 'Free internal note: the CV wording, a notice period to negotiate.',
'Préavis de 2 mois, négociable' => '2 months\' notice, negotiable',
'Note sur la disponibilité' => 'Availability note',
'Aucune' => 'None',
'Non renseignée' => 'Not specified',
'Nationalité' => 'Nationality',
'Autre nationalité, facultative' => 'Other nationality, optional',
'Nationalité et permis de travail' => 'Nationality and work permit',
'Sert à savoir si un permis de travail est nécessaire au Luxembourg. Ne figure sur aucun CV.' => 'Tells whether a work permit is needed in Luxembourg. Never appears on a CV.',
'Elles ne figurent pas sur le CV IT Club. Le CV Europass nominatif les montre, sauf si vous les retirez de l\'aperçu.' => 'They do not appear on the IT Club CV. The named Europass CV shows them, unless you remove them in the preview.',
'Permis de travail' => 'Work permit',
'Permis de travail non requis : nationalité de l\'Union européenne, de l\'Espace économique européen ou suisse.' => 'No work permit needed: EU, EEA or Swiss nationality.',
'Texte libre : type de titre, restrictions, démarches en cours.' => 'Free text: type of permit, restrictions, pending steps.',
'Autorisation de travail salarié, limitée au secteur IT' => 'Salaried work permit, limited to the IT sector',
'Titre valable jusqu\'au' => 'Permit valid until',
'Titre valable jusqu\'au %s' => 'Permit valid until %s',
'Vivier prévoit une relance 2 mois avant.' => 'Vivier plans a follow-up 2 months before.',
'Non requis' => 'Not required',
'UE, EEE ou Suisse' => 'EU, EEA or Switzerland',
'Hors UE' => 'Non-EU',
'Titre de séjour' => 'Residence permit',
'Expiré ou expire sous 2 mois' => 'Expired or expiring within 2 months',
'Titre de séjour : expire le %s' => 'Residence permit: expires on %s',
'Titre de séjour expiré' => 'Residence permit expired',
'Titre de séjour expiré le %s' => 'Residence permit expired on %s',
'Ces informations figurent sur les CV IT Club et Europass.' => 'This information appears on the IT Club and Europass CVs.',
'code pays ISO à deux lettres attendu (FR, MA).' => 'two-letter ISO country code expected (FR, MA).',
'date obligatoire quand disponibilite_code vaut « date ».' => 'date required when disponibilite_code is "date".',
// --- CV Europass (1.8)
'CV Europass' => 'Europass CV',
'Ces rubriques n\'apparaissent que sur le CV Europass, et seulement si elles sont remplies.' => 'These sections only appear on the Europass CV, and only when filled in.',
'Bénévolat' => 'Volunteering',
'Bénévolat et permis' => 'Volunteering and licence',
'Une activité par ligne' => 'One activity per line',
'Permis de conduire' => 'Driving licence',
'Permis de conduire :' => 'Driving licence:',
'Catégories séparées par des virgules.' => 'Categories separated by commas.',
'Projet' => 'Project',
'Projet : %s' => 'Project: %s',
'Mission' => 'Assignment',
'Charge' => 'Workload',
'Charge : %s' => 'Workload: %s',
'À propos de moi' => 'About me',
'Éducation et formation' => 'Education and training',
'Expérience professionnelle' => 'Work experience',
'Compétences linguistiques' => 'Language skills',
'Langue(s) maternelle(s) :' => 'Mother tongue(s):',
'Autre(s) langue(s) :' => 'Other language(s):',
'Compréhension' => 'Understanding',
'Expression orale' => 'Speaking',
'Écrit' => 'Writing',
'Compréhension orale' => 'Listening',
'Compréhension écrite' => 'Reading',
'Expression orale en continu' => 'Spoken production',
'Interaction orale' => 'Spoken interaction',
'Niveaux : A1 et A2 : utilisateur de base ; B1 et B2 : utilisateur indépendant ; C1 et C2 : utilisateur expérimenté' => 'Levels: A1 and A2: basic user; B1 and B2: independent user; C1 and C2: proficient user',
'Niveau' => 'Level',
'Compétences' => 'Skills',
'Rôle et réalisations principales :' => 'Main role and achievements:',
'Adresse électronique' => 'Email address',
'Numéro de téléphone' => 'Phone number',
'Technique' => 'Technical',
'Logiciels et outils' => 'Software and tools',
'Traduire par fichier, depuis l\'aperçu du CV IT Club' => 'Translate by file, from the IT Club CV preview',
];