mirror of
https://github.com/cachethq/cachet.git
synced 2026-03-05 16:37:01 +00:00
Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c57ed65fa | ||
|
|
e0fd2db5ea | ||
|
|
7e1d0ebc75 | ||
|
|
7f0a77ffa1 | ||
|
|
a3f696e5b3 | ||
|
|
fe0cc779b9 | ||
|
|
02a240a172 | ||
|
|
47d0d4e007 | ||
|
|
3e6a9fc77f | ||
|
|
94d92aa6dc | ||
|
|
a35ea250da | ||
|
|
a1346deda9 | ||
|
|
07db5defb7 | ||
|
|
f26d4c41c5 | ||
|
|
a88eadf79f | ||
|
|
78eb149fc6 | ||
|
|
dfa602f1f5 | ||
|
|
352090d90f | ||
|
|
bffb244506 | ||
|
|
108a1fa0dd | ||
|
|
647fb5a4d5 | ||
|
|
8dec726bc4 | ||
|
|
9f920634db | ||
|
|
2934f9be67 | ||
|
|
6756c037c9 | ||
|
|
83e979cc25 | ||
|
|
438964c1dd | ||
|
|
9a8e9a47c4 | ||
|
|
5e05b859ae | ||
|
|
4becca76f3 | ||
|
|
46578f9407 | ||
|
|
0a30a07c43 | ||
|
|
3e9b560640 | ||
|
|
ca263d8b50 | ||
|
|
6986ee95d3 | ||
|
|
fd429a6ea7 | ||
|
|
59f69f6d99 | ||
|
|
f5756ff4bf | ||
|
|
5e907ba04f | ||
|
|
d12748a49d | ||
|
|
eeaa4cbc91 | ||
|
|
2f8db16161 | ||
|
|
96d90aff65 | ||
|
|
1b60d00bba | ||
|
|
b0049611af | ||
|
|
95bbb955aa | ||
|
|
ad414a11e0 | ||
|
|
f76e9bab06 | ||
|
|
9aa5972040 | ||
|
|
11b1125cf8 | ||
|
|
2467d24702 | ||
|
|
a62860fda3 | ||
|
|
c91344f79c | ||
|
|
a4819099eb | ||
|
|
99d599e1c7 | ||
|
|
77d1a45538 | ||
|
|
b5ca990ae5 | ||
|
|
9d6ef75597 | ||
|
|
5299d9ea16 | ||
|
|
d6a55a6540 | ||
|
|
38a4fb710f | ||
|
|
6496f8c928 | ||
|
|
c20f1ac785 |
14
README.md
14
README.md
@@ -40,6 +40,15 @@ The following extra dependencies are required to develop Cachet.
|
||||
|
||||
You can now find our documentation at [https://docs.cachethq.io](https://docs.cachethq.io) or, directly at [http://cachet.readme.io](http://cachet.readme.io) if the first link fails to load. [Cachet Demo](https://demo.cachethq.io)
|
||||
|
||||
### Demo Account
|
||||
|
||||
To test out the demo, you may login to the [Dashboard](https://demo.cachethq.io/dashboard) with the following:
|
||||
|
||||
- **Username:** test@test.com
|
||||
- **Password:** test123
|
||||
|
||||
The demo is reset every half past the hour.
|
||||
|
||||
## What Cachet is not
|
||||
|
||||
Here is a list of things that Cachet is not or does not do:
|
||||
@@ -77,6 +86,11 @@ Now go to `http://<ipdockerisboundto>/setup` and have fun!
|
||||
Note: When running in production you should ensure that you enable SSL.
|
||||
This is commonly achieved by running Nginx with your certificates on your Docker host, service or load balancers in-front of the running container, or by adding your custom SSL certificates and configuration to the supplied Nginx configuration.
|
||||
|
||||
## Addons
|
||||
|
||||
- [cachet-monitor](https://github.com/castawaylabs/cachet-monitor) - For url monitoring. Automatic incident updates
|
||||
- [sensu-cachet](https://github.com/bimlendu/sensu-cachethq) - Sensu handler for updating CachetHQ.
|
||||
|
||||
## Read more about Cachet
|
||||
|
||||
For more information on why I started developing Cachet, check out my [Cachet articles on my blog](https://james-brooks.uk/tag/cachet/?utm_source=github&utm_medium=readme&utm_campaign=github-cachet).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
body.status-page {
|
||||
font-family: 'Open Sans', 'Helevetic Neue', Arial, sans-serif;
|
||||
font-family: $base-font-family;
|
||||
background-color: #F0F3F4;
|
||||
color: #333333;
|
||||
font-size: 1.4em;
|
||||
@@ -263,6 +263,10 @@ body.status-page {
|
||||
font-size: 1.1em;
|
||||
padding: 15px 15px;
|
||||
|
||||
a {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin: 0;
|
||||
font-weight: 400;
|
||||
@@ -273,6 +277,28 @@ body.status-page {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
&.group-name {
|
||||
font-size: 1.2em;
|
||||
background-color: $cachet_gray_light;
|
||||
padding: {
|
||||
top: 0.6em;
|
||||
bottom: 0.6em;
|
||||
}
|
||||
}
|
||||
|
||||
&.sub-component {
|
||||
&:before {
|
||||
@extend .ion;
|
||||
content: $ionicon-var-ios-plus-outline;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
&.break {
|
||||
padding: 1px;
|
||||
background-color: $cachet_gray_light;
|
||||
}
|
||||
}
|
||||
|
||||
&.components {
|
||||
|
||||
@@ -15,7 +15,7 @@ $tooltip-bg: #333 !default;
|
||||
$tooltip-opacity: .9 !default;
|
||||
$base-background-color: #f1f1f1;
|
||||
|
||||
$base-font-family: "Lato", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
|
||||
$base-font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
|
||||
$base-font-weight: 400;
|
||||
$base-letter-spacing: 0.08em;
|
||||
$base-font-size: 15px;
|
||||
|
||||
@@ -2,10 +2,14 @@
|
||||
|
||||
return [
|
||||
// Enabled langs
|
||||
'en-UD' => 'CrowdIn - InContext Localization',
|
||||
'de' => 'Deutsch',
|
||||
'en' => 'English',
|
||||
'es' => 'Español',
|
||||
'fr' => 'Français',
|
||||
'pt-BR' => 'Portuguese, Brazilian',
|
||||
'en-UD' => 'CrowdIn - InContext Localization',
|
||||
'de' => 'Deutsch',
|
||||
'en' => 'English',
|
||||
'pl' => 'Polski',
|
||||
'es' => 'Español',
|
||||
'fr' => 'Français',
|
||||
'nl' => 'Nederlands',
|
||||
'pt-BR' => 'Portuguese, Brazilian',
|
||||
'zh-Hant' => 'Chinese (Traditional)',
|
||||
'zh-Hans' => 'Chinese (Simplified)',
|
||||
];
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|
||||
@@ -17,7 +17,6 @@ class CreateComponentGroupsTable extends Migration
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -17,37 +17,37 @@ class ComponentTableSeeder extends Seeder
|
||||
|
||||
$defaultComponents = [
|
||||
[
|
||||
"name" => "API",
|
||||
"description" => "Used by third-parties to connect to us",
|
||||
"status" => 2,
|
||||
"user_id" => 1,
|
||||
"order" => 0,
|
||||
"group_id" => 0,
|
||||
"link" => "",
|
||||
'name' => 'API',
|
||||
'description' => 'Used by third-parties to connect to us',
|
||||
'status' => 2,
|
||||
'user_id' => 1,
|
||||
'order' => 0,
|
||||
'group_id' => 0,
|
||||
'link' => '',
|
||||
], [
|
||||
"name" => "Documentation",
|
||||
"description" => "Kindly powered by Readme.io",
|
||||
"status" => 1,
|
||||
"user_id" => 1,
|
||||
"order" => 0,
|
||||
"group_id" => 0,
|
||||
"link" => "https://docs.cachethq.io",
|
||||
'name' => 'Documentation',
|
||||
'description' => 'Kindly powered by Readme.io',
|
||||
'status' => 1,
|
||||
'user_id' => 1,
|
||||
'order' => 0,
|
||||
'group_id' => 0,
|
||||
'link' => 'https://docs.cachethq.io',
|
||||
], [
|
||||
"name" => "Website",
|
||||
"description" => "",
|
||||
"status" => 1,
|
||||
"user_id" => 1,
|
||||
"order" => 0,
|
||||
"group_id" => 0,
|
||||
"link" => "https://cachethq.io",
|
||||
'name' => 'Website',
|
||||
'description' => '',
|
||||
'status' => 1,
|
||||
'user_id' => 1,
|
||||
'order' => 0,
|
||||
'group_id' => 0,
|
||||
'link' => 'https://cachethq.io',
|
||||
], [
|
||||
"name" => "Blog",
|
||||
"description" => "The Cachet HQ blog.",
|
||||
"status" => 1,
|
||||
"user_id" => 1,
|
||||
"order" => 0,
|
||||
"group_id" => 0,
|
||||
"link" => "https://blog.cachethq.io",
|
||||
'name' => 'Blog',
|
||||
'description' => 'The Cachet HQ blog.',
|
||||
'status' => 1,
|
||||
'user_id' => 1,
|
||||
'order' => 0,
|
||||
'group_id' => 0,
|
||||
'link' => 'https://blog.cachethq.io',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -17,35 +17,35 @@ class IncidentTableSeeder extends Seeder
|
||||
|
||||
$defaultIncidents = [
|
||||
[
|
||||
"name" => "Awesome",
|
||||
"message" => "We totally nailed the fix.",
|
||||
"status" => 4,
|
||||
"component_id" => 0,
|
||||
"user_id" => 1,
|
||||
"scheduled_at" => null,
|
||||
'name' => 'Awesome',
|
||||
'message' => 'We totally nailed the fix.',
|
||||
'status' => 4,
|
||||
'component_id' => 0,
|
||||
'user_id' => 1,
|
||||
'scheduled_at' => null,
|
||||
],
|
||||
[
|
||||
"name" => "Monitoring the fix",
|
||||
"message" => "We're checking that our fix will first work.",
|
||||
"status" => 3,
|
||||
"component_id" => 0,
|
||||
"user_id" => 1,
|
||||
"scheduled_at" => null,
|
||||
'name' => 'Monitoring the fix',
|
||||
'message' => "We're checking that our fix will first work.",
|
||||
'status' => 3,
|
||||
'component_id' => 0,
|
||||
'user_id' => 1,
|
||||
'scheduled_at' => null,
|
||||
],
|
||||
[
|
||||
"name" => "Update",
|
||||
"message" => "We've found the problem, so we're looking at it.",
|
||||
"status" => 2,
|
||||
"component_id" => 0,
|
||||
"user_id" => 1,
|
||||
"scheduled_at" => null,
|
||||
'name' => 'Update',
|
||||
'message' => "We've found the problem, so we're looking at it.",
|
||||
'status' => 2,
|
||||
'component_id' => 0,
|
||||
'user_id' => 1,
|
||||
'scheduled_at' => null,
|
||||
],
|
||||
[
|
||||
"name" => "Test Incident",
|
||||
"message" => "Something went wrong, oh noes.",
|
||||
"component_id" => 0,
|
||||
"user_id" => 1,
|
||||
"scheduled_at" => null,
|
||||
'name' => 'Test Incident',
|
||||
'message' => 'Something went wrong, oh noes.',
|
||||
'component_id' => 0,
|
||||
'user_id' => 1,
|
||||
'scheduled_at' => null,
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -17,36 +17,36 @@ class SettingsTableSeeder extends Seeder
|
||||
|
||||
$defaultSettings = [
|
||||
[
|
||||
"name" => "app_name",
|
||||
"value" => "Cachet Demo",
|
||||
'name' => 'app_name',
|
||||
'value' => 'Cachet Demo',
|
||||
],
|
||||
[
|
||||
"name" => "app_domain",
|
||||
"value" => "https://demo.cachethq.io",
|
||||
'name' => 'app_domain',
|
||||
'value' => 'https://demo.cachethq.io',
|
||||
],
|
||||
[
|
||||
"name" => "show_support",
|
||||
"value" => "1",
|
||||
'name' => 'show_support',
|
||||
'value' => '1',
|
||||
],
|
||||
[
|
||||
"name" => "app_locale",
|
||||
"value" => "en",
|
||||
'name' => 'app_locale',
|
||||
'value' => 'en',
|
||||
],
|
||||
[
|
||||
"name" => "app_timezone",
|
||||
"value" => "Europe/London",
|
||||
'name' => 'app_timezone',
|
||||
'value' => 'Europe/London',
|
||||
],
|
||||
[
|
||||
"name" => "app_track",
|
||||
"value" => "1",
|
||||
'name' => 'app_track',
|
||||
'value' => '1',
|
||||
],
|
||||
[
|
||||
"name" => "app_incident_days",
|
||||
"value" => "7",
|
||||
'name' => 'app_incident_days',
|
||||
'value' => '7',
|
||||
],
|
||||
[
|
||||
"name" => "app_analytics",
|
||||
"value" => "UA-58442674-3",
|
||||
'name' => 'app_analytics',
|
||||
'value' => 'UA-58442674-3',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@ class UsersTableSeeder extends Seeder
|
||||
|
||||
$users = [
|
||||
[
|
||||
"username" => "test",
|
||||
"password" => "test123",
|
||||
"email" => "test@test.com",
|
||||
"level" => 1,
|
||||
"api_key" => "9yMHsdioQosnyVK4iCVR",
|
||||
'username' => 'test',
|
||||
'password' => 'test123',
|
||||
'email' => 'test@test.com',
|
||||
'level' => 1,
|
||||
'api_key' => '9yMHsdioQosnyVK4iCVR',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ return [
|
||||
'next_week' => 'nächste Woche',
|
||||
'none' => 'keine Vorfälle',
|
||||
'status' => [
|
||||
0 => '',
|
||||
1 => 'Untersuchung läuft',
|
||||
2 => 'Problem identifiziert',
|
||||
3 => 'Problem unter Beobachtung',
|
||||
|
||||
@@ -80,8 +80,8 @@ return [
|
||||
'about-this-page' => 'Über diese Seite',
|
||||
'days-of-incidents' => 'Wie viele (vergangene) Tage sollen angezeigt werden?',
|
||||
'banner' => 'Banner-Bild',
|
||||
'banner-help' => "Wählen Sie möglichst ein Bild mit 930 px Breite.",
|
||||
'google-analytics' => "Google Analytics Code",
|
||||
'banner-help' => 'Wählen Sie möglichst ein Bild mit 930 px Breite.',
|
||||
'google-analytics' => 'Google Analytics Code',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Erlaubte Domains',
|
||||
|
||||
@@ -13,65 +13,65 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "<em>:attribute</em> muss akzeptiert werden.",
|
||||
"active_url" => "<em>:attribute</em> ist keine valide URL.",
|
||||
"after" => "<em>:attribute</em> muss nach :date liegen.",
|
||||
"alpha" => "<em>:attribute</em> darf nur Buchstaben enthalten.",
|
||||
"alpha_dash" => "<em>:attribute</em> darf nur Nummern, Buchstaben und Slashes enthalten.",
|
||||
"alpha_num" => "<em>:attribute</em> darf nur Nummern und Buchstaben enthalten.",
|
||||
"array" => "<em>:attribute</em> muss ein Array sein.",
|
||||
"before" => "<em>:attribute</em> muss vor :date liegen.",
|
||||
"between" => [
|
||||
"numeric" => "<em>:attribute</em> muss zwichen :min und :max liegen.",
|
||||
"file" => "<em>:attribute</em> muss zwischen :min und :max kilobyte liegen.",
|
||||
"string" => "<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss zwischen :min und :max Werte enthalten.",
|
||||
'accepted' => '<em>:attribute</em> muss akzeptiert werden.',
|
||||
'active_url' => '<em>:attribute</em> ist keine valide URL.',
|
||||
'after' => '<em>:attribute</em> muss nach :date liegen.',
|
||||
'alpha' => '<em>:attribute</em> darf nur Buchstaben enthalten.',
|
||||
'alpha_dash' => '<em>:attribute</em> darf nur Nummern, Buchstaben und Slashes enthalten.',
|
||||
'alpha_num' => '<em>:attribute</em> darf nur Nummern und Buchstaben enthalten.',
|
||||
'array' => '<em>:attribute</em> muss ein Array sein.',
|
||||
'before' => '<em>:attribute</em> muss vor :date liegen.',
|
||||
'between' => [
|
||||
'numeric' => '<em>:attribute</em> muss zwichen :min und :max liegen.',
|
||||
'file' => '<em>:attribute</em> muss zwischen :min und :max kilobyte liegen.',
|
||||
'string' => '<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.',
|
||||
'array' => '<em>:attribute</em> muss zwischen :min und :max Werte enthalten.',
|
||||
],
|
||||
"boolean" => "<em>:attribute</em> Feld muss 'true' oder 'false' sein.",
|
||||
"confirmed" => "Die Bestätigung/Wiederholung von <em>:attribute</em> stimmt nicht überein.",
|
||||
"date" => "<em>:attribute</em> ist kein valides Datum.",
|
||||
"date_format" => "<em>:attribute</em> passt nicht zu folgendem Format :format.",
|
||||
"different" => "<em>:attribute</em> und :other müssen sich unterscheiden.",
|
||||
"digits" => "<em>:attribute</em> muss :digits Zeichen lang sein.",
|
||||
"digits_between" => "<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.",
|
||||
"email" => "<em>:attribute</em> muss eine valide E-Mail-Adresse sein.",
|
||||
"exists" => "Das gewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"image" => "<em>:attribute</em> muss ein Bild sein.",
|
||||
"in" => "Das ausgewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"integer" => "<em>:attribute</em> muss eine Zahl sein.",
|
||||
"ip" => "<em>:attribute</em> muss eine valide IP sein.", # IPv4?
|
||||
"max" => [
|
||||
"numeric" => "<em>:attribute</em> darf nicht größer als :max sein.",
|
||||
"file" => "<em>:attribute</em> darf nicht größer als :max kilobyte sein.",
|
||||
"string" => "<em>:attribute</em> darf nicht mehr als :max Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> darf nicht mehr als :max Werte enthalten.",
|
||||
'boolean' => "<em>:attribute</em> Feld muss 'true' oder 'false' sein.",
|
||||
'confirmed' => 'Die Bestätigung/Wiederholung von <em>:attribute</em> stimmt nicht überein.',
|
||||
'date' => '<em>:attribute</em> ist kein valides Datum.',
|
||||
'date_format' => '<em>:attribute</em> passt nicht zu folgendem Format :format.',
|
||||
'different' => '<em>:attribute</em> und :other müssen sich unterscheiden.',
|
||||
'digits' => '<em>:attribute</em> muss :digits Zeichen lang sein.',
|
||||
'digits_between' => '<em>:attribute</em> muss zwischen :min und :max Zeichen lang sein.',
|
||||
'email' => '<em>:attribute</em> muss eine valide E-Mail-Adresse sein.',
|
||||
'exists' => 'Das gewählte <em>:attribute</em> ist nicht korrekt.',
|
||||
'image' => '<em>:attribute</em> muss ein Bild sein.',
|
||||
'in' => 'Das ausgewählte <em>:attribute</em> ist nicht korrekt.',
|
||||
'integer' => '<em>:attribute</em> muss eine Zahl sein.',
|
||||
'ip' => '<em>:attribute</em> muss eine valide IP sein.', # IPv4?
|
||||
'max' => [
|
||||
'numeric' => '<em>:attribute</em> darf nicht größer als :max sein.',
|
||||
'file' => '<em>:attribute</em> darf nicht größer als :max kilobyte sein.',
|
||||
'string' => '<em>:attribute</em> darf nicht mehr als :max Zeichen lang sein.',
|
||||
'array' => '<em>:attribute</em> darf nicht mehr als :max Werte enthalten.',
|
||||
],
|
||||
"mimes" => "<em>:attribute</em> muss eine Datei vom Typ :values sein.",
|
||||
"min" => [
|
||||
"numeric" => "<em>:attribute</em> muss mindestens :min sein.",
|
||||
"file" => "<em>:attribute</em> muss mindestens :min kilobyte groß sein.",
|
||||
"string" => "<em>:attribute</em> muss mindestens :min Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss mindestens :min Werte enthalten.",
|
||||
'mimes' => '<em>:attribute</em> muss eine Datei vom Typ :values sein.',
|
||||
'min' => [
|
||||
'numeric' => '<em>:attribute</em> muss mindestens :min sein.',
|
||||
'file' => '<em>:attribute</em> muss mindestens :min kilobyte groß sein.',
|
||||
'string' => '<em>:attribute</em> muss mindestens :min Zeichen lang sein.',
|
||||
'array' => '<em>:attribute</em> muss mindestens :min Werte enthalten.',
|
||||
],
|
||||
"not_in" => "Das ausgewählte <em>:attribute</em> ist nicht korrekt.",
|
||||
"numeric" => "<em>:attribute</em> muss eine Nummer sein.",
|
||||
"regex" => "Das Format von <em>:attribute</em> ist nicht korrekt.",
|
||||
"required" => "<em>:attribute</em> wird benötigt.",
|
||||
"required_if" => "<em>:attribute</em> wird benötigt wenn :other den Wert :value hat.",
|
||||
"required_with" => "<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.",
|
||||
"required_with_all" => "<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.",
|
||||
"required_without" => "<em>:attribute</em> ist erforderlich wenn :values nicht vorhanden ist.",
|
||||
"required_without_all" => "<em>:attribute</em> ist erforderlich wenn keines der Werte :values vorhanden sind.",
|
||||
"same" => "<em>:attribute</em> und :other müssen übereinstimmen.",
|
||||
"size" => [
|
||||
"numeric" => "<em>:attribute</em> muss :size sein.",
|
||||
"file" => "<em>:attribute</em> muss :size kilobyte groß sein.",
|
||||
"string" => "<em>:attribute</em> muss :size Zeichen lang sein.",
|
||||
"array" => "<em>:attribute</em> muss :size Werte enthalten.",
|
||||
'not_in' => 'Das ausgewählte <em>:attribute</em> ist nicht korrekt.',
|
||||
'numeric' => '<em>:attribute</em> muss eine Nummer sein.',
|
||||
'regex' => 'Das Format von <em>:attribute</em> ist nicht korrekt.',
|
||||
'required' => '<em>:attribute</em> wird benötigt.',
|
||||
'required_if' => '<em>:attribute</em> wird benötigt wenn :other den Wert :value hat.',
|
||||
'required_with' => '<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.',
|
||||
'required_with_all' => '<em>:attribute</em> ist erforderlich wenn :values vorhanden ist.',
|
||||
'required_without' => '<em>:attribute</em> ist erforderlich wenn :values nicht vorhanden ist.',
|
||||
'required_without_all' => '<em>:attribute</em> ist erforderlich wenn keines der Werte :values vorhanden sind.',
|
||||
'same' => '<em>:attribute</em> und :other müssen übereinstimmen.',
|
||||
'size' => [
|
||||
'numeric' => '<em>:attribute</em> muss :size sein.',
|
||||
'file' => '<em>:attribute</em> muss :size kilobyte groß sein.',
|
||||
'string' => '<em>:attribute</em> muss :size Zeichen lang sein.',
|
||||
'array' => '<em>:attribute</em> muss :size Werte enthalten.',
|
||||
],
|
||||
"unique" => "<em>:attribute</em> wurde beirets gewählt.",
|
||||
"url" => "Das Format von <em>:attribute</em> ist nicht korrekt.",
|
||||
"timezone" => "<em>:attribute</em> muss eine valide Zeitzone sein.",
|
||||
'unique' => '<em>:attribute</em> wurde beirets gewählt.',
|
||||
'url' => 'Das Format von <em>:attribute</em> ist nicht korrekt.',
|
||||
'timezone' => '<em>:attribute</em> muss eine valide Zeitzone sein.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -80,8 +80,8 @@ return [
|
||||
'about-this-page' => 'crwdns402:0crwdne402:0',
|
||||
'days-of-incidents' => 'crwdns403:0crwdne403:0',
|
||||
'banner' => 'crwdns404:0crwdne404:0',
|
||||
'banner-help' => "crwdns405:0crwdne405:0",
|
||||
'google-analytics' => "crwdns406:0crwdne406:0",
|
||||
'banner-help' => 'crwdns405:0crwdne405:0',
|
||||
'google-analytics' => 'crwdns406:0crwdne406:0',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'crwdns407:0crwdne407:0',
|
||||
|
||||
@@ -13,65 +13,65 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "crwdns96:0crwdne96:0",
|
||||
"active_url" => "crwdns97:0crwdne97:0",
|
||||
"after" => "crwdns98:0crwdne98:0",
|
||||
"alpha" => "crwdns99:0crwdne99:0",
|
||||
"alpha_dash" => "crwdns100:0crwdne100:0",
|
||||
"alpha_num" => "crwdns101:0crwdne101:0",
|
||||
"array" => "crwdns102:0crwdne102:0",
|
||||
"before" => "crwdns103:0crwdne103:0",
|
||||
"between" => [
|
||||
"numeric" => "crwdns104:0crwdne104:0",
|
||||
"file" => "crwdns418:0crwdne418:0",
|
||||
"string" => "crwdns419:0crwdne419:0",
|
||||
"array" => "crwdns420:0crwdne420:0",
|
||||
'accepted' => 'crwdns96:0crwdne96:0',
|
||||
'active_url' => 'crwdns97:0crwdne97:0',
|
||||
'after' => 'crwdns98:0crwdne98:0',
|
||||
'alpha' => 'crwdns99:0crwdne99:0',
|
||||
'alpha_dash' => 'crwdns100:0crwdne100:0',
|
||||
'alpha_num' => 'crwdns101:0crwdne101:0',
|
||||
'array' => 'crwdns102:0crwdne102:0',
|
||||
'before' => 'crwdns103:0crwdne103:0',
|
||||
'between' => [
|
||||
'numeric' => 'crwdns104:0crwdne104:0',
|
||||
'file' => 'crwdns418:0crwdne418:0',
|
||||
'string' => 'crwdns419:0crwdne419:0',
|
||||
'array' => 'crwdns420:0crwdne420:0',
|
||||
],
|
||||
"boolean" => "crwdns108:0crwdne108:0",
|
||||
"confirmed" => "crwdns109:0crwdne109:0",
|
||||
"date" => "crwdns110:0crwdne110:0",
|
||||
"date_format" => "crwdns111:0crwdne111:0",
|
||||
"different" => "crwdns112:0crwdne112:0",
|
||||
"digits" => "crwdns113:0crwdne113:0",
|
||||
"digits_between" => "crwdns114:0crwdne114:0",
|
||||
"email" => "crwdns115:0crwdne115:0",
|
||||
"exists" => "crwdns116:0crwdne116:0",
|
||||
"image" => "crwdns117:0crwdne117:0",
|
||||
"in" => "crwdns118:0crwdne118:0",
|
||||
"integer" => "crwdns119:0crwdne119:0",
|
||||
"ip" => "crwdns120:0crwdne120:0",
|
||||
"max" => [
|
||||
"numeric" => "crwdns121:0crwdne121:0",
|
||||
"file" => "crwdns421:0crwdne421:0",
|
||||
"string" => "crwdns422:0crwdne422:0",
|
||||
"array" => "crwdns423:0crwdne423:0",
|
||||
'boolean' => 'crwdns108:0crwdne108:0',
|
||||
'confirmed' => 'crwdns109:0crwdne109:0',
|
||||
'date' => 'crwdns110:0crwdne110:0',
|
||||
'date_format' => 'crwdns111:0crwdne111:0',
|
||||
'different' => 'crwdns112:0crwdne112:0',
|
||||
'digits' => 'crwdns113:0crwdne113:0',
|
||||
'digits_between' => 'crwdns114:0crwdne114:0',
|
||||
'email' => 'crwdns115:0crwdne115:0',
|
||||
'exists' => 'crwdns116:0crwdne116:0',
|
||||
'image' => 'crwdns117:0crwdne117:0',
|
||||
'in' => 'crwdns118:0crwdne118:0',
|
||||
'integer' => 'crwdns119:0crwdne119:0',
|
||||
'ip' => 'crwdns120:0crwdne120:0',
|
||||
'max' => [
|
||||
'numeric' => 'crwdns121:0crwdne121:0',
|
||||
'file' => 'crwdns421:0crwdne421:0',
|
||||
'string' => 'crwdns422:0crwdne422:0',
|
||||
'array' => 'crwdns423:0crwdne423:0',
|
||||
],
|
||||
"mimes" => "crwdns125:0crwdne125:0",
|
||||
"min" => [
|
||||
"numeric" => "crwdns126:0crwdne126:0",
|
||||
"file" => "crwdns424:0crwdne424:0",
|
||||
"string" => "crwdns425:0crwdne425:0",
|
||||
"array" => "crwdns426:0crwdne426:0",
|
||||
'mimes' => 'crwdns125:0crwdne125:0',
|
||||
'min' => [
|
||||
'numeric' => 'crwdns126:0crwdne126:0',
|
||||
'file' => 'crwdns424:0crwdne424:0',
|
||||
'string' => 'crwdns425:0crwdne425:0',
|
||||
'array' => 'crwdns426:0crwdne426:0',
|
||||
],
|
||||
"not_in" => "crwdns130:0crwdne130:0",
|
||||
"numeric" => "crwdns131:0crwdne131:0",
|
||||
"regex" => "crwdns132:0crwdne132:0",
|
||||
"required" => "crwdns133:0crwdne133:0",
|
||||
"required_if" => "crwdns134:0crwdne134:0",
|
||||
"required_with" => "crwdns135:0crwdne135:0",
|
||||
"required_with_all" => "crwdns136:0crwdne136:0",
|
||||
"required_without" => "crwdns137:0crwdne137:0",
|
||||
"required_without_all" => "crwdns138:0crwdne138:0",
|
||||
"same" => "crwdns139:0crwdne139:0",
|
||||
"size" => [
|
||||
"numeric" => "crwdns140:0crwdne140:0",
|
||||
"file" => "crwdns427:0crwdne427:0",
|
||||
"string" => "crwdns428:0crwdne428:0",
|
||||
"array" => "crwdns429:0crwdne429:0",
|
||||
'not_in' => 'crwdns130:0crwdne130:0',
|
||||
'numeric' => 'crwdns131:0crwdne131:0',
|
||||
'regex' => 'crwdns132:0crwdne132:0',
|
||||
'required' => 'crwdns133:0crwdne133:0',
|
||||
'required_if' => 'crwdns134:0crwdne134:0',
|
||||
'required_with' => 'crwdns135:0crwdne135:0',
|
||||
'required_with_all' => 'crwdns136:0crwdne136:0',
|
||||
'required_without' => 'crwdns137:0crwdne137:0',
|
||||
'required_without_all' => 'crwdns138:0crwdne138:0',
|
||||
'same' => 'crwdns139:0crwdne139:0',
|
||||
'size' => [
|
||||
'numeric' => 'crwdns140:0crwdne140:0',
|
||||
'file' => 'crwdns427:0crwdne427:0',
|
||||
'string' => 'crwdns428:0crwdne428:0',
|
||||
'array' => 'crwdns429:0crwdne429:0',
|
||||
],
|
||||
"unique" => "crwdns144:0crwdne144:0",
|
||||
"url" => "crwdns145:0crwdne145:0",
|
||||
"timezone" => "crwdns146:0crwdne146:0",
|
||||
'unique' => 'crwdns144:0crwdne144:0',
|
||||
'url' => 'crwdns145:0crwdne145:0',
|
||||
'timezone' => 'crwdns146:0crwdne146:0',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -62,6 +62,7 @@ return [
|
||||
'components' => [
|
||||
'components' => 'Components',
|
||||
'component_statuses' => 'Component Statuses',
|
||||
'listed_group' => 'Grouped under :name',
|
||||
'add' => [
|
||||
'title' => 'Add a component',
|
||||
'message' => 'You should add a component.',
|
||||
@@ -132,7 +133,8 @@ return [
|
||||
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Security',
|
||||
'security' => 'Security',
|
||||
'two-factor' => 'Users without two-factor authentication',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Stylesheet',
|
||||
@@ -177,7 +179,7 @@ return [
|
||||
'customize' => 'Customize',
|
||||
'team' => 'Add users',
|
||||
'api' => 'Generate API token',
|
||||
'two-factor' => 'Two Factor Authetication',
|
||||
'two-factor' => 'Two Factor Authentication',
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ return [
|
||||
'days-of-incidents' => 'How many days of incidents to show?',
|
||||
'banner' => 'Banner Image',
|
||||
'banner-help' => "It's recommended that you upload files no bigger than 930px wide .",
|
||||
'google-analytics' => "Google Analytics code",
|
||||
'google-analytics' => 'Google Analytics code',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Allowed domains',
|
||||
|
||||
@@ -13,65 +13,65 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "The :attribute must be accepted.",
|
||||
"active_url" => "The :attribute is not a valid URL.",
|
||||
"after" => "The :attribute must be a date after :date.",
|
||||
"alpha" => "The :attribute may only contain letters.",
|
||||
"alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
|
||||
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||
"array" => "The :attribute must be an array.",
|
||||
"before" => "The :attribute must be a date before :date.",
|
||||
"between" => [
|
||||
"numeric" => "The :attribute must be between :min and :max.",
|
||||
"file" => "The :attribute must be between :min and :max kilobytes.",
|
||||
"string" => "The :attribute must be between :min and :max characters.",
|
||||
"array" => "The :attribute must have between :min and :max items.",
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
"boolean" => "The :attribute field must be true or false.",
|
||||
"confirmed" => "The :attribute confirmation does not match.",
|
||||
"date" => "The :attribute is not a valid date.",
|
||||
"date_format" => "The :attribute does not match the format :format.",
|
||||
"different" => "The :attribute and :other must be different.",
|
||||
"digits" => "The :attribute must be :digits digits.",
|
||||
"digits_between" => "The :attribute must be between :min and :max digits.",
|
||||
"email" => "The :attribute must be a valid email address.",
|
||||
"exists" => "The selected :attribute is invalid.",
|
||||
"image" => "The :attribute must be an image.",
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
"ip" => "The :attribute must be a valid IP address.",
|
||||
"max" => [
|
||||
"numeric" => "The :attribute may not be greater than :max.",
|
||||
"file" => "The :attribute may not be greater than :max kilobytes.",
|
||||
"string" => "The :attribute may not be greater than :max characters.",
|
||||
"array" => "The :attribute may not have more than :max items.",
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
"mimes" => "The :attribute must be a file of type: :values.",
|
||||
"min" => [
|
||||
"numeric" => "The :attribute must be at least :min.",
|
||||
"file" => "The :attribute must be at least :min kilobytes.",
|
||||
"string" => "The :attribute must be at least :min characters.",
|
||||
"array" => "The :attribute must have at least :min items.",
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
"not_in" => "The selected :attribute is invalid.",
|
||||
"numeric" => "The :attribute must be a number.",
|
||||
"regex" => "The :attribute format is invalid.",
|
||||
"required" => "The :attribute field is required.",
|
||||
"required_if" => "The :attribute field is required when :other is :value.",
|
||||
"required_with" => "The :attribute field is required when :values is present.",
|
||||
"required_with_all" => "The :attribute field is required when :values is present.",
|
||||
"required_without" => "The :attribute field is required when :values is not present.",
|
||||
"required_without_all" => "The :attribute field is required when none of :values are present.",
|
||||
"same" => "The :attribute and :other must match.",
|
||||
"size" => [
|
||||
"numeric" => "The :attribute must be :size.",
|
||||
"file" => "The :attribute must be :size kilobytes.",
|
||||
"string" => "The :attribute must be :size characters.",
|
||||
"array" => "The :attribute must contain :size items.",
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
"unique" => "The :attribute has already been taken.",
|
||||
"url" => "The :attribute format is invalid.",
|
||||
"timezone" => "The :attribute must be a valid zone.",
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -19,6 +19,7 @@ return [
|
||||
'next_week' => 'Siguiente semana',
|
||||
'none' => 'No hay ninguna incidencia reportada.',
|
||||
'status' => [
|
||||
0 => '',
|
||||
1 => 'Investigando',
|
||||
2 => 'Identificado',
|
||||
3 => 'Observando',
|
||||
|
||||
@@ -81,8 +81,8 @@ return [
|
||||
'about-this-page' => 'Sobre esta página',
|
||||
'days-of-incidents' => '¿Cuántos días de incidentes mostrar?',
|
||||
'banner' => 'Imagen de inicio',
|
||||
'banner-help' => "Se recomienda subir una imagen no más grande de 930px de ancho .",
|
||||
'google-analytics' => "Código de Google Analytics",
|
||||
'banner-help' => 'Se recomienda subir una imagen no más grande de 930px de ancho .',
|
||||
'google-analytics' => 'Código de Google Analytics',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Dominios permitidos',
|
||||
|
||||
@@ -13,65 +13,65 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "El :attribute debe ser aceptado.",
|
||||
"active_url" => "El :attribute no es un enlace válido.",
|
||||
"after" => "El :attribute debe ser una fecha después de :date.",
|
||||
"alpha" => "El :attribute sólo puede contener letras.",
|
||||
"alpha_dash" => "El :attribute sólo puede contener letras, números y guiones.",
|
||||
"alpha_num" => "El :attribute sólo puede contener letras y números.",
|
||||
"array" => "El :attribute debe ser una matriz.",
|
||||
"before" => "El :attribute debe ser una fecha antes de :date.",
|
||||
"between" => [
|
||||
"numeric" => "El :attribute debe ser entre :min y :max.",
|
||||
"file" => "El :attribute debe ser entre :min y :max kilobytes.",
|
||||
"string" => "El :attribute debe tener entre :min y :max caracteres.",
|
||||
"array" => "El :attribute debe tener entre :min y :max objetos.",
|
||||
'accepted' => 'El :attribute debe ser aceptado.',
|
||||
'active_url' => 'El :attribute no es un enlace válido.',
|
||||
'after' => 'El :attribute debe ser una fecha después de :date.',
|
||||
'alpha' => 'El :attribute sólo puede contener letras.',
|
||||
'alpha_dash' => 'El :attribute sólo puede contener letras, números y guiones.',
|
||||
'alpha_num' => 'El :attribute sólo puede contener letras y números.',
|
||||
'array' => 'El :attribute debe ser una matriz.',
|
||||
'before' => 'El :attribute debe ser una fecha antes de :date.',
|
||||
'between' => [
|
||||
'numeric' => 'El :attribute debe ser entre :min y :max.',
|
||||
'file' => 'El :attribute debe ser entre :min y :max kilobytes.',
|
||||
'string' => 'El :attribute debe tener entre :min y :max caracteres.',
|
||||
'array' => 'El :attribute debe tener entre :min y :max objetos.',
|
||||
],
|
||||
"boolean" => "El campo del :attribute debe ser verdadero o falso.",
|
||||
"confirmed" => "La confirmación del :attribute no coincide.",
|
||||
"date" => "El :attribute no es una fecha válida.",
|
||||
"date_format" => "El :attribute no cumple el formato :format.",
|
||||
"different" => ":attribute y :other deben ser diferentes.",
|
||||
"digits" => "El :attribute debe tener :digits dígitos.",
|
||||
"digits_between" => "El :attribute debe tener entre: min y :max dígitos.",
|
||||
"email" => "El :attribute debe ser una dirección de email válida.",
|
||||
"exists" => "El :attribute seleccionado es inválido.",
|
||||
"image" => "El :attribute debe ser una imagen.",
|
||||
"in" => "El :attribute seleccionado es inválido.",
|
||||
"integer" => "El :attribute debe ser un número entero.",
|
||||
"ip" => "El :attribute debe ser una dirección IP válida.",
|
||||
"max" => [
|
||||
"numeric" => "El :attribute no puede tener más de :max.",
|
||||
"file" => "El :attribute no puede tener más de :max kilobytes.",
|
||||
"string" => "El :attribute no puede tener más de :max caracteres.",
|
||||
"array" => "El :attribute no puede tener más de :max objetos.",
|
||||
'boolean' => 'El campo del :attribute debe ser verdadero o falso.',
|
||||
'confirmed' => 'La confirmación del :attribute no coincide.',
|
||||
'date' => 'El :attribute no es una fecha válida.',
|
||||
'date_format' => 'El :attribute no cumple el formato :format.',
|
||||
'different' => ':attribute y :other deben ser diferentes.',
|
||||
'digits' => 'El :attribute debe tener :digits dígitos.',
|
||||
'digits_between' => 'El :attribute debe tener entre: min y :max dígitos.',
|
||||
'email' => 'El :attribute debe ser una dirección de email válida.',
|
||||
'exists' => 'El :attribute seleccionado es inválido.',
|
||||
'image' => 'El :attribute debe ser una imagen.',
|
||||
'in' => 'El :attribute seleccionado es inválido.',
|
||||
'integer' => 'El :attribute debe ser un número entero.',
|
||||
'ip' => 'El :attribute debe ser una dirección IP válida.',
|
||||
'max' => [
|
||||
'numeric' => 'El :attribute no puede tener más de :max.',
|
||||
'file' => 'El :attribute no puede tener más de :max kilobytes.',
|
||||
'string' => 'El :attribute no puede tener más de :max caracteres.',
|
||||
'array' => 'El :attribute no puede tener más de :max objetos.',
|
||||
],
|
||||
"mimes" => "El :attribute debe ser un archivo de tipo: :values.",
|
||||
"min" => [
|
||||
"numeric" => "El :attribute debe tener al menos :min.",
|
||||
"file" => "El :attribute debe tener al menos :min kilobytes.",
|
||||
"string" => "El :attribute debe tener al menos :min characters.",
|
||||
"array" => "El :attribute debe tener al menos :min objetos.",
|
||||
'mimes' => 'El :attribute debe ser un archivo de tipo: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'El :attribute debe tener al menos :min.',
|
||||
'file' => 'El :attribute debe tener al menos :min kilobytes.',
|
||||
'string' => 'El :attribute debe tener al menos :min characters.',
|
||||
'array' => 'El :attribute debe tener al menos :min objetos.',
|
||||
],
|
||||
"not_in" => "El :attribute seleccionado es inválido.",
|
||||
"numeric" => "El :attribute sebe ser un número.",
|
||||
"regex" => "El formato del :attribute es inválido.",
|
||||
"required" => "El campo del :attribute es requerido.",
|
||||
"required_if" => "El campo del :attribute se requiere cuando :other es :value.",
|
||||
"required_with" => "El campo del :attribute se requiere cuando :values es presente.",
|
||||
"required_with_all" => "El campo del :attribute se requiere cuando :values es presente.",
|
||||
"required_without" => "El campo del :attribute se requiere cuando :values no es presente.",
|
||||
"required_without_all" => "El campo del :attribute se requiere cuando ninguno de los :values son presentes.",
|
||||
"same" => "Los :attribute y :other deben coincidir.",
|
||||
"size" => [
|
||||
"numeric" => "El :attribute debe ser :size.",
|
||||
"file" => "El :attribute debe ser :size kilobytes.",
|
||||
"string" => "El :attribute debe tener :size caracteres.",
|
||||
"array" => "El :attribute debe contener :size objetos.",
|
||||
'not_in' => 'El :attribute seleccionado es inválido.',
|
||||
'numeric' => 'El :attribute sebe ser un número.',
|
||||
'regex' => 'El formato del :attribute es inválido.',
|
||||
'required' => 'El campo del :attribute es requerido.',
|
||||
'required_if' => 'El campo del :attribute se requiere cuando :other es :value.',
|
||||
'required_with' => 'El campo del :attribute se requiere cuando :values es presente.',
|
||||
'required_with_all' => 'El campo del :attribute se requiere cuando :values es presente.',
|
||||
'required_without' => 'El campo del :attribute se requiere cuando :values no es presente.',
|
||||
'required_without_all' => 'El campo del :attribute se requiere cuando ninguno de los :values son presentes.',
|
||||
'same' => 'Los :attribute y :other deben coincidir.',
|
||||
'size' => [
|
||||
'numeric' => 'El :attribute debe ser :size.',
|
||||
'file' => 'El :attribute debe ser :size kilobytes.',
|
||||
'string' => 'El :attribute debe tener :size caracteres.',
|
||||
'array' => 'El :attribute debe contener :size objetos.',
|
||||
],
|
||||
"unique" => "El :attribute ya ha sido usado.",
|
||||
"url" => "El formato :attribute es inválido.",
|
||||
"timezone" => "El :attribute debe ser una zona válida.",
|
||||
'unique' => 'El :attribute ya ha sido usado.',
|
||||
'url' => 'El formato :attribute es inválido.',
|
||||
'timezone' => 'El :attribute debe ser una zona válida.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -18,10 +18,13 @@ return [
|
||||
'previous_week' => 'Semaine précédente',
|
||||
'next_week' => 'Semaine suivante',
|
||||
'none' => 'Rien à reporter',
|
||||
'scheduled' => 'Maintenance planifiée',
|
||||
'scheduled_at' => ', prévue à :timestamp',
|
||||
'status' => [
|
||||
0 => '',
|
||||
1 => 'Enquête en cours',
|
||||
2 => 'Identifié',
|
||||
3 => 'Analyse en cours',
|
||||
3 => 'Sous surveillance',
|
||||
4 => 'Corrigé',
|
||||
],
|
||||
],
|
||||
@@ -37,6 +40,15 @@ return [
|
||||
'revoke' => 'Révoquer cette clé d\'API',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => 'Par heure',
|
||||
'daily' => 'Par jour',
|
||||
'monthly' => 'Par mois',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Status Page est propulsé par <a href="https://cachethq.github.io">Cachet</a>.',
|
||||
'about_this_site' => 'À propos de ce site',
|
||||
|
||||
@@ -13,12 +13,12 @@ return [
|
||||
'add' => [
|
||||
'title' => 'Ajouter un incident',
|
||||
'success' => 'Incident ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec cet incident.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de cet incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Éditer un incident',
|
||||
'success' => 'Incident mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec cet incident.',
|
||||
'failure' => 'Une erreur s\'est produite lors de la mise à jour de cet incident.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
'add' => [
|
||||
'title' => 'Créer un modèle d\'incident',
|
||||
'success' => 'Modèle créé.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce modèle d\'incident.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de ce modèle d\'incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Modifier un modèle',
|
||||
@@ -36,34 +36,54 @@ return [
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Composant|Composants',
|
||||
'component_statuses' => 'Statut des composants',
|
||||
'add' => [
|
||||
'title' => 'Créer un composant',
|
||||
'message' => 'Commencez par ajouter un composant.',
|
||||
'success' => 'Composant créé.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composant.',
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => 'Maintenance planifiée',
|
||||
'scheduled_at' => 'Prévue à :timestamp',
|
||||
'add' => [
|
||||
'title' => 'Ajouter une maintenance planifiée',
|
||||
'success' => 'Maintenance ajoutée.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de la maintenance.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Éditer un composant',
|
||||
'title' => 'Éditer la maintenance',
|
||||
'success' => 'Maintenance mise à jour!',
|
||||
'failure' => 'Une erreur s\'est produite lors de la modification de la maintenance.',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => 'La maintenance a été effacée et ne s\'affihera plus..',
|
||||
'failure' => 'La maintenance n\'a pu être effacée. Veuillez essayez de nouveau.',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Composantes',
|
||||
'component_statuses' => 'Statut des composantes',
|
||||
'add' => [
|
||||
'title' => 'Créer une composante',
|
||||
'message' => 'Commencez par ajouter une composante.',
|
||||
'success' => 'Composante créée.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de cette composante.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Éditer une composante',
|
||||
'success' => 'Composant mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composant.',
|
||||
'failure' => 'Une erreur s\'est produite lors de la mise à jour de cette composante.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Groupe de composants|Groupes de composants',
|
||||
'groups' => 'Groupe de composantes',
|
||||
'add' => [
|
||||
'title' => 'Ajouter un group de composants',
|
||||
'success' => 'Groupe de composants ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce composantgroupe de composants.',
|
||||
'title' => 'Ajouter un group de composantes',
|
||||
'success' => 'Groupe de composantes ajouté.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de ce groupe de composantes.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a component group',
|
||||
'success' => 'Component group updated.',
|
||||
'failure' => 'Something went wrong with the component group.',
|
||||
'title' => 'Éditer un groupe de composantes',
|
||||
'success' => 'Groupe de composantes mis-à-jour.',
|
||||
'failure' => 'Une erreur s\'est produite lors de la mise à jour de ce groupe de composantes.',
|
||||
],
|
||||
],
|
||||
],
|
||||
@@ -77,9 +97,9 @@ return [
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce point de mesure.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edit a metric',
|
||||
'success' => 'Metric updated.',
|
||||
'failure' => 'Something went wrong with the metric.',
|
||||
'title' => 'Éditer un point de mesure',
|
||||
'success' => 'Point de mesure mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce point de mesure.',
|
||||
],
|
||||
],
|
||||
|
||||
@@ -88,16 +108,16 @@ return [
|
||||
'team' => 'Équipe',
|
||||
'member' => 'Membre',
|
||||
'profile' => 'Profil',
|
||||
'description' => 'Les membres de l\'équipe pourrons ajouter, modifier & éditer les composants et incidents.',
|
||||
'description' => 'Les membres de l\'équipe pourrons ajouter, modifier & éditer les composantes et incidents.',
|
||||
'add' => [
|
||||
'title' => 'Ajouter un membre à l\'équipe',
|
||||
'success' => 'Membre ajouté.',
|
||||
'failure' => 'Il s\'est passé quelque chose avec ce membre.',
|
||||
'failure' => 'Une erreur s\'est produite lors de l\'ajout de ce membre.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Mettre à jour le profil',
|
||||
'success' => 'Profil mis-à-jour.',
|
||||
'failure' => 'Il s\'est passé quelque chose en mettant à jour le profil.',
|
||||
'failure' => 'Une erreur s\'est produite lors de la mise à jour du le profil.',
|
||||
],
|
||||
],
|
||||
|
||||
@@ -127,9 +147,9 @@ return [
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Connexion',
|
||||
'logged_in' => "Vous êtes connecté.",
|
||||
'logged_in' => 'Vous êtes connecté.',
|
||||
'welcome' => 'Re-bonjour !',
|
||||
'two-factor' => 'Please enter your token.',
|
||||
'two-factor' => 'Entrez votre jeton d\'identification.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
@@ -140,22 +160,22 @@ return [
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Notifications',
|
||||
'awesome' => 'Cool.',
|
||||
'awesome' => 'Super.',
|
||||
'whoops' => 'Oups.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Welcome to Cachet',
|
||||
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
|
||||
'close' => 'Just go straight to my dashboard',
|
||||
'welcome' => 'Bienvenue dans Cachet',
|
||||
'message' => 'Votre page d\'état est presque prête! Vous voudrez probablement configurer ces réglages supplémentaires',
|
||||
'close' => 'Aller directement au tableau de bord',
|
||||
'steps' => [
|
||||
'component' => 'Create components',
|
||||
'incident' => 'Create incidents',
|
||||
'customize' => 'Customize your Cachet Status Page.',
|
||||
'team' => 'Add users to your team.',
|
||||
'api' => 'Generate API token.',
|
||||
'two-factor' => 'Enable Two Factor Authetication.',
|
||||
'component' => 'Créer une composante',
|
||||
'incident' => 'Créer un incident',
|
||||
'customize' => 'Configurer votre Cachet.',
|
||||
'team' => 'Ajouter des utilisateurs à votre équipe.',
|
||||
'api' => 'Générer un jeton d\'identification API.',
|
||||
'two-factor' => 'Activer l\'identification à deux étapes.',
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
@@ -80,8 +80,8 @@ return [
|
||||
'about-this-page' => 'À propos de cette page',
|
||||
'days-of-incidents' => 'Nombre de jours à afficher ?',
|
||||
'banner' => 'Bannière',
|
||||
'banner-help' => "Il est recommandé de télécharger des fichiers de moins de 930 pixels de large.",
|
||||
'google-analytics' => "Google Analytics code",
|
||||
'banner-help' => 'Il est recommandé de télécharger des fichiers de moins de 930 pixels de large.',
|
||||
'google-analytics' => 'Google Analytics code',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Domaines autorisés. <small class="help-block"></small>',
|
||||
|
||||
@@ -13,63 +13,63 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "Le champ :attribute doit être accepté.",
|
||||
"active_url" => "Le champ :attribute n'est pas une URL valide.",
|
||||
"after" => "Le champ :attribute doit être une date postérieure à :date.",
|
||||
"alpha" => "Le champ :attribute ne peut contenir que des lettres.",
|
||||
"alpha_dash" => "Le champ :attribute ne peut contenir que des lettres, chiffres et tirets.",
|
||||
"alpha_num" => "Le champ :attribute ne peut contenir que des lettres ou des chiffres.",
|
||||
"array" => "Le champ :attribute doit être un tableau.",
|
||||
"before" => "Le champ :attribute doit être une date antérieure à :date.",
|
||||
"between" => [
|
||||
"numeric" => "Le champ :attribute doit être entre :min et :max.",
|
||||
"file" => "Le champ :attribute doit être entre :min et :max kilobytes.",
|
||||
"string" => "Le champ :attribute doit contenir entre :min et :max caractères.",
|
||||
"array" => "Le champ :attribute doit avoir entre :min et :max objets.",
|
||||
'accepted' => 'Le champ :attribute doit être accepté.',
|
||||
'active_url' => "Le champ :attribute n'est pas une URL valide.",
|
||||
'after' => 'Le champ :attribute doit être une date postérieure à :date.',
|
||||
'alpha' => 'Le champ :attribute ne peut contenir que des lettres.',
|
||||
'alpha_dash' => 'Le champ :attribute ne peut contenir que des lettres, chiffres et tirets.',
|
||||
'alpha_num' => 'Le champ :attribute ne peut contenir que des lettres ou des chiffres.',
|
||||
'array' => 'Le champ :attribute doit être un tableau.',
|
||||
'before' => 'Le champ :attribute doit être une date antérieure à :date.',
|
||||
'between' => [
|
||||
'numeric' => 'Le champ :attribute doit être entre :min et :max.',
|
||||
'file' => 'Le champ :attribute doit être entre :min et :max kilobytes.',
|
||||
'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.',
|
||||
'array' => 'Le champ :attribute doit avoir entre :min et :max objets.',
|
||||
],
|
||||
"confirmed" => "Le champ :attribute confirmation ne correspond pas.",
|
||||
"date" => "Le champ :attribute n'est pas une date valide.",
|
||||
"date_format" => "Le champ :attribute ne correspond pas au format :format.",
|
||||
"different" => "Le champ :attribute et :other doivent être différents.",
|
||||
"digits" => "Le champ :attribute doit être composé de :digits chiffres.",
|
||||
"digits_between" => "Le champ :attribute doit être composé de :min jusqu'à :max chiffres.",
|
||||
"email" => "Le champ :attribute doit être une adresse email valide.",
|
||||
"exists" => "Le champ selected :attribute est invalide.",
|
||||
"image" => "Le champ :attribute doit être une image.",
|
||||
"in" => "Le champ selected :attribute est invalide.",
|
||||
"integer" => "Le champ :attribute doit être un entier.",
|
||||
"ip" => "Le champ :attribute doit être une adresse IP valide.",
|
||||
"max" => [
|
||||
"numeric" => "Le champ :attribute ne doit pas être supérieure à :max.",
|
||||
"file" => "Le champ :attribute ne doit pas être supérieure à :max kilobytes.",
|
||||
"string" => "Le champ :attribute ne doit pas être supérieure à :max caractères.",
|
||||
"array" => "Le champ :attribute ne doit pas avoir plus de :max objets.",
|
||||
'confirmed' => 'Le champ :attribute confirmation ne correspond pas.',
|
||||
'date' => "Le champ :attribute n'est pas une date valide.",
|
||||
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
|
||||
'different' => 'Le champ :attribute et :other doivent être différents.',
|
||||
'digits' => 'Le champ :attribute doit être composé de :digits chiffres.',
|
||||
'digits_between' => "Le champ :attribute doit être composé de :min jusqu'à :max chiffres.",
|
||||
'email' => 'Le champ :attribute doit être une adresse email valide.',
|
||||
'exists' => 'Le champ selected :attribute est invalide.',
|
||||
'image' => 'Le champ :attribute doit être une image.',
|
||||
'in' => 'Le champ selected :attribute est invalide.',
|
||||
'integer' => 'Le champ :attribute doit être un entier.',
|
||||
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
|
||||
'max' => [
|
||||
'numeric' => 'Le champ :attribute ne doit pas être supérieure à :max.',
|
||||
'file' => 'Le champ :attribute ne doit pas être supérieure à :max kilobytes.',
|
||||
'string' => 'Le champ :attribute ne doit pas être supérieure à :max caractères.',
|
||||
'array' => 'Le champ :attribute ne doit pas avoir plus de :max objets.',
|
||||
],
|
||||
"mimes" => "Le champ :attribute doit être un fichier de type : :values.",
|
||||
"min" => [
|
||||
"numeric" => "Le champ :attribute doit être supérieur à :min.",
|
||||
"file" => "Le champ :attribute doit être supérieur à :min kilobytes.",
|
||||
"string" => "Le champ :attribute doit être supérieur à :min caractères.",
|
||||
"array" => "Le champ :attribute doit avoir au moins :min objets.",
|
||||
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
|
||||
'min' => [
|
||||
'numeric' => 'Le champ :attribute doit être supérieur à :min.',
|
||||
'file' => 'Le champ :attribute doit être supérieur à :min kilobytes.',
|
||||
'string' => 'Le champ :attribute doit être supérieur à :min caractères.',
|
||||
'array' => 'Le champ :attribute doit avoir au moins :min objets.',
|
||||
],
|
||||
"not_in" => "Le champ sélectionné :attribute est invalide.",
|
||||
"numeric" => "Le champ :attribute doit être un nombre.",
|
||||
"regex" => "Le format du champ :attribute est invalide.",
|
||||
"required" => "Le champ :attribute est obligatoire.",
|
||||
"required_if" => "Le champ :attribute est obligatoire quand :other est :value.",
|
||||
"required_with" => "Le champ :attribute est obligatoire quand :values est présent.",
|
||||
"required_with_all" => "Le champ :attribute est obligatoire quand :values est présent.",
|
||||
"required_without" => "Le champ :attribute est obligatoire quand :values n'est pas présent.",
|
||||
"required_without_all" => "Le champ :attribute est obligatoire quand aucun des champs :values n'est présent.",
|
||||
"same" => "Le champ :attribute et :other doivent être identiques.",
|
||||
"size" => [
|
||||
"numeric" => "La taille du champ :attribute doit être de :size.",
|
||||
"file" => "Le poids du champ :attribute doit être de :size kilobytes.",
|
||||
"string" => "Le nombre de caractères du champ :attribute doit être de :size caractères.",
|
||||
"array" => "Le champ :attribute doit contenir :size objets.",
|
||||
'not_in' => 'Le champ sélectionné :attribute est invalide.',
|
||||
'numeric' => 'Le champ :attribute doit être un nombre.',
|
||||
'regex' => 'Le format du champ :attribute est invalide.',
|
||||
'required' => 'Le champ :attribute est obligatoire.',
|
||||
'required_if' => 'Le champ :attribute est obligatoire quand :other est :value.',
|
||||
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
|
||||
'required_with_all' => 'Le champ :attribute est obligatoire quand :values est présent.',
|
||||
'required_without' => "Le champ :attribute est obligatoire quand :values n'est pas présent.",
|
||||
'required_without_all' => "Le champ :attribute est obligatoire quand aucun des champs :values n'est présent.",
|
||||
'same' => 'Le champ :attribute et :other doivent être identiques.',
|
||||
'size' => [
|
||||
'numeric' => 'La taille du champ :attribute doit être de :size.',
|
||||
'file' => 'Le poids du champ :attribute doit être de :size kilobytes.',
|
||||
'string' => 'Le nombre de caractères du champ :attribute doit être de :size caractères.',
|
||||
'array' => 'Le champ :attribute doit contenir :size objets.',
|
||||
],
|
||||
"unique" => "Le champ :attribute est déjà utilisé.",
|
||||
"url" => "Le format du champ :attribute est invalide.",
|
||||
'unique' => 'Le champ :attribute est déjà utilisé.',
|
||||
'url' => 'Le format du champ :attribute est invalide.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -99,6 +99,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [ ],
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
|
||||
59
app/lang/nl/cachet.php
Normal file
59
app/lang/nl/cachet.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Online',
|
||||
2 => 'Verminderde prestaties',
|
||||
3 => 'Gedeeltelijke storing',
|
||||
4 => 'Grote storing',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'Geen incidenten gemeld.',
|
||||
'past' => 'Eerdere incidenten',
|
||||
'previous_week' => 'Vorige week',
|
||||
'next_week' => 'Volgende week',
|
||||
'none' => 'Niets te melden.',
|
||||
'scheduled' => 'Gepland onderhoud',
|
||||
'scheduled_at' => ', gepland :timestamp',
|
||||
'status' => [
|
||||
0 => 'Gepland', // TODO: Hopefully remove this.
|
||||
1 => 'Onderzoeken',
|
||||
2 => 'Geïdentificeerd',
|
||||
3 => 'Bekijken',
|
||||
4 => 'Opgelost',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Alle systemen zijn online',
|
||||
'bad' => 'Sommige systemen hebben problemen',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'API-sleutel hergenereren',
|
||||
'revoke' => 'API-sleutel intrekken',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => 'Elk uur',
|
||||
'daily' => 'Dagelijks',
|
||||
'monthly' => 'Maandelijks',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => 'De statuspagina van :app is mogelijk gemaakt door <a href="https://cachethq.io">Cachet</a>.',
|
||||
'about_this_site' => 'Over deze site',
|
||||
'rss-feed' => 'RSS-feed',
|
||||
'atom-feed' => 'Atom-feed',
|
||||
'feed' => 'Statusfeed',
|
||||
|
||||
];
|
||||
186
app/lang/nl/dashboard.php
Normal file
186
app/lang/nl/dashboard.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Dashboard',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => 'Incidenten & planning',
|
||||
'incidents' => 'Incidenten',
|
||||
'logged' => '{0} Er zijn geen incidenten, goed werk.|Je hebt één incident gemeld.|Je hebt <strong>:count</strong> incidenten gemeld.',
|
||||
'incident-create-template' => 'Sjabloon aanmaken',
|
||||
'incident-templates' => 'Incidentsjablonen',
|
||||
'add' => [
|
||||
'title' => 'Incident toevoegen',
|
||||
'success' => 'Incident toegevoegd.',
|
||||
'failure' => 'Er ging iets mis met het incident.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Incident bewerken',
|
||||
'success' => 'Incident bijwerken.',
|
||||
'failure' => 'Er ging iets mis met het incident.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'Incidentsjablonen',
|
||||
'add' => [
|
||||
'title' => 'Incidentsjabloon aanmaken',
|
||||
'success' => 'Sjabloon aangemaakt.',
|
||||
'failure' => 'Er ging iets mis met het incidentsjabloon.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Sjabloon bewerken',
|
||||
'success' => 'Sjabloon is bijgewerkt!',
|
||||
'failure' => 'Er ging iets mis bij het bijwerken van het incidentsjabloon.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => 'Gepland onderhoud',
|
||||
'scheduled_at' => 'Gepland op :timestamp',
|
||||
'add' => [
|
||||
'title' => 'Gepland onderhoud toevoegen',
|
||||
'success' => 'Planning toegevoegd.',
|
||||
'failure' => 'Er ging iets mis bij het toevoegen van de planning.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Gepland onderhoud bewerken',
|
||||
'success' => 'Planning is bijgewerkt!',
|
||||
'failure' => 'Er ging iets mis bij het bewerken van de planning.',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => 'De planning is verwijderd en zal niet worden getoond op je statuspagina.',
|
||||
'failure' => 'De planning kon niet worden verwijderd. Probeer het nogmaals.',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Componenten',
|
||||
'component_statuses' => 'Componentstatussen',
|
||||
'listed_group' => 'Gegroepeerd onder :name',
|
||||
'add' => [
|
||||
'title' => 'Component toevoegen',
|
||||
'message' => 'Je moet een component toevoegen.',
|
||||
'success' => 'Component aangemaakt.',
|
||||
'failure' => 'Er ging iets mis met de component.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Component bewerken',
|
||||
'success' => 'Component bijgewerkt.',
|
||||
'failure' => 'Er ging iets mis met de component.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Componentgroep|Componentgroepen',
|
||||
'add' => [
|
||||
'title' => 'Componentgroep toevoegen',
|
||||
'success' => 'Componentgroep toegevoegd.',
|
||||
'failure' => 'Er ging iets mis met de componentgroep.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Componentgroep bewerken',
|
||||
'success' => 'Componentgroep bijgewerkt.',
|
||||
'failure' => 'Er ging iets mis met de componentgroep.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Metingen',
|
||||
'add' => [
|
||||
'title' => 'Meting aanmaken',
|
||||
'success' => 'Meting aangemaakt.',
|
||||
'failure' => 'Er ging iets mis met de meting.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Meting bewerken',
|
||||
'success' => 'Meting bijgewerkt.',
|
||||
'failure' => 'Er ging iets mis met de meting.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Team',
|
||||
'member' => 'Lid',
|
||||
'profile' => 'Profiel',
|
||||
'description' => 'Teamleden hebben de mogelijkheid om componenten en incidenten toe te voegen, aan te passen en te bewerken.',
|
||||
'add' => [
|
||||
'title' => 'Nieuw teamlid toevoegen',
|
||||
'success' => 'Teamlid toegevoegd.',
|
||||
'failure' => 'Er ging iets mis met de component.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Profiel bijwerken',
|
||||
'success' => 'Profiel bijgewerkt.',
|
||||
'failure' => 'Er ging iets mis met het bijwerken.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Instellingen',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Installatie applicatie',
|
||||
'images-only' => 'Alleen afbeeldingen mogen worden geüpload.',
|
||||
'too-big' => 'Het bestand dat je hebt geüpload is te groot. Upload een afbeelding kleinder dan :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Beveiliging',
|
||||
'two-factor' => 'Gebruikers zonder authenticatie in twee stappen',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Thema',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Instellingen opgeslagen.',
|
||||
'failure' => 'Instellingen konden niet worden opgeslagen.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Inloggen',
|
||||
'logged_in' => 'Je bent ingelogd.',
|
||||
'welcome' => 'Welkom terug!',
|
||||
'two-factor' => 'Vul je token in.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Help',
|
||||
'status_page' => 'Statuspagina',
|
||||
'logout' => 'Uitloggen',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Meldingen',
|
||||
'awesome' => 'Geweldig.',
|
||||
'whoops' => 'Oeps.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Welkom bij Cachet',
|
||||
'message' => 'Je statuspagina is bijna klaar! Je wilt misschien deze extra instellingen configureren',
|
||||
'close' => 'Ga direct naar mijn dashboard',
|
||||
'steps' => [
|
||||
'component' => 'Componenten aanmaken',
|
||||
'incident' => 'Incidenten aanmaken',
|
||||
'customize' => 'Aanpassen',
|
||||
'team' => 'Gebruikers toevoegen',
|
||||
'api' => 'API-token genereren',
|
||||
'two-factor' => 'Authenticatie in twee stappen',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
app/lang/nl/errors.php
Normal file
16
app/lang/nl/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'Die pagina is vermist geraakt!',
|
||||
'message' => 'Sorry, maar de pagina die je zoekt is niet gevonden. Controleer de URL op fouten en probeer het nogmaals.',
|
||||
'link' => 'Terug naar homepagina',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Ongeautoriseerd',
|
||||
'message' => 'Sorry, maar je moet beheerdersrechten hebben om deze pagina te bekijken.',
|
||||
'link' => 'Terug naar homepagina',
|
||||
],
|
||||
];
|
||||
126
app/lang/nl/forms.php
Normal file
126
app/lang/nl/forms.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'E-mailadres',
|
||||
'username' => 'Gebruikersnaam',
|
||||
'password' => 'Wachtwoord',
|
||||
'site_name' => 'Nama site',
|
||||
'site_domain' => 'Domein site',
|
||||
'site_timezone' => 'Selecteer je tijdzone',
|
||||
'site_locale' => 'Selecteer je taal',
|
||||
'enable_google2fa' => 'Google\'\s authenticatie in twee stappen inschakelen',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'E-mailadres',
|
||||
'password' => 'Wachtwoord',
|
||||
'2fauth' => 'Authenticatiecode',
|
||||
'invalid' => 'Ongeldig e-mailadres of wachtwoord',
|
||||
'invalid-token' => 'Ongeldige token',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Naam',
|
||||
'status' => 'Status',
|
||||
'component' => 'Component',
|
||||
'message' => 'Bericht',
|
||||
'message-help' => 'Je mag ook Markdown gebruiken.',
|
||||
'scheduled_at' => 'Voor wanneer is het onderhoud gepland?',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Naam',
|
||||
'template' => 'Sjabloon',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Naam',
|
||||
'status' => 'Status',
|
||||
'group' => 'Groep',
|
||||
'description' => 'Beschrijving',
|
||||
'link' => 'Link',
|
||||
'tags' => 'Tags',
|
||||
'tags-help' => 'Komma gescheiden.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Naam',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Naam',
|
||||
'suffix' => 'Achtervoegsel',
|
||||
'description' => 'Beschrijving',
|
||||
'description-help' => 'Je mag ook Markdown gebruiken.',
|
||||
'display-chart' => 'Grafiek tonen op statuspagina?',
|
||||
'default-value' => 'Standaardwaarde',
|
||||
'calc_type' => 'Berekening van metingen',
|
||||
'type_sum' => 'Som',
|
||||
'type_avg' => 'Gemiddelde',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Waarde',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Naam site',
|
||||
'site-url' => 'URL site',
|
||||
'site-timezone' => 'Tijdzone site',
|
||||
'site-locale' => 'Taal site',
|
||||
'date-format' => 'Datumformaat',
|
||||
'display-graphs' => 'Grafieken tonen op statuspagina?',
|
||||
'about-this-page' => 'Over deze pagina',
|
||||
'days-of-incidents' => 'Hoeveel dagen van incidenten tonen?',
|
||||
'banner' => 'Bannerafbeelding',
|
||||
'banner-help' => 'Het wordt aangeraden om geen bestanden groter dan 930px breed te uploaden.',
|
||||
'google-analytics' => 'Google Analytics-code',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Toegestane domeinen',
|
||||
'allowed-domains-help' => 'Komma gescheiden. Het domein dat hierboven is ingesteld wordt standaard automatisch toegestaan.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Aangepaste stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Achtergrondkleur',
|
||||
'text-color' => 'Tekstkleur',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Gebruikersnaam',
|
||||
'email' => 'E-mailadres',
|
||||
'password' => 'Wachtwoord',
|
||||
'api-token' => 'API-token',
|
||||
'api-token-help' => 'Het opnieuw genereren van je API-token zorgt ervoor dat bestaande applicaties geen toegang meer hebben tot Cachet.',
|
||||
'2fa' => [
|
||||
'help' => 'Het inschakelen van authenticatie in twee stappen verbetert de beveiliging van je account. Je zult <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> of een soortgelijke app op je mobiele apparaat moeten downloaden. Wanneer je inlogt, zal je worden gevraagd om een token op te geven die gegenereerd is door de app.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Toevoegen',
|
||||
'save' => 'Opslaan',
|
||||
'update' => 'Bijwerken',
|
||||
'create' => 'Aanmaken',
|
||||
'edit' => 'Bewerken',
|
||||
'delete' => 'Verwijderen',
|
||||
'submit' => 'Versturen',
|
||||
'cancel' => 'Annuleren',
|
||||
'remove' => 'Verwijderen',
|
||||
|
||||
// Other
|
||||
'optional' => '* Optioneel',
|
||||
];
|
||||
19
app/lang/nl/pagination.php
Normal file
19
app/lang/nl/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Vorige',
|
||||
'next' => 'Volgende »',
|
||||
|
||||
];
|
||||
22
app/lang/nl/reminders.php
Normal file
22
app/lang/nl/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Wachtwoord moeten minimaal 6 tekens bevatten en overeenkomen met de bevestiging.',
|
||||
'user' => 'We kunnen geen gebruiker vinden met dat e-mailadres.',
|
||||
'token' => 'Dit wachtwoord-herstel-token is ongeldig.',
|
||||
'sent' => 'Wachtwoordherinnering verstuurd!',
|
||||
'reset' => 'Wachtwoord is hersteld!',
|
||||
|
||||
];
|
||||
14
app/lang/nl/setup.php
Normal file
14
app/lang/nl/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Installatie',
|
||||
'title' => 'Installatie Cachet',
|
||||
'service_details' => 'Servicedetails',
|
||||
'status_page_setup' => 'Installatie statuspagina',
|
||||
'show_support' => 'Steun voor Cachet tonen? <small>Plaatst een link in de footer naar Cachet.</small>',
|
||||
'admin_account' => 'Beheerdersaccount',
|
||||
'complete_setup' => 'Installatie voltooien',
|
||||
'completed' => 'Cachet is met succes geconfigureerd!',
|
||||
'finish_setup' => 'Ga naar dashboard',
|
||||
'allow_tracking' => 'Anoniem gebruik tracken toestaan?',
|
||||
];
|
||||
106
app/lang/nl/validation.php
Normal file
106
app/lang/nl/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
'boolean' => 'Het :attribute-veld moet true of false zijn.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'url' => 'Het :attribute-formaat is ongeldig.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
59
app/lang/pl/cachet.php
Normal file
59
app/lang/pl/cachet.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => 'Działa',
|
||||
2 => 'Problemy wydajnościowe',
|
||||
3 => 'Częściowa niedostępność',
|
||||
4 => 'Poważna awaria',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => 'Brak incydentów.',
|
||||
'past' => 'Poprzednie incydenty',
|
||||
'previous_week' => 'Poprzedni tydzień',
|
||||
'next_week' => 'Następny tydzień',
|
||||
'none' => 'Brak incydentów',
|
||||
'scheduled' => 'Zapowiedziane prace',
|
||||
'scheduled_at' => ', scheduled :timestamp',
|
||||
'status' => [
|
||||
0 => 'Planowy', // TODO: Hopefully remove this.
|
||||
1 => 'Szukanie',
|
||||
2 => 'Zidentyfikowany',
|
||||
3 => 'Obserwacja',
|
||||
4 => 'Naprawiony',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => 'Wszystkie systemy sprawne.',
|
||||
'bad' => 'Część systemów ma problemy.',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => 'Przegeneruj klucz API',
|
||||
'revoke' => 'Odwołaj klucz API',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => 'Godzinowo',
|
||||
'daily' => 'Dziennie',
|
||||
'monthly' => 'Miesięcznie',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app Status Page is powered by <a href="https://cachethq.io">Cachet</a>.',
|
||||
'about_this_site' => 'O tej stronie',
|
||||
'rss-feed' => 'RSS Feed',
|
||||
'atom-feed' => 'Atom Feed',
|
||||
'feed' => 'Status Feed',
|
||||
|
||||
];
|
||||
186
app/lang/pl/dashboard.php
Normal file
186
app/lang/pl/dashboard.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => 'Panel sterowania',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => 'Incydenty i kalendarz',
|
||||
'incidents' => 'Incydenty',
|
||||
'logged' => '{0} Brak incydentów, gratulacje.| Zapisałeś jeden incydent.|Zapisałeś <strong>:count</strong> incydentów.',
|
||||
'incident-create-template' => 'Utwórz szablon',
|
||||
'incident-templates' => 'Szablony incydentów',
|
||||
'add' => [
|
||||
'title' => 'Dodaj incydent',
|
||||
'success' => 'Incydent dodany.',
|
||||
'failure' => 'Coś poszło nie tak z incydentem.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Aktualizuj incydent',
|
||||
'success' => 'Incydent zaktualizowany.',
|
||||
'failure' => 'Coś poszło nie tak z incydentem.',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => 'Szablony incydentów',
|
||||
'add' => [
|
||||
'title' => 'Stwórz szablon incydentu.',
|
||||
'success' => 'Szablon utworzony.',
|
||||
'failure' => 'Coś poszło nie tak z szablonem incydentu.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edytuj szablon',
|
||||
'success' => 'Szablon został zaktualizowany!',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji szablonu.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => 'Zaplanowana przerwa',
|
||||
'scheduled_at' => 'Zaplanowana data :timestamp',
|
||||
'add' => [
|
||||
'title' => 'Dodaj planową przerwę',
|
||||
'success' => 'Zaplanowana przerwa dodana.',
|
||||
'failure' => 'Coś poszło nie tak przy dodawaniu przerwy.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Aktualizuj zaplanowaną przerwę',
|
||||
'success' => 'Przerwa zaktualizowana!',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji przerwy.',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => 'Przerwa została skasowana i nie będzie pokazywana na stronie statusowej.',
|
||||
'failure' => 'Nie można było skasować przerwy. Spróbuj ponownie.',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => 'Komponenty',
|
||||
'component_statuses' => 'Statusy komponentów',
|
||||
'listed_group' => 'Zgrupowane pod :name',
|
||||
'add' => [
|
||||
'title' => 'Dodaj komponent',
|
||||
'message' => 'Powinieneś doddać komponent.',
|
||||
'success' => 'Komponent utworzony.',
|
||||
'failure' => 'Coś poszło nie tak przy tworzeniu komponentu.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edytuj komponent',
|
||||
'success' => 'Komponent zaktualizowany.',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji komponent.',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => 'Grupa komponenów|Grupy komponentów',
|
||||
'add' => [
|
||||
'title' => 'Dodaj grupę komponentów',
|
||||
'success' => 'Grupa komponentów utworzona.',
|
||||
'failure' => 'Coś poszło nie tak przy tworzeniu grupy.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edytuj grupę komponentów',
|
||||
'success' => 'Grupa komponentów zaktualizaowana.',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji grupy.',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => 'Metryki',
|
||||
'add' => [
|
||||
'title' => 'Utwórz metrykę',
|
||||
'success' => 'Metryka utworzona.',
|
||||
'failure' => 'Coś poszło nie tak z tworzeniem metryki.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Edytuj metrykę',
|
||||
'success' => 'Metryka zaktualizowana.',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji metryki.',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => 'Zespół',
|
||||
'member' => 'Członek',
|
||||
'profile' => 'Profil',
|
||||
'description' => 'Członkowie zespołu będą mogli dodawać i modyfikować komponenty i incydenty.',
|
||||
'add' => [
|
||||
'title' => 'Dodaj nowego członka zespołu',
|
||||
'success' => 'Dodano członka zespołu.',
|
||||
'failure' => 'Coś poszło nie tak z dodawaniem do zespołu.',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => 'Aktualizuj profil',
|
||||
'success' => 'Profil zaktualizowany.',
|
||||
'failure' => 'Coś poszło nie tak przy aktualizacji.',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => 'Ustawienia',
|
||||
'app-setup' => [
|
||||
'app-setup' => 'Ustawienia aplikacji',
|
||||
'images-only' => 'Można wgrywać tylko pliki graficzne.',
|
||||
'too-big' => 'Wgrany plik jest zbyt duży. Wgraj plik mnijeszy niż :size',
|
||||
],
|
||||
'security' => [
|
||||
'security' => 'Bezpieczeństwo',
|
||||
'two-factor' => 'Użytkownicy bez autentykacji dwuetapowej',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => 'Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => 'Skórka',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => 'Ustawienia zapisane.',
|
||||
'failure' => 'Ustawienia nie mogły być zapisane.',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => 'Zaloguj',
|
||||
'logged_in' => 'Jesteś zalogowany.',
|
||||
'welcome' => 'Witam ponownie!',
|
||||
'two-factor' => 'Wpisz swój kod.',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => 'Pomoc',
|
||||
'status_page' => 'Strona statusu',
|
||||
'logout' => 'Wyloguj',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => 'Powiadomienia',
|
||||
'awesome' => 'Super.',
|
||||
'whoops' => 'Ojej.',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => 'Witamy w Cachet',
|
||||
'message' => 'Twoja strona statusowa jest już prawie gotowa! Możesz skonfigurować dodatkowe ustawienia',
|
||||
'close' => 'Przejdź do mojego panelu',
|
||||
'steps' => [
|
||||
'component' => 'Utwórz komponenty',
|
||||
'incident' => 'Utwórz incydenty',
|
||||
'customize' => 'Personalizacja',
|
||||
'team' => 'Dodaj użytkowników',
|
||||
'api' => 'Wygeneruj token API',
|
||||
'two-factor' => 'Autentykacja dwuetapowa',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
app/lang/pl/errors.php
Normal file
16
app/lang/pl/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => 'That page went missing!',
|
||||
'message' => 'Sorry, but the page you are looking for has not been found. Check the URL for errors and try again.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => 'Unauthorized',
|
||||
'message' => 'Sorry, you need admin privileges to see this page.',
|
||||
'link' => 'Return to homepage',
|
||||
],
|
||||
];
|
||||
126
app/lang/pl/forms.php
Normal file
126
app/lang/pl/forms.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => 'Email',
|
||||
'username' => 'Użytkownik',
|
||||
'password' => 'Hasło',
|
||||
'site_name' => 'Nazwa strony',
|
||||
'site_domain' => 'Domena strony',
|
||||
'site_timezone' => 'Wybierz swoją strefę czasową',
|
||||
'site_locale' => 'Wybierz swól język',
|
||||
'enable_google2fa' => 'Włącz dwuetapową autentykację Google',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => 'Email',
|
||||
'password' => 'Hasło',
|
||||
'2fauth' => 'Kod autentykacji',
|
||||
'invalid' => 'Nieprawidłowy email lub hasło',
|
||||
'invalid-token' => 'Nieprawidłowy kod',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => 'Nazwa',
|
||||
'status' => 'Status',
|
||||
'component' => 'Komponent',
|
||||
'message' => 'Wiadomość',
|
||||
'message-help' => 'Możesz skorzystać z Markdown.',
|
||||
'scheduled_at' => 'Na kiedy zaplanować przerwę?',
|
||||
|
||||
'templates' => [
|
||||
'name' => 'Nazwa',
|
||||
'template' => 'Szablon',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => 'Nazwa',
|
||||
'status' => 'Status',
|
||||
'group' => 'Grupa',
|
||||
'description' => 'Opis',
|
||||
'link' => 'Link',
|
||||
'tags' => 'Tagi',
|
||||
'tags-help' => 'Rozdzielone przecinkiem.',
|
||||
|
||||
'groups' => [
|
||||
'name' => 'Nazwa',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => 'Nazwa',
|
||||
'suffix' => 'Jednostka',
|
||||
'description' => 'Opis',
|
||||
'description-help' => 'Możesz skorzystać z Markdown.',
|
||||
'display-chart' => 'Wyświetlać wykres na panelu głównym?',
|
||||
'default-value' => 'Domyślna wartość',
|
||||
'calc_type' => 'Sposób kalkulacji metryki',
|
||||
'type_sum' => 'Suma',
|
||||
'type_avg' => 'Średnia',
|
||||
|
||||
'points' => [
|
||||
'value' => 'Wartość',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => 'Nazwa strony',
|
||||
'site-url' => 'Adres URL strony',
|
||||
'site-timezone' => 'Strefa czasowa',
|
||||
'site-locale' => 'Język',
|
||||
'date-format' => 'Format daty',
|
||||
'display-graphs' => 'Wyświetlać wykresy na panelu głównym?',
|
||||
'about-this-page' => 'O tej stronie',
|
||||
'days-of-incidents' => 'Ile dni incydentów pokazywać?',
|
||||
'banner' => 'Obrazek z logo',
|
||||
'banner-help' => 'Zaleca się wrzuać pliki nie szersze niż 930px.',
|
||||
'google-analytics' => 'Kod Google Analytics',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Dozwolone domenyw',
|
||||
'allowed-domains-help' => 'Oddzielone przecinkiem. Domena ustawiona powyżej jest dozwolona domyślnie.',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => 'Własny Stylesheet',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => 'Kolor tła',
|
||||
'text-color' => 'Kolor tekstu',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => 'Nazwa użytkownika',
|
||||
'email' => 'Email',
|
||||
'password' => 'Hasło',
|
||||
'api-token' => 'Klucz API',
|
||||
'api-token-help' => 'Zregenerowanie twojego klucza API uniemożliwi dostęp istniejących aplikacji do Cachet.',
|
||||
'2fa' => [
|
||||
'help' => 'Aktywacja dwuetapowej autentykacji zwiększą bezpieczeństwo twojego konta. Musisz ściągnąć <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> lub podobną aplikację na swój telefon. Przy logowaniu będziesz proszony o podanie kodu wygenerowanego przez tą aplikację.',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => 'Dodaj',
|
||||
'save' => 'Zapisz',
|
||||
'update' => 'Aktualizuj',
|
||||
'create' => 'Swtórz',
|
||||
'edit' => 'Edytuj',
|
||||
'delete' => 'Skasuj',
|
||||
'submit' => 'Wyślij',
|
||||
'cancel' => 'Anuluj',
|
||||
'remove' => 'Usuń',
|
||||
|
||||
// Other
|
||||
'optional' => '* Opcjonalny',
|
||||
];
|
||||
19
app/lang/pl/pagination.php
Normal file
19
app/lang/pl/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« Poprzednia',
|
||||
'next' => 'Następna »',
|
||||
|
||||
];
|
||||
22
app/lang/pl/reminders.php
Normal file
22
app/lang/pl/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => 'Hasła muszą mieć przynajmniej 6 znaków i być pasować do potwierdzenia.',
|
||||
'user' => 'Nie możemy znaleźć użytkownia o tym adresie email.',
|
||||
'token' => 'Token resetu hasła jest nieprawidłowyw.',
|
||||
'sent' => 'Wysłano przypomnienie hasła!',
|
||||
'reset' => 'Hasło zostało zresetowane!',
|
||||
|
||||
];
|
||||
14
app/lang/pl/setup.php
Normal file
14
app/lang/pl/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => 'Konfiguracja',
|
||||
'title' => 'Skonfiguruj Cachet',
|
||||
'service_details' => 'Szczegóły serwisu',
|
||||
'status_page_setup' => 'Konfiguracja strony statusowej',
|
||||
'show_support' => 'Okaż wsparcie dla Cachet? <small>Umieść link w stopce wskazujący na Cachet.</small>',
|
||||
'admin_account' => 'Konto administratora',
|
||||
'complete_setup' => 'Konfiguracja zakończona',
|
||||
'completed' => 'Cachet został skonfigurowany pomyślnie!',
|
||||
'finish_setup' => 'Przejdź do panelu',
|
||||
'allow_tracking' => 'Zezwolić na anonimowe śledzenie wykorzystania?',
|
||||
];
|
||||
106
app/lang/pl/validation.php
Normal file
106
app/lang/pl/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
@@ -83,8 +83,8 @@ return [
|
||||
'about-this-page' => 'Sobre esta página',
|
||||
'days-of-incidents' => 'Quantos dias de incidentes para mostrar?',
|
||||
'banner' => 'Imagem do banner',
|
||||
'banner-help' => "É recomendável que você faça upload de arquivos menores que 930px .",
|
||||
'google-analytics' => "Código do Google Analytics",
|
||||
'banner-help' => 'É recomendável que você faça upload de arquivos menores que 930px .',
|
||||
'google-analytics' => 'Código do Google Analytics',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => 'Domínios permitidos',
|
||||
|
||||
@@ -13,65 +13,65 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => "O campo :attribute deve ser aceito.",
|
||||
"active_url" => "O campo :attribute não é uma URL válida.",
|
||||
"after" => "O campo :attribute deverá conter uma data posterior a :date.",
|
||||
"alpha" => "O campo :attribute deverá conter apenas letras.",
|
||||
"alpha_dash" => "O campo :attribute só pode conter letras, números, e hifens.",
|
||||
"alpha_num" => "O campo :attribute só pode conter letras e números.",
|
||||
"array" => "O campo :attribute deve ser um vetor.",
|
||||
"before" => "O campo :attribute deverá conter uma data anterior a :date.",
|
||||
"between" => [
|
||||
"numeric" => "O campo :attribute deverá ter um valor entre :min - :max.",
|
||||
"file" => "O campo :attribute deverá ter um tamanho entre :min - :max kilobytes.",
|
||||
"string" => "O campo :attribute deverá conter entre :min - :max caracteres.",
|
||||
"array" => "O campo :attribute deve ter entre :min e :max itens.",
|
||||
'accepted' => 'O campo :attribute deve ser aceito.',
|
||||
'active_url' => 'O campo :attribute não é uma URL válida.',
|
||||
'after' => 'O campo :attribute deverá conter uma data posterior a :date.',
|
||||
'alpha' => 'O campo :attribute deverá conter apenas letras.',
|
||||
'alpha_dash' => 'O campo :attribute só pode conter letras, números, e hifens.',
|
||||
'alpha_num' => 'O campo :attribute só pode conter letras e números.',
|
||||
'array' => 'O campo :attribute deve ser um vetor.',
|
||||
'before' => 'O campo :attribute deverá conter uma data anterior a :date.',
|
||||
'between' => [
|
||||
'numeric' => 'O campo :attribute deverá ter um valor entre :min - :max.',
|
||||
'file' => 'O campo :attribute deverá ter um tamanho entre :min - :max kilobytes.',
|
||||
'string' => 'O campo :attribute deverá conter entre :min - :max caracteres.',
|
||||
'array' => 'O campo :attribute deve ter entre :min e :max itens.',
|
||||
],
|
||||
"boolean" => "O campo :attribute deve ser verdadeiro ou falso.",
|
||||
"confirmed" => "A confirmação para o campo :attribute não coincide.",
|
||||
"date" => "O :attribute não é uma data válida.",
|
||||
"date_format" => "O :attribute não corresponde ao formato :format.",
|
||||
"different" => "O :attribute e :other devem ser diferentes.",
|
||||
"digits" => "O campo :attribute deverá conter :digits dígitos.",
|
||||
"digits_between" => "O :attribute deve ter entre :min e :max dígitos.",
|
||||
"email" => "A: attribute deve ser um endereço de email válido.",
|
||||
"exists" => "O :attribute selecionado é inválido.",
|
||||
"image" => "O :attribute deve ser uma imagem.",
|
||||
"in" => "O :attribute selecionado é inválido.",
|
||||
"integer" => "O :attribute deve ser um número inteiro.",
|
||||
"ip" => "O :attribute deve ser um endereço de IP válido.",
|
||||
"max" => [
|
||||
"numeric" => "O :attribute não pode ser maior do que :max.",
|
||||
"file" => "O campo :attribute não deverá ter um tamanho superior a :max kilobytes.",
|
||||
"string" => "O :attribute não pode ser maior do que :max caracteres.",
|
||||
"array" => "A: atributo não pode ter mais de que :max itens.",
|
||||
'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.',
|
||||
'confirmed' => 'A confirmação para o campo :attribute não coincide.',
|
||||
'date' => 'O :attribute não é uma data válida.',
|
||||
'date_format' => 'O :attribute não corresponde ao formato :format.',
|
||||
'different' => 'O :attribute e :other devem ser diferentes.',
|
||||
'digits' => 'O campo :attribute deverá conter :digits dígitos.',
|
||||
'digits_between' => 'O :attribute deve ter entre :min e :max dígitos.',
|
||||
'email' => 'A: attribute deve ser um endereço de email válido.',
|
||||
'exists' => 'O :attribute selecionado é inválido.',
|
||||
'image' => 'O :attribute deve ser uma imagem.',
|
||||
'in' => 'O :attribute selecionado é inválido.',
|
||||
'integer' => 'O :attribute deve ser um número inteiro.',
|
||||
'ip' => 'O :attribute deve ser um endereço de IP válido.',
|
||||
'max' => [
|
||||
'numeric' => 'O :attribute não pode ser maior do que :max.',
|
||||
'file' => 'O campo :attribute não deverá ter um tamanho superior a :max kilobytes.',
|
||||
'string' => 'O :attribute não pode ser maior do que :max caracteres.',
|
||||
'array' => 'A: atributo não pode ter mais de que :max itens.',
|
||||
],
|
||||
"mimes" => "O :attribute deve ser um arquivo do tipo: :values.",
|
||||
"min" => [
|
||||
"numeric" => "O :attribute deve ter pelo menos :min.",
|
||||
"file" => "O :attribute deve ter pelo menos :min kilobytes.",
|
||||
"string" => "O :attribute deve ter pelo menos :min caracteres.",
|
||||
"array" => "O :attribute deve ter pelo menos :min itens.",
|
||||
'mimes' => 'O :attribute deve ser um arquivo do tipo: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'O :attribute deve ter pelo menos :min.',
|
||||
'file' => 'O :attribute deve ter pelo menos :min kilobytes.',
|
||||
'string' => 'O :attribute deve ter pelo menos :min caracteres.',
|
||||
'array' => 'O :attribute deve ter pelo menos :min itens.',
|
||||
],
|
||||
"not_in" => "O :attribute selecionado é inválido.",
|
||||
"numeric" => "O :attribute deve ser um número.",
|
||||
"regex" => "O formato de :attribute é inválido.",
|
||||
"required" => "O campo de :attribute é obrigatório.",
|
||||
"required_if" => "O campo de :attribute é obrigatório quando :other é :value.",
|
||||
"required_with" => "O campo :attribute é obrigatório quando :values está presente.",
|
||||
"required_with_all" => "O campo :attribute é obrigatório quando :values está presente.",
|
||||
"required_without" => "O campo de :attribute é obrigatório quando :values não está presente.",
|
||||
"required_without_all" => "O campo de :attribute é obrigatório quando qualquer um dos :values estão presentes.",
|
||||
"same" => "O :attribute e :other devem corresponder.",
|
||||
"size" => [
|
||||
"numeric" => "O :attribute deve ser :size.",
|
||||
"file" => "O :attribute deve ter :size kilobytes.",
|
||||
"string" => "O :attribute deve ter :size caracteres.",
|
||||
"array" => "O :attribute deve ter :size itens.",
|
||||
'not_in' => 'O :attribute selecionado é inválido.',
|
||||
'numeric' => 'O :attribute deve ser um número.',
|
||||
'regex' => 'O formato de :attribute é inválido.',
|
||||
'required' => 'O campo de :attribute é obrigatório.',
|
||||
'required_if' => 'O campo de :attribute é obrigatório quando :other é :value.',
|
||||
'required_with' => 'O campo :attribute é obrigatório quando :values está presente.',
|
||||
'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.',
|
||||
'required_without' => 'O campo de :attribute é obrigatório quando :values não está presente.',
|
||||
'required_without_all' => 'O campo de :attribute é obrigatório quando qualquer um dos :values estão presentes.',
|
||||
'same' => 'O :attribute e :other devem corresponder.',
|
||||
'size' => [
|
||||
'numeric' => 'O :attribute deve ser :size.',
|
||||
'file' => 'O :attribute deve ter :size kilobytes.',
|
||||
'string' => 'O :attribute deve ter :size caracteres.',
|
||||
'array' => 'O :attribute deve ter :size itens.',
|
||||
],
|
||||
"unique" => "O :attribute já existe.",
|
||||
"url" => "O formato de :attribute é inválido.",
|
||||
"timezone" => "O :attribute deve ser uma zona válida.",
|
||||
'unique' => 'O :attribute já existe.',
|
||||
'url' => 'O formato de :attribute é inválido.',
|
||||
'timezone' => 'O :attribute deve ser uma zona válida.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
59
app/lang/zh-Hans/cachet.php
Normal file
59
app/lang/zh-Hans/cachet.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => '正常运行',
|
||||
2 => '性能问题',
|
||||
3 => '部分停止运作',
|
||||
4 => '停止运作',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => '沒有任何事件。',
|
||||
'past' => '以前的事件',
|
||||
'previous_week' => '上星期',
|
||||
'next_week' => '下星期',
|
||||
'none' => '沒有任何报告',
|
||||
'scheduled' => '排程维护',
|
||||
'scheduled_at' => ',於:timestamp',
|
||||
'status' => [
|
||||
0 => '排程中的维护', // TODO: Hopefully remove this.
|
||||
1 => '调查中',
|
||||
2 => '已辨明',
|
||||
3 => '警戒中',
|
||||
4 => '已修复',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => '全部系统运作正常。',
|
||||
'bad' => '部分系统出现异常。',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => '重新生成 API 密钥',
|
||||
'revoke' => '撤销 API 密钥',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => '每小时',
|
||||
'daily' => '每天',
|
||||
'monthly' => '每月',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app 状态页是由 <a href="https://cachethq.io">Cachet</a> 提供。',
|
||||
'about_this_site' => '关于本站',
|
||||
'rss-feed' => 'RSS 订阅',
|
||||
'atom-feed' => 'Atom 订阅',
|
||||
'feed' => 'Status 订阅',
|
||||
|
||||
];
|
||||
186
app/lang/zh-Hans/dashboard.php
Normal file
186
app/lang/zh-Hans/dashboard.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => '仪表板',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => '事件与排程',
|
||||
'incidents' => '事件',
|
||||
'logged' => '{0} 做得好,没有任何事件。|你记录了一个事件。|你回报了 <strong>:count</strong> 个事件。',
|
||||
'incident-create-template' => '新增模板',
|
||||
'incident-templates' => '事件模板',
|
||||
'add' => [
|
||||
'title' => '新增事件',
|
||||
'success' => '事件新增成功。',
|
||||
'failure' => '新增事件时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改事件',
|
||||
'success' => '事件更新成功。',
|
||||
'failure' => '更新事件时遇到一些问题。',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => '事件模板',
|
||||
'add' => [
|
||||
'title' => '新增事件模板',
|
||||
'success' => '事件模板新增成功。',
|
||||
'failure' => '新增事件模板时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改事件模板',
|
||||
'success' => '事件模板更新成功!',
|
||||
'failure' => '更新事件模板时遇到一些问题。',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => '排程维护',
|
||||
'scheduled_at' => '排程于 :timestamp',
|
||||
'add' => [
|
||||
'title' => '新增排程维护',
|
||||
'success' => '排程维护新增成功。',
|
||||
'failure' => '新增排程维护时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改排程维护',
|
||||
'success' => '排程维护修改成功!',
|
||||
'failure' => '修改排程维护时遇到一些问题。',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => '成功删除了排程维护!該排程维护將不會出現在状态页上。',
|
||||
'failure' => '无法刪除該排程维护。请稍后再试。',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => '组件',
|
||||
'component_statuses' => '组件状态',
|
||||
'listed_group' => '屬于:name组',
|
||||
'add' => [
|
||||
'title' => '新增组件',
|
||||
'message' => '你应该先新增一个组件。',
|
||||
'success' => '组件新增成功。',
|
||||
'failure' => '新增组件时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改组件',
|
||||
'success' => '组件修改成功。',
|
||||
'failure' => '修改组件时遇到一些问题。',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => '组件组|组件组',
|
||||
'add' => [
|
||||
'title' => '新增组件组',
|
||||
'success' => '组件组新增成功。',
|
||||
'failure' => '新增组件组时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改组件组',
|
||||
'success' => '组件组修改成功。',
|
||||
'failure' => '修改组件组时遇到一些问题。',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => '指标',
|
||||
'add' => [
|
||||
'title' => '新增指标',
|
||||
'success' => '指标新增成功。',
|
||||
'failure' => '新增指标时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改指标',
|
||||
'success' => '指标修改成功。',
|
||||
'failure' => '修改指标时遇到一些问题。',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => '团队',
|
||||
'member' => '成员',
|
||||
'profile' => '个人档案',
|
||||
'description' => '团队成员可以新增、修改、或更新组件和事件。',
|
||||
'add' => [
|
||||
'title' => '新增团队成员',
|
||||
'success' => '成功新增团队成员。',
|
||||
'failure' => '新增团队成员时遇到一些问题。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改个人档案',
|
||||
'success' => '成功修改个人档案。',
|
||||
'failure' => '更新时遇到一些问题。',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => '设置',
|
||||
'app-setup' => [
|
||||
'app-setup' => '应用程序设置',
|
||||
'images-only' => '你只能上载图片。',
|
||||
'too-big' => '档案大小过大。请尝试上载一张大小小于 :size 的图片。',
|
||||
],
|
||||
'security' => [
|
||||
'security' => '安全',
|
||||
'two-factor' => '下列用户没有使用双重认证',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => '样式表',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => '主题',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => '设置已储存。',
|
||||
'failure' => '设置储存失败。',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => '登录',
|
||||
'logged_in' => '你已经登录。',
|
||||
'welcome' => '欢迎回来!',
|
||||
'two-factor' => '请输入令牌。',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => '帮助',
|
||||
'status_page' => '状态页',
|
||||
'logout' => '退出',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => '通知',
|
||||
'awesome' => '太好了。',
|
||||
'whoops' => '哎呀。',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => '欢迎来到 Cachet',
|
||||
'message' => '你的状态页快准备好了!不过你也许想先调整一下下列设置。',
|
||||
'close' => '直接前往仪表板',
|
||||
'steps' => [
|
||||
'component' => '新增组件',
|
||||
'incident' => '新增事件',
|
||||
'customize' => '定制化',
|
||||
'team' => '新增用戶',
|
||||
'api' => '生成 API 密钥',
|
||||
'two-factor' => '两步验证',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
app/lang/zh-Hans/errors.php
Normal file
16
app/lang/zh-Hans/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => '找不到页面',
|
||||
'message' => '抱歉,你所请求的页面并不存在。请检查你的 URL 是否正确并再试一次。',
|
||||
'link' => '回到主页',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => '未经授权',
|
||||
'message' => '抱歉,你需要管理员权限方可浏览本页面。',
|
||||
'link' => '回到主页',
|
||||
],
|
||||
];
|
||||
126
app/lang/zh-Hans/forms.php
Normal file
126
app/lang/zh-Hans/forms.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => '电邮地址',
|
||||
'username' => '用戶名',
|
||||
'password' => '密码',
|
||||
'site_name' => '网站名称',
|
||||
'site_domain' => '网站域名',
|
||||
'site_timezone' => '选择你的时區',
|
||||
'site_locale' => '选择你的语言',
|
||||
'enable_google2fa' => '启用 Google 两步验证',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => '电邮地址',
|
||||
'password' => '密码',
|
||||
'2fauth' => '令牌',
|
||||
'invalid' => '错误的电邮地址或密码',
|
||||
'invalid-token' => '错误的令牌',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => '名称',
|
||||
'status' => '状态',
|
||||
'component' => '组件',
|
||||
'message' => '信息',
|
||||
'message-help' => '你可以使用 Markdown 。',
|
||||
'scheduled_at' => '排期在什么时候進行维护?',
|
||||
|
||||
'templates' => [
|
||||
'name' => '名称',
|
||||
'template' => '模板',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => '名称',
|
||||
'status' => '状态',
|
||||
'group' => '组別',
|
||||
'description' => '描述',
|
||||
'link' => '连结',
|
||||
'tags' => '标签',
|
||||
'tags-help' => '请以半角逗号分隔。',
|
||||
|
||||
'groups' => [
|
||||
'name' => '名称',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => '名称',
|
||||
'suffix' => '後綴',
|
||||
'description' => '描述',
|
||||
'description-help' => '你可以使用 Markdown 。',
|
||||
'display-chart' => '在状态页上显示图表?',
|
||||
'default-value' => '默认值',
|
||||
'calc_type' => '指标的计算方法',
|
||||
'type_sum' => '总和',
|
||||
'type_avg' => '平均',
|
||||
|
||||
'points' => [
|
||||
'value' => '值',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => '网站名称',
|
||||
'site-url' => '网站 URL',
|
||||
'site-timezone' => '网站时區',
|
||||
'site-locale' => '网站语言',
|
||||
'date-format' => '日期格式',
|
||||
'display-graphs' => '在状态页上显示图片?',
|
||||
'about-this-page' => '关于本站',
|
||||
'days-of-incidents' => '显示多少天前的事件?',
|
||||
'banner' => '图片横幅',
|
||||
'banner-help' => '横幅宽度建议少于 930px 。',
|
||||
'google-analytics' => 'Google Analytics 代码',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => '容许访问的域名',
|
||||
'allowed-domains-help' => '请以半角逗号分隔。以上域名将会自动允许访问。',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => '自定义样式表',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => '背景颜色',
|
||||
'text-color' => '文字颜色',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => '用户名',
|
||||
'email' => '电邮地址',
|
||||
'password' => '密码',
|
||||
'api-token' => 'API 密钥',
|
||||
'api-token-help' => '重新生成 API 密钥将会导致现存的应用程式无法访问 Cachet 。',
|
||||
'2fa' => [
|
||||
'help' => '启用两步认证会使你的帐户更安全。您需要下载<a href="https://support.google.com/accounts/answer/1066447?hl=zh-hant">Google Authenticator</a> 或类似的应用程式到您的设备上。启用后,你需要提供由该应用程序生成的令牌方可登录。',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => '增加',
|
||||
'save' => '储存',
|
||||
'update' => '更新',
|
||||
'create' => '新增',
|
||||
'edit' => '修改',
|
||||
'delete' => '删除',
|
||||
'submit' => '提交',
|
||||
'cancel' => '取消',
|
||||
'remove' => '删除',
|
||||
|
||||
// Other
|
||||
'optional' => '* 可选项目',
|
||||
];
|
||||
19
app/lang/zh-Hans/pagination.php
Normal file
19
app/lang/zh-Hans/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« 前一页',
|
||||
'next' => '后一页 »',
|
||||
|
||||
];
|
||||
22
app/lang/zh-Hans/reminders.php
Normal file
22
app/lang/zh-Hans/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => '密码必须至少有六个字符,而两次输入的密码也必须匹配。',
|
||||
'user' => '无法找到拥有该电邮地址的用戶。',
|
||||
'token' => '无效的密码重置令牌。',
|
||||
'sent' => '已发送密码重置邮件。',
|
||||
'reset' => '成功重置密码。',
|
||||
|
||||
];
|
||||
14
app/lang/zh-Hans/setup.php
Normal file
14
app/lang/zh-Hans/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => '安装',
|
||||
'title' => '安裝 Cachet',
|
||||
'service_details' => '服务详细信息',
|
||||
'status_page_setup' => '設置状态页面',
|
||||
'show_support' => '希望支持 Cachet 嗎? <small>在页面底部放置 Cachet 的连结。</small>',
|
||||
'admin_account' => '管理员帳戶',
|
||||
'complete_setup' => '完成安裝',
|
||||
'completed' => '成功安裝 Cachet !',
|
||||
'finish_setup' => '前往仪表板',
|
||||
'allow_tracking' => '允许匿名统计?',
|
||||
];
|
||||
106
app/lang/zh-Hans/validation.php
Normal file
106
app/lang/zh-Hans/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
59
app/lang/zh-Hant/cachet.php
Normal file
59
app/lang/zh-Hant/cachet.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Components
|
||||
'components' => [
|
||||
'status' => [
|
||||
1 => '正常運行',
|
||||
2 => '效能問題',
|
||||
3 => '部分停止運作',
|
||||
4 => '停止運作',
|
||||
],
|
||||
],
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'none' => '沒有任何事件。',
|
||||
'past' => '以前的事件',
|
||||
'previous_week' => '上星期',
|
||||
'next_week' => '下星期',
|
||||
'none' => '沒有任何報告',
|
||||
'scheduled' => '排程維護',
|
||||
'scheduled_at' => ',於:timestamp',
|
||||
'status' => [
|
||||
0 => '排程中的維護', // TODO: Hopefully remove this.
|
||||
1 => '調查中',
|
||||
2 => '已辨明',
|
||||
3 => '警戒中',
|
||||
4 => '已修復',
|
||||
],
|
||||
],
|
||||
|
||||
// Service Status
|
||||
'service' => [
|
||||
'good' => '全部系統運作正常。',
|
||||
'bad' => '部分系統出現異常。',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'regenerate' => '重新生成 API 密鑰',
|
||||
'revoke' => '撤銷 API 密鑰',
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'filter' => [
|
||||
'hourly' => '每小時',
|
||||
'daily' => '每天',
|
||||
'monthly' => '每月',
|
||||
],
|
||||
],
|
||||
|
||||
// Other
|
||||
'powered_by' => ':app 狀態頁是由 <a href="https://cachethq.io">Cachet</a> 提供。',
|
||||
'about_this_site' => '關於本站',
|
||||
'rss-feed' => 'RSS 訂閱',
|
||||
'atom-feed' => 'Atom 訂閱',
|
||||
'feed' => 'Status 訂閱',
|
||||
|
||||
];
|
||||
186
app/lang/zh-Hant/dashboard.php
Normal file
186
app/lang/zh-Hant/dashboard.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'dashboard' => '儀表板',
|
||||
|
||||
// Incidents
|
||||
'incidents' => [
|
||||
'title' => '事件與排程',
|
||||
'incidents' => '事件',
|
||||
'logged' => '{0} 做得好,沒有任何事件。|你記錄了一個事件。|你回報了 <strong>:count</strong> 個事件。',
|
||||
'incident-create-template' => '新增模板',
|
||||
'incident-templates' => '事件模板',
|
||||
'add' => [
|
||||
'title' => '新增事件',
|
||||
'success' => '事件新增成功。',
|
||||
'failure' => '新增事件時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改事件',
|
||||
'success' => '事件更新成功。',
|
||||
'failure' => '更新事件時遇到一些問題。',
|
||||
],
|
||||
|
||||
// Incident templates
|
||||
'templates' => [
|
||||
'title' => '事件模板',
|
||||
'add' => [
|
||||
'title' => '新增事件模板',
|
||||
'success' => '事件模板新增成功。',
|
||||
'failure' => '新增事件模板時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改事件模板',
|
||||
'success' => '事件模板更新成功!',
|
||||
'failure' => '更新事件模板時遇到一些問題。',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Incident Maintenance
|
||||
'schedule' => [
|
||||
'schedule' => '排程維護',
|
||||
'scheduled_at' => '排程於 :timestamp',
|
||||
'add' => [
|
||||
'title' => '新增排程維護',
|
||||
'success' => '排程維護新增成功。',
|
||||
'failure' => '新增排程維護時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改排程維護',
|
||||
'success' => '排程維護修改成功!',
|
||||
'failure' => '修改排程維護時遇到一些問題。',
|
||||
],
|
||||
'delete' => [
|
||||
'success' => '成功删除了排程維護!該排程維護將不會出現在狀態頁上。',
|
||||
'failure' => '無法刪除該排程維護。請稍後再試。',
|
||||
],
|
||||
],
|
||||
|
||||
// Components
|
||||
'components' => [
|
||||
'components' => '組件',
|
||||
'component_statuses' => '組件狀態',
|
||||
'listed_group' => '屬於:name組',
|
||||
'add' => [
|
||||
'title' => '新增組件',
|
||||
'message' => '你應該先新增一個組件。',
|
||||
'success' => '組件新增成功。',
|
||||
'failure' => '新增組件時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改組件',
|
||||
'success' => '組件修改成功。',
|
||||
'failure' => '修改組件時遇到一些問題。',
|
||||
],
|
||||
|
||||
// Component groups
|
||||
'groups' => [
|
||||
'groups' => '組件組|組件組',
|
||||
'add' => [
|
||||
'title' => '新增組件組',
|
||||
'success' => '組件組新增成功。',
|
||||
'failure' => '新增組件組時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改組件組',
|
||||
'success' => '組件組修改成功。',
|
||||
'failure' => '修改組件組時遇到一些問題。',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// Metrics
|
||||
'metrics' => [
|
||||
'metrics' => '指標',
|
||||
'add' => [
|
||||
'title' => '新增指標',
|
||||
'success' => '指標新增成功。',
|
||||
'failure' => '新增指標時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改指標',
|
||||
'success' => '指標修改成功。',
|
||||
'failure' => '修改指標時遇到一些問題。',
|
||||
],
|
||||
],
|
||||
|
||||
// Team
|
||||
'team' => [
|
||||
'team' => '團隊',
|
||||
'member' => '成員',
|
||||
'profile' => '個人檔案',
|
||||
'description' => '團隊成員可以新增、修改、或更新組件和事件。',
|
||||
'add' => [
|
||||
'title' => '新增團隊成員',
|
||||
'success' => '成功新增團隊成員。',
|
||||
'failure' => '新增團隊成員時遇到一些問題。',
|
||||
],
|
||||
'edit' => [
|
||||
'title' => '修改個人檔案',
|
||||
'success' => '成功修改個人檔案。',
|
||||
'failure' => '更新時遇到一些問題。',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
'settings' => '設定',
|
||||
'app-setup' => [
|
||||
'app-setup' => '應用程式設定',
|
||||
'images-only' => '你只能上載圖片。',
|
||||
'too-big' => '檔案大小過大。請嘗試上載一張大小小於 :size 的圖片。',
|
||||
],
|
||||
'security' => [
|
||||
'security' => '安全',
|
||||
'two-factor' => '下列用戶未使用雙重認證',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'stylesheet' => '樣式表',
|
||||
],
|
||||
'theme' => [
|
||||
'theme' => '主題',
|
||||
],
|
||||
'edit' => [
|
||||
'success' => '設定已儲存。',
|
||||
'failure' => '設定儲存失敗。',
|
||||
],
|
||||
],
|
||||
|
||||
// Login
|
||||
'login' => [
|
||||
'login' => '登錄',
|
||||
'logged_in' => '你已經登錄。',
|
||||
'welcome' => '歡迎回來!',
|
||||
'two-factor' => '請輸入驗證碼。',
|
||||
],
|
||||
|
||||
// Sidebar footer
|
||||
'help' => '幫助',
|
||||
'status_page' => '狀態頁',
|
||||
'logout' => '登出',
|
||||
|
||||
// Notifications
|
||||
'notifications' => [
|
||||
'notifications' => '通知',
|
||||
'awesome' => '太好了。',
|
||||
'whoops' => '唉呀。',
|
||||
],
|
||||
|
||||
// Welcome modal
|
||||
'welcome' => [
|
||||
'welcome' => '歡迎來到 Cachet',
|
||||
'message' => '你的狀態頁快準備好了!不過你也許先想調整一下以下設定。',
|
||||
'close' => '直接前往儀表板',
|
||||
'steps' => [
|
||||
'component' => '新增組件',
|
||||
'incident' => '新增事件',
|
||||
'customize' => '定制化',
|
||||
'team' => '新增用戶',
|
||||
'api' => '生成 API 密鑰',
|
||||
'two-factor' => '兩步驗證',
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
16
app/lang/zh-Hant/errors.php
Normal file
16
app/lang/zh-Hant/errors.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not-found' => [
|
||||
'code' => '404',
|
||||
'title' => '找不到頁面',
|
||||
'message' => '抱歉,你所請求的頁面並不存在。請檢查你的 URL 是否正確並再試一次。',
|
||||
'link' => '返回主頁',
|
||||
],
|
||||
'unauthorized' => [
|
||||
'code' => '401',
|
||||
'title' => '未經授權',
|
||||
'message' => '抱歉,你需要管理員權限方可瀏覽本頁面。',
|
||||
'link' => '返回主頁',
|
||||
],
|
||||
];
|
||||
126
app/lang/zh-Hant/forms.php
Normal file
126
app/lang/zh-Hant/forms.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
// Setup form fields
|
||||
'setup' => [
|
||||
'email' => '電郵地址',
|
||||
'username' => '用戶名',
|
||||
'password' => '密碼',
|
||||
'site_name' => '網站名稱',
|
||||
'site_domain' => '網站域名',
|
||||
'site_timezone' => '選擇你的時區',
|
||||
'site_locale' => '選擇你的語言',
|
||||
'enable_google2fa' => '啟用 Google 兩步驗證',
|
||||
],
|
||||
|
||||
// Login form fields
|
||||
'login' => [
|
||||
'email' => '電郵地址',
|
||||
'password' => '密碼',
|
||||
'2fauth' => '驗證碼',
|
||||
'invalid' => '錯誤的電郵地址或密碼',
|
||||
'invalid-token' => '錯誤的驗證碼',
|
||||
],
|
||||
|
||||
// Incidents form fields
|
||||
'incidents' => [
|
||||
'name' => '名稱',
|
||||
'status' => '狀態',
|
||||
'component' => '組件',
|
||||
'message' => '信息',
|
||||
'message-help' => '你可以使用 Markdown 。',
|
||||
'scheduled_at' => '排期在什麼時候進行維護?',
|
||||
|
||||
'templates' => [
|
||||
'name' => '名稱',
|
||||
'template' => '模板',
|
||||
],
|
||||
],
|
||||
|
||||
// Components form fields
|
||||
'components' => [
|
||||
'name' => '名稱',
|
||||
'status' => '狀態',
|
||||
'group' => '組別',
|
||||
'description' => '描述',
|
||||
'link' => '連結',
|
||||
'tags' => '標籤',
|
||||
'tags-help' => '請以半角逗號分隔。',
|
||||
|
||||
'groups' => [
|
||||
'name' => '名稱',
|
||||
],
|
||||
],
|
||||
|
||||
// Metric form fields
|
||||
'metrics' => [
|
||||
'name' => '名稱',
|
||||
'suffix' => '後綴',
|
||||
'description' => '描述',
|
||||
'description-help' => '你可以使用 Markdown 。',
|
||||
'display-chart' => '在狀態頁上顯示圖表?',
|
||||
'default-value' => '默認值',
|
||||
'calc_type' => '指標的計算方法',
|
||||
'type_sum' => '總和',
|
||||
'type_avg' => '平均',
|
||||
|
||||
'points' => [
|
||||
'value' => '值',
|
||||
],
|
||||
],
|
||||
|
||||
// Settings
|
||||
'settings' => [
|
||||
/// Application setup
|
||||
'app-setup' => [
|
||||
'site-name' => '網站名稱',
|
||||
'site-url' => '網站 URL',
|
||||
'site-timezone' => '網站時區',
|
||||
'site-locale' => '網站語言',
|
||||
'date-format' => '日期格式',
|
||||
'display-graphs' => '在狀態頁上顯示圖片?',
|
||||
'about-this-page' => '關於本站',
|
||||
'days-of-incidents' => '顯示多少天前的事件?',
|
||||
'banner' => '圖片橫幅',
|
||||
'banner-help' => '橫幅寬度建議少於 930px 。',
|
||||
'google-analytics' => 'Google Analytics 代碼',
|
||||
],
|
||||
'security' => [
|
||||
'allowed-domains' => '容許訪問的域名',
|
||||
'allowed-domains-help' => '請以半角逗號分隔。以上域名將會自動允許訪問。',
|
||||
],
|
||||
'stylesheet' => [
|
||||
'custom-css' => '自定義樣式表',
|
||||
],
|
||||
'theme' => [
|
||||
'background-color' => '背景顏色',
|
||||
'text-color' => '文字顏色',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'username' => '用戶名',
|
||||
'email' => '電郵地址',
|
||||
'password' => '密碼',
|
||||
'api-token' => 'API 密鑰',
|
||||
'api-token-help' => '重新生成 API 密鑰將會導致現存的應用程序無法訪問 Cachet 。',
|
||||
'2fa' => [
|
||||
'help' => '啟用兩步認證會使得你的賬戶更加安全。您需要下載 <a href="https://support.google.com/accounts/answer/1066447?hl=zh-hant">Google Authenticator</a> 或類似的應用程序到您的設備上。啓用後,你需要提供由該應用程序生成的驗證碼方可登錄。',
|
||||
],
|
||||
],
|
||||
|
||||
// Buttons
|
||||
'add' => '增加',
|
||||
'save' => '儲存',
|
||||
'update' => '更新',
|
||||
'create' => '新增',
|
||||
'edit' => '修改',
|
||||
'delete' => '刪除',
|
||||
'submit' => '提交',
|
||||
'cancel' => '取消',
|
||||
'remove' => '刪除',
|
||||
|
||||
// Other
|
||||
'optional' => '* 可選項目',
|
||||
];
|
||||
19
app/lang/zh-Hant/pagination.php
Normal file
19
app/lang/zh-Hant/pagination.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pagination Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used by the paginator library to build
|
||||
| the simple pagination links. You are free to change them to anything
|
||||
| you want to customize your views to better match your application.
|
||||
|
|
||||
*/
|
||||
|
||||
'previous' => '« 前一頁',
|
||||
'next' => '後一頁 »',
|
||||
|
||||
];
|
||||
22
app/lang/zh-Hant/reminders.php
Normal file
22
app/lang/zh-Hant/reminders.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reminder Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are the default lines which match reasons
|
||||
| that are given by the password broker for a password update attempt
|
||||
| has failed, such as for an invalid token or invalid new password.
|
||||
|
|
||||
*/
|
||||
|
||||
'password' => '密碼必須至少有六個字符,而兩次輸入的密碼也必須匹配。',
|
||||
'user' => '無法找到擁有該電郵地址的用戶。',
|
||||
'token' => '無效的密碼重置令牌。',
|
||||
'sent' => '已發送密碼重置郵件。',
|
||||
'reset' => '成功重置密碼。',
|
||||
|
||||
];
|
||||
14
app/lang/zh-Hant/setup.php
Normal file
14
app/lang/zh-Hant/setup.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'setup' => '安裝',
|
||||
'title' => '安裝 Cachet',
|
||||
'service_details' => '服務詳細信息',
|
||||
'status_page_setup' => '設置狀態頁面',
|
||||
'show_support' => '希望支持 Cachet 嗎? <small>在頁面底部放置 Cachet 的連結。</small>',
|
||||
'admin_account' => '管理員帳戶',
|
||||
'complete_setup' => '完成安裝',
|
||||
'completed' => '成功安裝 Cachet !',
|
||||
'finish_setup' => '前往儀表板',
|
||||
'allow_tracking' => '允許匿名統計?',
|
||||
];
|
||||
106
app/lang/zh-Hant/validation.php
Normal file
106
app/lang/zh-Hant/validation.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| as the size rules. Feel free to tweak each of these messages here.
|
||||
|
|
||||
*/
|
||||
|
||||
'accepted' => 'The :attribute must be accepted.',
|
||||
'active_url' => 'The :attribute is not a valid URL.',
|
||||
'after' => 'The :attribute must be a date after :date.',
|
||||
'alpha' => 'The :attribute may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
|
||||
'alpha_num' => 'The :attribute may only contain letters and numbers.',
|
||||
'array' => 'The :attribute must be an array.',
|
||||
'before' => 'The :attribute must be a date before :date.',
|
||||
'between' => [
|
||||
'numeric' => 'The :attribute must be between :min and :max.',
|
||||
'file' => 'The :attribute must be between :min and :max kilobytes.',
|
||||
'string' => 'The :attribute must be between :min and :max characters.',
|
||||
'array' => 'The :attribute must have between :min and :max items.',
|
||||
],
|
||||
'boolean' => 'The :attribute field must be true or false.',
|
||||
'confirmed' => 'The :attribute confirmation does not match.',
|
||||
'date' => 'The :attribute is not a valid date.',
|
||||
'date_format' => 'The :attribute does not match the format :format.',
|
||||
'different' => 'The :attribute and :other must be different.',
|
||||
'digits' => 'The :attribute must be :digits digits.',
|
||||
'digits_between' => 'The :attribute must be between :min and :max digits.',
|
||||
'email' => 'The :attribute must be a valid email address.',
|
||||
'exists' => 'The selected :attribute is invalid.',
|
||||
'image' => 'The :attribute must be an image.',
|
||||
'in' => 'The selected :attribute is invalid.',
|
||||
'integer' => 'The :attribute must be an integer.',
|
||||
'ip' => 'The :attribute must be a valid IP address.',
|
||||
'max' => [
|
||||
'numeric' => 'The :attribute may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may not have more than :max items.',
|
||||
],
|
||||
'mimes' => 'The :attribute must be a file of type: :values.',
|
||||
'min' => [
|
||||
'numeric' => 'The :attribute must be at least :min.',
|
||||
'file' => 'The :attribute must be at least :min kilobytes.',
|
||||
'string' => 'The :attribute must be at least :min characters.',
|
||||
'array' => 'The :attribute must have at least :min items.',
|
||||
],
|
||||
'not_in' => 'The selected :attribute is invalid.',
|
||||
'numeric' => 'The :attribute must be a number.',
|
||||
'regex' => 'The :attribute format is invalid.',
|
||||
'required' => 'The :attribute field is required.',
|
||||
'required_if' => 'The :attribute field is required when :other is :value.',
|
||||
'required_with' => 'The :attribute field is required when :values is present.',
|
||||
'required_with_all' => 'The :attribute field is required when :values is present.',
|
||||
'required_without' => 'The :attribute field is required when :values is not present.',
|
||||
'required_without_all' => 'The :attribute field is required when none of :values are present.',
|
||||
'same' => 'The :attribute and :other must match.',
|
||||
'size' => [
|
||||
'numeric' => 'The :attribute must be :size.',
|
||||
'file' => 'The :attribute must be :size kilobytes.',
|
||||
'string' => 'The :attribute must be :size characters.',
|
||||
'array' => 'The :attribute must contain :size items.',
|
||||
],
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'timezone' => 'The :attribute must be a valid zone.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [],
|
||||
|
||||
];
|
||||
@@ -10,6 +10,6 @@ Route::group(['before' => 'has_setting:app_name', 'namespace' => 'CachetHQ\Cache
|
||||
});
|
||||
|
||||
Route::group(['namespace' => 'CachetHQ\Cachet\Http\Controllers'], function () {
|
||||
Route::get('/atom', 'AtomController@feedAction');
|
||||
Route::get('/rss', 'RssController@feedAction');
|
||||
Route::get('/atom/{component_group?}', 'AtomController@feedAction');
|
||||
Route::get('/rss/{component_group?}', 'RssController@feedAction');
|
||||
});
|
||||
|
||||
@@ -63,7 +63,7 @@ App::missing(function ($exception) {
|
||||
*/
|
||||
|
||||
App::down(function () {
|
||||
return Response::make("Be right back!", 503);
|
||||
return Response::make('Be right back!', 503);
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
<div class="col-sm-12 striped-list">
|
||||
@forelse($groups as $group)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-8">
|
||||
<strong>{{ $group->name }}</strong>
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $group->name }}</strong> <span class="label label-info">{{ $group->components->count() }}</span>
|
||||
</div>
|
||||
<div class="col-md-4 text-right">
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="{{ route('dashboard.components.groups.edit', [$group->id]) }}" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/groups/{{ $group->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
|
||||
@@ -20,18 +20,21 @@
|
||||
<div class="col-sm-12 striped-list" id="component-list">
|
||||
@forelse($components as $component)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-8">
|
||||
<div class="col-xs-6">
|
||||
<h4>
|
||||
@if($components->count() > 1)
|
||||
<span class="drag-handle"><i class="ion-drag"></i></span>
|
||||
@endif
|
||||
{{ $component->name }} <small>{{ $component->humanStatus }}</small>
|
||||
</h4>
|
||||
@if($component->group)
|
||||
<p><small>{{ trans('dashboard.components.listed_group', ['name' => $component->group->name]) }}</small></p>
|
||||
@endif
|
||||
@if($component->description)
|
||||
<p><small>{{ $component->description }}</small></p>
|
||||
<p>{{ $component->description }}</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-4 text-right">
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/components/{{ $component->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/components/{{ $component->id }}/delete" class="btn btn-danger confirm-action" data-method="DELETE">{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
|
||||
@@ -55,12 +55,19 @@
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
@if(!$componentsInGroups->isEmpty() || !$componentsOutGroups->isEmpty())
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' selected></option>
|
||||
@foreach($components as $component)
|
||||
@foreach($componentsInGroups as $group)
|
||||
<optgroup label="{{ $group->name }}">
|
||||
@foreach($group->components as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
@foreach($componentsOutGroups as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@@ -44,16 +44,23 @@
|
||||
{{ trans('cachet.incidents.status')[4] }}
|
||||
</label>
|
||||
</div>
|
||||
@if($components->count() > 0)
|
||||
<div class='form-group'>
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' {{ $incident->id === 0 ? "selected" : null }}></option>
|
||||
@foreach($components as $component)
|
||||
<option value='{{ $component->id }}' {{ $incident->component_id === $component->id ? "selected" : null }}>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
@if(!$componentsInGroups->isEmpty() || !$componentsOutGroups->isEmpty())
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.incidents.component') }}</label>
|
||||
<select name='incident[component_id]' class='form-control'>
|
||||
<option value='0' selected></option>
|
||||
@foreach($componentsInGroups as $group)
|
||||
<optgroup label="{{ $group->name }}">
|
||||
@foreach($group->components as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@endforeach
|
||||
@foreach($componentsOutGroups as $component)
|
||||
<option value='{{ $component->id }}'>{{ $component->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<span class='help-block'>{{ trans('forms.optional') }}</span>
|
||||
</div>
|
||||
<div class="form-group {{ $incident->component_id === 0 ? 'hidden' : null }}" id='component-status'>
|
||||
<div class="well">
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
<div class="striped-list">
|
||||
@foreach($incidents as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-6">
|
||||
<div class="col-xs-6">
|
||||
<i class="{{ $incident->icon }}"></i> <strong>{{ $incident->name }}</strong>
|
||||
@if($incident->message)
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/incidents/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
|
||||
@@ -18,11 +18,10 @@
|
||||
<div class="striped-list">
|
||||
@foreach($incidentTemplates as $template)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-6">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $template->name }}</strong>
|
||||
<p><small>{{ $template->template }}</small></p>
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/templates/{{ $template->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/templates/{{ $template->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5" required>{{ Input::old('metric.description') }}</textarea>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ Input::old('metric.description') }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<div class="form-group">
|
||||
<label>{{ trans('forms.metrics.description') }}</label>
|
||||
<div class='markdown-control'>
|
||||
<textarea name="metric[description]" class="form-control" rows="5" required>{{ $metric->description }}</textarea>
|
||||
<textarea name="metric[description]" class="form-control" rows="5">{{ $metric->description }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="striped-list">
|
||||
@foreach($schedule as $incident)
|
||||
<div class="row striped-list-item">
|
||||
<div class="col-md-6">
|
||||
<div class="col-xs-6">
|
||||
<strong>{{ $incident->name }}</strong>
|
||||
<br>
|
||||
{{ trans('dashboard.schedule.scheduled_at', ['timestamp' => $incident->scheduled_at_iso]) }}
|
||||
@@ -30,7 +30,7 @@
|
||||
<p><small>{{ Str::words($incident->message, 5) }}</small></p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-6 text-right">
|
||||
<div class="col-xs-6 text-right">
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/edit" class="btn btn-default">{{ trans('forms.edit') }}</a>
|
||||
<a href="/dashboard/schedule/{{ $incident->id }}/delete" class="btn btn-danger confirm-action" data-method='DELETE'>{{ trans('forms.delete') }}</a>
|
||||
</div>
|
||||
|
||||
@@ -37,6 +37,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(! $unsecureUsers->isEmpty())
|
||||
<hr>
|
||||
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">{{ trans('dashboard.settings.security.two-factor') }}</div>
|
||||
<div class="list-group">
|
||||
@foreach($unsecureUsers as $user)
|
||||
<div class="list-group-item">
|
||||
<strong>{{ $user->username }}</strong>
|
||||
<span class="label label-danger pull-right"><i class="ion-ios-unlocked"></i></span>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,16 +19,16 @@
|
||||
<!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading -->
|
||||
<meta http-equiv="cleartype" content="on">
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ url('img/favicon.ico') }}">
|
||||
<link rel="shortcut icon" href="{{ url('img/favicon.png') }}" type="image/x-icon">
|
||||
<link rel="icon" type="image/png" href="/img/favicon.ico">
|
||||
<link rel="shortcut icon" href="/img/favicon.png" type="image/x-icon">
|
||||
|
||||
<link rel="apple-touch-icon" href="{{ url('img/apple-touch-icon.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ url('img/apple-touch-icon-57x57.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ url('img/apple-touch-icon-72x72.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ url('img/apple-touch-icon-114x114.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ url('img/apple-touch-icon-120x120.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ url('img/apple-touch-icon-144x144.png') }}">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ url('img/apple-touch-icon-152x152.png') }}">
|
||||
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/img/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/img/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/img/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/img/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/img/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/img/apple-touch-icon-152x152.png">
|
||||
|
||||
<title>{{ $pageTitle ?: Setting::get('app_name') }} Status</title>
|
||||
|
||||
|
||||
15
app/views/partials/component.blade.php
Normal file
15
app/views/partials/component.blade.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<li class="list-group-item {{ $component->group_id ? "sub-component" : "component" }}">
|
||||
@if($component->link)
|
||||
<a href="{{ $component->link }}" target="_blank">{{ $component->name }}</a>
|
||||
@else
|
||||
{{ $component->name }}
|
||||
@endif
|
||||
|
||||
@if($component->description)
|
||||
<i class="ion-ios-help-outline help-icon" data-toggle="tooltip" data-title="{{ $component->description }}"></i>
|
||||
@endif
|
||||
|
||||
<div class="pull-right">
|
||||
<small class="text-component-{{ $component->status }}">{{ $component->humanStatus }}</small>
|
||||
</div>
|
||||
</li>
|
||||
@@ -1,22 +1,22 @@
|
||||
@if($components->count() > 0)
|
||||
<ul class="list-group components">
|
||||
@foreach($components as $component)
|
||||
<li class="list-group-item component">
|
||||
<strong>
|
||||
@if($component->link)
|
||||
<a href="{{ $component->link }}" target="_blank">{{ $component->name }}</a>
|
||||
@else
|
||||
{{ $component->name }}
|
||||
@endif
|
||||
@if($componentGroups->count() > 0)
|
||||
@foreach($componentGroups as $componentGroup)
|
||||
@if($componentGroup->components->count() > 0)
|
||||
<li class="list-group-item group-name"><strong>{{ $componentGroup->name }}</strong></li>
|
||||
|
||||
@if($component->description)
|
||||
<i class="ion-ios-help-outline help-icon" data-toggle="tooltip" data-title="{{ $component->description }}"></i>
|
||||
@endif
|
||||
</strong>
|
||||
<div class="pull-right">
|
||||
<small class="text-component-{{ $component->status }}">{{ $component->humanStatus }}</small>
|
||||
</div>
|
||||
</li>
|
||||
@foreach($componentGroup->components as $component)
|
||||
@include('partials.component', compact($component))
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
@if($ungroupedComponents->count() > 0)
|
||||
<li class="list-group-item break"></li>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if($ungroupedComponents->count() > 0)
|
||||
@foreach($ungroupedComponents as $component)
|
||||
@include('partials.component', compact($component))
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
@endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<ul class="list-group metrics">
|
||||
@foreach($metrics as $metric)
|
||||
<?php
|
||||
$points = range(0, 10);
|
||||
$points = range(1, 11);
|
||||
foreach($points as $hour) {
|
||||
$points[$hour] = $metric->getValues($hour);
|
||||
}
|
||||
|
||||
410
composer.lock
generated
410
composer.lock
generated
File diff suppressed because it is too large
Load Diff
21
public/build/dist/css/all-0352fb47.css
vendored
21
public/build/dist/css/all-0352fb47.css
vendored
File diff suppressed because one or more lines are too long
21
public/build/dist/css/all-5f5f09bd.css
vendored
Normal file
21
public/build/dist/css/all-5f5f09bd.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"dist/css/all.css": "dist/css/all-0352fb47.css",
|
||||
"dist/css/all.css": "dist/css/all-5f5f09bd.css",
|
||||
"dist/js/all.js": "dist/js/all-d4baa2f5.js"
|
||||
}
|
||||
Binary file not shown.
@@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<!--
|
||||
2014-12-3: Created.
|
||||
2014-12-4: Created.
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>
|
||||
Created by FontForge 20120731 at Wed Dec 3 12:38:33 2014
|
||||
Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014
|
||||
By Adam Bradley
|
||||
Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net)
|
||||
</metadata>
|
||||
@@ -1046,19 +1046,16 @@ d="M103 243c11 0 19 -8 19 -19s-8 -19 -19 -19s-19 8 -19 19s8 19 19 19zM434 199c21
|
||||
s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM103 184c22 0 39 18 39 40s-17 40 -39 40s-39 -18 -39 -40s17 -40 39 -40zM276 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 160
|
||||
c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 248c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM364 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20z" />
|
||||
<glyph glyph-name="ion-ios-gear-outline" unicode="" horiz-adv-x="384"
|
||||
d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM360 232c14 0 24 -11 24 -25v-15v-15
|
||||
c0 -14 -10 -24 -24 -24h-15c-12 0 -23 -11 -23 -24c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-22 -22c-4 -4 -11 -7 -18 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -23 -11 -23 -23v-15c0 -14 -11 -25 -25 -25h-30c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23
|
||||
c-6 0 -13 -3 -17 -8l-10 -9c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7
|
||||
s13 -3 17 -7l10 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 24 -11 24 -25v-15c0 -12 11 -23 24 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -9c-5 -4 -8 -11 -8 -17c0 -13 11 -23 23 -23h15zM368 192v15
|
||||
c0 4 -3 9 -8 9h-15c-10 0 -20 4 -27 12s-12 17 -12 27c0 11 5 21 13 28l9 9c2 2 3 5 3 7s-1 4 -3 6l-22 22c-2 1 -4 2 -6 2s-4 0 -6 -2l-10 -9c-8 -8 -17 -13 -28 -13c-10 0 -20 4 -28 11s-12 18 -12 28v15c0 5 -4 9 -8 9h-30c-4 0 -9 -4 -9 -9v-15c0 -10 -4 -21 -12 -28
|
||||
s-17 -11 -27 -11c-11 0 -21 4 -28 12l-10 10v0v0c-1 1 -4 2 -6 2s-4 0 -6 -2l-23 -22c-2 -2 -2 -5 -2 -6s0 -5 2 -7l9 -9c8 -8 13 -17 13 -28c0 -10 -4 -19 -11 -27s-18 -12 -28 -12h-15c-5 0 -9 -5 -9 -9v-15v-15c0 -4 4 -9 9 -9h15c10 0 21 -4 28 -12s11 -17 11 -27
|
||||
c0 -11 -4 -21 -12 -29l-9 -8c-3 -3 -3 -10 0 -13l22 -22v0v0c1 -1 4 -2 6 -2s4 0 6 2l10 9c7 8 17 13 28 13c10 0 19 -4 27 -11s12 -18 12 -28v-15c0 -5 4 -9 9 -9h30c5 0 9 4 9 9v15c0 10 4 21 12 28s17 11 27 11c11 0 21 -5 29 -13l9 -9c2 -2 4 -2 6 -2s4 0 6 2l23 22
|
||||
c3 3 3 10 0 13l-10 9c-8 7 -12 17 -12 28c0 10 4 20 11 28s18 12 28 12h15c5 0 7 4 7 8v15z" />
|
||||
d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM138 365c-10 -3 -20 -7 -30 -12c2 -8 1 -16 0 -24
|
||||
c-2 -13 -8 -25 -18 -35c-12 -12 -29 -19 -46 -19c-4 0 -9 0 -13 1c-5 -10 -9 -20 -12 -30c7 -4 12 -10 17 -17c8 -11 12 -24 12 -37s-4 -26 -12 -37c-5 -7 -10 -13 -17 -17c3 -10 7 -20 12 -30c4 1 9 1 13 1c17 0 34 -7 46 -19c10 -10 16 -22 18 -35c1 -8 2 -16 0 -24
|
||||
c10 -5 20 -9 30 -12c4 7 10 12 17 17c11 8 24 12 37 12s26 -4 37 -12c7 -5 13 -10 17 -17c10 3 20 7 30 12c-2 8 -1 16 0 24c2 13 8 25 18 35c12 12 29 19 46 19c4 0 9 0 13 -1c5 10 9 20 12 30c-7 4 -12 10 -17 17c-8 11 -12 24 -12 37s4 26 12 37c5 7 10 13 17 17
|
||||
c-3 10 -7 20 -12 30c-4 -1 -9 -1 -13 -1c-17 0 -34 7 -46 19c-10 10 -16 22 -18 35c-1 8 -2 16 0 24c-10 5 -20 9 -30 12c-4 -7 -10 -12 -17 -17c-11 -8 -24 -12 -37 -12s-26 4 -37 12c-7 5 -13 10 -17 17zM238 384v0c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55
|
||||
c10 -10 22 -14 35 -14c7 0 14 1 20 4c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46s14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32
|
||||
c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32z" />
|
||||
<glyph glyph-name="ion-ios-gear" unicode="" horiz-adv-x="384"
|
||||
d="M360 232c14 0 24 -11 24 -25v-15v-15c0 -14 -10 -25 -24 -25h-15c-12 0 -23 -10 -23 -23c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-23 -22c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -24 -11 -24 -23v-15c0 -14 -10 -25 -24 -25h-30
|
||||
c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23c-6 0 -13 -2 -17 -7l-10 -10c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9
|
||||
c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7s14 -3 18 -7l9 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 25 -11 25 -25v-15c0 -12 10 -23 23 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -10
|
||||
c-5 -4 -8 -10 -8 -16c0 -13 11 -23 23 -23h15zM273 192v0c0 44 -36 80 -80 80s-80 -36 -80 -80v0v0c0 -44 36 -80 80 -80s80 36 80 80v0z" />
|
||||
d="M352 192c0 -21 14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4
|
||||
c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55c10 -10 22 -14 35 -14c7 0 14 1 20 4
|
||||
c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
|
||||
<glyph glyph-name="ion-ios-glasses-outline" unicode=""
|
||||
d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24
|
||||
c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" />
|
||||
@@ -1084,15 +1081,15 @@ c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c
|
||||
d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46
|
||||
c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" />
|
||||
<glyph glyph-name="ion-ios-home-outline" unicode="" horiz-adv-x="384"
|
||||
d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45zM80 294v42h-32v-67z" />
|
||||
d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45zM80 294v42h-32v-67z" />
|
||||
<glyph glyph-name="ion-ios-home" unicode="" horiz-adv-x="384"
|
||||
d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45z" />
|
||||
<glyph glyph-name="ion-ios-infinite-outline" unicode="" horiz-adv-x="384"
|
||||
d="M359 249c33 -31 33 -82 0 -113c-16 -15 -36 -24 -59 -24c-22 0 -44 9 -60 24l-108 102c-13 12 -30 18 -48 18s-35 -6 -48 -18c-26 -25 -26 -66 0 -91c13 -12 30 -19 48 -19s35 7 48 19l36 34l12 -11l-36 -34c-16 -15 -37 -24 -60 -24s-43 9 -59 24c-33 31 -33 82 0 113
|
||||
c16 15 36 23 59 23c22 0 44 -8 60 -23l108 -102c13 -12 30 -19 48 -19s34 7 47 19c26 25 26 66 0 91c-13 12 -29 18 -47 18s-35 -6 -48 -18l-37 -35l-11 11l36 35c16 15 37 23 60 23s43 -8 59 -23z" />
|
||||
<glyph glyph-name="ion-ios-infinite" unicode="" horiz-adv-x="384"
|
||||
d="M358 249c17 -15 26 -36 26 -57c0 -22 -9 -42 -26 -57s-39 -23 -63 -23s-45 8 -62 23l-103 93c-11 10 -26 15 -41 15s-30 -5 -41 -15s-16 -22 -16 -36s5 -26 16 -36s26 -15 41 -15s30 5 41 15l30 28l23 -20l-32 -29c-17 -15 -38 -23 -62 -23s-46 8 -63 23s-26 35 -26 57
|
||||
s9 42 26 57s39 23 63 23s45 -8 62 -23l104 -93c11 -10 25 -15 40 -15s30 5 41 15s17 22 17 36s-6 26 -17 36s-26 15 -41 15s-29 -5 -40 -15l-31 -28l-23 20l32 29c17 15 38 23 62 23s46 -8 63 -23z" />
|
||||
d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45z" />
|
||||
<glyph glyph-name="ion-ios-infinite-outline" unicode=""
|
||||
d="M419 260c19 -19 29 -43 29 -68s-10 -49 -29 -68c-19 -18 -44 -28 -70 -28s-50 10 -69 28l-126 123c-15 15 -35 22 -56 22s-40 -7 -55 -22c-31 -30 -31 -80 0 -110c15 -15 34 -22 55 -22s41 7 56 22l43 42l13 -14l-42 -41c-19 -18 -44 -28 -70 -28s-50 10 -69 28
|
||||
c-19 19 -29 43 -29 68s10 49 29 68c19 18 43 28 69 28s51 -10 70 -28l126 -123c15 -15 34 -22 55 -22s41 7 56 22c31 30 31 80 0 110c-15 15 -35 22 -56 22s-40 -7 -55 -22l-43 -42l-13 14l42 41c19 18 44 28 70 28s50 -10 69 -28z" />
|
||||
<glyph glyph-name="ion-ios-infinite" unicode="" horiz-adv-x="464"
|
||||
d="M433 266c20 -20 31 -46 31 -74s-11 -54 -31 -74s-48 -30 -76 -30s-55 10 -75 30l-125 123c-13 13 -32 20 -51 20s-37 -7 -50 -20s-21 -31 -21 -49c0 -19 8 -36 21 -49s31 -20 50 -20s38 7 51 20l39 38l25 -25l-39 -38c-20 -20 -48 -30 -76 -30s-55 10 -75 30
|
||||
s-31 46 -31 74s11 54 31 74s47 30 75 30s56 -10 76 -30l125 -123c13 -13 31 -20 50 -20s38 7 51 20s20 31 20 49c0 19 -7 36 -20 49s-32 20 -51 20s-37 -7 -50 -20l-39 -38l-25 25l39 38c20 20 48 30 76 30s55 -10 75 -30z" />
|
||||
<glyph glyph-name="ion-ios-information-empty" unicode="" horiz-adv-x="64"
|
||||
d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" />
|
||||
<glyph glyph-name="ion-ios-information-outline" unicode="" horiz-adv-x="416"
|
||||
@@ -1128,11 +1125,11 @@ s-16 5 -16 16zM64 96c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z"
|
||||
<glyph glyph-name="ion-ios-list" unicode="" horiz-adv-x="384"
|
||||
d="M0 384h384v-384h-384v384zM80 80c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 176c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 272c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM320 88v16h-192v-16h192zM320 184v16
|
||||
h-192v-16h192zM320 280v16h-192v-16h192z" />
|
||||
<glyph glyph-name="ion-ios-location-outline" unicode="" horiz-adv-x="268"
|
||||
d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v0v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM243 239c6 14 9 29 9 44c0 65 -53 117 -118 117s-118 -52 -118 -117c0 -15 3 -31 9 -45
|
||||
c0 -1 1 -1 1 -2l1 -2l107 -227l107 227l1 2c0 1 1 1 1 2v1zM134 352c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
|
||||
<glyph glyph-name="ion-ios-location" unicode="" horiz-adv-x="268"
|
||||
d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
|
||||
<glyph glyph-name="ion-ios-location-outline" unicode="" horiz-adv-x="288"
|
||||
d="M144 400c-34 0 -67 -13 -91 -37s-37 -57 -37 -91c0 -43 24 -107 70 -186c22 -38 44 -72 58 -91c14 19 36 53 58 91c46 79 70 143 70 186c0 34 -13 67 -37 91s-57 37 -91 37zM144 416v0c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304
|
||||
c0 80 64 144 144 144zM144 336c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
|
||||
<glyph glyph-name="ion-ios-location" unicode="" horiz-adv-x="288"
|
||||
d="M144 416c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304c0 80 64 144 144 144zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
|
||||
<glyph glyph-name="ion-ios-locked-outline" unicode="" horiz-adv-x="320"
|
||||
d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM72 296v-72h176v72c0 49 -39 88 -88 88s-88 -39 -88 -88zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32z
|
||||
M160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
|
||||
@@ -1268,12 +1265,10 @@ d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-35
|
||||
<glyph glyph-name="ion-ios-photos" unicode=""
|
||||
d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" />
|
||||
<glyph glyph-name="ion-ios-pie-outline" unicode=""
|
||||
d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM49 160c2 -20 6 -40 14 -59c7 -16 15 -30 26 -44
|
||||
c5 -6 10 -12 15 -17c12 -12 24 -22 38 -30c7 -4 15 -8 23 -11c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-3 8 -8 15 -12 22c-8 14 -17 27 -29 39c-5 5 -11 10 -17 15c-14 11 -28 19 -44 26c-19 8 -39 12 -59 14v-191
|
||||
v-16h-16h-191zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16h-207c0 5 -1 11 -1 16zM16 208h192v192c-26 0 -51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75z" />
|
||||
d="M256 367v0v-207v-12l-12 -4l-180 -45c6 -13 13 -25 21 -36c12 -16 25 -30 41 -42c33 -24 73 -37 114 -37c26 0 51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75c0 51 -20 100 -56 136c-32 32 -75 51 -120 55zM240 384v0c115 0 208 -93 208 -208
|
||||
s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM208 400c-31 -1 -60 -7 -85 -18c-24 -11 -44 -26 -61 -46c-29 -34 -46 -80 -46 -127v0v0c0 -13 3 -46 12 -70l180 46v215zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
|
||||
<glyph glyph-name="ion-ios-pie" unicode=""
|
||||
d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16
|
||||
h-207c0 5 -1 11 -1 16z" />
|
||||
d="M240 384v0c115 0 208 -93 208 -208s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
|
||||
<glyph glyph-name="ion-ios-pint-outline" unicode="" horiz-adv-x="224"
|
||||
d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190
|
||||
c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2zM191 -15c0 1 1 5 1 13c0 11 -4 23 -7 37c-4 18 -9 39 -9 62c0 41 8 64 16 86c8 23 16 46 16 95c0 9 -1 18 -1 26h-190c0 -8 -1 -17 -1 -26c0 -49 8 -72 16 -95
|
||||
@@ -1392,13 +1387,16 @@ c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5
|
||||
s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5
|
||||
c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" />
|
||||
<glyph glyph-name="ion-ios-speedometer-outline" unicode=""
|
||||
d="M448 163v0v0c0 -63 -27 -120 -70 -160l-2 -3l-37 37l11 11l26 -25c16 17 28 36 38 57c10 23 17 47 18 72h-32v16h32c-1 26 -6 51 -16 75c-9 22 -22 42 -38 59l-28 -28l-6 6l-5 5v0h-1l28 28c-18 17 -38 30 -61 40s-48 14 -73 15v-37h-16v37c-25 -1 -50 -5 -73 -15
|
||||
s-43 -23 -61 -40l27 -28v0v0l-5 -5l-6 -6l-28 28c-16 -17 -29 -37 -38 -59c-10 -24 -15 -49 -16 -75h32v-16h-32c1 -25 8 -49 18 -72c9 -21 22 -40 38 -57l25 25l12 -11l-37 -37v1c-44 40 -72 97 -72 161v1v0c0 122 100 221 224 221v0v0h1c124 0 223 -99 223 -221zM208 193
|
||||
l110 68l10 -11l-82 -94l-1 -1c-5 -6 -13 -10 -21 -10c-15 0 -27 11 -27 26c0 8 4 15 9 20z" />
|
||||
d="M224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12l-10 10l-1 2c-19 18 -41 33 -65 43c-26 11 -53 16 -81 16s-55 -5 -81 -16c-24 -10 -46 -25 -65 -43l-1 -2l-10 -10c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224z
|
||||
M416 79c10 23 15 48 16 73h-32v16h32c-1 25 -6 50 -16 73c-9 22 -23 42 -39 60l-27 -27l-6 6l-5 5v0h-1l27 27c-18 17 -38 31 -60 40c-23 10 -48 15 -74 16v-38h-16v38c-25 -1 -49 -6 -72 -16c-22 -10 -43 -23 -61 -40l27 -27v0v0l-6 -6l-5 -5l-27 27
|
||||
c-16 -18 -30 -38 -39 -60c-10 -23 -15 -49 -16 -74h32v-16h-32c1 -25 6 -49 16 -72c9 -20 20 -39 35 -56c40 40 96 64 157 64s117 -24 157 -64c15 17 26 36 35 56zM336 273l2 -1l-75 -84c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48c-10 0 -19 4 -27 9l-13 -12l-11 11l12 12
|
||||
c-6 8 -9 18 -9 28c0 26 22 48 48 48c10 0 19 -3 27 -8zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
|
||||
<glyph glyph-name="ion-ios-speedometer" unicode=""
|
||||
d="M224 384c124 0 224 -99 224 -221c0 -64 -28 -122 -72 -163h-304c-44 41 -72 99 -72 163c0 122 100 221 224 221zM246 156l82 94l-10 11l-110 -68l-2 -2c-5 -5 -9 -12 -9 -20c0 -15 12 -26 27 -26c8 0 16 4 21 10zM372 18c35 35 60 87 60 145v0v1c0 84 -52 157 -125 188
|
||||
c-25 11 -54 16 -83 16v0v0v0c-29 0 -57 -5 -82 -16c-72 -30 -126 -104 -126 -188v0v-1c0 -50 21 -109 62 -146l1 -1l15 15l19 19l-11 10l-23 -23c-15 16 -23 31 -32 50c-10 21 -15 43 -16 67h29v15h-29c0 23 5 47 15 69c9 20 20 38 35 54l26 -26l5 5l5 5v0v0l-25 26
|
||||
c17 16 36 28 57 37c22 9 44 13 68 14v-35h14v35c24 -1 46 -5 68 -14c21 -9 40 -21 57 -37l-26 -26h1v0l5 -5l5 -5l26 26c15 -16 26 -34 35 -54c10 -22 14 -46 15 -69h-29v-15h29c-1 -24 -6 -46 -16 -67c-9 -19 -17 -34 -32 -50l-23 24l-11 -11l19 -19l15 -15z" />
|
||||
d="M385 169v-15h30c-1 -22 -6 -44 -15 -65c-8 -18 -19 -35 -32 -50c-39 37 -90 58 -144 58s-105 -21 -144 -58c-13 15 -24 32 -32 50c-9 21 -14 43 -15 65h28h1v16h-29c1 23 6 45 15 66c9 20 20 38 35 54l25 -24l10 10l1 1v0v0l-25 25c16 15 36 26 56 35c21 9 43 14 66 15
|
||||
v-34h14h1v34c23 -1 46 -6 67 -15s39 -20 55 -35l-24 -25l11 -11l25 25c15 -16 26 -35 35 -55c9 -21 14 -43 15 -66h-30v-1zM272 160c0 10 -3 20 -9 28l63 76l-2 1l-73 -65c-8 5 -17 8 -27 8c-26 0 -48 -22 -48 -48c0 -10 3 -20 9 -28l-12 -12l11 -11l13 12c8 -5 17 -9 27 -9
|
||||
c26 0 48 22 48 48zM224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12h-23c-32 39 -80 64 -134 64s-102 -25 -134 -64h-23c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224zM379 27c34 37 52 86 52 136c0 55 -22 106 -61 145
|
||||
s-91 60 -146 60s-107 -21 -146 -60s-61 -90 -61 -145c0 -50 18 -99 52 -136l10 -10l1 -1v1l9 9l1 1v0c17 17 38 30 60 39c24 10 48 15 74 15s50 -5 74 -15c22 -9 43 -22 60 -39v0l1 -1l9 -9v-1l1 1zM192 160c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z
|
||||
" />
|
||||
<glyph glyph-name="ion-ios-star-half" unicode=""
|
||||
d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" />
|
||||
<glyph glyph-name="ion-ios-star-outline" unicode=""
|
||||
|
||||
|
Before Width: | Height: | Size: 326 KiB After Width: | Height: | Size: 326 KiB |
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Laravel - A PHP Framework For Web Artisans.
|
||||
*
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
namespace CachetHQ\Cachet\Http\Controllers;
|
||||
|
||||
use CachetHQ\Cachet\Facades\Setting;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
use CachetHQ\Cachet\Models\Incident;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
use Roumen\Feed\Facades\Feed;
|
||||
|
||||
class AtomController extends Controller
|
||||
@@ -13,9 +13,11 @@ class AtomController extends Controller
|
||||
/**
|
||||
* Generates an Atom feed of all incidents.
|
||||
*
|
||||
* @param \CachetHQ\Cachet\Models\ComponentGroup|null $group
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function feedAction()
|
||||
public function feedAction(ComponentGroup $group = null)
|
||||
{
|
||||
$feed = Feed::make();
|
||||
$feed->title = Setting::get('app_name');
|
||||
@@ -24,23 +26,37 @@ class AtomController extends Controller
|
||||
|
||||
$feed->setDateFormat('datetime');
|
||||
|
||||
Incident::get()->map(function ($incident) use ($feed) {
|
||||
if ($incident->component) {
|
||||
$componentName = $incident->component->name;
|
||||
} else {
|
||||
$componentName = null;
|
||||
}
|
||||
|
||||
$feed->add(
|
||||
$incident->name,
|
||||
Setting::get('app_name'),
|
||||
Setting::get('app_domain'),
|
||||
$incident->created_at,
|
||||
($componentName === null ? $incident->humanStatus : $componentName.' '.$incident->humanStatus),
|
||||
$incident->message
|
||||
);
|
||||
});
|
||||
if ($group) {
|
||||
$group->components->map(function ($component) use ($feed) {
|
||||
$component->incidents()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) {
|
||||
$this->feedAddItem($feed, $incident);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
Incident::orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) {
|
||||
$this->feedAddItem($feed, $incident);
|
||||
});
|
||||
}
|
||||
|
||||
return $feed->render('atom');
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an item to the feed.
|
||||
*
|
||||
* @param \Thujohn\Rss\Rss $feed
|
||||
* @param \CachetHQ\Cachet\Models\Incident $incident
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function feedAddItem(& $feed, $incident)
|
||||
{
|
||||
$feed->add(
|
||||
$incident->name,
|
||||
Setting::get('app_name'),
|
||||
Setting::get('app_domain'),
|
||||
$incident->created_at->toAtomString(),
|
||||
$incident->message
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,9 +32,10 @@ class DashComponentController extends Controller
|
||||
],
|
||||
];
|
||||
|
||||
View::share('subMenu', $this->subMenu);
|
||||
|
||||
View::share('subTitle', trans_choice('dashboard.components.components', 2));
|
||||
View::share([
|
||||
'subMenu' => $this->subMenu,
|
||||
'subTitle' => trans_choice('dashboard.components.components', 2),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -253,6 +254,12 @@ class DashComponentController extends Controller
|
||||
'event' => 'Deleted Component Group',
|
||||
]);
|
||||
|
||||
$group->components->map(function ($component) {
|
||||
$component->update([
|
||||
'group_id' => 0,
|
||||
]);
|
||||
});
|
||||
|
||||
$group->delete();
|
||||
|
||||
return Redirect::back();
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace CachetHQ\Cachet\Http\Controllers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Component;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
use CachetHQ\Cachet\Models\Incident;
|
||||
use CachetHQ\Cachet\Models\IncidentTemplate;
|
||||
use GrahamCampbell\Binput\Facades\Binput;
|
||||
@@ -68,10 +69,14 @@ class DashIncidentController extends Controller
|
||||
*/
|
||||
public function showAddIncident()
|
||||
{
|
||||
$componentsInGroups = ComponentGroup::with('components')->get();
|
||||
$componentsOutGroups = Component::where('group_id', 0)->get();
|
||||
|
||||
return View::make('dashboard.incidents.add')->with([
|
||||
'pageTitle' => trans('dashboard.incidents.add.title').' - '.trans('dashboard.dashboard'),
|
||||
'components' => Component::all(),
|
||||
'incidentTemplates' => IncidentTemplate::all(),
|
||||
'pageTitle' => trans('dashboard.incidents.add.title').' - '.trans('dashboard.dashboard'),
|
||||
'componentsInGroups' => $componentsInGroups,
|
||||
'componentsOutGroups' => $componentsOutGroups,
|
||||
'incidentTemplates' => IncidentTemplate::all(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -248,10 +253,14 @@ class DashIncidentController extends Controller
|
||||
*/
|
||||
public function showEditIncidentAction(Incident $incident)
|
||||
{
|
||||
$componentsInGroups = ComponentGroup::with('components')->get();
|
||||
$componentsOutGroups = Component::where('group_id', 0)->get();
|
||||
|
||||
return View::make('dashboard.incidents.edit')->with([
|
||||
'pageTitle' => trans('dashboard.incidents.edit.title').' - '.trans('dashboard.dashboard'),
|
||||
'incident' => $incident,
|
||||
'components' => Component::all(),
|
||||
'pageTitle' => trans('dashboard.incidents.edit.title').' - '.trans('dashboard.dashboard'),
|
||||
'incident' => $incident,
|
||||
'componentsInGroups' => $componentsInGroups,
|
||||
'componentsOutGroups' => $componentsOutGroups,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace CachetHQ\Cachet\Http\Controllers;
|
||||
|
||||
use CachetHQ\Cachet\Models\Setting;
|
||||
use CachetHQ\Cachet\Models\User;
|
||||
use Exception;
|
||||
use GrahamCampbell\Binput\Facades\Binput;
|
||||
use Illuminate\Routing\Controller;
|
||||
@@ -88,9 +89,12 @@ class DashSettingsController extends Controller
|
||||
{
|
||||
$this->subMenu['security']['active'] = true;
|
||||
|
||||
$unsecureUsers = User::whereNull('google_2fa_secret')->orWhere('google_2fa_secret', '')->get();
|
||||
|
||||
return View::make('dashboard.settings.security')->with([
|
||||
'pageTitle' => 'Security - Dashboard',
|
||||
'subMenu' => $this->subMenu,
|
||||
'pageTitle' => 'Security - Dashboard',
|
||||
'subMenu' => $this->subMenu,
|
||||
'unsecureUsers' => $unsecureUsers,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace CachetHQ\Cachet\Http\Controllers;
|
||||
|
||||
use CachetHQ\Cachet\Facades\Setting;
|
||||
use CachetHQ\Cachet\Models\Component;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
use CachetHQ\Cachet\Models\Incident;
|
||||
use CachetHQ\Cachet\Models\Metric;
|
||||
use Carbon\Carbon;
|
||||
@@ -23,20 +24,12 @@ class HomeController extends Controller
|
||||
*/
|
||||
public function showIndex()
|
||||
{
|
||||
segment_track('Status Page', [
|
||||
'event' => 'Landed',
|
||||
]);
|
||||
|
||||
$components = Component::orderBy('order')->orderBy('created_at')->get();
|
||||
|
||||
$allIncidents = [];
|
||||
|
||||
$incidentDays = Setting::get('app_incident_days') ?: 7;
|
||||
|
||||
$today = Carbon::now();
|
||||
$startDate = Carbon::now();
|
||||
|
||||
$dateFormat = Setting::get('date_format') ?: 'jS F Y';
|
||||
segment_track('Status Page', [
|
||||
'event' => 'Landed',
|
||||
]);
|
||||
|
||||
// Check if we have another starting date
|
||||
if (Binput::has('start_date')) {
|
||||
@@ -73,9 +66,12 @@ class HomeController extends Controller
|
||||
$metrics = Metric::where('display_chart', 1)->get();
|
||||
}
|
||||
|
||||
$scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();
|
||||
$allIncidents = [];
|
||||
$daysToShow = Setting::get('app_incident_days') ?: 7;
|
||||
$incidentDays = range(0, $daysToShow);
|
||||
$dateFormat = Setting::get('date_format') ?: 'jS F Y';
|
||||
|
||||
foreach (range(0, $incidentDays) as $i) {
|
||||
foreach ($incidentDays as $i) {
|
||||
$date = $startDate->copy()->subDays($i);
|
||||
|
||||
$incidents = Incident::notScheduled()->whereBetween('created_at', [
|
||||
@@ -89,8 +85,17 @@ class HomeController extends Controller
|
||||
];
|
||||
}
|
||||
|
||||
// Scheduled maintenance code.
|
||||
$scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();
|
||||
|
||||
// Component & Component Group lists.
|
||||
$usedComponentGroups = Component::where('group_id', '>', 0)->groupBy('group_id')->lists('group_id');
|
||||
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->get();
|
||||
$ungroupedComponents = Component::where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
|
||||
|
||||
return View::make('index', [
|
||||
'components' => $components,
|
||||
'componentGroups' => $componentGroups,
|
||||
'ungroupedComponents' => $ungroupedComponents,
|
||||
'displayMetrics' => $displayMetrics,
|
||||
'metrics' => $metrics,
|
||||
'allIncidents' => $allIncidents,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace CachetHQ\Cachet\Http\Controllers;
|
||||
|
||||
use CachetHQ\Cachet\Facades\Setting;
|
||||
use CachetHQ\Cachet\Models\ComponentGroup;
|
||||
use CachetHQ\Cachet\Models\Incident;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
@@ -13,9 +14,11 @@ class RssController extends Controller
|
||||
/**
|
||||
* Generates an RSS feed of all incidents.
|
||||
*
|
||||
* @param \CachetHQ\Cachet\Models\ComponentGroup|null $group
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function feedAction()
|
||||
public function feedAction(ComponentGroup $group = null)
|
||||
{
|
||||
$feed = RssFacade::feed('2.0', 'UTF-8');
|
||||
$feed->channel([
|
||||
@@ -24,23 +27,36 @@ class RssController extends Controller
|
||||
'link' => Setting::get('app_domain'),
|
||||
]);
|
||||
|
||||
Incident::get()->map(function ($incident) use ($feed) {
|
||||
if ($incident->component) {
|
||||
$componentName = $incident->component->name;
|
||||
} else {
|
||||
$componentName = null;
|
||||
}
|
||||
|
||||
$feed->item([
|
||||
'title' => $incident->name,
|
||||
'message' => $incident->message,
|
||||
'component' => $componentName,
|
||||
'status' => $incident->humanStatus,
|
||||
'created_at' => $incident->created_at,
|
||||
'updated_at' => $incident->updated_at,
|
||||
]);
|
||||
});
|
||||
if ($group) {
|
||||
$group->components->map(function ($component) use ($feed) {
|
||||
$component->incidents()->orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) {
|
||||
$this->feedAddItem($feed, $incident);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
Incident::orderBy('created_at', 'desc')->get()->map(function ($incident) use ($feed) {
|
||||
$this->feedAddItem($feed, $incident);
|
||||
});
|
||||
}
|
||||
|
||||
return Response::make($feed, 200, ['Content-Type' => 'text/xml']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an item to the feed.
|
||||
*
|
||||
* @param \Thujohn\Rss\Rss $feed
|
||||
* @param \CachetHQ\Cachet\Models\Incident $incident
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function feedAddItem(& $feed, $incident)
|
||||
{
|
||||
$feed->item([
|
||||
'title' => $incident->name,
|
||||
'description' => $incident->message,
|
||||
'pubDate' => $incident->created_at->toRssString(),
|
||||
'guid' => $incident->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,9 +60,20 @@ class SetupController extends Controller
|
||||
]);
|
||||
|
||||
if ($v->passes()) {
|
||||
segment_track('Setup', [
|
||||
'event' => 'Step 1',
|
||||
'success' => true,
|
||||
]);
|
||||
|
||||
return Response::json(['status' => 1]);
|
||||
} else {
|
||||
// No good, let's try that again.
|
||||
|
||||
segment_track('Setup', [
|
||||
'event' => 'Step 1',
|
||||
'success' => false,
|
||||
]);
|
||||
|
||||
return Response::json(['errors' => $v->messages()], 400);
|
||||
}
|
||||
}
|
||||
@@ -115,12 +126,22 @@ class SetupController extends Controller
|
||||
|
||||
Session::flash('setup.done', true);
|
||||
|
||||
segment_track('Setup', [
|
||||
'event' => 'Step 2',
|
||||
'success' => true,
|
||||
]);
|
||||
|
||||
if (Request::ajax()) {
|
||||
return Response::json(['status' => 1]);
|
||||
}
|
||||
|
||||
return Redirect::to('dashboard');
|
||||
} else {
|
||||
segment_track('Setup', [
|
||||
'event' => 'Step 2',
|
||||
'success' => false,
|
||||
]);
|
||||
|
||||
// No good, let's try that again.
|
||||
if (Request::ajax()) {
|
||||
return Response::json(['errors' => $v->messages()], 400);
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace CachetHQ\Cachet\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletingTrait;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
@@ -11,11 +10,10 @@ use Watson\Validating\ValidatingTrait;
|
||||
* @property string $name
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property \Carbon\Carbon $updated_at
|
||||
* @property \Carbon\Carbon $deleted_at
|
||||
*/
|
||||
class ComponentGroup extends Model
|
||||
{
|
||||
use SoftDeletingTrait, ValidatingTrait;
|
||||
use ValidatingTrait;
|
||||
|
||||
/**
|
||||
* The validation rules.
|
||||
@@ -40,6 +38,6 @@ class ComponentGroup extends Model
|
||||
*/
|
||||
public function components()
|
||||
{
|
||||
return $this->hasMany('CachetHQ\Cachet\Models\Component', 'id', 'group_id');
|
||||
return $this->hasMany('CachetHQ\Cachet\Models\Component', 'group_id', 'id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@ use Watson\Validating\ValidatingTrait;
|
||||
* @property string $name
|
||||
* @property string $suffix
|
||||
* @property string $description
|
||||
* @property float $default_value
|
||||
* @property int $calc_type
|
||||
* @property int $display_chart
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property \Carbon\Carbon $updated_at
|
||||
@@ -81,21 +83,23 @@ class Metric extends Model implements TransformableInterface
|
||||
$dateTime->sub(new DateInterval('PT'.$hour.'H'));
|
||||
|
||||
if (Config::get('database.default') === 'mysql') {
|
||||
if (! isset($this->calc_type) || $this->calc_type === self::CALC_SUM) {
|
||||
$value = (int) $this->points()->whereRaw('DATE_FORMAT(created_at, "%Y%m%e%H") = '.$dateTime->format('YmdH'))->whereRaw('HOUR(created_at) = HOUR(DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR))')->groupBy(DB::raw('HOUR(created_at)'))->sum('value');
|
||||
} elseif ($this->calc_type === self::CALC_AVG) {
|
||||
$value = (int) $this->points()->whereRaw('DATE_FORMAT(created_at, "%Y%m%e%H") = '.$dateTime->format('YmdH'))->whereRaw('HOUR(created_at) = HOUR(DATE_SUB(NOW(), INTERVAL '.$hour.' HOUR))')->groupBy(DB::raw('HOUR(created_at)'))->avg('value');
|
||||
if (! isset($this->calc_type) || $this->calc_type == self::CALC_SUM) {
|
||||
$value = (int) $this->points()->whereRaw('DATE_FORMAT(created_at, "%Y%m%e%H") = '.$dateTime->sub(new DateInterval('PT'.$hour.'H'))->format('YmdH'))->groupBy(DB::raw('HOUR(created_at)'))->sum('value');
|
||||
} elseif ($this->calc_type == self::CALC_AVG) {
|
||||
$value = (int) $this->points()->whereRaw('DATE_FORMAT(created_at, "%Y%m%e%H") = '.$dateTime->sub(new DateInterval('PT'.$hour.'H'))->format('YmdH'))->groupBy(DB::raw('HOUR(created_at)'))->avg('value');
|
||||
}
|
||||
} else {
|
||||
// Default metrics calculations.
|
||||
if (! isset($this->calc_type) || $this->calc_type === self::CALC_SUM) {
|
||||
$queryType = "sum(metric_points.value)";
|
||||
} elseif ($this->calc_type === self::CALC_AVG) {
|
||||
$queryType = "avg(metric_points.value)";
|
||||
if (! isset($this->calc_type) || $this->calc_type == self::CALC_SUM) {
|
||||
$queryType = 'sum(metric_points.value)';
|
||||
} elseif ($this->calc_type == self::CALC_AVG) {
|
||||
$queryType = 'avg(metric_points.value)';
|
||||
} else {
|
||||
$queryType = 'sum(metric_points.value)';
|
||||
}
|
||||
|
||||
$query = DB::select("select {$queryType} as aggregate FROM metrics JOIN metric_points ON metric_points.metric_id = metrics.id WHERE to_char(metric_points.created_at, 'YYYYMMDDHH') = :timestamp AND to_char(metric_points.created_at, 'H') = to_char(now() - interval '{$hour} hour', 'H') GROUP BY to_char(metric_points.created_at, 'H')", [
|
||||
'timestamp' => $dateTime->format('YmdH'),
|
||||
$query = DB::select("select {$queryType} as aggregate FROM metrics JOIN metric_points ON metric_points.metric_id = metrics.id WHERE metric_points.metric_id = {$this->id} AND to_char(metric_points.created_at, 'YYYYMMDDHH24') = :timestamp GROUP BY to_char(metric_points.created_at, 'H')", [
|
||||
'timestamp' => $dateTime->sub(new DateInterval('PT'.$hour.'H'))->format('YmdH'),
|
||||
]);
|
||||
|
||||
if (isset($query[0])) {
|
||||
|
||||
@@ -27,7 +27,11 @@ class LoadConfigServiceProvider extends ServiceProvider
|
||||
|
||||
// Set the Segment.com settings.
|
||||
$segmentRepository = $this->app->make('CachetHQ\Cachet\Segment\RepositoryInterface');
|
||||
$this->app->config->set('cachethq/segment::write_key', $segmentRepository->fetch());
|
||||
try {
|
||||
$this->app->config->set('cachethq/segment::write_key', $segmentRepository->fetch());
|
||||
} catch (\GuzzleHttp\Exception\ConnectException $e) {
|
||||
// We may not have any connection. Let's not cry about it.
|
||||
}
|
||||
|
||||
// Override default app values.
|
||||
$this->app->config->set('app.url', $appDomain ?: $this->app->config->get('app.url'));
|
||||
|
||||
@@ -90,20 +90,22 @@ if (!function_exists('segment_identify')) {
|
||||
*/
|
||||
function segment_identify()
|
||||
{
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::identify([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
if (Config::get('cachethq/segment::write_key')) {
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::identify([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -119,22 +121,24 @@ if (!function_exists('segment_track')) {
|
||||
*/
|
||||
function segment_track($event, array $properties)
|
||||
{
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::track([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'event' => $event,
|
||||
'properties' => $properties,
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
if (Config::get('cachethq/segment::write_key')) {
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::track([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'event' => $event,
|
||||
'properties' => $properties,
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,21 +153,23 @@ if (!function_exists('segment_page')) {
|
||||
*/
|
||||
function segment_page($page)
|
||||
{
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::page([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'page' => $page,
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
if (Config::get('cachethq/segment::write_key')) {
|
||||
try {
|
||||
if (Setting::get('app_track')) {
|
||||
return Segment::page([
|
||||
'anonymousId' => Config::get('app.key'),
|
||||
'page' => $page,
|
||||
'context' => [
|
||||
'locale' => Config::get('app.locale'),
|
||||
'timezone' => Setting::get('app_timezone'),
|
||||
],
|
||||
]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user