diff --git a/.env.example b/.env.example
deleted file mode 100644
index 0ed277fe8322..000000000000
--- a/.env.example
+++ /dev/null
@@ -1,44 +0,0 @@
-APP_ENV=production
-APP_DEBUG=false
-APP_URL=http://localhost
-APP_TIMEZONE=UTC
-APP_KEY=
-DEBUGBAR_ENABLED=false
-
-DB_DRIVER=mysql
-DB_HOST=localhost
-DB_UNIX_SOCKET=null
-DB_DATABASE=cachet
-DB_USERNAME=homestead
-DB_PASSWORD=secret
-DB_PORT=null
-DB_PREFIX=null
-
-CACHE_DRIVER=file
-SESSION_DRIVER=file
-QUEUE_DRIVER=sync
-
-CACHET_BEACON=true
-CACHET_EMOJI=false
-CACHET_AUTO_TWITTER=true
-
-MAIL_DRIVER=log
-MAIL_HOST=null
-MAIL_PORT=null
-MAIL_USERNAME=null
-MAIL_PASSWORD=null
-MAIL_ADDRESS=null
-MAIL_NAME=null
-MAIL_ENCRYPTION=tls
-
-REDIS_HOST=null
-REDIS_DATABASE=null
-REDIS_PORT=null
-
-GITHUB_TOKEN=null
-
-NEXMO_KEY=null
-NEXMO_SECRET=null
-NEXMO_SMS_FROM=Cachet
-
-TRUSTED_PROXIES=
diff --git a/.travis.yml b/.travis.yml
index 8d0b77fd6958..fd5bdcc4fd84 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ branches:
- l10n_2.4
before_install:
- - cp .env.example .env
+ - cp .env .env
install:
- travis_retry composer install --no-interaction --no-suggest
diff --git a/app/Notifications/Schedule/NewScheduleNotification.php b/app/Notifications/Schedule/NewScheduleNotification.php
index d89d72cdd23c..ed2c7680d251 100644
--- a/app/Notifications/Schedule/NewScheduleNotification.php
+++ b/app/Notifications/Schedule/NewScheduleNotification.php
@@ -72,15 +72,15 @@ public function toMail($notifiable)
{
$manageUrl = URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $notifiable->verify_code]);
- $content = trans('notifications.schedule.new.mail.content', [
- 'name' => $this->schedule->name,
- 'date' => $this->schedule->scheduled_at_formatted,
- ]);
+
return (new MailMessage())
->subject(trans('notifications.schedule.new.mail.subject'))
->markdown('notifications.schedule.new', [
- 'content' => $content,
+ 'name' => $this->schedule->name,
+ 'dateNumber' => $this->schedule->scheduled_at_number,
+ 'date' => $this->schedule->scheduled_at_formatted,
+ 'message' => $this->schedule->raw_message,
'unsubscribeText' => trans('cachet.subscriber.unsubscribe'),
'unsubscribeUrl' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code),
'manageSubscriptionText' => trans('cachet.subscriber.manage_subscription'),
@@ -117,6 +117,7 @@ public function toSlack($notifiable)
$content = trans('notifications.schedule.new.slack.content', [
'name' => $this->schedule->name,
'date' => $this->schedule->scheduled_at_formatted,
+
]);
return (new SlackMessage())
diff --git a/app/Presenters/SchedulePresenter.php b/app/Presenters/SchedulePresenter.php
index ddf0c04ffd1e..4adbc4214284 100644
--- a/app/Presenters/SchedulePresenter.php
+++ b/app/Presenters/SchedulePresenter.php
@@ -56,6 +56,15 @@ public function formatted_message()
{
return Markdown::convertToHtml($this->wrappedObject->message);
}
+ /**
+ * Return the raw text of the message, even without Markdown.
+ *
+ * @return string
+ */
+ public function raw_message()
+ {
+ return strip_tags($this->wrappedObject->message);
+ }
/**
* Present diff for humans date time.
@@ -106,7 +115,15 @@ public function scheduled_at()
{
return $this->dates->make($this->wrappedObject->scheduled_at)->toDateTimeString();
}
-
+ /**
+ * Present formatted date time.
+ *
+ * @return string
+ */
+ public function scheduled_at_number()
+ {
+ return $this->dates->make($this->wrappedObject->scheduled_at)->format('[d/m/Y]');
+ }
/**
* Present diff for humans date time.
*
diff --git a/composer.json b/composer.json
index 483d2f430a77..baa552851619 100644
--- a/composer.json
+++ b/composer.json
@@ -66,7 +66,7 @@
"require-dev": {
"ext-sqlite3": "*",
"alt-three/testbench": "v5.0.0",
- "barryvdh/laravel-debugbar": "^3.2",
+ "barryvdh/laravel-debugbar": "^3.4",
"filp/whoops": "^2.3",
"fzaninotto/faker": "^1.8",
"graham-campbell/analyzer": "^2.1",
diff --git a/composer.lock b/composer.lock
index 24973a5d5b6e..ec221bbfc1a3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cde42d4b12cfac9555ab3a9dffb18c9e",
+ "content-hash": "adfc34e3426c77741c85ca56e1bd1be8",
"packages": [
{
"name": "alt-three/bus",
diff --git a/config/bugsnag.php b/config/bugsnag.php
new file mode 100644
index 000000000000..d500b515dc3e
--- /dev/null
+++ b/config/bugsnag.php
@@ -0,0 +1,308 @@
+ env('BUGSNAG_API_KEY', ''),
+
+ /*
+ |--------------------------------------------------------------------------
+ | App Type
+ |--------------------------------------------------------------------------
+ |
+ | Set the type of application executing the current code.
+ |
+ */
+
+ 'app_type' => env('BUGSNAG_APP_TYPE'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | App Version
+ |--------------------------------------------------------------------------
+ |
+ | Set the version of application executing the current code.
+ |
+ */
+
+ 'app_version' => env('BUGSNAG_APP_VERSION'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Batch Sending
+ |--------------------------------------------------------------------------
+ |
+ | Set to true to send the errors through to Bugsnag when the PHP process
+ | shuts down, in order to prevent your app waiting on HTTP requests.
+ |
+ | Setting this to false will send an HTTP request straight away for each
+ | error.
+ |
+ */
+
+ 'batch_sending' => env('BUGSNAG_BATCH_SENDING'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Endpoint
+ |--------------------------------------------------------------------------
+ |
+ | Set what server the Bugsnag notifier should send errors to. By default
+ | this is set to 'https://notify.bugsnag.com', but for Bugsnag Enterprise
+ | this should be the URL to your Bugsnag instance.
+ |
+ */
+
+ 'endpoint' => env('BUGSNAG_ENDPOINT'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Filters
+ |--------------------------------------------------------------------------
+ |
+ | Use this if you want to ensure you don't send sensitive data such as
+ | passwords, and credit card numbers to our servers. Any keys which
+ | contain these strings will be filtered.
+ |
+ */
+
+ 'filters' => empty(env('BUGSNAG_FILTERS')) ? null : explode(',', str_replace(' ', '', env('BUGSNAG_FILTERS'))),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Hostname
+ |--------------------------------------------------------------------------
+ |
+ | You can set the hostname of your server to something specific for you to
+ | identify it by if needed.
+ |
+ */
+
+ 'hostname' => env('BUGSNAG_HOSTNAME'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Proxy
+ |--------------------------------------------------------------------------
+ |
+ | This is where you can set the proxy settings you'd like us to use when
+ | communicating with Bugsnag when reporting errors.
+ |
+ */
+
+ 'proxy' => array_filter([
+ 'http' => env('HTTP_PROXY'),
+ 'https' => env('HTTPS_PROXY'),
+ 'no' => empty(env('NO_PROXY')) ? null : explode(',', str_replace(' ', '', env('NO_PROXY'))),
+ ]),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Project Root
+ |--------------------------------------------------------------------------
+ |
+ | Bugsnag marks stacktrace lines as in-project if they come from files
+ | inside your “project root”. You can set this here.
+ |
+ | If this is not set, we will automatically try to detect it.
+ |
+ */
+
+ 'project_root' => env('BUGSNAG_PROJECT_ROOT'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Project Root Regex
+ |--------------------------------------------------------------------------
+ |
+ | Bugsnag marks stacktrace lines as in-project if they come from files
+ | inside your “project root”. You can set this here.
+ |
+ | This option allows you to set it as a regular expression and will take
+ | precedence over "project_root" if both are defined.
+ |
+ */
+
+ 'project_root_regex' => env('BUGSNAG_PROJECT_ROOT_REGEX'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Strip Path
+ |--------------------------------------------------------------------------
+ |
+ | The strip path is a path to be trimmed from the start of any filepaths in
+ | your stacktraces.
+ |
+ | If this is not set, we will automatically try to detect it.
+ |
+ */
+
+ 'strip_path' => env('BUGSNAG_STRIP_PATH'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Strip Path Regex
+ |--------------------------------------------------------------------------
+ |
+ | The strip path is a path to be trimmed from the start of any filepaths in
+ | your stacktraces.
+ |
+ | This option allows you to set it as a regular expression and will take
+ | precedence over "strip_path" if both are defined.
+ |
+ */
+
+ 'strip_path_regex' => env('BUGSNAG_STRIP_PATH_REGEX'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Query
+ |--------------------------------------------------------------------------
+ |
+ | Enable this if you'd like us to automatically record all queries executed
+ | as breadcrumbs.
+ |
+ */
+
+ 'query' => env('BUGSNAG_QUERY', true),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Bindings
+ |--------------------------------------------------------------------------
+ |
+ | Enable this if you'd like us to include the query bindings in our query
+ | breadcrumbs.
+ |
+ */
+
+ 'bindings' => env('BUGSNAG_QUERY_BINDINGS', false),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Release Stage
+ |--------------------------------------------------------------------------
+ |
+ | Set the release stage to use when sending notifications to Bugsnag.
+ |
+ | Leaving this unset will default to using the application environment.
+ |
+ */
+
+ 'release_stage' => env('BUGSNAG_RELEASE_STAGE'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Notify Release Stages
+ |--------------------------------------------------------------------------
+ |
+ | Set which release stages should send notifications to Bugsnag.
+ |
+ */
+
+ 'notify_release_stages' => empty(env('BUGSNAG_NOTIFY_RELEASE_STAGES')) ? null : explode(',', str_replace(' ', '', env('BUGSNAG_NOTIFY_RELEASE_STAGES'))),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Send Code
+ |--------------------------------------------------------------------------
+ |
+ | Bugsnag automatically sends a small snippet of the code that crashed to
+ | help you diagnose even faster from within your dashboard. If you don’t
+ | want to send this snippet, then set this to false.
+ |
+ */
+
+ 'send_code' => env('BUGSNAG_SEND_CODE', true),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Callbacks
+ |--------------------------------------------------------------------------
+ |
+ | Enable this if you'd like us to enable our default set of notification
+ | callbacks. These add things like the cookie information and session
+ | details to the error to be sent to Bugsnag.
+ |
+ | If you'd like to add your own callbacks, you can call the
+ | Bugsnag::registerCallback method from the boot method of your app
+ | service provider.
+ |
+ */
+
+ 'callbacks' => env('BUGSNAG_CALLBACKS', true),
+
+ /*
+ |--------------------------------------------------------------------------
+ | User
+ |--------------------------------------------------------------------------
+ |
+ | Enable this if you'd like us to set the current user logged in via
+ | Laravel's authentication system.
+ |
+ | If you'd like to add your own user resolver, you can do this by using
+ | callbacks via Bugsnag::registerCallback.
+ |
+ */
+
+ 'user' => env('BUGSNAG_USER', true),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Logger Notify Level
+ |--------------------------------------------------------------------------
+ |
+ | This sets the level at which a logged message will trigger a notification
+ | to Bugsnag. By default this level will be 'notice'.
+ |
+ | Must be one of the Psr\Log\LogLevel levels from the Psr specification.
+ |
+ */
+
+ 'logger_notify_level' => env('BUGSNAG_LOGGER_LEVEL'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Auto Capture Sessions
+ |--------------------------------------------------------------------------
+ |
+ | Enable this to start tracking sessions and deliver them to Bugsnag.
+ |
+ */
+
+ 'auto_capture_sessions' => env('BUGSNAG_CAPTURE_SESSIONS', false),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Sessions Endpoint
+ |--------------------------------------------------------------------------
+ |
+ | Sets a url to send tracked sessions to.
+ |
+ */
+
+ 'session_endpoint' => env('BUGSNAG_SESSION_ENDPOINT'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Builds Endpoint
+ |--------------------------------------------------------------------------
+ |
+ | Sets a url to send build reports to.
+ |
+ */
+
+ 'build_endpoint' => env('BUGSNAG_BUILD_ENDPOINT'),
+
+];
diff --git a/resources/lang/fr/cachet.php b/resources/lang/fr/cachet.php
index ee6aa08fcac8..dc6ce06c2c91 100644
--- a/resources/lang/fr/cachet.php
+++ b/resources/lang/fr/cachet.php
@@ -65,11 +65,17 @@
// Subscriber
'subscriber' => [
- 'subscribe' => 'Abonnez-vous pour obtenir les dernières mises à jour.',
- 'button' => 'S\'abonner',
+ 'subscribe' => 'Abonnez-vous pour obtenir les dernières mises à jour.',
+ 'unsubscribe' => 'Se désabonner',
+ 'button' => 'S\'abonner',
+ 'manage_subscription' => 'Gérer l\'abonnement',
'manage' => [
- 'no_subscriptions' => 'Vous êtes actuellement abonné à toutes les mises à jour.',
- 'my_subscriptions' => 'Vous êtes actuellement abonné aux mises à jour suivantes.',
+ 'notifications' => 'Notifications',
+ 'notifications_for' => 'Gérer les notifications pour',
+ 'no_subscriptions' => 'Vous êtes actuellement abonné à toutes les mises à jour.',
+ 'update_subscription' => 'Mettre à jour les abonnements',
+ 'my_subscriptions' => 'Vous êtes actuellement abonné aux mises à jour suivantes.',
+ 'manage_at_link' => 'Gérer vos abonnements à :link',
],
'email' => [
'subscribe' => 'S\'abonner aux notifications par email.',
diff --git a/resources/lang/fr/dashboard.php b/resources/lang/fr/dashboard.php
index b9f2a379a826..85bd874f3107 100644
--- a/resources/lang/fr/dashboard.php
+++ b/resources/lang/fr/dashboard.php
@@ -12,6 +12,7 @@
return [
'dashboard' => 'Tableau de bord',
+ 'writeable_settings' => 'Le répertoire des paramètres Cachet n’est pas inscriptible. Assurez-vous que /bootstrap/cachet est inscriptible par le serveur web.',
// Incidents
'incidents' => [
@@ -20,6 +21,25 @@
'logged' => '{0} Aucun incident, bon travail.|Vous avez un incident signalé.|Vous avez :count incidents signalés.',
'incident-create-template' => 'Créer un modèle',
'incident-templates' => 'Modèles d\'incident',
+ 'updates' => [
+ 'title' => 'Mises à jour des incidents pour :incident',
+ 'count' => '{0}Aucune mise à jour|[1]Une mise à jour|[2]Deux mises à jour|[3,*]Plusieurs mises à jour',
+ 'add' => [
+ 'title' => 'Ajouter un incident',
+ 'success' => 'Incident ajouté.',
+ 'failure' => 'Une erreur s\'est produite en ajoutant l\'incident, veuillez réessayer.',
+ ],
+ 'edit' => [
+ 'title' => 'Modifier un incident',
+ 'success' => 'Incident mis à jour.',
+ 'failure' => 'Une erreur s\'est produite en modifiant l\'incident, veuillez réessayer.',
+ ],
+ 'delete' => [
+ 'success' => 'L\'incident a été supprimé et ne sera pas affiché sur votre page de statut.',
+ 'failure' => 'L\'incident n\'a pas pu être supprimé. Veuillez réessayer.',
+ ],
+ ],
+ 'reported_by' => 'Rapporté :timestamp by :user',
'add' => [
'title' => 'Ajouter un incident',
'success' => 'Incident ajouté.',
@@ -142,10 +162,12 @@
'subscribers' => [
'subscribers' => 'Abonnés',
'description' => 'Les abonnés recevront des notifications par e-mail lorsque des incidents sont créés ou des composants sont mis à jour.',
+ 'description_disabled' => 'Pour utiliser cette fonctionnalité, vous devez autoriser les personnes à s’inscrire aux notifications.',
'verified' => 'Vérifié',
'not_verified' => 'Non vérifié',
'subscriber' => ':email, abonné à :date',
'no_subscriptions' => 'Souscrire à toutes les mises à jour',
+ 'global' => 'Globalement abonnés',
'add' => [
'title' => 'Ajouter un abonné',
'success' => 'L\'abonné a été ajouté !',
@@ -197,6 +219,9 @@
'analytics' => [
'analytics' => 'Analytics',
],
+ 'log' => [
+ 'log' => 'Log',
+ ],
'localization' => [
'localization' => 'Localisation',
],
@@ -205,6 +230,15 @@
'header' => 'Entête HTML personnalisé',
'footer' => 'Pied de page HTML personnalisé',
],
+ 'mail' => [
+ 'mail' => 'Mail',
+ 'test' => 'Test',
+ 'email' => [
+ 'subject' => 'Notification test de Cachet',
+ 'body' => 'Ceci est une notification test.',
+ ],
+ 'signature' => 'Signature électronique HTML personnalisée',
+ ],
'security' => [
'security' => 'Sécurité',
'two-factor' => 'Utilisateurs sans authentification à deux facteurs',
@@ -226,6 +260,7 @@
'backers-title' => 'Partenaires financiers et sponsors',
'backers' => 'Si vous souhaitez aider des développements futurs jetez un œil à la campagne Cachet Patreon.',
'thank-you' => 'Merci à chacun des :count contributeurs.',
+ 'unable-to-load'=> 'Impossible de charger les détails sur les contributeurs et les sponsors.'
],
],
diff --git a/resources/lang/fr/forms.php b/resources/lang/fr/forms.php
index a590a54d3b19..6f71117366dd 100644
--- a/resources/lang/fr/forms.php
+++ b/resources/lang/fr/forms.php
@@ -15,26 +15,33 @@
'setup' => [
'email' => 'Adresse e-mail',
'username' => 'Nom d\'utilisateur',
- 'password' => 'Mot de passe ',
+ 'password' => 'Mot de passe',
'site_name' => 'Nom du site',
'site_domain' => 'Nom de domaine du site',
'site_timezone' => 'Choisissez votre fuseau horaire',
'site_locale' => 'Sélectionner votre langue',
'enable_google2fa' => 'Activer l\'authentification à deux facteurs de Google',
'cache_driver' => 'Gestionnaire de cache',
+ 'queue_driver' => 'pilote de file d’attente',
'session_driver' => 'Gestionnaire de session',
+ 'mail_driver' => 'Driver de mail',
+ 'mail_host' => 'Hôte de mail',
+ 'mail_address' => 'Mail de l\'adresse',
+ 'mail_username' => 'Nom d\'utilisateur mail' ,
+ 'mail_password' => 'Mot de passe du mail',
],
// Login form fields
'login' => [
'login' => 'Nom d\'utilisateur ou e-mail',
'email' => 'Email',
- 'password' => 'Mot de passe ',
+ 'password' => 'Mot de passe',
'2fauth' => 'Code d\'authentification',
'invalid' => 'Nom d\'utilisateur ou mot de passe incorrect',
'invalid-token' => 'Jeton invalide',
'cookies' => 'Vous devez activer les cookies pour vous connecter.',
'rate-limit' => 'Limite de tentatives atteinte.',
+ 'remember_me' => 'Remember me',
],
// Incidents form fields
@@ -44,10 +51,14 @@
'component' => 'Composant',
'message' => 'Message',
'message-help' => 'Vous pouvez également utiliser le format Markdown.',
+ 'occurred_at' => 'Quand cet incident s’est-il produit ?',
'scheduled_at' => 'Quand planifier la maintenance ?',
'incident_time' => 'Quand s\'est produit cet incident ?',
'notify_subscribers' => 'Notifier les abonnés ?',
'visibility' => 'Visibilité de l\'incident',
+ 'stick_status' => 'Coller l\'incident',
+ 'stickied' => 'Coller l\'incident',
+ 'not_stickied' => 'Ne pas coller l\'incident',
'public' => 'Visible par le public',
'logged_in_only' => 'Uniquement visible par les utilisateurs enregistrés',
'templates' => [
@@ -57,6 +68,20 @@
],
],
+ 'schedules' => [
+ 'name' => 'Nom',
+ 'status' => 'Status',
+ 'message' => 'Message',
+ 'message-help' => 'Vous pouvez également utiliser Markdown.',
+ 'scheduled_at' => 'Quand cette maintenance est-elle programmée ?',
+ 'completed_at' => 'Quand cette maintenance s’est-elle terminée ?',
+ 'templates' => [
+ 'name' => 'Nom',
+ 'template' => 'Template',
+ 'twig' => 'Vous pouvez utiliser Twig pour créer des modèles par langues pour les modèles d\'incidents.',
+ ],
+ ],
+
// Components form fields
'components' => [
'name' => 'Nom',
@@ -74,6 +99,24 @@
'visible' => 'Toujours déplier',
'collapsed' => 'Réduire le groupe par défaut',
'collapsed_incident' => 'Réduire le groupe par défaut, mais déplier s\'il y a des incidents',
+ 'visibility' => 'Visibilité',
+ 'visibility_public' => 'Visible de tous',
+ 'visibility_authenticated' => 'Visible uniquement pour les utilisateurs connectés',
+ ],
+ ],
+
+ // Action form fields
+ 'actions' => [
+ 'name' => 'Nom',
+ 'description' => 'Description',
+ 'start_at' => 'Horaire heure de début',
+ 'timezone' => 'Fuseau horaire',
+ 'schedule_frequency' => 'Fréquence de planification (en secondes)',
+ 'completion_latency' => 'Latence d’achèvement (en secondes)',
+ 'group' => 'Groupe',
+ 'active' => 'Active?',
+ 'groups' => [
+ 'name' => 'Nom du groupe',
],
],
@@ -91,6 +134,10 @@
'places' => 'Nombre de chiffres après la virgule',
'default_view' => 'Vue par défaut',
'threshold' => 'Quel intervalle en minutes entre chaque point de métrique ?',
+ 'visibility' => 'Visibilité',
+ 'visibility_authenticated' => 'Visible aux utilisateurs authentifiés',
+ 'visibility_public' => 'Visible pour tous',
+ 'visibility_hidden' => 'Toujours caché',
'points' => [
'value' => 'Valeur',
@@ -101,15 +148,22 @@
'settings' => [
/// Application setup
'app-setup' => [
- 'site-name' => 'Nom du site',
- 'site-url' => 'URL du site',
- 'display-graphs' => 'Afficher les graphiques sur la page de statut ?',
- 'about-this-page' => 'À propos de cette page',
- 'days-of-incidents' => 'Combien de jours d\'incidents à montrer ?',
- 'banner' => 'Image d\'en-tête',
- 'banner-help' => 'Il est recommandé de téléchargez un fichier ne dépassant pas 930px de large .',
- 'subscribers' => 'Permettre aux personnes de s\'inscrire aux notifications par e-mail ?',
- 'automatic_localization' => 'Traduire automatiquement votre page de statut dans la langue du visiteur ?',
+ 'site-name' => 'Nom du site',
+ 'site-url' => 'URL du site',
+ 'display-graphs' => 'Afficher les graphiques sur la page de statut ?',
+ 'about-this-page' => 'À propos de cette page',
+ 'days-of-incidents' => 'Combien de jours d\'incidents à montrer ?',
+ 'time_before_refresh' => 'Taux de rafraîchissement de la page d’état (en secondes)',
+ 'major_outage_rate' => 'Seuil d’arrêt majeur (en %)',
+ 'banner' => 'Image d\'en-tête',
+ 'banner-help' => 'Il est recommandé de téléchargez un fichier ne dépassant pas 930px de large .',
+ 'subscribers' => 'Permettre aux personnes de s\'inscrire aux notifications par e-mail ?',
+ 'suppress_notifications_in_maintenance' => 'Supprimer les notifications lorsque l’incident se produit pendant la période de maintenance ?',
+ 'skip_subscriber_verification' => 'Sauter la vérification des utilisateurs? (Soyez averti, vous pourriez être spammé)',
+ 'automatic_localization' => 'Traduire automatiquement votre page de statut dans la langue du visiteur ?',
+ 'enable_external_dependencies' => 'Activer les dépendances tierces (Google Fonts, Trackers, etc...)',
+ 'show_timezone' => 'Afficher le fuseau horaire de la page d’état',
+ 'only_disrupted_days' => 'Ne montrez que les jours contenant des incidents dans le calendrier?',
],
'analytics' => [
'analytics_google' => 'Code de Google Analytics',
@@ -126,6 +180,8 @@
'security' => [
'allowed-domains' => 'Domaines autorisés',
'allowed-domains-help' => 'Séparés par des virgules. Le domaine défini ci-dessus est automatiquement autorisé par défaut.',
+ 'always-authenticate' => 'Toujours s’authentifier',
+ 'always-authenticate-help' => 'Besoin d’ouvrir une session pour afficher n’importe quelle page Cachet',
],
'stylesheet' => [
'custom-css' => 'Feuille de style personnalisée',
@@ -151,7 +207,7 @@
'user' => [
'username' => 'Nom d\'utilisateur',
'email' => 'Email',
- 'password' => 'Mot de passe ',
+ 'password' => 'Mot de passe',
'api-token' => 'Jeton de l\'API',
'api-token-help' => 'Régénérer votre jeton API empêchera les applications existantes d\'accéder à Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
@@ -169,6 +225,9 @@
],
],
+ 'general' => [
+ 'timezone' => 'Sélectionnez le fuseau horaire',
+ ],
// Buttons
'add' => 'Ajouter',
'save' => 'Enregistrer',
@@ -181,7 +240,7 @@
'remove' => 'Enlever',
'invite' => 'Inviter',
'signup' => 'Inscription',
-
+ 'manage_updates' => 'Gérer les mises à jour',
// Other
'optional' => '* Optionnel',
];
diff --git a/resources/lang/fr/notifications.php b/resources/lang/fr/notifications.php
new file mode 100644
index 000000000000..2656ad2335f7
--- /dev/null
+++ b/resources/lang/fr/notifications.php
@@ -0,0 +1,125 @@
+ [
+ 'salutation' => 'Cordialement,',
+ 'alternative_link' => "Si vous avez de la difficulté à cliquer sur le bouton \":actionText\" copiez et collez l’URL ci-dessous dans votre navigateur web : :actionURL",
+ 'copyright_notice' => 'Tout droits réservés.',
+ ],
+ 'component' => [
+ 'status_update' => [
+ 'mail' => [
+ 'subject' => 'État des composants mis à jour',
+ 'greeting' => 'L\'état d’un composant a été mis à jour !',
+ 'content' => ':name statut changé de :old_status à :new_status.',
+ 'action' => 'Affichage',
+ 'thanks' => 'Cordialement,',
+ ],
+ 'slack' => [
+ 'title' => 'État des composants mis à jour',
+ 'content' => ':name statut changé de :old_status à :new_status.',
+ ],
+ 'sms' => [
+ 'content' => ':name statut changé de :old_status à :new_status.',
+ ],
+ ],
+ ],
+ 'incident' => [
+ 'new' => [
+ 'mail' => [
+ 'subject' => 'Nouvel incident signalé',
+ 'greeting' => 'Un nouvel incident a été signalé à l\'adresse :app_name.',
+ 'content' => 'Incident :name a été signalé',
+ 'action' => 'Affichage',
+ 'thanks' => 'Cordialement,',
+ ],
+ 'slack' => [
+ 'title' => 'Incident :name a été signalé',
+ 'content' => 'Un nouvel incident a été signalé à l\'adresse :app_name.',
+ ],
+ 'sms' => [
+ 'content' => 'Un nouvel incident a été signalé à l\'adresse :app_name.',
+ ],
+ ],
+ 'update' => [
+ 'mail' => [
+ 'subject' => 'Incident mis à jour',
+ 'content' => ':name a été mis à jour',
+ 'title' => ':name a été mis à jour pour :new_status',
+ 'action' => 'Affichage',
+ 'thanks' => 'Cordialement,',
+ ],
+ 'slack' => [
+ 'title' => ':name a été mis à jour',
+ 'content' => ':name a été mis à jour pour :new_status',
+ ],
+ 'sms' => [
+ 'content' => 'Incident :name a été mis à jour',
+ ],
+ ],
+ ],
+ 'schedule' => [
+ 'new' => [
+ 'mail' => [
+ 'subject' => 'Nouveau calendrier créé',
+ 'content' => 'Planifié
:name est prévue pour :date,
:message
', + 'title' => 'Une nouvelle maintenance planifiée a été créée. ', + 'action' => 'Affichage', + 'thanks' => 'Cordialement,', + ], + 'slack' => [ + 'title' => 'Nouveau calendrier créé', + 'content' => ':name est prévue pour :date', + ], + 'sms' => [ + 'content' => ':name est prévue pour :date', + ], + ], + ], + 'subscriber' => [ + 'verify' => [ + 'mail' => [ + 'content' => 'Cliquez pour vérifier votre abonnement à la page d\'état :app_name.', + 'title' => 'Vérifiez votre abonnement à la page d’état :app_name.', + 'action' => 'Vérifer', + ], + ], + 'manage' => [ + 'mail' => [ + 'subject' => 'Gérer vos abonnements', + 'content' => 'Cliquez pour gérer votre abonnement à la page d\'état :app_name.', + 'title' => 'Cliquez pour gérer votre abonnement à la page d\'état :app_name.', + 'action' => 'Gérer l\'abonnement', + ], + ], + ], + 'system' => [ + 'test' => [ + 'mail' => [ + 'subject' => 'Ping from Cachet!', + 'content' => 'This is a test notification from Cachet!', + 'title' => '🔔', + ], + ], + ], + 'user' => [ + 'invite' => [ + 'mail' => [ + 'subject' => 'Votre invitation est à l\'intérieur...', + 'content' => 'Vous avez été invité à rejoindre la page de statut :app_name.', + 'title' => 'Vous êtes invité à rejoindre :app_name status page.', + 'action' => 'Accepter', + ], + ], + ], +]; + diff --git a/resources/views/notifications/partials/subscription.blade.php b/resources/views/notifications/partials/subscription.blade.php index 89ec227d1efb..863e1a4e279a 100644 --- a/resources/views/notifications/partials/subscription.blade.php +++ b/resources/views/notifications/partials/subscription.blade.php @@ -1,5 +1,8 @@ {!! Config::get('setting.mail_signature') !!} +@component('mail::button', ['url' => $manageSubscriptionUrl]) + {{ $manageSubscriptionText }} +@endcomponent @component('mail::subcopy') -[{{ $unsubscribeText }}]({{ $unsubscribeUrl }}) — [{{ $manageSubscriptionText }}]({{ $manageSubscriptionUrl }}) + [{{ $unsubscribeText }}]({{ $unsubscribeUrl }}) @endcomponent diff --git a/resources/views/notifications/schedule/new.blade.php b/resources/views/notifications/schedule/new.blade.php index 912110bd125c..9858b2803476 100644 --- a/resources/views/notifications/schedule/new.blade.php +++ b/resources/views/notifications/schedule/new.blade.php @@ -1,11 +1,8 @@ @component('mail::message') -# {{ trans('notifications.schedule.new.mail.title') }} +# {{$dateNumber}}{{$name}} -{{ $content }} - -{{ trans('notifications.common.salutation') }}