diff options
-rw-r--r-- | app/assets/javascripts/components/containers/mastodon.jsx | 3 | ||||
-rw-r--r-- | app/assets/javascripts/components/locales/fr.jsx | 54 | ||||
-rw-r--r-- | app/helpers/settings_helper.rb | 1 | ||||
-rw-r--r-- | config/application.rb | 2 | ||||
-rw-r--r-- | config/locales/devise.fr.yml | 60 | ||||
-rw-r--r-- | config/locales/doorkeeper.fr.yml | 112 | ||||
-rw-r--r-- | config/locales/fr.yml | 59 | ||||
-rw-r--r-- | config/locales/simple_form.de.yml | 6 | ||||
-rw-r--r-- | config/locales/simple_form.en.yml | 2 | ||||
-rw-r--r-- | config/locales/simple_form.es.yml | 4 | ||||
-rw-r--r-- | config/locales/simple_form.fr.yml | 28 |
11 files changed, 323 insertions, 8 deletions
diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx index 3528ef81c..87c7c65f3 100644 --- a/app/assets/javascripts/components/containers/mastodon.jsx +++ b/app/assets/javascripts/components/containers/mastodon.jsx @@ -38,6 +38,7 @@ import { IntlProvider, addLocaleData } from 'react-intl'; import en from 'react-intl/locale-data/en'; import de from 'react-intl/locale-data/de'; import es from 'react-intl/locale-data/es'; +import fr from 'react-intl/locale-data/fr'; import getMessagesForLocale from '../locales'; const store = configureStore(); @@ -46,7 +47,7 @@ const browserHistory = useRouterHistory(createBrowserHistory)({ basename: '/web' }); -addLocaleData([...en, ...de, ...es]); +addLocaleData([...en, ...de, ...es, ...fr]); const Mastodon = React.createClass({ diff --git a/app/assets/javascripts/components/locales/fr.jsx b/app/assets/javascripts/components/locales/fr.jsx new file mode 100644 index 000000000..d6e24c523 --- /dev/null +++ b/app/assets/javascripts/components/locales/fr.jsx @@ -0,0 +1,54 @@ +const fr = { + "column_back_button.label": "Retour", + "lightbox.close": "Fermer", + "loading_indicator.label": "Chargement…", + "status.mention": "Mentionner", + "status.delete": "Effacer", + "status.reply": "Répondre", + "status.reblog": "Partager", + "status.favourite": "Ajouter aux favoris", + "status.reblogged_by": "{name} a partagé", + "video_player.toggle_sound": "Mettre/Couper le son", + "account.mention": "Mentionner", + "account.edit_profile": "Modifier le profil", + "account.unblock": "Débloquer", + "account.unfollow": "Se désabonner", + "account.block": "Bloquer", + "account.follow": "S’abonner", + "account.posts": "Statuts", + "account.follows": "Abonnements", + "account.followers": "Abonnés", + "account.follows_you": "Vous suit", + "getting_started.heading": "Pour commencer", + "getting_started.about_addressing": "Vous pouvez vous abonner aux statuts de quelqu’un en entrant dans le champs de recherche leur nom d’utilisateur et le domaine de leur instance, séparés par un @ à la manière d’une adresse courriel.", + "getting_started.about_shortcuts": "Si cette personne utilise la même instance que vous, le nom d’utilisateur suffit. C’est le même principe pour mentionner quelqu’un dans vos statuts.", + "getting_started.about_developer": "Pour s’abonner au développeur de ce projet, c’est Gargron@mastodon.social", + "column.home": "Accueil", + "column.mentions": "Mentions", + "column.public": "Fil public", + "column.notifications": "Notifications", + "tabs_bar.compose": "Composer", + "tabs_bar.home": "Accueil", + "tabs_bar.mentions": "Mentions", + "tabs_bar.public": "Public", + "tabs_bar.notifications": "Notifications", + "compose_form.placeholder": "Qu’avez vous en tête ?", + "compose_form.publish": "Publier", + "navigation_bar.settings": "Paramètres", + "navigation_bar.public_timeline": "Public", + "navigation_bar.logout": "Se déconnecter", + "reply_indicator.cancel": "Annuler", + "search.placeholder": "Chercher", + "search.account": "Compte", + "search.hashtag": "Mot-clé", + "suggestions_box.who_to_follow": "Suggestions", + "suggestions_box.refresh": "Rafraîchir", + "upload_button.label": "Joindre un média", + "upload_form.undo": "Annuler", + "notification.follow": "{name} s’est abonné⋅e à vos statuts", + "notification.favourite": "{name} a ajouté votre statut à ses favoris", + "notification.reblog": "{name} a partagé votre statut", + "notification.mention": "{name} vous a mentionné⋅e" +}; + +export default fr; diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 66ecc56c6..75ee2f8d9 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -5,6 +5,7 @@ module SettingsHelper en: 'English', de: 'Deutsch', es: 'Español', + fr: 'Français', }.freeze def human_locale(locale) diff --git a/config/application.rb b/config/application.rb index c53d78a4c..7ba13bfbe 100644 --- a/config/application.rb +++ b/config/application.rb @@ -20,7 +20,7 @@ module Mastodon # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.i18n.available_locales = [:en, :de, :es] + config.i18n.available_locales = [:en, :de, :es, :fr] config.i18n.default_locale = :en # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml new file mode 100644 index 000000000..b64601e7b --- /dev/null +++ b/config/locales/devise.fr.yml @@ -0,0 +1,60 @@ +--- +fr: + devise: + confirmations: + confirmed: Votre compte a été validé. + send_instructions: Vous allez recevoir les instructions nécessaires à la confirmation de votre compte dans quelques minutes. + send_paranoid_instructions: Si votre e-mail existe dans notre base de données, vous allez bientôt recevoir un e-mail contenant les instructions de confirmation de votre compte. + failure: + already_authenticated: Vous êtes déjà connecté + inactive: Votre compte n'est pas encore activé. + invalid: Email ou mot de passe incorrect. + last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé. + locked: Votre compte est verrouillé. + not_found_in_database: Email ou mot de passe invalide. + timeout: Votre session est expirée. Veuillez vous reconnecter pour continuer. + unauthenticated: Vous devez vous connecter ou vous inscrire pour continuer. + unconfirmed: Vous devez valider votre compte pour continuer. + mailer: + confirmation_instructions: + subject: Instructions de confirmation + password_change: + subject: Votre mot de passe a été modifié avec succés. + reset_password_instructions: + subject: Instructions pour changer le mot de passe + unlock_instructions: + subject: Instructions pour déverrouiller le compte + omniauth_callbacks: + failure: 'Nous n''avons pas pu vous authentifier via %{kind} : ''%{reason}''.' + success: Authentifié avec succès via %{kind}. + passwords: + no_token: Vous ne pouvez accéder à cette page sans passer par un e-mail de réinitialisation de mot de passe. Si vous êtes passé par un e-mail de ce type, assurez-vous d'utiliser l'URL complète. + send_instructions: Vous allez recevoir les instructions de réinitialisation du mot de passe dans quelques instants + send_paranoid_instructions: Si votre e-mail existe dans notre base de données, vous allez recevoir un lien de réinitialisation par e-mail + updated: Votre mot de passe a été édité avec succès, vous êtes maintenant connecté + updated_not_active: Votre mot de passe a été changé avec succès. + registrations: + destroyed: Votre compte a été supprimé avec succès. Nous espérons vous revoir bientôt. + signed_up: Bienvenue, vous êtes connecté. + signed_up_but_inactive: Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte n'est pas encore activé. + signed_up_but_locked: Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé. + signed_up_but_unconfirmed: Un message contenant un lien de confirmation a été envoyé à votre adresse email. Ouvrez ce lien pour activer votre compte. + update_needs_confirmation: Votre compte a bien été mis à jour mais nous devons vérifier votre nouvelle adresse email. Merci de vérifier vos emails et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. + updated: Votre compte a été modifié avec succès. + sessions: + already_signed_out: Déconnecté. + signed_in: Connecté. + signed_out: Déconnecté. + unlocks: + send_instructions: Vous allez recevoir les instructions nécessaires au déverrouillage de votre compte dans quelques instants + send_paranoid_instructions: Si votre compte existe, vous allez bientôt recevoir un email contenant les instructions pour le déverrouiller. + unlocked: Votre compte a été déverrouillé avec succès, vous êtes maintenant connecté. + errors: + messages: + already_confirmed: a déjà été validé(e), veuillez essayer de vous connecter + confirmation_period_expired: à confirmer dans les %{period}, merci de faire une nouvelle demande + expired: a expiré, merci d'en faire une nouvelle demande + not_found: n'a pas été trouvé(e) + not_locked: n'était pas verrouillé(e) + not_saved: + one: '1 erreur a empêché ce(tte) %{resource} d''être sauvegardé(e) :' diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml new file mode 100644 index 000000000..c04e378b6 --- /dev/null +++ b/config/locales/doorkeeper.fr.yml @@ -0,0 +1,112 @@ +--- +fr: + activerecord: + attributes: + doorkeeper/application: + name: Nom + redirect_uri: L'URL de redirection + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: ne peut contenir un fragment. + invalid_uri: doit être une URL valide. + relative_uri: doit être une URL absolue. + secured_uri: doit être une URL HTTP/SSL. + doorkeeper: + applications: + buttons: + authorize: Autoriser + cancel: Annuler + destroy: Détruire + edit: Modifier + submit: Envoyer + confirmations: + destroy: Êtes-vous certain? + edit: + title: Modifier l'application + form: + error: Oups! Vérifier votre formulaire pour des erreurs possibles + help: + native_redirect_uri: Utiliser %{native_redirect_uri} pour les tests locaux + redirect_uri: Utiliser une ligne par URL + scopes: + index: + callback_url: URL de retour d'appel + name: Nom + new: Nouvelle application + title: Vos applications + new: + title: Nouvelle application + show: + actions: Actions + application_id: ID de l'application + callback_urls: URL du retour d'appel + scopes: + secret: Secret + title: 'Application : %{name}' + authorizations: + buttons: + authorize: Autoriser + deny: Refuser + error: + title: Une erreur est survenue + new: + able_to: Cette application pourra + prompt: Autorisez %{client_name} à utiliser votre compte? + title: Autorisation requise + show: + title: Code d'autorisation + authorized_applications: + buttons: + revoke: Annuler + confirmations: + revoke: Êtes-vous certain? + index: + application: Application + created_at: Créé le + date_format: "%Y-%m-%d %H:%M:%S" + title: Vos applications autorisées + errors: + messages: + access_denied: Le propriétaire de la ressource ou le serveur d'autorisation a refusé la demande. + credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_from_credentials n'est pas configuré. + invalid_client: L'authentification du client a échoué à cause d'un client inconnu, d'aucune authentification de client incluse, ou d'une méthode d'authentification non prise en charge. + invalid_grant: Le consentement d'autorisation accordé n'est pas valide, a expiré, est annulé, ne concorde pas avec l'URL de redirection utilisée dans la demande d'autorisation, ou a été émis à un autre client. + invalid_redirect_uri: L'URL de redirection n'est pas valide. + invalid_request: La demande manque un paramètre requis, inclut une valeur de paramètre non prise en charge, ou est autrement mal formée. + invalid_resource_owner: Les identifiants fournis du propriétaire de la ressource ne sont pas valides, ou le propriétaire de la ressource ne peut être trouvé + invalid_scope: Le scope demandé n'est pas valide, est inconnu, ou est mal formé. + invalid_token: + expired: Le jeton d'accès a expiré + revoked: Le jeton d'accès a été annulé + unknown: Le jeton d'accès n'est pas valide + resource_owner_authenticator_not_configured: La recherche du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_authenticator n'est pas configuré. + server_error: Le serveur d'autorisation a rencontré une condition inattendue qui l'a empêché de remplir la demande. + temporarily_unavailable: Le serveur d'autorisation est actuellement incapable de traiter la demande à cause d'une surcharge ou d'un entretien temporaire du serveur. + unauthorized_client: Le client n'est pas autorisé à effectuer cette demande à l'aide de cette méthode. + unsupported_grant_type: Le type de consentement d'autorisation n'est pas pris en charge par le serveur d'autorisation. + unsupported_response_type: Le serveur d'autorisation ne prend pas en charge ce type de réponse. + flash: + applications: + create: + notice: Application créée. + destroy: + notice: Application supprimée. + update: + notice: Application mise à jour. + authorized_applications: + destroy: + notice: Application annulée. + layouts: + admin: + nav: + applications: Applications + oauth2_provider: Fournisseur OAuth2 + application: + title: Autorisation OAuth requise + scopes: + follow: + read: + write: diff --git a/config/locales/fr.yml b/config/locales/fr.yml new file mode 100644 index 000000000..c9258381c --- /dev/null +++ b/config/locales/fr.yml @@ -0,0 +1,59 @@ +--- +fr: + about: + about_instance: "<em>%{instance}</em> est une instance de Mastodon." + about_mastodon: "Mastodon est un serveur <em>libre</em> de réseautage social. Alternative <em>décentralisée</em> aux plateformes commerciales, la monopolisation de vos communications par une entreprise unique est évitée. Tout un chacun peut faire tourner Mastodon et participer au <em>réseau social</em> de manière transparente." + get_started: "Rejoindre le réseau" + source_code: "Code source" + terms: "Conditions d’utilisation" + accounts: + follow: "S’abonner" + followers: "Abonnés" + following: "Abonnements" + nothing_here: "Rien à voir ici !" + people_followed_by: "Personnes auxquelles %{name} est abonné⋅e" + people_who_follow: "Personnes abonnées à %{name}" + posts: "Statuts" + unfollow: "Se désabonner" + application_mailer: + signature: "Notifications de Mastodon depuis %{instance}" + auth: + change_password: "Changer de mot de passe" + didnt_get_confirmation: "Vous n’avez pas reçu les consignes de confirmation ?" + forgot_password: "Mode passe oublié ?" + login: "Se connecter" + register: "S’inscrire" + resend_confirmation: "Envoyer à nouveau les consignes de confirmation" + reset_password: "Réinitialiser le mot de passe" + set_new_password: "Établir le nouveau mot de passe" + generic: + changes_saved_msg: "Les modifications ont été enregistrées avec succès !" + powered_by: "propulsé par %{link}" + save_changes: "Enregistrer les modifications" + validation_errors: + one: "Quelque chose ne va pas ! Vérifiez l’erreur ci-dessous." + other: "Quelques choses ne vont pas ! Vérifiez les erreurs ci-dessous." + notification_mailer: + favourite: + body: "%{name} a ajouté votre statut à ses favoris :" + subject: "%{name} a ajouté votre statut à ses favoris" + follow: + body: "%{name} s’est abonné⋅e à vos statuts !" + subject: "%{name} s’est abonné⋅e à vos statuts" + mention: + body: "%{name} vous a mentionné⋅e dans :" + subject: "%{name} vous a mentionné⋅e" + reblog: + body: "%{name} a partagé votre statut :" + subject: "%{name} a partagé votre statut" + pagination: + next: "Suivant" + prev: "Précédent" + settings: + edit_profile: "Modifier le profil" + preferences: "Préférences" + stream_entries: + favourited: "a ajouté à ses favoris un statut de" + is_now_following: "s’est abonné⋅e à" + will_paginate: + page_gap: "…" diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 65714dbd5..36c5141a2 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -14,15 +14,15 @@ de: new_password: Neues Passwort note: Über mich password: Passwort - username: Nutzername silenced: Öffentliche Beiträge nicht auflisten + username: Nutzername notification_emails: favourite: E-mail senden, wenn jemand meinen Beitrag favorisiert follow: E-mail senden, wenn mir jemand folgt mention: E-mail senden, wenn mich jemand erwähnt reblog: E-mail senden, wenn jemand meinen Beitrag teilt - 'no': 'Nein' + 'no': Nein required: mark: "*" text: Pflichtfeld - 'yes': 'Ja' + 'yes': Ja diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 5b66fccd5..a7d958c06 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -14,8 +14,8 @@ en: new_password: New password note: Bio password: Password - username: Username silenced: Unlisted mode + username: Username notification_emails: favourite: Send e-mail when someone favourites your status follow: Send e-mail when someone follows you diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index 1909474a1..bfe000b33 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -14,8 +14,8 @@ es: new_password: Nueva contraseña note: Biografía password: Contraseña - username: Nombre de usuario silenced: No listado + username: Nombre de usuario notification_emails: favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación follow: Enviar correo electrónico cuando alguien le siga @@ -25,4 +25,4 @@ es: required: mark: "*" text: necesario - 'yes': 'Sí' + 'yes': Sí diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml new file mode 100644 index 000000000..7333c9e11 --- /dev/null +++ b/config/locales/simple_form.fr.yml @@ -0,0 +1,28 @@ +--- +fr: + simple_form: + labels: + defaults: + avatar: Image de profil + confirm_new_password: Confirmation du nouveau mot de passe + confirm_password: Confirmation du mot de passe + current_password: Mot de passe actuel + display_name: Nom public + email: Adresse courriel + header: Image d’en-tête + locale: Langue + new_password: Nouveau mot de passe + note: Présentation + password: Mot de passe + silenced: Ne pas apparaître dans le fil public + username: Nom d’utilisateur + notification_emails: + favourite: Envoyer un courriel lorsque quelqu’un ajoute un de mes statuts à ses favoris + follow: Envoyer un courriel lorsque quelqu’un s’abonne à mes statuts + mention: Envoyer un courriel lorsque quelqu’un me mentionne + reblog: Envoyer un courriel lorsque quelqu’un partage un de mes statuts + 'no': Non + required: + mark: "*" + text: Champs requis + 'yes': Oui |