Merge branch 'nclm-french-translation'

pull/6/head
Eugen Rochko 2016-11-22 11:35:15 +01:00
commit 95db6cbe28
11 changed files with 323 additions and 8 deletions

View File

@ -38,6 +38,7 @@ import { IntlProvider, addLocaleData } from 'react-intl';
import en from 'react-intl/locale-data/en'; import en from 'react-intl/locale-data/en';
import de from 'react-intl/locale-data/de'; import de from 'react-intl/locale-data/de';
import es from 'react-intl/locale-data/es'; import es from 'react-intl/locale-data/es';
import fr from 'react-intl/locale-data/fr';
import getMessagesForLocale from '../locales'; import getMessagesForLocale from '../locales';
const store = configureStore(); const store = configureStore();
@ -46,7 +47,7 @@ const browserHistory = useRouterHistory(createBrowserHistory)({
basename: '/web' basename: '/web'
}); });
addLocaleData([...en, ...de, ...es]); addLocaleData([...en, ...de, ...es, ...fr]);
const Mastodon = React.createClass({ const Mastodon = React.createClass({

View File

@ -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": "Sabonner",
"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 quelquun en entrant dans le champs de recherche leur nom dutilisateur et le domaine de leur instance, séparés par un @ à la manière dune adresse courriel.",
"getting_started.about_shortcuts": "Si cette personne utilise la même instance que vous, le nom dutilisateur suffit. Cest le même principe pour mentionner quelquun dans vos statuts.",
"getting_started.about_developer": "Pour sabonner au développeur de ce projet, cest 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": "Quavez 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} sest 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;

View File

@ -5,6 +5,7 @@ module SettingsHelper
en: 'English', en: 'English',
de: 'Deutsch', de: 'Deutsch',
es: 'Español', es: 'Español',
fr: 'Français',
}.freeze }.freeze
def human_locale(locale) def human_locale(locale)

View File

@ -20,7 +20,7 @@ module Mastodon
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # 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.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.i18n.default_locale = :en
# config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')

View File

@ -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) :'

View File

@ -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:

59
config/locales/fr.yml Normal file
View File

@ -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 dutilisation"
accounts:
follow: "Sabonner"
followers: "Abonnés"
following: "Abonnements"
nothing_here: "Rien à voir ici&nbsp;!"
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 navez pas reçu les consignes de confirmation&nbsp;?"
forgot_password: "Mode passe oublié&nbsp;?"
login: "Se connecter"
register: "Sinscrire"
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&nbsp;!"
powered_by: "propulsé par %{link}"
save_changes: "Enregistrer les modifications"
validation_errors:
one: "Quelque chose ne va pas&nbsp;! Vérifiez lerreur ci-dessous."
other: "Quelques choses ne vont pas&nbsp;! Vérifiez les erreurs ci-dessous."
notification_mailer:
favourite:
body: "%{name} a ajouté votre statut à ses favoris&nbsp;:"
subject: "%{name} a ajouté votre statut à ses favoris"
follow:
body: "%{name} sest abonné⋅e à vos statuts&nbsp;!"
subject: "%{name} sest abonné⋅e à vos statuts"
mention:
body: "%{name} vous a mentionné⋅e dans&nbsp;:"
subject: "%{name} vous a mentionné⋅e"
reblog:
body: "%{name} a partagé votre statut&nbsp;:"
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: "sest abonné⋅e à"
will_paginate:
page_gap: "&hellip;"

View File

@ -14,15 +14,15 @@ de:
new_password: Neues Passwort new_password: Neues Passwort
note: Über mich note: Über mich
password: Passwort password: Passwort
username: Nutzername
silenced: Öffentliche Beiträge nicht auflisten silenced: Öffentliche Beiträge nicht auflisten
username: Nutzername
notification_emails: notification_emails:
favourite: E-mail senden, wenn jemand meinen Beitrag favorisiert favourite: E-mail senden, wenn jemand meinen Beitrag favorisiert
follow: E-mail senden, wenn mir jemand folgt follow: E-mail senden, wenn mir jemand folgt
mention: E-mail senden, wenn mich jemand erwähnt mention: E-mail senden, wenn mich jemand erwähnt
reblog: E-mail senden, wenn jemand meinen Beitrag teilt reblog: E-mail senden, wenn jemand meinen Beitrag teilt
'no': 'Nein' 'no': Nein
required: required:
mark: "*" mark: "*"
text: Pflichtfeld text: Pflichtfeld
'yes': 'Ja' 'yes': Ja

View File

@ -14,8 +14,8 @@ en:
new_password: New password new_password: New password
note: Bio note: Bio
password: Password password: Password
username: Username
silenced: Unlisted mode silenced: Unlisted mode
username: Username
notification_emails: notification_emails:
favourite: Send e-mail when someone favourites your status favourite: Send e-mail when someone favourites your status
follow: Send e-mail when someone follows you follow: Send e-mail when someone follows you

View File

@ -14,8 +14,8 @@ es:
new_password: Nueva contraseña new_password: Nueva contraseña
note: Biografía note: Biografía
password: Contraseña password: Contraseña
username: Nombre de usuario
silenced: No listado silenced: No listado
username: Nombre de usuario
notification_emails: notification_emails:
favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación
follow: Enviar correo electrónico cuando alguien le siga follow: Enviar correo electrónico cuando alguien le siga
@ -25,4 +25,4 @@ es:
required: required:
mark: "*" mark: "*"
text: necesario text: necesario
'yes': 'Sí' 'yes':

View File

@ -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 den-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 dutilisateur
notification_emails:
favourite: Envoyer un courriel lorsque quelquun ajoute un de mes statuts à ses favoris
follow: Envoyer un courriel lorsque quelquun sabonne à mes statuts
mention: Envoyer un courriel lorsque quelquun me mentionne
reblog: Envoyer un courriel lorsque quelquun partage un de mes statuts
'no': Non
required:
mark: "*"
text: Champs requis
'yes': Oui