/*
* Copyright ( c ) 2022 - 2024 , The PurpleI2P Project
*
* This file is part of Purple i2pd project and licensed under BSD3
*
* See full license text in LICENSE file at top of project tree
*/
# include <map>
# include <vector>
# include <string>
# include <memory>
# include "I18N.h"
// French localization file
namespace i2p
{
namespace i18n
{
namespace french // language namespace
{
// language name in lowercase
static std : : string language = " french " ;
// See for language plural forms here:
// https://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html
static int plural ( int n ) {
return n ! = 1 ? 1 : 0 ;
}
static std : : map < std : : string , std : : string > strings
{
{ " %.2f KiB " , " %.2f Kio " } ,
{ " %.2f MiB " , " %.2f Mio " } ,
{ " %.2f GiB " , " %.2f Gio " } ,
{ " building " , " En construction " } ,
{ " failed " , " échoué " } ,
{ " expiring " , " expiré " } ,
{ " established " , " établi " } ,
{ " unknown " , " inconnu " } ,
{ " exploratory " , " exploratoire " } ,
{ " Purple I2P Webconsole " , " Console web Purple I2P " } ,
{ " <b>i2pd</b> webconsole " , " Console web <b>i2pd</b> " } ,
{ " Main page " , " Page principale " } ,
{ " Router commands " , " Commandes du routeur " } ,
{ " Local Destinations " , " Destinations locales " } ,
{ " LeaseSets " , " Jeu de baux " } ,
{ " Tunnels " , " Tunnels " } ,
{ " Transit Tunnels " , " Tunnels transitoires " } ,
{ " Transports " , " Transports " } ,
{ " I2P tunnels " , " Tunnels I2P " } ,
{ " SAM sessions " , " Sessions SAM " } ,
{ " ERROR " , " ERREUR " } ,
{ " OK " , " OK " } ,
{ " Testing " , " Test en cours " } ,
{ " Firewalled " , " Derrière un pare-feu " } ,
{ " Unknown " , " Inconnu " } ,
{ " Proxy " , " Proxy " } ,
{ " Mesh " , " Maillé " } ,
{ " Clock skew " , " Décalage de l'horloge " } ,
{ " Offline " , " Hors ligne " } ,
{ " Symmetric NAT " , " NAT symétrique " } ,
{ " Full cone NAT " , " NAT à cône complet " } ,
{ " No Descriptors " , " Aucuns Descripteurs " } ,
{ " Uptime " , " Temps de fonctionnement " } ,
{ " Network status " , " État du réseau " } ,
{ " Network status v6 " , " État du réseau v6 " } ,
{ " Stopping in " , " Arrêt dans " } ,
{ " Family " , " Famille " } ,
{ " Tunnel creation success rate " , " Taux de création de tunnel réussie " } ,
{ " Total tunnel creation success rate " , " Taux total de création de tunnel réussie " } ,
{ " Received " , " Reçu " } ,
{ " %.2f KiB/s " , " %.2f Kio/s " } ,
{ " Sent " , " Envoyé " } ,
{ " Transit " , " Transité " } ,
{ " Data path " , " Emplacement des données " } ,
{ " Hidden content. Press on text to see. " , " Contenu caché. Cliquez sur le texte pour afficher. " } ,
{ " Router Ident " , " Identifiant du routeur " } ,
{ " Router Family " , " Famille du routeur " } ,
{ " Router Caps " , " Limiteurs du routeur " } ,
{ " Version " , " Version " } ,
{ " Our external address " , " Notre adresse externe " } ,
{ " supported " , " supporté " } ,
{ " Routers " , " Routeurs " } ,
{ " Floodfills " , " Remplisseurs " } ,
{ " Client Tunnels " , " Tunnels clients " } ,
{ " Services " , " Services " } ,
{ " Enabled " , " Activé " } ,
{ " Disabled " , " Désactivé " } ,
{ " Encrypted B33 address " , " Adresse B33 chiffrée " } ,
{ " Address registration line " , " Ligne d'inscription de l'adresse " } ,
{ " Domain " , " Domaine " } ,
{ " Generate " , " Générer " } ,
{ " <b>Note:</b> result string can be used only for registering 2LD domains (example.i2p). For registering subdomains please use i2pd-tools. " , " <b>Note :</b> La chaîne résultante peut seulement être utilisée pour enregistrer les domaines 2LD (exemple.i2p). Pour enregistrer des sous-domaines, veuillez utiliser i2pd-tools. " } ,
{ " Address " , " Adresse " } ,
{ " Type " , " Type " } ,
{ " EncType " , " EncType " } ,
{ " Expire LeaseSet " , " Expirer le jeu de baux " } ,
{ " Inbound tunnels " , " Tunnels entrants " } ,
{ " %dms " , " %dms " } ,
{ " Outbound tunnels " , " Tunnels sortants " } ,
{ " Tags " , " Balises " } ,
{ " Incoming " , " Entrant " } ,
{ " Outgoing " , " Sortant " } ,
{ " Destination " , " Destination " } ,
{ " Amount " , " Quantité " } ,
{ " Incoming Tags " , " Balises entrantes " } ,
{ " Tags sessions " , " Sessions des balises " } ,
{ " Status " , " Statut " } ,
{ " Local Destination " , " Destination locale " } ,
{ " Streams " , " Flux " } ,
{ " Close stream " , " Fermer le flux " } ,
{ " Such destination is not found " , " Cette destination est introuvable " } ,
{ " I2CP session not found " , " Session I2CP introuvable " } ,
{ " I2CP is not enabled " , " I2CP est désactivé " } ,
{ " Invalid " , " Invalide " } ,
{ " Store type " , " Type de stockage " } ,
{ " Expires " , " Expire " } ,
{ " Non Expired Leases " , " Baux non expirés " } ,
{ " Gateway " , " Passerelle " } ,
{ " TunnelID " , " ID du tunnel " } ,
{ " EndDate " , " Date de fin " } ,
{ " floodfill mode is disabled " , " le mode de remplissage est désactivé " } ,
{ " Queue size " , " Longueur de la file " } ,
{ " Run peer test " , " Lancer test des pairs " } ,
{ " Reload tunnels configuration " , " Recharger la configuration des tunnels " } ,
{ " Decline transit tunnels " , " Refuser les tunnels transitoires " } ,
{ " Accept transit tunnels " , " Accepter les tunnels transitoires " } ,
{ " Cancel graceful shutdown " , " Annuler l'arrêt gracieux " } ,
{ " Start graceful shutdown " , " Démarrer l'arrêt gracieux " } ,
{ " Force shutdown " , " Forcer l'arrêt " } ,
{ " Reload external CSS styles " , " Rafraîchir les styles CSS externes " } ,
{ " <b>Note:</b> any action done here are not persistent and not changes your config files. " , " <b>Note :</b> Toute action effectuée ici n'est pas permanente et ne modifie pas vos fichiers de configuration. " } ,
{ " Logging level " , " Niveau de journalisation " } ,
{ " Transit tunnels limit " , " Limite sur les tunnels transitoires " } ,
{ " Change " , " Changer " } ,
{ " Change language " , " Changer la langue " } ,
{ " no transit tunnels currently built " , " aucun tunnel transitoire présentement établi " } ,
{ " SAM disabled " , " SAM désactivé " } ,
{ " no sessions currently running " , " aucune session présentement en cours " } ,
{ " SAM session not found " , " session SAM introuvable " } ,
{ " SAM Session " , " Session SAM " } ,
{ " Server Tunnels " , " Tunnels serveurs " } ,
{ " Client Forwards " , " Transmission du client " } ,
{ " Server Forwards " , " Transmission du serveur " } ,
{ " Unknown page " , " Page inconnue " } ,
{ " Invalid token " , " Jeton invalide " } ,
{ " SUCCESS " , " SUCCÈS " } ,
{ " Stream closed " , " Flux fermé " } ,
{ " Stream not found or already was closed " , " Flux introuvable ou déjà fermé " } ,
{ " Destination not found " , " Destination introuvable " } ,
{ " StreamID can't be null " , " StreamID ne peut pas être vide " } ,
{ " Return to destination page " , " Retourner à la page de destination " } ,
{ " You will be redirected in %d seconds " , " Vous serez redirigé dans %d secondes " } ,
{ " LeaseSet expiration time updated " , " Temps d'expiration du jeu de baux mis à jour " } ,
{ " LeaseSet is not found or already expired " , " Le jeu de baux est introuvable ou a déjà expiré " } ,
{ " Transit tunnels count must not exceed %d " , " Le nombre de tunnels de transit ne doit pas excéder %d " } ,
{ " Back to commands list " , " Retour à la liste des commandes " } ,
{ " Register at reg.i2p " , " Inscription à reg.i2p " } ,
{ " Description " , " Description " } ,
{ " A bit information about service on domain " , " Un peu d'information à propos des services disponibles dans le domaine " } ,
{ " Submit " , " Soumettre " } ,
{ " Domain can't end with .b32.i2p " , " Le domaine ne peut pas terminer par .b32.i2p " } ,
{ " Domain must end with .i2p " , " Le domaine doit terminer par .i2p " } ,
{ " Unknown command " , " Commande inconnue " } ,
{ " Command accepted " , " Commande acceptée " } ,
{ " Proxy error " , " Erreur de proxy " } ,
{ " Proxy info " , " Information sur le proxy " } ,
{ " Proxy error: Host not found " , " Erreur de proxy : Hôte introuvable " } ,
{ " Remote host not found in router's addressbook " , " Hôte distant introuvable dans le carnet d'adresse du routeur " } ,
{ " You may try to find this host on jump services below " , " Vous pouvez essayer de trouver cet hôte sur des services de redirection ci-dessous " } ,
{ " Invalid request " , " Requête invalide " } ,
{ " Proxy unable to parse your request " , " Proxy incapable de comprendre votre requête " } ,
{ " Addresshelper is not supported " , " Assistant d'adresse non supporté " } ,
{ " Host %s is <font color=red>already in router's addressbook</font>. <b>Be careful: source of this URL may be harmful!</b> Click here to update record: <a href= \" %s%s%s&update=true \" >Continue</a>. " , " L'hôte %s est <font color=red>déjà dans le carnet d'adresses du routeur</font>. <b>Attention : la source de cette URL peut être nuisible !</b> Cliquez ici pour mettre à jour l'enregistrement : <a href= \" %s%s%s&update=true \" >Continuer</a>. " } ,
{ " Addresshelper forced update rejected " , " Mise à jour forcée des assistants d'adresses rejetée " } ,
{ " To add host <b>%s</b> in router's addressbook, click here: <a href= \" %s%s%s \" >Continue</a>. " , " Pour ajouter l'hôte <b>%s</b> au carnet d'adresses du routeur, cliquez ici : <a href= \" %s%s%s \" >Continuer</a>. " } ,
{ " Addresshelper request " , " Demande à l'assistant d'adresse " } ,
{ " Host %s added to router's addressbook from helper. Click here to proceed: <a href= \" %s \" >Continue</a>. " , " L'hôte %s a été ajouté au carnet d'adresses du routeur depuis l'assistant. Cliquez ici pour continuer : <a href= \" %s \" >Continuer</a>. " } ,
{ " Addresshelper adding " , " Ajout de l'assistant d'adresse " } ,
{ " Host %s is <font color=red>already in router's addressbook</font>. Click here to update record: <a href= \" %s%s%s&update=true \" >Continue</a>. " , " L'hôte %s est <font color=red>déjà dans le carnet d'adresses du routeur</font>. Cliquez ici pour mettre à jour le dossier : <a href= \" %s%s%s&update=true \" >Continuer</a>. " } ,
{ " Addresshelper update " , " Mise à jour de l'assistant d'adresse " } ,
{ " Invalid request URI " , " URI de la requête invalide " } ,
{ " Can't detect destination host from request " , " Impossible de détecter l'hôte de destination à partir de la requête " } ,
{ " Outproxy failure " , " Échec de proxy de sortie " } ,
{ " Bad outproxy settings " , " Mauvaise configuration du proxy de sortie " } ,
{ " Host %s is not inside I2P network, but outproxy is not enabled " , " Hôte %s pas dans le réseau I2P, mais le proxy de sortie n'est pas activé " } ,
{ " Unknown outproxy URL " , " URL du proxy de sortie inconnu " } ,
{ " Cannot resolve upstream proxy " , " Impossible de résoudre l'adresse du proxy en amont " } ,
{ " Hostname is too long " , " Nom d'hôte trop long " } ,
{ " Cannot connect to upstream SOCKS proxy " , " Impossible de se connecter au proxy SOCKS en amont " } ,
{ " Cannot negotiate with SOCKS proxy " , " Impossible de négocier avec le proxy SOCKS " } ,
{ " CONNECT error " , " Erreur de connexion " } ,
{ " Failed to connect " , " Échec de connexion " } ,
{ " SOCKS proxy error " , " Erreur de proxy SOCKS " } ,
{ " Failed to send request to upstream " , " Erreur lors de l'envoie de la requête en amont " } ,
{ " No reply from SOCKS proxy " , " Pas de réponse du proxy SOCKS " } ,
{ " Cannot connect " , " Impossible de connecter " } ,
{ " HTTP out proxy not implemented " , " Proxy de sortie HTTP non implémenté " } ,
{ " Cannot connect to upstream HTTP proxy " , " Impossible de se connecter au proxy HTTP en amont " } ,
{ " Host is down " , " Hôte hors service " } ,
{ " Can't create connection to requested host, it may be down. Please try again later. " , " Impossible d'établir une connexion avec l'hôte, il est peut-être hors service. Veuillez réessayer plus tard. " } ,
{ " " , " " } ,
} ;
static std : : map < std : : string , std : : vector < std : : string > > plurals
{
{ " %d days " , { " %d jour " , " %d jours " } } ,
{ " %d hours " , { " %d heure " , " %d heures " } } ,
{ " %d minutes " , { " %d minute " , " %d minutes " } } ,
{ " %d seconds " , { " %d seconde " , " %d secondes " } } ,
{ " " , { " " , " " } } ,
} ;
std : : shared_ptr < const i2p : : i18n : : Locale > GetLocale ( )
{
return std : : make_shared < i2p : : i18n : : Locale > ( language , strings , plurals , [ ] ( int n ) - > int { return plural ( n ) ; } ) ;
}
} // language
} // i18n
} // i2p