Compare commits

...

550 Commits

Author SHA1 Message Date
James Brooks
cc2f4de125 Fix version 2019-05-14 13:27:19 +01:00
James Brooks
baea4e9a03 Bump version 2019-05-14 13:25:42 +01:00
James Brooks
1bc48e0c60 Fix view import 2019-05-14 13:25:32 +01:00
James Brooks
1d6b117a55 Bump for dev 2019-05-13 20:33:18 +01:00
James Brooks
7a08cfd00a Release v2.3.17 2019-05-13 20:32:54 +01:00
James Brooks
52fda22acc Apply fixes from StyleCI (#3599) 2019-05-13 20:31:04 +01:00
James Brooks
9531a909d4 Prevent calling of DashboardComposer 2019-05-13 20:30:39 +01:00
James Brooks
5fcc0ce2f6 Don't need to call all() 2019-05-13 20:30:28 +01:00
James Brooks
843eabbcc3 Fixes #3598 2019-05-13 20:29:47 +01:00
Graham Campbell
16f057500b Bumped version for dev (#3588) 2019-05-13 14:31:09 +01:00
Graham Campbell
e477de77be Release v2.3.16 (#3585) 2019-05-12 23:47:56 +01:00
Graham Campbell
e7066864e2 Cachet 2.3 is known to work on PHP 7.0 and 7.1 (#3584) 2019-05-12 20:01:52 +01:00
Graham Campbell
16932219a7 Upgraded deps (#3582) 2019-05-12 19:16:31 +01:00
James Brooks
512e1a6661 Apply fixes from StyleCI (#3565) 2019-04-25 13:10:55 +01:00
James Brooks
0e5bb00f44 Merge pull request #3564 from CachetHQ/l10n_2.3
New Crowdin translations
2019-04-25 13:10:05 +01:00
Cachet Bot
6aed3531dd New translations forms.php (German) 2019-04-25 10:21:43 +01:00
James Brooks
6e79575a1c Merge pull request #3530 from CachetHQ/l10n_2.3
New Crowdin translations
2019-04-01 08:18:00 +01:00
Cachet Bot
61a371520d New translations dashboard.php (German) 2019-03-28 08:10:26 +00:00
James Brooks
1f46e06e80 Apply fixes from StyleCI (#3511) 2019-03-11 20:42:33 +00:00
James Brooks
0e82925f95 Merge pull request #3510 from CachetHQ/l10n_2.3
New Crowdin translations
2019-03-11 20:42:15 +00:00
Cachet Bot
c3cfeeb14c New translations forms.php (Swedish) 2019-03-11 09:00:13 +00:00
James Brooks
7738c73860 Apply fixes from StyleCI (#3505) 2019-03-09 08:50:34 +00:00
James Brooks
d8eb86e4d2 Merge pull request #3501 from CachetHQ/l10n_2.3
New Crowdin translations
2019-03-09 08:49:51 +00:00
Cachet Bot
48ab04c425 New translations forms.php (Romanian) 2019-03-06 20:50:11 +00:00
James Brooks
035164fae6 2.3 is not compatible with PHP7 2019-02-01 22:37:23 +00:00
James Brooks
d4bcdf0e29 Apply fixes from StyleCI (#3436) 2019-01-26 17:06:21 +00:00
James Brooks
f41aa311c5 Merge pull request #3401 from CachetHQ/l10n_2.3
New Crowdin translations
2019-01-26 17:05:46 +00:00
Cachet Bot
ef7236c16b New translations setup.php (Slovenian) 2019-01-26 11:40:20 +00:00
Cachet Bot
84915404b9 New translations forms.php (Slovenian) 2019-01-26 11:40:19 +00:00
Cachet Bot
6dfadc2f94 New translations dashboard.php (Slovenian) 2019-01-26 11:40:18 +00:00
Cachet Bot
7f6effff96 New translations validation.php (Slovenian) 2019-01-26 11:40:16 +00:00
Cachet Bot
63589167f3 New translations pagination.php (Slovenian) 2019-01-26 11:40:15 +00:00
Cachet Bot
9e96f28ddf New translations cachet.php (Slovenian) 2019-01-26 11:40:14 +00:00
Cachet Bot
6d920b2111 New translations setup.php (Mongolian) 2019-01-26 11:40:13 +00:00
Cachet Bot
760a034c0c New translations forms.php (Mongolian) 2019-01-26 11:40:12 +00:00
Cachet Bot
0a9d1b313a New translations dashboard.php (Mongolian) 2019-01-26 11:40:11 +00:00
Cachet Bot
e9020d3e08 New translations validation.php (Mongolian) 2019-01-26 11:40:10 +00:00
Cachet Bot
d61c9d190f New translations pagination.php (Mongolian) 2019-01-26 11:40:09 +00:00
Cachet Bot
520785b5ca New translations cachet.php (Mongolian) 2019-01-26 11:40:08 +00:00
Cachet Bot
dd0052a50f New translations setup.php (German) 2019-01-15 13:10:13 +00:00
Cachet Bot
cd48270cad New translations cachet.php (German) 2019-01-15 13:10:11 +00:00
Cachet Bot
79b837d65f New translations setup.php (Dutch) 2019-01-03 18:00:13 +00:00
Cachet Bot
5f639b718f New translations dashboard.php (Dutch) 2019-01-03 18:00:12 +00:00
Cachet Bot
eb18e7d982 New translations cachet.php (Dutch) 2019-01-03 18:00:11 +00:00
Cachet Bot
cd70023bbe New translations forms.php (Dutch) 2019-01-03 18:00:10 +00:00
Cachet Bot
4277ec77e4 New translations cachet.php (Dutch) 2019-01-03 17:20:11 +00:00
James Brooks
1f1cf5a242 Merge pull request #3388 from CachetHQ/l10n_2.3
New Crowdin translations
2019-01-01 10:59:41 +00:00
Cachet Bot
495f118116 New translations cachet.php (Dutch) 2018-12-31 09:30:07 +00:00
James Brooks
171588c3a5 Merge pull request #3386 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-30 17:06:44 +00:00
Cachet Bot
72def0eb60 New translations forms.php (Afrikaans) 2018-12-30 11:00:09 +00:00
Cachet Bot
79a8026191 New translations dashboard.php (Afrikaans) 2018-12-30 11:00:08 +00:00
James Brooks
11bb77b944 Merge pull request #3380 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-29 18:56:41 +00:00
Cachet Bot
3f932a2ec2 Apply fixes from StyleCI 2018-12-29 17:50:13 +00:00
Cachet Bot
9f0a11eeb4 New translations forms.php (Dutch) 2018-12-29 17:50:07 +00:00
Cachet Bot
34f5775bd8 New translations dashboard.php (German) 2018-12-29 12:40:07 +00:00
Cachet Bot
2a4a7d72a2 New translations dashboard.php (German) 2018-12-29 12:30:08 +00:00
James Brooks
2dd7fba3e1 Merge pull request #3359 from CachetHQ/l10n_2.3
New Crowdin translations
2018-12-27 22:07:36 +00:00
Cachet Bot
ac91ba5d67 New translations setup.php (Swedish) 2018-12-10 23:50:10 +00:00
Cachet Bot
2a04e8907c New translations cachet.php (Swedish) 2018-12-10 23:50:08 +00:00
Cachet Bot
c66f66a6f4 New translations cachet.php (Swedish) 2018-12-10 23:40:08 +00:00
James Brooks
589f82af84 Merge pull request #3335 from CachetHQ/l10n_2.3
New Crowdin translations
2018-11-23 11:20:01 +00:00
Cachet Bot
ef91bacc35 Apply fixes from StyleCI 2018-11-19 17:41:38 +00:00
Cachet Bot
84f1f2fe0b New translations forms.php (German) 2018-11-19 17:41:33 +00:00
Cachet Bot
525563c3c0 New translations forms.php (French) 2018-11-19 17:41:30 +00:00
Cachet Bot
4b8bc99b5e Apply fixes from StyleCI 2018-11-19 17:41:28 +00:00
Cachet Bot
66a300cade New translations forms.php (Indonesian) 2018-11-19 17:41:22 +00:00
Cachet Bot
68f80c2f95 New translations forms.php (Dutch) 2018-11-19 17:41:05 +00:00
Cachet Bot
a087b2a21a New translations forms.php (Chinese Simplified) 2018-11-19 17:41:03 +00:00
Cachet Bot
f155bfa419 New translations forms.php (Danish) 2018-11-19 17:41:01 +00:00
Cachet Bot
255922804c New translations forms.php (Chinese Traditional) 2018-11-19 17:40:56 +00:00
Cachet Bot
7191bdacf8 New translations forms.php (Swedish) 2018-11-19 17:40:49 +00:00
Cachet Bot
491b07d498 New translations forms.php (Spanish) 2018-11-19 17:40:46 +00:00
Cachet Bot
467453c29d New translations forms.php (Russian) 2018-11-19 17:40:44 +00:00
Cachet Bot
8d42f0f97b New translations forms.php (Zulu) 2018-11-19 17:40:39 +00:00
Cachet Bot
fc170bea0a New translations cachet.php (Zulu) 2018-11-19 17:40:37 +00:00
Cachet Bot
d455f56243 New translations forms.php (Italian) 2018-11-19 17:40:32 +00:00
Cachet Bot
cef1d82d8c New translations forms.php (Norwegian) 2018-11-19 17:40:29 +00:00
Cachet Bot
e7caa3ca37 Apply fixes from StyleCI 2018-11-19 17:40:26 +00:00
Cachet Bot
2a320477e3 New translations forms.php (Romanian) 2018-11-19 17:40:19 +00:00
Cachet Bot
1c593bb2f1 New translations forms.php (Portuguese, Brazilian) 2018-11-19 17:40:17 +00:00
Cachet Bot
e557e5eb9b New translations forms.php (Portuguese) 2018-11-19 17:40:14 +00:00
Cachet Bot
33ed227c97 New translations forms.php (Polish) 2018-11-19 17:40:10 +00:00
James Brooks
f4dc5d09ab Merge pull request #3278 from CachetHQ/l10n_2.3
New Crowdin translations
2018-11-13 14:24:58 +00:00
Cachet Bot
d86d2e8201 New translations cachet.php (Japanese) 2018-11-05 07:00:07 +00:00
Cachet Bot
9ac9b5898e Apply fixes from StyleCI 2018-10-18 16:50:16 +00:00
Cachet Bot
1eea552d6e New translations forms.php (Russian) 2018-10-18 17:50:07 +01:00
Cachet Bot
3fd9bfe00d New translations setup.php (Estonian) 2018-10-15 12:40:15 +01:00
Cachet Bot
282ee9802d New translations forms.php (Estonian) 2018-10-15 12:40:14 +01:00
Cachet Bot
ce7104d679 New translations dashboard.php (Estonian) 2018-10-15 12:40:13 +01:00
Cachet Bot
bcdaec1d3a New translations validation.php (Estonian) 2018-10-15 12:40:12 +01:00
Cachet Bot
53e1837368 New translations pagination.php (Estonian) 2018-10-15 12:40:11 +01:00
Cachet Bot
b8324c3e7c New translations cachet.php (Estonian) 2018-10-15 12:40:09 +01:00
James Brooks
7ea832de8e Merge pull request #3248 from CachetHQ/l10n_2.3
New Crowdin translations
2018-10-15 12:39:05 +01:00
Cachet Bot
368045b418 Apply fixes from StyleCI 2018-10-09 11:01:37 +00:00
Cachet Bot
0bfaeaa4fc New translations forms.php (French) 2018-10-09 12:01:31 +01:00
Cachet Bot
3f9ba0ee97 New translations forms.php (Dutch) 2018-10-09 12:01:24 +01:00
Cachet Bot
045bbeeba0 New translations forms.php (German) 2018-10-09 12:01:23 +01:00
Cachet Bot
5cce6d4184 New translations forms.php (Indonesian) 2018-10-09 12:01:21 +01:00
Cachet Bot
9f1dd6fedc Apply fixes from StyleCI 2018-10-09 11:01:18 +00:00
Cachet Bot
ddb2972a4a New translations forms.php (Danish) 2018-10-09 12:01:03 +01:00
Cachet Bot
ba84e3ee23 New translations forms.php (Chinese Traditional) 2018-10-09 12:00:57 +01:00
Cachet Bot
400c94d06d New translations forms.php (Chinese Simplified) 2018-10-09 12:00:54 +01:00
Cachet Bot
ebe31e2070 New translations forms.php (Swedish) 2018-10-09 12:00:50 +01:00
Cachet Bot
7b29049dd7 New translations forms.php (Russian) 2018-10-09 12:00:45 +01:00
Cachet Bot
ee73222638 New translations forms.php (Spanish) 2018-10-09 12:00:42 +01:00
Cachet Bot
6f1cba91df New translations forms.php (Zulu) 2018-10-09 12:00:40 +01:00
Cachet Bot
b313c45cd2 New translations cachet.php (Zulu) 2018-10-09 12:00:38 +01:00
Cachet Bot
3e35d29d8f New translations forms.php (Romanian) 2018-10-09 12:00:31 +01:00
Cachet Bot
8ffa6c7996 New translations forms.php (Norwegian) 2018-10-09 12:00:29 +01:00
Cachet Bot
07750e9365 New translations forms.php (Italian) 2018-10-09 12:00:21 +01:00
Cachet Bot
63a79d9d19 New translations forms.php (Portuguese, Brazilian) 2018-10-09 12:00:17 +01:00
Cachet Bot
12efe8113e New translations forms.php (Portuguese) 2018-10-09 12:00:14 +01:00
Cachet Bot
d8c6be3f9e New translations forms.php (Polish) 2018-10-09 12:00:11 +01:00
Cachet Bot
8bffaa5c9a Apply fixes from StyleCI 2018-09-28 08:40:21 +00:00
Cachet Bot
6bf9221d74 New translations forms.php (Norwegian) 2018-09-28 09:40:13 +01:00
Cachet Bot
fa5875da76 New translations cachet.php (Afrikaans) 2018-09-20 13:40:05 +01:00
Cachet Bot
34a36bc6c1 New translations cachet.php (Afrikaans) 2018-09-20 13:30:05 +01:00
James Brooks
f8a35d71b4 Merge pull request #3198 from CachetHQ/l10n_2.3
New Crowdin translations
2018-08-07 08:51:02 +01:00
James Brooks
8a8edea07a Merge pull request #3209 from CachetHQ/update-deps
Update deps
2018-08-06 18:55:38 +01:00
Cachet Bot
e3973414cd Apply fixes from StyleCI 2018-08-04 08:50:14 +00:00
Cachet Bot
9bb670cb95 New translations forms.php (Dutch) 2018-08-04 09:50:07 +01:00
James Brooks
127996f08f Update deps. Closes #3207 2018-08-03 20:58:20 +01:00
Cachet Bot
a6768da7bb Apply fixes from StyleCI
[ci skip] [skip ci]
2018-08-03 18:00:48 +00:00
Cachet Bot
123f05bd84 New translations forms.php (Spanish) 2018-08-03 19:00:08 +01:00
Cachet Bot
ecc91abcae Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-27 23:40:13 +00:00
Cachet Bot
bb9def5821 New translations setup.php (French) 2018-07-28 00:40:07 +01:00
Cachet Bot
11cbbb42fb New translations forms.php (French) 2018-07-28 00:40:06 +01:00
Cachet Bot
b361618ec0 New translations dashboard.php (French) 2018-07-28 00:30:06 +01:00
Cachet Bot
ee288e0505 New translations cachet.php (French) 2018-07-28 00:30:05 +01:00
Cachet Bot
7c5e214b1c Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-25 14:51:56 +00:00
Cachet Bot
0e1d52b3bc New translations forms.php (Chinese Simplified) 2018-07-25 15:51:07 +01:00
James Brooks
77d576fd39 Merge pull request #3189 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-21 09:12:41 +01:00
James Brooks
73fb33d03e Update VERSION 2018-07-21 09:11:04 +01:00
Cachet Bot
2746001cdb Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-17 13:00:28 +00:00
Cachet Bot
036da9248d New translations forms.php (French) 2018-07-17 14:00:19 +01:00
James Brooks
2d72914205 Merge pull request #3184 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-17 07:52:46 +01:00
Cachet Bot
237ae7dcdc Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-13 02:30:14 +00:00
Cachet Bot
8408b92d0c New translations forms.php (Russian) 2018-07-13 03:30:06 +01:00
James Brooks
2da10d1694 Apply fixes from StyleCI (#3182)
[ci skip] [skip ci]
2018-07-12 08:36:35 +01:00
James Brooks
7ac2987809 Merge pull request #3181 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-12 08:36:03 +01:00
Cachet Bot
5f1c3c92c4 New translations forms.php (French) 2018-07-11 22:52:28 +01:00
Cachet Bot
48f68994ba New translations setup.php (Finnish) 2018-07-11 22:52:27 +01:00
Cachet Bot
adfa39f336 New translations forms.php (Finnish) 2018-07-11 22:52:26 +01:00
Cachet Bot
357389908f New translations validation.php (Finnish) 2018-07-11 22:52:25 +01:00
Cachet Bot
a2252707af New translations pagination.php (Finnish) 2018-07-11 22:52:24 +01:00
Cachet Bot
5057dee219 New translations cachet.php (Finnish) 2018-07-11 22:52:23 +01:00
Cachet Bot
430a80535c New translations dashboard.php (Finnish) 2018-07-11 22:52:20 +01:00
Cachet Bot
5c815756fe New translations forms.php (Dutch) 2018-07-11 22:52:19 +01:00
Cachet Bot
b1547b9d74 New translations forms.php (German) 2018-07-11 22:52:18 +01:00
Cachet Bot
42a2825a70 New translations cachet.php (Greek) 2018-07-11 22:52:17 +01:00
Cachet Bot
3dd7d9b41d New translations forms.php (Indonesian) 2018-07-11 22:52:16 +01:00
Cachet Bot
7552177585 New translations validation.php (Indonesian) 2018-07-11 22:52:14 +01:00
Cachet Bot
6120d9627e New translations setup.php (Hungarian) 2018-07-11 22:52:13 +01:00
Cachet Bot
22a7523347 New translations forms.php (Hungarian) 2018-07-11 22:52:12 +01:00
Cachet Bot
b4c052c5ad New translations dashboard.php (Hungarian) 2018-07-11 22:52:11 +01:00
Cachet Bot
0af0e01d31 New translations validation.php (Hungarian) 2018-07-11 22:52:10 +01:00
Cachet Bot
04ca418b32 New translations pagination.php (Hungarian) 2018-07-11 22:52:09 +01:00
Cachet Bot
8ca56c0a47 New translations cachet.php (Hungarian) 2018-07-11 22:52:08 +01:00
Cachet Bot
dccca87e2e New translations forms.php (Hebrew) 2018-07-11 22:52:07 +01:00
Cachet Bot
63b15530f0 New translations dashboard.php (Hebrew) 2018-07-11 22:52:06 +01:00
Cachet Bot
008b7ce3e3 New translations validation.php (Hebrew) 2018-07-11 22:52:05 +01:00
Cachet Bot
e173c616fc New translations pagination.php (Hebrew) 2018-07-11 22:52:04 +01:00
Cachet Bot
63e629df99 New translations cachet.php (Hebrew) 2018-07-11 22:52:04 +01:00
Cachet Bot
c930ecc568 New translations setup.php (Greek) 2018-07-11 22:52:03 +01:00
Cachet Bot
c542fe762c New translations forms.php (Greek) 2018-07-11 22:52:02 +01:00
Cachet Bot
5a6dfce84e New translations dashboard.php (Greek) 2018-07-11 22:52:01 +01:00
Cachet Bot
1fc399085c New translations pagination.php (Greek) 2018-07-11 22:52:00 +01:00
Cachet Bot
dfced9e81c New translations setup.php (Hebrew) 2018-07-11 22:51:59 +01:00
Cachet Bot
e6412e9be5 New translations setup.php (Catalan) 2018-07-11 22:51:57 +01:00
Cachet Bot
6c67e01297 New translations forms.php (Catalan) 2018-07-11 22:51:57 +01:00
Cachet Bot
e4a2ef3df7 New translations dashboard.php (Catalan) 2018-07-11 22:51:56 +01:00
Cachet Bot
560be25f99 New translations pagination.php (Catalan) 2018-07-11 22:51:55 +01:00
Cachet Bot
61a71166b3 New translations cachet.php (Catalan) 2018-07-11 22:51:54 +01:00
Cachet Bot
359cd934c0 New translations setup.php (Arabic) 2018-07-11 22:51:53 +01:00
Cachet Bot
4b45eed503 New translations forms.php (Arabic) 2018-07-11 22:51:52 +01:00
Cachet Bot
73a14d5980 New translations dashboard.php (Arabic) 2018-07-11 22:51:51 +01:00
Cachet Bot
c614bd8e2a New translations validation.php (Arabic) 2018-07-11 22:51:50 +01:00
Cachet Bot
bd26724f4a New translations cachet.php (Chinese Simplified) 2018-07-11 22:51:49 +01:00
Cachet Bot
d7650d1815 New translations pagination.php (Arabic) 2018-07-11 22:51:48 +01:00
Cachet Bot
9975ecab54 New translations setup.php (Albanian) 2018-07-11 22:51:48 +01:00
Cachet Bot
a508a326ca New translations forms.php (Albanian) 2018-07-11 22:51:47 +01:00
Cachet Bot
5d836619c6 New translations dashboard.php (Albanian) 2018-07-11 22:51:46 +01:00
Cachet Bot
4ff927968b New translations pagination.php (Albanian) 2018-07-11 22:51:45 +01:00
Cachet Bot
4a9e2be6ee New translations cachet.php (Albanian) 2018-07-11 22:51:44 +01:00
Cachet Bot
3f92f85cda New translations dashboard.php (Afrikaans) 2018-07-11 22:51:42 +01:00
Cachet Bot
6138a9c4ef New translations cachet.php (Arabic) 2018-07-11 22:51:41 +01:00
Cachet Bot
210ac14e73 New translations validation.php (Dutch) 2018-07-11 22:51:40 +01:00
Cachet Bot
e5b17f1ce7 New translations dashboard.php (Chinese Simplified) 2018-07-11 22:51:39 +01:00
Cachet Bot
3a31fb01d6 New translations setup.php (Danish) 2018-07-11 22:51:38 +01:00
Cachet Bot
ff97806361 New translations forms.php (Danish) 2018-07-11 22:51:37 +01:00
Cachet Bot
b12fdb61cb New translations dashboard.php (Danish) 2018-07-11 22:51:36 +01:00
Cachet Bot
75a12767e2 New translations validation.php (Danish) 2018-07-11 22:51:35 +01:00
Cachet Bot
b4df0d7aae New translations cachet.php (Danish) 2018-07-11 22:51:34 +01:00
Cachet Bot
b4a618f362 New translations setup.php (Czech) 2018-07-11 22:51:33 +01:00
Cachet Bot
0af3fbc86c New translations forms.php (Czech) 2018-07-11 22:51:32 +01:00
Cachet Bot
8ed5ea3174 New translations dashboard.php (Czech) 2018-07-11 22:51:31 +01:00
Cachet Bot
6f98fefb85 New translations validation.php (Czech) 2018-07-11 22:51:30 +01:00
Cachet Bot
4b0a1da1b9 New translations cachet.php (Czech) 2018-07-11 22:51:29 +01:00
Cachet Bot
89779d9e3c New translations setup.php (Chinese Traditional) 2018-07-11 22:51:28 +01:00
Cachet Bot
8b4ab5f09b New translations forms.php (Chinese Traditional) 2018-07-11 22:51:27 +01:00
Cachet Bot
c077c692ed New translations dashboard.php (Chinese Traditional) 2018-07-11 22:51:26 +01:00
Cachet Bot
dea9ebbfc9 New translations validation.php (Chinese Traditional) 2018-07-11 22:51:25 +01:00
Cachet Bot
0542cda408 New translations cachet.php (Chinese Traditional) 2018-07-11 22:51:24 +01:00
Cachet Bot
6041431d12 New translations setup.php (Chinese Simplified) 2018-07-11 22:51:23 +01:00
Cachet Bot
6703854224 New translations forms.php (Chinese Simplified) 2018-07-11 22:51:22 +01:00
Cachet Bot
aa8618c163 New translations pagination.php (Czech) 2018-07-11 22:51:21 +01:00
Cachet Bot
c040a42ee7 New translations validation.php (Italian) 2018-07-11 22:51:20 +01:00
Cachet Bot
983e1a781f New translations dashboard.php (Thai) 2018-07-11 22:51:19 +01:00
Cachet Bot
b5256a9558 New translations validation.php (Thai) 2018-07-11 22:51:18 +01:00
Cachet Bot
6058cad6e0 New translations pagination.php (Thai) 2018-07-11 22:51:17 +01:00
Cachet Bot
cb42bde85c New translations cachet.php (Thai) 2018-07-11 22:51:16 +01:00
Cachet Bot
e9104d6182 New translations setup.php (Swedish) 2018-07-11 22:51:15 +01:00
Cachet Bot
1153c0da76 New translations forms.php (Swedish) 2018-07-11 22:51:14 +01:00
Cachet Bot
4e1b1fe4ef New translations dashboard.php (Swedish) 2018-07-11 22:51:13 +01:00
Cachet Bot
0078f1dd1e New translations cachet.php (Swedish) 2018-07-11 22:51:12 +01:00
Cachet Bot
6ed0d2d4c2 New translations forms.php (Thai) 2018-07-11 22:51:11 +01:00
Cachet Bot
4b9a5e8e69 New translations validation.php (Spanish) 2018-07-11 22:51:09 +01:00
Cachet Bot
375c831391 New translations forms.php (Russian) 2018-07-11 22:51:08 +01:00
Cachet Bot
126c088863 New translations validation.php (Russian) 2018-07-11 22:51:07 +01:00
Cachet Bot
9f226eea9c New translations forms.php (Spanish) 2018-07-11 22:51:05 +01:00
Cachet Bot
4ad72633ea New translations setup.php (Thai) 2018-07-11 22:51:04 +01:00
Cachet Bot
2b18410a99 New translations pagination.php (Turkish) 2018-07-11 22:51:03 +01:00
Cachet Bot
2e353fc707 New translations forms.php (Zulu) 2018-07-11 22:51:02 +01:00
Cachet Bot
cb8d4282e4 New translations cachet.php (Zulu) 2018-07-11 22:51:01 +01:00
Cachet Bot
d7fd04b183 New translations setup.php (Vietnamese) 2018-07-11 22:51:00 +01:00
Cachet Bot
3f6b825692 New translations forms.php (Vietnamese) 2018-07-11 22:50:59 +01:00
Cachet Bot
7e95648ff9 New translations dashboard.php (Vietnamese) 2018-07-11 22:50:58 +01:00
Cachet Bot
1dfd481d95 New translations validation.php (Vietnamese) 2018-07-11 22:50:57 +01:00
Cachet Bot
a8f04914fa New translations pagination.php (Vietnamese) 2018-07-11 22:50:56 +01:00
Cachet Bot
1093d2169d New translations cachet.php (Turkish) 2018-07-11 22:50:56 +01:00
Cachet Bot
4098bfe641 New translations cachet.php (Vietnamese) 2018-07-11 22:50:55 +01:00
Cachet Bot
5c51806417 New translations forms.php (Ukrainian) 2018-07-11 22:50:54 +01:00
Cachet Bot
b616842ec0 New translations dashboard.php (Ukrainian) 2018-07-11 22:50:53 +01:00
Cachet Bot
6c693ea4d5 New translations validation.php (Ukrainian) 2018-07-11 22:50:52 +01:00
Cachet Bot
c6d9b62248 New translations pagination.php (Ukrainian) 2018-07-11 22:50:51 +01:00
Cachet Bot
2770036621 New translations cachet.php (Ukrainian) 2018-07-11 22:50:50 +01:00
Cachet Bot
54943af362 New translations setup.php (Turkish) 2018-07-11 22:50:49 +01:00
Cachet Bot
00eba028e5 New translations forms.php (Turkish) 2018-07-11 22:50:48 +01:00
Cachet Bot
421d8c5d05 New translations dashboard.php (Turkish) 2018-07-11 22:50:47 +01:00
Cachet Bot
c28e86c3fa New translations validation.php (Turkish) 2018-07-11 22:50:46 +01:00
Cachet Bot
a6706b7f3f New translations setup.php (Ukrainian) 2018-07-11 22:50:46 +01:00
Cachet Bot
d2fae69bf2 New translations forms.php (Romanian) 2018-07-11 22:50:44 +01:00
Cachet Bot
9abe4962a9 New translations cachet.php (Persian) 2018-07-11 22:50:43 +01:00
Cachet Bot
e009ae4754 New translations forms.php (Norwegian) 2018-07-11 22:50:42 +01:00
Cachet Bot
4213a9a2ca New translations dashboard.php (Norwegian) 2018-07-11 22:50:41 +01:00
Cachet Bot
5da83aed92 New translations validation.php (Norwegian) 2018-07-11 22:50:40 +01:00
Cachet Bot
a159600919 New translations cachet.php (Norwegian) 2018-07-11 22:50:39 +01:00
Cachet Bot
1b0e583a8a New translations setup.php (Korean) 2018-07-11 22:50:38 +01:00
Cachet Bot
1c496338cd New translations forms.php (Korean) 2018-07-11 22:50:38 +01:00
Cachet Bot
f7353c0c64 New translations dashboard.php (Korean) 2018-07-11 22:50:37 +01:00
Cachet Bot
090f4167f2 New translations pagination.php (Persian) 2018-07-11 22:50:36 +01:00
Cachet Bot
3fbf056056 New translations validation.php (Korean) 2018-07-11 22:50:35 +01:00
Cachet Bot
3a554d25ba New translations cachet.php (Korean) 2018-07-11 22:50:34 +01:00
Cachet Bot
dbd0fd57f2 New translations setup.php (Japanese) 2018-07-11 22:50:33 +01:00
Cachet Bot
226596d47b New translations forms.php (Japanese) 2018-07-11 22:50:32 +01:00
Cachet Bot
fa8f957631 New translations dashboard.php (Japanese) 2018-07-11 22:50:31 +01:00
Cachet Bot
e465295e48 New translations validation.php (Japanese) 2018-07-11 22:50:30 +01:00
Cachet Bot
94b5ad7b09 New translations pagination.php (Japanese) 2018-07-11 22:50:29 +01:00
Cachet Bot
9512346c0c New translations cachet.php (Japanese) 2018-07-11 22:50:28 +01:00
Cachet Bot
985119e125 New translations forms.php (Italian) 2018-07-11 22:50:27 +01:00
Cachet Bot
11b5df1499 New translations pagination.php (Korean) 2018-07-11 22:50:26 +01:00
Cachet Bot
76aa95389f New translations validation.php (Persian) 2018-07-11 22:50:25 +01:00
Cachet Bot
f346449714 New translations forms.php (Persian) 2018-07-11 22:50:22 +01:00
Cachet Bot
a2da594586 New translations setup.php (Portuguese, Brazilian) 2018-07-11 22:50:21 +01:00
Cachet Bot
6b3bb85d53 New translations forms.php (Portuguese, Brazilian) 2018-07-11 22:50:20 +01:00
Cachet Bot
5d28ea4e69 New translations dashboard.php (Portuguese, Brazilian) 2018-07-11 22:50:19 +01:00
Cachet Bot
f724248b1f New translations validation.php (Portuguese, Brazilian) 2018-07-11 22:50:18 +01:00
Cachet Bot
a70ecd9e6d New translations cachet.php (Portuguese, Brazilian) 2018-07-11 22:50:17 +01:00
Cachet Bot
828ea1c2d3 New translations setup.php (Portuguese) 2018-07-11 22:50:17 +01:00
Cachet Bot
c1f65347e5 New translations forms.php (Portuguese) 2018-07-11 22:50:16 +01:00
Cachet Bot
61abbcc367 New translations dashboard.php (Persian) 2018-07-11 22:50:15 +01:00
Cachet Bot
4bf980bc1a New translations dashboard.php (Portuguese) 2018-07-11 22:50:14 +01:00
Cachet Bot
b88354d261 New translations cachet.php (Portuguese) 2018-07-11 22:50:12 +01:00
Cachet Bot
5fb88b1936 New translations forms.php (Polish) 2018-07-11 22:50:11 +01:00
Cachet Bot
e0b2368342 New translations validation.php (Polish) 2018-07-11 22:50:10 +01:00
Cachet Bot
fc87437edc New translations setup.php (Persian) 2018-07-11 22:50:08 +01:00
Cachet Bot
7786f54ad3 New translations validation.php (Portuguese) 2018-07-11 22:50:08 +01:00
Cachet Bot
ee0d56d22b New translations cachet.php (Afrikaans) 2018-07-11 22:50:06 +01:00
James Brooks
51eb5917b6 Merge pull request #3175 from CachetHQ/l10n_2.3
New Crowdin translations
2018-07-11 22:34:12 +01:00
Cachet Bot
6433c48a5f Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-11 03:10:14 +00:00
Cachet Bot
d3af0d37be New translations setup.php (Danish) 2018-07-11 04:10:06 +01:00
Cachet Bot
0430086750 New translations forms.php (Danish) 2018-07-11 04:10:05 +01:00
Cachet Bot
e43516460b New translations dashboard.php (Danish) 2018-07-11 04:00:06 +01:00
Cachet Bot
036787f3e3 New translations cachet.php (Danish) 2018-07-11 04:00:05 +01:00
Cachet Bot
b20272d14a Apply fixes from StyleCI
[ci skip] [skip ci]
2018-07-10 16:16:19 +00:00
Cachet Bot
5c11c1ff72 New translations cachet.php (Norwegian) 2018-07-10 16:50:07 +01:00
Cachet Bot
5bde0dddff New translations setup.php (Zulu) 2018-07-10 14:35:34 +01:00
Cachet Bot
beee77d2e3 New translations validation.php (German) 2018-07-10 14:35:33 +01:00
Cachet Bot
4c6106e3a6 New translations pagination.php (German) 2018-07-10 14:35:31 +01:00
Cachet Bot
c4e7010cfc New translations cachet.php (German) 2018-07-10 14:35:31 +01:00
Cachet Bot
0b505b31c6 New translations setup.php (French) 2018-07-10 14:35:30 +01:00
Cachet Bot
87b31b2b54 New translations forms.php (French) 2018-07-10 14:35:29 +01:00
Cachet Bot
c0da527878 New translations dashboard.php (French) 2018-07-10 14:35:28 +01:00
Cachet Bot
539deaaea8 New translations validation.php (French) 2018-07-10 14:35:26 +01:00
Cachet Bot
c04a845c54 New translations pagination.php (French) 2018-07-10 14:35:26 +01:00
Cachet Bot
09347fc120 New translations cachet.php (French) 2018-07-10 14:35:25 +01:00
Cachet Bot
3c2ec3dbe6 New translations setup.php (Finnish) 2018-07-10 14:35:24 +01:00
Cachet Bot
843f69b9e1 New translations dashboard.php (German) 2018-07-10 14:35:23 +01:00
Cachet Bot
5c54286fb1 New translations forms.php (Finnish) 2018-07-10 14:35:21 +01:00
Cachet Bot
32fd6535c1 New translations validation.php (Finnish) 2018-07-10 14:35:19 +01:00
Cachet Bot
622a103b7b New translations pagination.php (Finnish) 2018-07-10 14:35:18 +01:00
Cachet Bot
b8a3614649 New translations cachet.php (Finnish) 2018-07-10 14:35:17 +01:00
Cachet Bot
98ac8383c9 New translations setup.php (English) 2018-07-10 14:35:16 +01:00
Cachet Bot
747c94ebd7 New translations forms.php (English) 2018-07-10 14:35:16 +01:00
Cachet Bot
4c1a7abb7a New translations dashboard.php (English) 2018-07-10 14:35:15 +01:00
Cachet Bot
0a5691a4c2 New translations validation.php (English) 2018-07-10 14:35:14 +01:00
Cachet Bot
9aa16286a5 New translations pagination.php (English) 2018-07-10 14:35:13 +01:00
Cachet Bot
d4a693f8fb New translations cachet.php (English) 2018-07-10 14:35:12 +01:00
Cachet Bot
0ea5990af6 New translations setup.php (Dutch) 2018-07-10 14:35:11 +01:00
Cachet Bot
22cdc45074 New translations dashboard.php (Finnish) 2018-07-10 14:35:10 +01:00
Cachet Bot
61ea95a403 New translations forms.php (Dutch) 2018-07-10 14:35:09 +01:00
Cachet Bot
0dcf3f958f New translations forms.php (German) 2018-07-10 14:35:08 +01:00
Cachet Bot
b672f42635 New translations cachet.php (Greek) 2018-07-10 14:35:07 +01:00
Cachet Bot
7f6c7f7a71 New translations forms.php (Indonesian) 2018-07-10 14:35:06 +01:00
Cachet Bot
54ed6eda60 New translations dashboard.php (Indonesian) 2018-07-10 14:35:05 +01:00
Cachet Bot
877b25cfbb New translations validation.php (Indonesian) 2018-07-10 14:35:03 +01:00
Cachet Bot
8048c02286 New translations pagination.php (Indonesian) 2018-07-10 14:35:01 +01:00
Cachet Bot
082367793c New translations cachet.php (Indonesian) 2018-07-10 14:35:00 +01:00
Cachet Bot
518d28f07b New translations setup.php (Hungarian) 2018-07-10 14:34:59 +01:00
Cachet Bot
a01ccbf953 New translations forms.php (Hungarian) 2018-07-10 14:34:58 +01:00
Cachet Bot
a69c72ef40 New translations dashboard.php (Hungarian) 2018-07-10 14:34:57 +01:00
Cachet Bot
87b51835cc New translations validation.php (Hungarian) 2018-07-10 14:34:56 +01:00
Cachet Bot
edecc98cbf New translations pagination.php (Hungarian) 2018-07-10 14:34:55 +01:00
Cachet Bot
a1a78df602 New translations setup.php (German) 2018-07-10 14:34:54 +01:00
Cachet Bot
2b5127505f New translations cachet.php (Hungarian) 2018-07-10 14:34:53 +01:00
Cachet Bot
cd029e0a79 New translations forms.php (Hebrew) 2018-07-10 14:34:52 +01:00
Cachet Bot
4a0e12645c New translations dashboard.php (Hebrew) 2018-07-10 14:34:51 +01:00
Cachet Bot
18c12cf9b0 New translations validation.php (Hebrew) 2018-07-10 14:34:50 +01:00
Cachet Bot
a2b6141b55 New translations pagination.php (Hebrew) 2018-07-10 14:34:49 +01:00
Cachet Bot
3305628b16 New translations cachet.php (Hebrew) 2018-07-10 14:34:48 +01:00
Cachet Bot
81b6fd95e9 New translations setup.php (Greek) 2018-07-10 14:34:48 +01:00
Cachet Bot
cf2a9454c8 New translations forms.php (Greek) 2018-07-10 14:34:47 +01:00
Cachet Bot
d220823d8e New translations dashboard.php (Greek) 2018-07-10 14:34:45 +01:00
Cachet Bot
81d4cf89e6 New translations validation.php (Greek) 2018-07-10 14:34:44 +01:00
Cachet Bot
e0a5e4df9b New translations pagination.php (Greek) 2018-07-10 14:34:43 +01:00
Cachet Bot
090a80992a New translations setup.php (Hebrew) 2018-07-10 14:34:43 +01:00
Cachet Bot
a659db17ae New translations setup.php (Indonesian) 2018-07-10 14:34:42 +01:00
Cachet Bot
67d8a1ca35 New translations dashboard.php (Dutch) 2018-07-10 14:34:41 +01:00
Cachet Bot
220d1a1fe5 New translations pagination.php (Dutch) 2018-07-10 14:34:40 +01:00
Cachet Bot
d8bc1cd517 New translations setup.php (Catalan) 2018-07-10 14:34:39 +01:00
Cachet Bot
e7768a1cec New translations forms.php (Catalan) 2018-07-10 14:34:38 +01:00
Cachet Bot
4b1bd76ff6 New translations dashboard.php (Catalan) 2018-07-10 14:34:37 +01:00
Cachet Bot
37e778585a New translations validation.php (Catalan) 2018-07-10 14:34:36 +01:00
Cachet Bot
2646963a2e New translations pagination.php (Catalan) 2018-07-10 14:34:35 +01:00
Cachet Bot
ebe162fe71 New translations cachet.php (Catalan) 2018-07-10 14:34:34 +01:00
Cachet Bot
071159ffa1 New translations setup.php (Arabic) 2018-07-10 14:34:33 +01:00
Cachet Bot
b9549829c2 New translations forms.php (Arabic) 2018-07-10 14:34:32 +01:00
Cachet Bot
8c6be5006d New translations dashboard.php (Arabic) 2018-07-10 14:34:31 +01:00
Cachet Bot
cae3a54b50 New translations validation.php (Arabic) 2018-07-10 14:34:30 +01:00
Cachet Bot
0b3e29e8dd New translations cachet.php (Chinese Simplified) 2018-07-10 14:34:29 +01:00
Cachet Bot
a5d690abdd New translations pagination.php (Arabic) 2018-07-10 14:34:29 +01:00
Cachet Bot
31137c71d4 New translations setup.php (Albanian) 2018-07-10 14:34:28 +01:00
Cachet Bot
76963a186c New translations forms.php (Albanian) 2018-07-10 14:34:27 +01:00
Cachet Bot
3c2d85188b New translations dashboard.php (Albanian) 2018-07-10 14:34:26 +01:00
Cachet Bot
db407e81ea New translations validation.php (Albanian) 2018-07-10 14:34:25 +01:00
Cachet Bot
9dda8d5ae7 New translations pagination.php (Albanian) 2018-07-10 14:34:24 +01:00
Cachet Bot
ad637fbb81 New translations cachet.php (Albanian) 2018-07-10 14:34:23 +01:00
Cachet Bot
6805e75f63 New translations setup.php (Afrikaans) 2018-07-10 14:34:22 +01:00
Cachet Bot
bc5ae22165 New translations forms.php (Afrikaans) 2018-07-10 14:34:21 +01:00
Cachet Bot
6696465d45 New translations dashboard.php (Afrikaans) 2018-07-10 14:34:20 +01:00
Cachet Bot
58bb80efc9 New translations validation.php (Afrikaans) 2018-07-10 14:34:19 +01:00
Cachet Bot
e6b7b41f24 New translations cachet.php (Arabic) 2018-07-10 14:34:18 +01:00
Cachet Bot
682ac8ac5d New translations validation.php (Dutch) 2018-07-10 14:34:17 +01:00
Cachet Bot
9687384709 New translations pagination.php (Chinese Simplified) 2018-07-10 14:34:16 +01:00
Cachet Bot
347f443d4e New translations dashboard.php (Chinese Simplified) 2018-07-10 14:34:14 +01:00
Cachet Bot
548d9f8c3a New translations cachet.php (Dutch) 2018-07-10 14:34:13 +01:00
Cachet Bot
eeb85c1815 New translations setup.php (Danish) 2018-07-10 14:34:12 +01:00
Cachet Bot
1112c17306 New translations forms.php (Danish) 2018-07-10 14:34:10 +01:00
Cachet Bot
aa421830bb New translations dashboard.php (Danish) 2018-07-10 14:34:09 +01:00
Cachet Bot
99982566b8 New translations validation.php (Danish) 2018-07-10 14:34:08 +01:00
Cachet Bot
115b5b7013 New translations pagination.php (Danish) 2018-07-10 14:34:07 +01:00
Cachet Bot
65a263a2dd New translations cachet.php (Danish) 2018-07-10 14:34:06 +01:00
Cachet Bot
98e0a7b7b4 New translations setup.php (Czech) 2018-07-10 14:34:05 +01:00
Cachet Bot
7581d96c54 New translations forms.php (Czech) 2018-07-10 14:34:03 +01:00
Cachet Bot
8e7c0f3f0d New translations dashboard.php (Czech) 2018-07-10 14:34:02 +01:00
Cachet Bot
50c5b23f96 New translations validation.php (Chinese Simplified) 2018-07-10 14:34:01 +01:00
Cachet Bot
d77c53b5eb New translations validation.php (Czech) 2018-07-10 14:34:00 +01:00
Cachet Bot
cda30429be New translations cachet.php (Czech) 2018-07-10 14:33:59 +01:00
Cachet Bot
8cfb1282d3 New translations forms.php (Chinese Traditional) 2018-07-10 14:33:58 +01:00
Cachet Bot
9faa4b77cd New translations dashboard.php (Chinese Traditional) 2018-07-10 14:33:57 +01:00
Cachet Bot
6a5c5776a9 New translations validation.php (Chinese Traditional) 2018-07-10 14:33:56 +01:00
Cachet Bot
c63a76c86d New translations cachet.php (Chinese Traditional) 2018-07-10 14:33:54 +01:00
Cachet Bot
89718f5fbc New translations setup.php (Chinese Simplified) 2018-07-10 14:33:54 +01:00
Cachet Bot
8e84278a24 New translations forms.php (Chinese Simplified) 2018-07-10 14:33:53 +01:00
Cachet Bot
16470d548e New translations pagination.php (Czech) 2018-07-10 14:33:52 +01:00
Cachet Bot
320203262f New translations pagination.php (Afrikaans) 2018-07-10 14:33:51 +01:00
Cachet Bot
ae3b2e44b5 New translations cachet.php (Italian) 2018-07-10 14:33:50 +01:00
Cachet Bot
755b8143cb New translations validation.php (Italian) 2018-07-10 14:33:49 +01:00
Cachet Bot
4667948949 New translations dashboard.php (Thai) 2018-07-10 14:33:48 +01:00
Cachet Bot
0f7bee9c61 New translations validation.php (Thai) 2018-07-10 14:33:47 +01:00
Cachet Bot
10430ddad3 New translations pagination.php (Thai) 2018-07-10 14:33:46 +01:00
Cachet Bot
6e06e6a4dd New translations cachet.php (Thai) 2018-07-10 14:33:45 +01:00
Cachet Bot
393a1119da New translations forms.php (Swedish) 2018-07-10 14:33:44 +01:00
Cachet Bot
47fb5b2789 New translations dashboard.php (Swedish) 2018-07-10 14:33:43 +01:00
Cachet Bot
00caff7ecf New translations cachet.php (Swedish) 2018-07-10 14:33:41 +01:00
Cachet Bot
e1fccf1b26 New translations forms.php (Thai) 2018-07-10 14:33:40 +01:00
Cachet Bot
1a1e914d59 New translations setup.php (Spanish) 2018-07-10 14:33:39 +01:00
Cachet Bot
f2e995513f New translations dashboard.php (Spanish) 2018-07-10 14:33:38 +01:00
Cachet Bot
e780735987 New translations validation.php (Spanish) 2018-07-10 14:33:35 +01:00
Cachet Bot
1eaa4594af New translations pagination.php (Spanish) 2018-07-10 14:33:35 +01:00
Cachet Bot
9d51a34bd4 New translations cachet.php (Spanish) 2018-07-10 14:33:34 +01:00
Cachet Bot
d1681beae4 New translations setup.php (Russian) 2018-07-10 14:33:33 +01:00
Cachet Bot
0254d3df00 New translations forms.php (Russian) 2018-07-10 14:33:32 +01:00
Cachet Bot
2d15c27191 New translations dashboard.php (Russian) 2018-07-10 14:33:31 +01:00
Cachet Bot
17f12a0cb7 New translations validation.php (Russian) 2018-07-10 14:33:30 +01:00
Cachet Bot
e17400be21 New translations pagination.php (Russian) 2018-07-10 14:33:29 +01:00
Cachet Bot
62d7cb615d New translations cachet.php (Russian) 2018-07-10 14:33:28 +01:00
Cachet Bot
89759bb0ea New translations forms.php (Spanish) 2018-07-10 14:33:27 +01:00
Cachet Bot
7ee6cc91e7 New translations setup.php (Romanian) 2018-07-10 14:33:26 +01:00
Cachet Bot
bf2809bf50 New translations setup.php (Thai) 2018-07-10 14:33:26 +01:00
Cachet Bot
fcbd5b68b2 New translations pagination.php (Turkish) 2018-07-10 14:33:25 +01:00
Cachet Bot
1b1490f8bd New translations forms.php (Zulu) 2018-07-10 14:33:24 +01:00
Cachet Bot
019cafbbf5 New translations dashboard.php (Zulu) 2018-07-10 14:33:23 +01:00
Cachet Bot
a5a66e0de6 New translations validation.php (Zulu) 2018-07-10 14:33:22 +01:00
Cachet Bot
018aa8b0f0 New translations pagination.php (Zulu) 2018-07-10 14:33:21 +01:00
Cachet Bot
abcfdcdd0e New translations cachet.php (Zulu) 2018-07-10 14:33:20 +01:00
Cachet Bot
ceb95c30c4 New translations setup.php (Vietnamese) 2018-07-10 14:33:19 +01:00
Cachet Bot
08f9936e1d New translations forms.php (Vietnamese) 2018-07-10 14:33:19 +01:00
Cachet Bot
1647c4fc45 New translations dashboard.php (Vietnamese) 2018-07-10 14:33:18 +01:00
Cachet Bot
0eaf24febf New translations validation.php (Vietnamese) 2018-07-10 14:33:16 +01:00
Cachet Bot
544a6900bb New translations pagination.php (Vietnamese) 2018-07-10 14:33:15 +01:00
Cachet Bot
b6cbf817ab New translations cachet.php (Turkish) 2018-07-10 14:33:14 +01:00
Cachet Bot
1dab6c0f08 New translations cachet.php (Vietnamese) 2018-07-10 14:33:13 +01:00
Cachet Bot
9dfd47b1e9 New translations forms.php (Ukrainian) 2018-07-10 14:33:12 +01:00
Cachet Bot
0f26675767 New translations dashboard.php (Ukrainian) 2018-07-10 14:33:10 +01:00
Cachet Bot
24f2bb7fd4 New translations validation.php (Ukrainian) 2018-07-10 14:33:09 +01:00
Cachet Bot
4be32a6112 New translations pagination.php (Ukrainian) 2018-07-10 14:33:08 +01:00
Cachet Bot
0b23c86dd2 New translations cachet.php (Ukrainian) 2018-07-10 14:33:08 +01:00
Cachet Bot
22a6e70cfd New translations setup.php (Turkish) 2018-07-10 14:33:07 +01:00
Cachet Bot
8e6569b63d New translations forms.php (Turkish) 2018-07-10 14:33:06 +01:00
Cachet Bot
2c8c13cd82 New translations dashboard.php (Turkish) 2018-07-10 14:33:05 +01:00
Cachet Bot
3aabf285a9 New translations validation.php (Turkish) 2018-07-10 14:33:04 +01:00
Cachet Bot
d07e58d3db New translations setup.php (Ukrainian) 2018-07-10 14:33:03 +01:00
Cachet Bot
0d88d80d48 New translations pagination.php (Italian) 2018-07-10 14:33:02 +01:00
Cachet Bot
ea638ef2ae New translations forms.php (Romanian) 2018-07-10 14:33:01 +01:00
Cachet Bot
b31d30dd10 New translations validation.php (Romanian) 2018-07-10 14:33:00 +01:00
Cachet Bot
a5494b6559 New translations cachet.php (Persian) 2018-07-10 14:32:59 +01:00
Cachet Bot
909a67fe93 New translations setup.php (Norwegian) 2018-07-10 14:32:58 +01:00
Cachet Bot
2a8a4027d6 New translations forms.php (Norwegian) 2018-07-10 14:32:57 +01:00
Cachet Bot
27bc034691 New translations dashboard.php (Norwegian) 2018-07-10 14:32:56 +01:00
Cachet Bot
433093a012 New translations validation.php (Norwegian) 2018-07-10 14:32:55 +01:00
Cachet Bot
fde7ad65f6 New translations pagination.php (Norwegian) 2018-07-10 14:32:54 +01:00
Cachet Bot
172228fdb3 New translations cachet.php (Norwegian) 2018-07-10 14:32:53 +01:00
Cachet Bot
d287b10bc1 New translations setup.php (Korean) 2018-07-10 14:32:52 +01:00
Cachet Bot
db8fddf378 New translations forms.php (Korean) 2018-07-10 14:32:51 +01:00
Cachet Bot
fc45fb60ec New translations dashboard.php (Korean) 2018-07-10 14:32:50 +01:00
Cachet Bot
b11b5f2cf9 New translations pagination.php (Persian) 2018-07-10 14:32:49 +01:00
Cachet Bot
951250f1d1 New translations validation.php (Korean) 2018-07-10 14:32:48 +01:00
Cachet Bot
c9bdbf38d8 New translations cachet.php (Korean) 2018-07-10 14:32:47 +01:00
Cachet Bot
7449d44bc8 New translations setup.php (Japanese) 2018-07-10 14:32:46 +01:00
Cachet Bot
db5ce4397b New translations forms.php (Japanese) 2018-07-10 14:32:45 +01:00
Cachet Bot
3256ad8660 New translations dashboard.php (Japanese) 2018-07-10 14:32:44 +01:00
Cachet Bot
486198872a New translations validation.php (Japanese) 2018-07-10 14:32:43 +01:00
Cachet Bot
de12ccf291 New translations pagination.php (Japanese) 2018-07-10 14:32:42 +01:00
Cachet Bot
e1f5aa0639 New translations cachet.php (Japanese) 2018-07-10 14:32:40 +01:00
Cachet Bot
a70db4c031 New translations setup.php (Italian) 2018-07-10 14:32:40 +01:00
Cachet Bot
c1daf0ae0a New translations forms.php (Italian) 2018-07-10 14:32:39 +01:00
Cachet Bot
fad9e5fd92 New translations dashboard.php (Italian) 2018-07-10 14:32:38 +01:00
Cachet Bot
c224b5d05b New translations pagination.php (Korean) 2018-07-10 14:32:37 +01:00
Cachet Bot
78cc258d96 New translations dashboard.php (Romanian) 2018-07-10 14:32:36 +01:00
Cachet Bot
c87c37ad73 New translations validation.php (Persian) 2018-07-10 14:32:35 +01:00
Cachet Bot
ab02399ca6 New translations forms.php (Persian) 2018-07-10 14:32:34 +01:00
Cachet Bot
c3cf0b9e81 New translations pagination.php (Romanian) 2018-07-10 14:32:33 +01:00
Cachet Bot
2e5ead7886 New translations cachet.php (Romanian) 2018-07-10 14:32:32 +01:00
Cachet Bot
5a444d2c03 New translations forms.php (Portuguese, Brazilian) 2018-07-10 14:32:31 +01:00
Cachet Bot
34cf7428df New translations dashboard.php (Portuguese, Brazilian) 2018-07-10 14:32:30 +01:00
Cachet Bot
e3fa11d917 New translations validation.php (Portuguese, Brazilian) 2018-07-10 14:32:29 +01:00
Cachet Bot
6153d08880 New translations forms.php (Portuguese) 2018-07-10 14:32:27 +01:00
Cachet Bot
521c69b39e New translations dashboard.php (Persian) 2018-07-10 14:32:26 +01:00
Cachet Bot
9caf55d92e New translations dashboard.php (Portuguese) 2018-07-10 14:32:25 +01:00
Cachet Bot
357a1b4e86 New translations cachet.php (Portuguese) 2018-07-10 14:32:24 +01:00
Cachet Bot
c3ad824def New translations setup.php (Polish) 2018-07-10 14:32:23 +01:00
Cachet Bot
abeb6fd917 New translations forms.php (Polish) 2018-07-10 14:32:22 +01:00
Cachet Bot
be794d4ef2 New translations dashboard.php (Polish) 2018-07-10 14:32:21 +01:00
Cachet Bot
fe8ff219ef New translations validation.php (Polish) 2018-07-10 14:32:20 +01:00
Cachet Bot
e01993e5b8 New translations pagination.php (Polish) 2018-07-10 14:32:19 +01:00
Cachet Bot
6138ba99b8 New translations cachet.php (Polish) 2018-07-10 14:32:18 +01:00
Cachet Bot
6efe83c6b4 New translations setup.php (Persian) 2018-07-10 14:32:17 +01:00
Cachet Bot
1b152eb0fe New translations validation.php (Portuguese) 2018-07-10 14:32:17 +01:00
Cachet Bot
62012f4dab New translations cachet.php (Afrikaans) 2018-07-10 14:32:15 +01:00
James Brooks
5c39be5b2c Update deps 2018-07-06 08:29:21 +01:00
James Brooks
1e73861e15 Make file like 2.4 2018-07-04 21:12:30 +01:00
Cachet Bot
4099a8f4e6 Update Crowdin configuration file 2018-07-04 21:01:54 +01:00
James Brooks
163f57397d Update deps 2018-06-17 09:46:48 +01:00
James Brooks
494badb00a Merge pull request #3069 from CachetHQ/fix-component-group-status
Fix the component group status
2018-06-17 09:43:58 +01:00
James Brooks
84bea58f99 Merge branch '2.3' into fix-component-group-status 2018-06-14 21:02:26 +01:00
James Brooks
d7ffbeef0c Don't run tests on HHVM 2018-06-14 21:02:08 +01:00
James Brooks
4aff0ddec0 Fix the component group status. Closes #2731 2018-06-14 07:31:22 +01:00
James Brooks
749c83169c Merge pull request #3016 from hensur/stylesheet-fix-23
Backport stylesheet fix #3014 to 2.3
2018-04-19 08:47:32 +01:00
Henning Surmeier
58a212c2e4 Backport stylesheet fix #3014 to 2.3 2018-04-18 16:27:19 +02:00
James Brooks
0c72e5eec8 Apply fixes from StyleCI (#2962)
[ci skip] [skip ci]
2018-03-26 19:18:30 +01:00
James Brooks
83bc743d79 Merge pull request #2960 from anthonybocci/metric-points-prefix-table-2925
Use the table prefix on metric_points
2018-03-26 19:18:07 +01:00
Anthony Bocci
35dcc8c928 Use the table prefix on metric_points
In the '.env' file, a 'DB_PREFIX' sets the prefix that should be used
on every table name. When writing an SQL query the 'DB_PREFIX' value
has to be prefixed to the table name.

The repository PgSqlRepository, MySqlRepository and SqliteRepository,
located in 'app/Repositories/Metric/' did not apply this prefix on
the 'metric_points' table. The problem occured only when we set a
'DB_PREFIX' not null, the rest of the application worked correctly but
the part about 'metric_points' couldn't work, saying the table was
inexistant.

A method was added in the repository AbstractMetricRepository to get
the 'metric_points' table name with the prefix if there is one.
This method is used in the three repositories to get the right table
name.

Note: This problem was present in 2.3, but was already fixed in 2.4 so
there is no need to apply this commit on the 2.4 branch.

See: CachetHQ/Cachet/#2955
2018-03-23 20:56:41 +01:00
James Brooks
93d1f8784a Merge pull request #2864 from snowflakeOps/2.3
use a better and smaller image for open graph (e.g for slack)
2018-01-11 21:33:49 +00:00
Markus Ritzmann
0450f2f330 #2853 use a better and smaller image for og 2018-01-11 16:49:01 +01:00
James Brooks
595b152db5 Merge pull request #2671 from checkitonus/bug/invalid-template-23
Quick check to make sure the template exists
2017-09-30 11:38:19 +01:00
Graham Campbell
cc15d078bf Removed old links 2017-09-10 18:24:01 +01:00
Graham Campbell
3b568bbc07 Mail password non-required 2017-09-10 18:11:23 +01:00
Graham Campbell
ae4c414a82 Upgraded exceptions package 2017-09-10 17:54:18 +01:00
Graham Campbell
5358cf5e1e Upgraded deps 2017-09-10 17:20:07 +01:00
Andrew Judd
6dedacad57 Removing a helper method 2017-07-30 08:48:45 -04:00
Andrew Judd
29c9211935 Quick check to make sure the template exists 2017-07-29 11:13:41 -04:00
James Brooks
7d47546650 Switch to dev 2017-07-17 21:50:00 +01:00
James Brooks
f5a9941903 Update deps again 2017-07-17 21:49:42 +01:00
James Brooks
52b7bf74b9 Update version 2017-07-17 21:46:30 +01:00
James Brooks
6a59d5ac4d Update deps 2017-07-17 21:44:45 +01:00
James Brooks
19b7b0c3b2 Require predis/predis. Fixes #2611 2017-07-17 21:44:43 +01:00
Graham Campbell
d4507e0722 Back to dev 2017-06-28 23:42:10 +01:00
Graham Campbell
47bc73f9e9 Release v2.3.12 2017-06-28 23:41:31 +01:00
Graham Campbell
81fc6479d5 Revert to original travis config 2017-06-28 22:53:06 +01:00
Graham Campbell
c9ca99990c Update .travis.yml 2017-06-28 22:49:07 +01:00
Graham Campbell
e0d35d6e64 Merge branch '2.3' of https://github.com/CachetHQ/Cachet into 2.3 2017-06-28 22:39:55 +01:00
Graham Campbell
813be34f25 Upgraded dependencies 2017-06-28 22:39:41 +01:00
Graham Campbell
900723105b Update .travis.yml 2017-06-28 22:38:44 +01:00
Graham Campbell
8012a201b9 Update .travis.yml 2017-06-28 22:00:28 +01:00
Graham Campbell
706e7765e1 Update .travis.yml 2017-06-28 21:52:45 +01:00
Guido Hendriks
bcff3d0730 Improve testCreateSubscriberWithSubscriptions test case (#2487) 2017-06-28 21:45:27 +01:00
James Brooks
db5bf005bc Apply fixes from StyleCI (#2606)
[ci skip] [skip ci]
2017-06-28 20:52:41 +01:00
James Brooks
dac88efce6 Merge pull request #2601 from Daniel15/2.3-with-patches
Backport API endpoint to get system status to v2.3
2017-06-28 20:52:08 +01:00
James Brooks
38ef2630ee Add system status to /status endpoint 2017-06-20 17:18:38 +10:00
James Brooks
c215ad4111 Implement the system status api endpoint. Closes #1936 2017-06-20 17:09:03 +10:00
James Brooks
c899839a7f Back to dev 2017-04-12 23:05:32 +01:00
James Brooks
2e5e8b1545 Bump version to 2.3.11 2017-04-12 23:05:09 +01:00
James Brooks
7e556d5dba Apply fixes from StyleCI (#2486)
[ci skip] [skip ci]
2017-04-12 23:04:21 +01:00
James Brooks
331e176fbc Updated deps 2017-03-25 11:42:25 +00:00
James Brooks
bde0abe472 Fix handling of individual component subscriptions via API 2016-09-21 18:35:58 +01:00
James Brooks
f2bf2eff68 Test creating a subscriber returns subscriptions 2016-09-21 18:17:22 +01:00
James Brooks
50ab96fc4f Load subscriptions when creating a subscriber 2016-09-21 18:16:08 +01:00
James Brooks
3cbee1302e Update deps 2016-09-21 18:08:56 +01:00
Graham Campbell
8d74923e3f Back to dev 2016-08-11 12:16:50 +01:00
Graham Campbell
dbf6fe528c Release v2.3.10 2016-08-11 12:16:14 +01:00
Graham Campbell
2a9d1b4897 Backport new command tests 2016-08-11 12:09:28 +01:00
Graham Campbell
c2192d7ef7 Backport readme changes 2016-08-11 12:03:28 +01:00
Graham Campbell
1b580360ac Updated deps 2016-08-10 21:04:17 +01:00
James Brooks
15407ad9a3 Remove dump and die 2016-08-10 20:28:32 +01:00
James Brooks
14127de3ca Back to dev 2016-08-07 22:05:34 +01:00
James Brooks
57988f0009 Release v2.3.9 2016-08-07 22:05:16 +01:00
Graham Campbell
7ac7344b5e Updated dep 2016-08-07 22:01:00 +01:00
James Brooks
472dcfe85a Merge pull request #2036 from CachetHQ/analysis-8KggM3
Applied fixes from StyleCI

[ci skip] [skip ci]
2016-08-07 21:10:17 +01:00
James Brooks
77409abc5a Applied fixes from StyleCI
[ci skip] [skip ci]
2016-08-07 16:10:12 -04:00
James Brooks
7548ae7e58 Disable fixedStepSize 2016-08-07 21:09:47 +01:00
James Brooks
074d3457c6 Fix Italian translation issues. Closes #2034 2016-08-07 19:45:13 +01:00
James Brooks
205748b182 Improve metric labels 2016-08-07 19:22:19 +01:00
James Brooks
1f4bee67d6 Back to dev 2016-08-05 07:52:10 +01:00
James Brooks
2f0df5ab7b Bump version 2016-08-05 07:51:44 +01:00
James Brooks
8fe75f7112 Update deps 2016-08-05 07:51:25 +01:00
Graham Campbell
b3ee389ca5 Merge pull request #2021 from CachetHQ/require-xml
Require the ext-xml extension
2016-08-02 11:13:29 +01:00
James Brooks
a40bfd12b7 Removed blank line 2016-08-02 11:02:31 +01:00
James Brooks
8d86c5e072 Ignore SQLite databases when backing up the db 2016-08-02 11:00:39 +01:00
James Brooks
20ca9ceade Require the ext-xml extension 2016-08-02 10:55:33 +01:00
348 changed files with 26872 additions and 1403 deletions

View File

@@ -1,13 +1,17 @@
language: php
sudo: false
dist: trusty
php:
- 5.5.9
- 5.5
- 5.6
- 7.0
- hhvm
- 7.1
sudo: false
before_install: cp .env.example .env
install: travis_retry composer install --no-interaction --no-scripts --prefer-source

View File

@@ -1,18 +1,14 @@
# Cachet
[![StyleCI](https://styleci.io/repos/26730195/shield)](https://styleci.io/repos/26730195/)
[![Build Status](https://img.shields.io/travis/CachetHQ/Cachet/master.svg?style=flat-square)](https://travis-ci.org/CachetHQ/Cachet)
[![Build Status](https://img.shields.io/travis/CachetHQ/Cachet/2.3.svg?style=flat-square)](https://travis-ci.org/CachetHQ/Cachet)
[![Software License](https://img.shields.io/badge/license-BSD3-brightgreen.svg?style=flat-square)](LICENSE)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/cachet/localized.svg)](http://translate.cachethq.io/project/cachet)
[![Packagist](https://img.shields.io/packagist/v/cachethq/cachet.svg?style=flat-square)](https://packagist.org/packages/cachethq/cachet)
![Screenshot](https://cachethq.io/img/main-interface.jpg)
Cachet is a beautiful and powerful open source status page system, a free replacement to services such as StatusPage.io, Status.io and others.
## Supporting Cachet
Cachet is a BSD-3-licensed open source project. If you'd like to support future development, check out the [Cachet Patreon campaign](https://patreon.com/jbrooksuk).
Cachet is a beautiful and powerful open source status page system.
## Features
@@ -25,27 +21,23 @@ Cachet is a BSD-3-licensed open source project. If you'd like to support future
- Metrics
- Cross-database support: MySQL, PostgreSQL and SQLite
- Subscriber notifications via Email
- Two factor authentication, with Google Authenticator
## Usage in production
The `master` branch of this repository is a development branch and **should not** be used in production. Instead, please check out the latest tag release.
- Two factor authentication using Google Authenticator
## Requirements
- PHP 5.5.9+ or newer
- PHP 5.5.9 - 7.1
- Apache or Nginx server
- [Composer](https://getcomposer.org)
## How to contribute
## I'm looking to contribute to this awesome project!
We're always looking for contributions that improve Cachet. It's easy to get started and you don't even need to know how to write a single line of code!
Sweet, we're always looking for contributions that improve Cachet! It's easy to get started and you don't even need to know how to write a single line of code!
### Contributing as a non-developer/non-designer
If you're one of the more linguistically talented people in the world who can speak and write more than just English, we're always looking for new [translations](#translations).
We're always looking for new [translations](#translations).
Of course bug reports, feature requests and [documentation](https://docs.cachethq.io) are always being sought after.
Of course bug reports, feature requests and [documentation](https://docs.cachethq.io) are always appreciated.
### Contributing as a designer
@@ -56,26 +48,28 @@ You'll need to install Node.js, Bower and Gulp.
To get started you can do the following:
1. Install Node.js and our dev dependencies.
2. Modify the SCSS files in `./resources/assets/sass/`
2. Make your changes to the SCSS files in `./resources/assets/sass/`
3. Run `gulp`
If you're making a lot of changes, you'll find that running `gulp watch` will really help you out!
If you're making a lot of changes, you'll find that running `gulp watch` will make life easier for you!
### Contributing as a developer
Built using [Laravel](https://laravel.com), Cachet is very easy to jump into. Have a look around you'll find it surprisingly easy!
Built using [Laravel](https://laravel.com).
These extra dependencies are required to develop Cachet:
We use these extra dependencies to develop Cachet:
- Node.js
- Gulp
- Git
Once cloned to your local machine, you'll need some demo data! Simply run `php artisan cachet:seed` to get the demo installation on the go.
Once cloned to your local machine, you'll need some demo data! Run `php artisan cachet:seed` to get the demo installation ready for action.
## Installation, Upgrades and Documentation
You can now find our documentation at [https://docs.cachethq.io](https://docs.cachethq.io).
Documentation is found at [https://docs.cachethq.io](https://docs.cachethq.io).
Here are some useful quick links:
- [Installing Cachet](https://docs.cachethq.io/docs/installing-cachet)
- [Getting started with Docker](https://docs.cachethq.io/docs/get-started-with-docker)
@@ -84,25 +78,29 @@ You can now find our documentation at [https://docs.cachethq.io](https://docs.ca
To test out the demo, you may login to the [Dashboard](https://demo.cachethq.io/dashboard) with the following:
- **Username:** test or test@test.com
- **Password:** test123
- **Username:** `test` or `test@test.com`
- **Password:** `test123`
The demo is reset every half hour.
### Release Notes
All releases are listed on the [Releases page](https://github.com/CachetHQ/Cachet/releases) of the [Cachet GitHub repository](https://github.com/CachetHQ/Cachet). On the Releases page, you can also find the release notes for each release.
We list releases on the [Releases page](https://github.com/CachetHQ/Cachet/releases) of the [Cachet GitHub repository](https://github.com/CachetHQ/Cachet). On the Releases page, you can also find the release notes for each release.
## Translations
A special thank you to our [translators](https://crowdin.com/project/cachet/activity_stream), who have allowed us to share Cachet with the world. If you'd like to contribute translations, please check out our [CrowdIn project](https://crowdin.com/project/cachet).
If you'd like to contribute translations, please check out our [CrowdIn project](https://crowdin.com/project/cachet).
> Thank you to our [translators](https://crowdin.com/project/cachet/activity_stream), who have allowed us to share Cachet with the world!
## Show your support
Cachet is a BSD-3-licensed open source project.
## Professional Installation Service
We offer a professional installation service. To find out more, email us at [support@alt-three.com](mailto:support@alt-three.com?Cachet Installation)
## Security Vulnerabilities
If you discover a security vulnerability within Cachet, please send an e-mail to us at support@alt-three.com. All security vulnerabilities will be promptly addressed.
## Installations
We offer a paid installation service, which starts at $99 but is subject to change, dependant on your setup and infrastructure.
To find out more, email us at support@alt-three.com
If you discover a security vulnerability within Cachet, please send an e-mail to us at support@alt-three.com. We handle all security vulnerabilities on a case-by-case basis.

View File

@@ -1 +1 @@
2.3.8-dev
2.3.18

View File

@@ -70,7 +70,7 @@ class ReportIncidentCommandHandler
'visible' => $command->visible,
];
if ($command->template) {
if (IncidentTemplate::where('slug', '=', $command->template)->first()) {
$data['message'] = $this->parseIncidentTemplate($command->template, $command->template_vars);
} else {
$data['message'] = $command->message;

View File

@@ -44,17 +44,17 @@ class SubscribeSubscriberCommandHandler
// Decide what to subscribe the subscriber to.
if ($subscriptions = $command->subscriptions) {
$subscriptions = Component::whereIn('id', $subscriptions);
$components = Component::whereIn('id', $subscriptions)->get();
} else {
$subscriptions = Component::all();
$components = Component::all();
}
foreach ($subscriptions as $component) {
$components->map(function ($component) use ($subscriber) {
Subscription::create([
'subscriber_id' => $subscriber->id,
'component_id' => $component->id,
]);
}
});
if ($command->verified) {
dispatch(new VerifySubscriberCommand($subscriber));
@@ -62,6 +62,8 @@ class SubscribeSubscriberCommandHandler
event(new SubscriberHasSubscribedEvent($subscriber));
}
$subscriber->load('subscriptions');
return $subscriber;
}
}

View File

@@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Bus\Handlers\Commands\Subscriber;
use CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriberCommand;
use CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasUnsubscribedEvent;
use CachetHQ\Cachet\Models\Subscriber;
class UnsubscribeSubscriberCommandHandler
{

View File

@@ -106,8 +106,8 @@ class SendIncidentEmailNotificationHandler
$component = AutoPresenter::decorate($event->incident->component);
$mail = [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.incident.subject', [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.incident.subject', [
'status' => $incident->human_status,
'name' => $incident->name,
]),

View File

@@ -106,9 +106,9 @@ class SendMaintenanceEmailNotificationHandler
$component = AutoPresenter::decorate($event->incident->component);
$mail = [
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.maintenance.subject', [
'name' => $incident->name,
'email' => $subscriber->email,
'subject' => trans('cachet.subscriber.email.maintenance.subject', [
'name' => $incident->name,
]),
'has_component' => ($event->incident->component) ? true : false,
'component_name' => $component ? $component->name : null,

View File

@@ -46,9 +46,9 @@ class SendSubscriberVerificationEmailHandler
public function handle(SubscriberHasSubscribedEvent $event)
{
$mail = [
'email' => $event->subscriber->email,
'subject' => 'Confirm your subscription.',
'link' => route('subscribe.verify', ['code' => $event->subscriber->verify_code]),
'email' => $event->subscriber->email,
'subject' => 'Confirm your subscription.',
'link' => route('subscribe.verify', ['code' => $event->subscriber->verify_code]),
];
$this->mailer->queue([

View File

@@ -46,9 +46,9 @@ class SendInviteUserEmailHandler
public function handle(UserWasInvitedEvent $event)
{
$mail = [
'email' => $event->invite->email,
'subject' => 'You have been invited.',
'link' => route('signup.invite', ['code' => $event->invite->code]),
'email' => $event->invite->email,
'subject' => 'You have been invited.',
'link' => route('signup.invite', ['code' => $event->invite->code]),
];
$this->mailer->queue([

View File

@@ -30,7 +30,7 @@ class DashboardComposer
{
$view->withIncidentCount(Incident::notScheduled()->count());
$view->withIncidentTemplateCount(IncidentTemplate::count());
$view->withComponentCount(Component::all()->count());
$view->withComponentCount(Component::count());
$view->withSubscriberCount(Subscriber::isVerified()->count());
}
}

View File

@@ -11,13 +11,38 @@
namespace CachetHQ\Cachet\Composers;
use CachetHQ\Cachet\Integrations\Core\System;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\ComponentGroup;
use CachetHQ\Cachet\Models\Incident;
use Illuminate\Contracts\View\View;
/**
* This is the status page composer.
*
* @author James Brooks <james@alt-three.com>
*/
class StatusPageComposer
{
/**
* The system instance.
*
* @var \CachetHQ\Cachet\Integrations\Contracts\System
*/
protected $system;
/**
* Create a new status page composer instance.
*
* @param \CachetHQ\Cachet\Integrations\Contracts\System $system
*
* @return void
*/
public function __construct(System $system)
{
$this->system = $system;
}
/**
* Index page view composer.
*
@@ -27,42 +52,7 @@ class StatusPageComposer
*/
public function compose(View $view)
{
$totalComponents = Component::enabled()->count();
$majorOutages = Component::enabled()->status(4)->count();
$isMajorOutage = $totalComponents ? ($majorOutages / $totalComponents) >= 0.5 : false;
// Default data
$withData = [
'system_status' => 'info',
'system_message' => trans_choice('cachet.service.bad', $totalComponents),
'favicon' => 'favicon-high-alert',
];
if ($isMajorOutage) {
$withData = [
'system_status' => 'danger',
'system_message' => trans_choice('cachet.service.major', $totalComponents),
'favicon' => 'favicon-high-alert',
];
} elseif (Component::enabled()->notStatus(1)->count() === 0) {
// If all our components are ok, do we have any non-fixed incidents?
$incidents = Incident::notScheduled()->orderBy('created_at', 'desc')->get()->filter(function ($incident) {
return $incident->status > 0;
});
$incidentCount = $incidents->count();
if ($incidentCount === 0 || ($incidentCount >= 1 && (int) $incidents->first()->status === 4)) {
$withData = [
'system_status' => 'success',
'system_message' => trans_choice('cachet.service.good', $totalComponents),
'favicon' => 'favicon',
];
}
} else {
if (Component::enabled()->whereIn('status', [2, 3])->count() > 0) {
$withData['favicon'] = 'favicon-medium-alert';
}
}
$status = $this->system->getStatus();
// Scheduled maintenance code.
$scheduledMaintenance = Incident::scheduled()->orderBy('scheduled_at')->get();
@@ -72,7 +62,7 @@ class StatusPageComposer
$componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get();
$ungroupedComponents = Component::enabled()->where('group_id', 0)->orderBy('order')->orderBy('created_at')->get();
$view->with($withData)
$view->with($status)
->withComponentGroups($componentGroups)
->withUngroupedComponents($ungroupedComponents)
->withScheduledMaintenance($scheduledMaintenance);

View File

@@ -14,6 +14,7 @@ namespace CachetHQ\Cachet\Composers;
use DateTime;
use DateTimeZone;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Config;
class TimezoneLocaleComposer
@@ -32,22 +33,22 @@ class TimezoneLocaleComposer
$langs = array_map(function ($lang) use ($enabledLangs) {
$locale = basename($lang);
return [$locale => $enabledLangs[$locale]];
return [$locale => Arr::get($enabledLangs, $locale)];
}, glob(base_path('resources/lang').'/*'));
$langs = call_user_func_array('array_merge', $langs);
$regions = [
'Africa' => DateTimeZone::AFRICA,
'America' => DateTimeZone::AMERICA,
'Antarctica' => DateTimeZone::ANTARCTICA,
'Asia' => DateTimeZone::ASIA,
'Atlantic' => DateTimeZone::ATLANTIC,
'Australia' => DateTimeZone::AUSTRALIA,
'Europe' => DateTimeZone::EUROPE,
'Indian' => DateTimeZone::INDIAN,
'Pacific' => DateTimeZone::PACIFIC,
'UTC' => DateTimeZone::UTC,
'Africa' => DateTimeZone::AFRICA,
'America' => DateTimeZone::AMERICA,
'Antarctica' => DateTimeZone::ANTARCTICA,
'Asia' => DateTimeZone::ASIA,
'Atlantic' => DateTimeZone::ATLANTIC,
'Australia' => DateTimeZone::AUSTRALIA,
'Europe' => DateTimeZone::EUROPE,
'Indian' => DateTimeZone::INDIAN,
'Pacific' => DateTimeZone::PACIFIC,
'UTC' => DateTimeZone::UTC,
];
$timezones = [];

View File

@@ -163,13 +163,6 @@ class DemoSeederCommand extends Command
'order' => 1,
'group_id' => 2,
'link' => 'https://styleci.io',
], [
'name' => 'Patreon Page',
'description' => 'Support future development of Cachet.',
'status' => 1,
'order' => 0,
'group_id' => 0,
'link' => 'https://patreon.com/jbrooksuk',
],
];

View File

@@ -0,0 +1,47 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Foundation\Providers;
use CachetHQ\Cachet\Integrations\Contracts\System as SystemContract;
use CachetHQ\Cachet\Integrations\Core\System;
use Illuminate\Contracts\Container\Container;
use Illuminate\Support\ServiceProvider;
/**
* This is the integration service provider.
*
* @author James Brooks <james@alt-three.com>
*/
class IntegrationServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->registerSystem();
}
/**
* Register the system class.
*
* @return void
*/
protected function registerSystem()
{
$this->app->singleton(SystemContract::class, function (Container $app) {
return new System();
});
}
}

View File

@@ -11,6 +11,7 @@
namespace CachetHQ\Cachet\Http\Controllers\Api;
use CachetHQ\Cachet\Integrations\Contracts\System;
use CachetHQ\Cachet\Integrations\Releases;
/**
@@ -44,4 +45,19 @@ class GeneralController extends AbstractApiController
'latest' => $latest,
])->item(CACHET_VERSION);
}
/**
* Get the system status message.
*
* @return \Illuminate\Http\JsonResponse
*/
public function status()
{
$system = app()->make(System::class)->getStatus();
return $this->item([
'status' => $system['system_status'],
'message' => $system['system_message'],
]);
}
}

View File

@@ -274,6 +274,14 @@ class SettingsController extends Controller
}
}
if (isset($parameters['stylesheet'])) {
if ($stylesheet = Binput::get('stylesheet', null, false, false)) {
$setting->set('stylesheet', $stylesheet);
} else {
$setting->delete('stylesheet');
}
}
if (Binput::hasFile('app_banner')) {
$this->handleUpdateBanner($setting);
}
@@ -284,6 +292,7 @@ class SettingsController extends Controller
'remove_banner',
'header',
'footer',
'stylesheet',
];
try {

View File

@@ -48,11 +48,11 @@ class SetupController extends Controller
* @var string[]
*/
protected $mailDrivers = [
'smtp' => 'SMTP',
'mail' => 'Mail',
'sendmail' => 'Sendmail',
'mailgun' => 'Mailgun',
'mandrill' => 'Mandrill',
'smtp' => 'SMTP',
'mail' => 'Mail',
'sendmail' => 'Sendmail',
'mailgun' => 'Mailgun',
'mandrill' => 'Mandrill',
// 'ses' => 'Amazon SES', this will be available only if aws/aws-sdk-php is installed
'sparkpost' => 'SparkPost',
'log' => 'Log (Testing)',
@@ -149,7 +149,7 @@ class SetupController extends Controller
return $input->mail_driver === 'smtp';
});
$v->sometimes(['env.mail_address', 'env.mail_username', 'env.mail_password'], 'required', function ($input) {
$v->sometimes(['env.mail_address', 'env.mail_username'], 'required', function ($input) {
return $input->mail_driver !== 'log';
});

View File

@@ -180,8 +180,6 @@ class SubscribeController extends Controller
try {
dispatch(new UpdateSubscriberSubscriptionCommand($subscriber, Binput::get('subscriptions')));
} catch (ValidationException $e) {
dd($e->getMessageBag());
return Redirect::route('subscribe.manage', $subscriber->verify_code)
->withInput(Binput::all())
->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.subscriber.email.failure')))

View File

@@ -33,6 +33,7 @@ class ApiRoutes
$router->group(['middleware' => ['auth.api']], function (Registrar $router) {
$router->get('ping', 'GeneralController@ping');
$router->get('version', 'GeneralController@version');
$router->get('status', 'GeneralController@status');
$router->get('components', 'ComponentController@getComponents');
$router->get('components/groups', 'ComponentGroupController@getGroups');

View File

@@ -131,7 +131,7 @@ class DashboardRoutes
$router->delete('{incident_template}/delete', 'IncidentController@deleteTemplateAction');
});
$router->group(['as' => 'subscribers.', 'prefix' => 'subscribers'], function (Registrar $router) {
$router->group(['as' => 'subscribers.', 'prefix' => 'subscribers'], function (Registrar $router) {
$router->get('/', [
'as' => 'index',
'uses' => 'SubscriberController@showSubscribers',
@@ -144,7 +144,7 @@ class DashboardRoutes
$router->delete('{subscriber}/delete', 'SubscriberController@deleteSubscriberAction');
});
$router->group(['as' => 'metrics.', 'prefix' => 'metrics'], function (Registrar $router) {
$router->group(['as' => 'metrics.', 'prefix' => 'metrics'], function (Registrar $router) {
$router->get('/', [
'as' => 'index',
'uses' => 'MetricController@showMetrics',

View File

@@ -0,0 +1,27 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Contracts;
/**
* This is the system interface.
*
* @author James Brooks <james@alt-three.com>
*/
interface System
{
/**
* Get the entire system status.
*
* @return array
*/
public function getStatus();
}

View File

@@ -0,0 +1,70 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace CachetHQ\Cachet\Integrations\Core;
use CachetHQ\Cachet\Integrations\Contracts\System as SystemContract;
use CachetHQ\Cachet\Models\Component;
use CachetHQ\Cachet\Models\Incident;
/**
* This is the core system class.
*
* @author James Brooks <james@alt-three.com>
*/
class System implements SystemContract
{
/**
* Get the entire system status.
*
* @return array
*/
public function getStatus()
{
$enabledScope = Component::enabled();
$totalComponents = Component::enabled()->count();
$majorOutages = Component::enabled()->status(4)->count();
$isMajorOutage = $totalComponents ? ($majorOutages / $totalComponents) >= 0.5 : false;
// Default data
$status = [
'system_status' => 'info',
'system_message' => trans_choice('cachet.service.bad', $totalComponents),
'favicon' => 'favicon-high-alert',
];
if ($isMajorOutage) {
$status = [
'system_status' => 'danger',
'system_message' => trans_choice('cachet.service.major', $totalComponents),
'favicon' => 'favicon-high-alert',
];
} elseif (Component::enabled()->notStatus(1)->count() === 0) {
// If all our components are ok, do we have any non-fixed incidents?
$incidents = Incident::notScheduled()->orderBy('created_at', 'desc')->get()->filter(function ($incident) {
return $incident->status > 0;
});
$incidentCount = $incidents->count();
if ($incidentCount === 0 || ($incidentCount >= 1 && (int) $incidents->first()->status === 4)) {
$status = [
'system_status' => 'success',
'system_message' => trans_choice('cachet.service.good', $totalComponents),
'favicon' => 'favicon',
];
}
} elseif (Component::enabled()->whereIn('status', [2, 3])->count() > 0) {
$status['favicon'] = 'favicon-medium-alert';
}
return $status;
}
}

View File

@@ -99,7 +99,7 @@ class ComponentGroup extends Model implements HasPresenter
*/
public function components()
{
return $this->hasMany(Component::class, 'group_id', 'id')->orderBy('order');
return $this->hasMany(Component::class, 'group_id', 'id');
}
/**
@@ -119,7 +119,7 @@ class ComponentGroup extends Model implements HasPresenter
*/
public function enabled_components()
{
return $this->components()->enabled();
return $this->components()->enabled()->orderBy('order');
}
/**

View File

@@ -47,6 +47,20 @@ abstract class AbstractMetricRepository
$this->config = $config;
}
/**
* Get the table names prefix.
*
* @return string
*/
protected function getPrefix()
{
$driver = $this->config->get('database.default');
$connection = $this->config->get('database.connections.'.$driver);
$prefix = $connection['prefix'];
return $prefix;
}
/**
* Get the metrics table name.
*
@@ -54,10 +68,20 @@ abstract class AbstractMetricRepository
*/
protected function getTableName()
{
$driver = $this->config->get('database.default');
$connection = $this->config->get('database.connections.'.$driver);
$prefix = $connection['prefix'];
$prefix = $this->getPrefix();
return $prefix.'metrics';
}
/**
* Get the metric points table name.
*
* @return string
*/
protected function getMetricPointsTableName()
{
$prefix = $this->getPrefix();
return $prefix.'metric_points';
}
}

View File

@@ -36,6 +36,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
$timeInterval = $dateTime->format('YmdHi');
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -45,7 +46,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H%i') = :timeInterval GROUP BY HOUR(mp.`created_at`), MINUTE(mp.`created_at`)", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H%i') = :timeInterval GROUP BY HOUR(mp.`created_at`), MINUTE(mp.`created_at`)", [
'metricId' => $metric->id,
'timeInterval' => $timeInterval,
]);
@@ -73,6 +74,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$hourInterval = $dateTime->format('YmdH');
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -82,7 +84,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H') = :hourInterval GROUP BY HOUR(mp.`created_at`)", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND DATE_FORMAT(mp.`created_at`, '%Y%m%d%H') = :hourInterval GROUP BY HOUR(mp.`created_at`)", [
'metricId' => $metric->id,
'hourInterval' => $hourInterval,
]);
@@ -108,6 +110,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'SUM(mp.`value` * mp.`counter`) AS `value`';
@@ -117,7 +120,7 @@ class MySqlRepository extends AbstractMetricRepository implements MetricInterfac
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.`created_at` BETWEEN DATE_SUB(mp.`created_at`, INTERVAL 1 WEEK) AND DATE_ADD(NOW(), INTERVAL 1 DAY) AND DATE_FORMAT(mp.`created_at`, '%Y%m%d') = :timeInterval GROUP BY DATE_FORMAT(mp.`created_at`, '%Y%m%d')", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.`created_at` BETWEEN DATE_SUB(mp.`created_at`, INTERVAL 1 WEEK) AND DATE_ADD(NOW(), INTERVAL 1 DAY) AND DATE_FORMAT(mp.`created_at`, '%Y%m%d') = :timeInterval GROUP BY DATE_FORMAT(mp.`created_at`, '%Y%m%d')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -34,19 +34,20 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
*/
public function getPointsLastHour(Metric $metric, $hour, $minute)
{
$metricPointsTableName = $this->getMetricPointsTableName();
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND to_char(metric_points.created_at, 'YYYYMMDDHH24MI') = :timeInterval GROUP BY to_char(metric_points.created_at, 'HHMI')", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND to_char($metricPointsTableName.created_at, 'YYYYMMDDHH24MI') = :timeInterval GROUP BY to_char($metricPointsTableName.created_at, 'HHMI')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdHi'),
]);
@@ -73,18 +74,19 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsByHour(Metric $metric, $hour)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE metric_points.metric_id = :metricId AND to_char(metric_points.created_at, 'YYYYMMDDHH24') = :timeInterval GROUP BY to_char(metric_points.created_at, 'H')", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE $metricPointsTableName.metric_id = :metricId AND to_char($metricPointsTableName.created_at, 'YYYYMMDDHH24') = :timeInterval GROUP BY to_char($metricPointsTableName.created_at, 'H')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdH'),
]);
@@ -110,6 +112,7 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(mp.value * mp.counter) AS value';
@@ -118,7 +121,7 @@ class PgSqlRepository extends AbstractMetricRepository implements MetricInterfac
}
$value = 0;
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN metric_points mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.created_at BETWEEN (mp.created_at - interval '1 week') AND (now() + interval '1 day') AND to_char(mp.created_at, 'YYYYMMDD') = :timeInterval GROUP BY to_char(mp.created_at, 'YYYYMMDD')", [
$points = DB::select("SELECT {$queryType} FROM {$this->getTableName()} m INNER JOIN $metricPointsTableName mp ON m.id = mp.metric_id WHERE m.id = :metricId AND mp.created_at BETWEEN (mp.created_at - interval '1 week') AND (now() + interval '1 day') AND to_char(mp.created_at, 'YYYYMMDD') = :timeInterval GROUP BY to_char(mp.created_at, 'YYYYMMDD')", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -30,18 +30,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsLastHour(Metric $metric, $hour, $minute)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'))->sub(new DateInterval('PT'.$minute.'M'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H%M', metric_points.created_at) = :timeInterval GROUP BY strftime('%H%M', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H%M', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%H%M', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdHi'),
]);
@@ -68,18 +69,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsByHour(Metric $metric, $hour)
{
$dateTime = (new Date())->sub(new DateInterval('PT'.$hour.'H'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H', metric_points.created_at) = :timeInterval GROUP BY strftime('%H', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND strftime('%Y%m%d%H', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%H', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('YmdH'),
]);
@@ -105,18 +107,19 @@ class SqliteRepository extends AbstractMetricRepository implements MetricInterfa
public function getPointsForDayInWeek(Metric $metric, $day)
{
$dateTime = (new Date())->sub(new DateInterval('P'.$day.'D'));
$metricPointsTableName = $this->getMetricPointsTableName();
// Default metrics calculations.
if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
} elseif ($metric->calc_type == Metric::CALC_AVG) {
$queryType = 'avg(metric_points.value * metric_points.counter)';
$queryType = "avg($metricPointsTableName.value * $metricPointsTableName.counter)";
} else {
$queryType = 'sum(metric_points.value * metric_points.counter)';
$queryType = "sum($metricPointsTableName.value * $metricPointsTableName.counter)";
}
$value = 0;
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN metric_points ON metric_points.metric_id = m.id WHERE m.id = :metricId AND metric_points.created_at > date('now', '-7 day') AND strftime('%Y%m%d', metric_points.created_at) = :timeInterval GROUP BY strftime('%Y%m%d', metric_points.created_at)", [
$query = DB::select("select {$queryType} as value FROM {$this->getTableName()} m JOIN $metricPointsTableName ON $metricPointsTableName.metric_id = m.id WHERE m.id = :metricId AND $metricPointsTableName.created_at > date('now', '-7 day') AND strftime('%Y%m%d', $metricPointsTableName.created_at) = :timeInterval GROUP BY strftime('%Y%m%d', $metricPointsTableName.created_at)", [
'metricId' => $metric->id,
'timeInterval' => $dateTime->format('Ymd'),
]);

View File

@@ -83,6 +83,13 @@ class CommandSubscriber
$command->line('Settings cache cleared!');
// SQLite does not backup.
if ($this->config->get('database.default') === 'sqlite') {
$command->line('Backup skipped: SQLite is not supported.');
return;
}
$command->line('Backing up database...');
try {

View File

@@ -14,7 +14,6 @@ use Illuminate\Support\Facades\Request;
use Jenssegers\Date\Date;
if (!function_exists('set_active')) {
/**
* Set active class if request is in path.
*

View File

@@ -20,26 +20,29 @@
],
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.39",
"ext-xml": "*",
"alt-three/badger": "^3.1",
"alt-three/bus": "^1.1",
"alt-three/emoji": "^3.1",
"alt-three/throttle": "^1.0",
"alt-three/validator": "^1.5",
"aws/aws-sdk-php": "^3.7",
"backup-manager/laravel": "^1.1",
"backup-manager/laravel": "dev-master#df53f9c9d8c6be5d7a2638f45d54b8fb7bc51e2b",
"barryvdh/laravel-cors": "^0.8",
"doctrine/dbal": "^2.5",
"fedeisas/laravel-mail-css-inliner": "^1.5",
"fideloper/proxy": "^3.1",
"graham-campbell/binput": "^3.4",
"graham-campbell/core": "^5.1",
"graham-campbell/exceptions": "^8.6",
"graham-campbell/exceptions": "^9.4",
"graham-campbell/markdown": "^6.1",
"guzzlehttp/guzzle": "^6.2.1",
"guzzlehttp/guzzle": "6.3.3",
"guzzlehttp/psr7": "1.4.2",
"jenssegers/date": "^3.2",
"laravel/framework": "5.2.39",
"mccool/laravel-auto-presenter": "^4.3",
"pragmarx/google2fa": "^0.7.1",
"predis/predis": "^1.1",
"rcrowe/twigbridge": "^0.9.2",
"roumen/feed": "^2.10.4"
},
@@ -48,7 +51,7 @@
"filp/whoops": "^2.1",
"fzaninotto/faker": "^1.6",
"graham-campbell/testbench-core": "^1.1",
"mockery/mockery": "0.9.5",
"mockery/mockery": "0.9.9",
"phpunit/phpunit": "4.8.21",
"symfony/css-selector": "^3.0",
"symfony/dom-crawler": "^3.0"

1289
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -184,6 +184,7 @@ return [
'CachetHQ\Cachet\Foundation\Providers\ComposerServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\ConsoleServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\ConfigServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\IntegrationServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\EventServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\RepositoryServiceProvider',
'CachetHQ\Cachet\Foundation\Providers\RouteServiceProvider',
@@ -233,8 +234,8 @@ return [
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',
'Binput' => 'GrahamCampbell\Binput\Facades\Binput',
'Str' => 'Illuminate\Support\Str',
'Binput' => 'GrahamCampbell\Binput\Facades\Binput',
'Str' => 'Illuminate\Support\Str',
],

View File

@@ -76,25 +76,25 @@ return [
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', '5432'),
'charset' => 'utf8',
'prefix' => env('DB_PREFIX', null),
'schema' => env('DB_SCHEMA', 'public'),
'driver' => 'pgsql',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', '5432'),
'charset' => 'utf8',
'prefix' => env('DB_PREFIX', null),
'schema' => env('DB_SCHEMA', 'public'),
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', null),
'prefix' => env('DB_PREFIX', null),
'driver' => 'sqlsrv',
'host' => env('DB_HOST', null),
'database' => env('DB_DATABASE', null),
'username' => env('DB_USERNAME', null),
'password' => env('DB_PASSWORD', null),
'port' => env('DB_PORT', null),
'prefix' => env('DB_PREFIX', null),
],
],

View File

@@ -11,35 +11,35 @@
return [
// Enabled langs
'af' => [
'af' => [
'name' => 'Afrikaans',
'subset' => 'latin',
],
'ar' => [
'ar' => [
'name' => 'Arabic',
'subset' => 'latin',
],
'ca' => [
'ca' => [
'name' => 'Catalan',
'subset' => 'latin',
],
'cs' => [
'cs' => [
'name' => 'Czech',
'subset' => 'latin,latin-ext',
],
'da' => [
'da' => [
'name' => 'Danish',
'subset' => 'latin,latin-ext',
],
'de' => [
'de' => [
'name' => 'Deutsch',
'subset' => 'latin,latin-ext',
],
'el' => [
'el' => [
'name' => 'Greek',
'subset' => 'greek,greek-ext',
],
'en' => [
'en' => [
'name' => 'English',
'subset' => 'latin',
],
@@ -47,55 +47,55 @@ return [
'name' => 'CrowdIn - InContext Localization',
'subset' => 'latin',
],
'es' => [
'es' => [
'name' => 'Español',
'subset' => 'latin,latin-ext',
],
'fa' => [
'fa' => [
'name' => 'Persian',
'subset' => 'latin',
],
'fi' => [
'fi' => [
'name' => 'Finnish',
'subset' => 'latin,latin-ext',
],
'fr' => [
'fr' => [
'name' => 'Français',
'subset' => 'latin,latin-ext',
],
'he' => [
'he' => [
'name' => 'Hebrew',
'subset' => 'latin',
],
'hu' => [
'hu' => [
'name' => 'Hungarian',
'subset' => 'latin,latin-ext',
],
'id' => [
'id' => [
'name' => 'Indonesian',
'subset' => 'latin',
],
'it' => [
'it' => [
'name' => 'Italiano',
'subset' => 'latin,latin-ext',
],
'ja' => [
'ja' => [
'name' => 'Japanese',
'subset' => 'latin',
],
'ko' => [
'ko' => [
'name' => '한글',
'subset' => 'latin',
],
'nl' => [
'nl' => [
'name' => 'Nederlands',
'subset' => 'latin,latin-ext',
],
'no' => [
'no' => [
'name' => 'Norwegian',
'subset' => 'latin,latin-ext',
],
'pl' => [
'pl' => [
'name' => 'Polski',
'subset' => 'latin,latin-ext',
],
@@ -107,19 +107,19 @@ return [
'name' => 'Portuguese, Portugal',
'subset' => 'latin,latin-ext',
],
'ro' => [
'ro' => [
'name' => 'Romanian',
'subset' => 'latin,latin-ext',
],
'ru' => [
'ru' => [
'name' => 'Русский',
'subset' => 'latin,cyrillic',
],
'sq' => [
'sq' => [
'name' => 'Albanian',
'subset' => 'latin,latin-ext',
],
'sr' => [
'sr' => [
'name' => 'Sebrian (Cyrillic)',
'subset' => 'latin,cyrillic,cyrillic-ext',
],
@@ -127,15 +127,15 @@ return [
'name' => 'Swedish',
'subset' => 'latin,latin-ext',
],
'tr' => [
'tr' => [
'name' => 'Turkish',
'subset' => 'latin,latin-ext',
],
'uk' => [
'uk' => [
'name' => 'Ukranian',
'subset' => 'latin,cyrillic-ext',
],
'vi' => [
'vi' => [
'name' => 'Vietnamese',
'subset' => 'latin,vietnamese',
],

10
crowdin.yml Normal file
View File

@@ -0,0 +1,10 @@
files:
-
source: '/resources/lang/en/*.php'
translation: '/resources/lang/%locale%/%original_file_name%'
languages_mapping:
locale:
'en-ES': 'es'
'fa-IR': 'fa'
'ko-KR': 'kr'
'de-DE': 'de'

BIN
public/img/ogimage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operasioneel',
2 => 'Prestasieprobleme',
3 => 'Gedeeltelike Onderbreking',
4 => 'Groot Onderbreking',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Vorige Week',
'next_week' => 'Volgende Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Geskeduleerd', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Hou Dop',
4 => 'Opgelos',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Afgelope 12 Uur',
'weekly' => 'Weekliks',
'monthly' => 'Maandeliks',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Teken aan',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Bestuur Subskripsies',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Teken Aan',
'username' => 'Username',
'email' => 'EPos',
'password' => 'Wagwoord',
'success' => 'U rekening is geskep.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Maak toe',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Teken aan',
],
],
// Other
'home' => 'Tuiste',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'Aangaande Hierdie Webwerf',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Span',
'member' => 'Lid',
'profile' => 'Profiel',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Spanlid bygevoeg.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Instellings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Tema',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Teken In',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Teken Uit',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Voeg gebruikers by',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'EPos',
'username' => 'Gebruikersnaam',
'password' => 'Wagwoord',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Kies taal',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'EPos',
'password' => 'Wagwoord',
'2fauth' => 'Authentication Code',
'invalid' => 'Ongeldige gebruikernaam of wagwoord',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Komponente',
'message' => 'Boodskap',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Templaat',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Beskrywing',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Beskrywing',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'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 .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'EPos',
'password' => 'Wagwoord',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Teken Aan',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Vorige',
'next' => 'Volgende &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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 a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'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 .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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 a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'Heu d\'habilitar les galetes (cookies) per poder iniciar sessió.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'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 .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Farciment (padding) del banner',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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 a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Identificador de lloc del Piwik',
],
'localization' => [
'site-timezone' => 'Seleccioneu el fus horari',
'site-locale' => 'Idioma del lloc',
'date-format' => 'Format de la data',
'incident-date-format' => 'Format del fus horari dels incidents',
'site-timezone' => 'Seleccioneu el fus horari',
'site-locale' => 'Idioma del lloc',
'date-format' => 'Format de la data',
'incident-date-format' => 'Format del fus horari dels incidents',
],
'security' => [
'allowed-domains' => 'Dominis permesos',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'Aktuálně jsi přihlášen(a) ke všem upozorněním.',
'my_subscriptions' => 'Aktuálně jsi přihlášen(a) k následujícím upozorněním.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "Byl(a) jsi pozván(a) do teamu :app_name, k registraci klikni na následující odkaz.\n:link\nDěkujeme, :app_name",
'html' => '<p>Byl(a) jsi pozván(a) do teamu :app_name, k registraci klikni na následující odkaz.</p><p><a href=":link">:link</a></p><p>Děkujeme, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'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 .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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 a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Sidst opdateret :timestamp',
'status' => [
1 => 'Normal',
2 => 'Hastighedsproblemer',
3 => 'Nogen udfald',
4 => 'Store problemer',
],
'group' => [
'other' => 'Andre komponenter',
],
],
// Incidents
'incidents' => [
'none' => 'Ingen hændelser er rapporteret',
'past' => 'Tidligere hændelser',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Planlagt vedligeholdelse',
'scheduled_at' => ', planlagt til :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Undersøger',
2 => 'Identificeret',
3 => 'Overvåger',
4 => 'Rettet',
],
],
// Service Status
'service' => [
'good' => '[0,1] Systemet virker|[2,Inf] Alle systemer virker',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Generer en ny API nøgle',
'revoke' => 'Tilbagekald API nøgle',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Sidste time',
'hourly' => 'Sidste 12 timer',
'weekly' => 'Ugentlig',
'monthly' => 'Månedlig',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Abonner',
'manage' => [
'no_subscriptions' => 'Du abonner i øjeblikket på alle opdateringer.',
'my_subscriptions' => 'Du abonnere i øjeblikket på følgende opdateringer.',
],
'email' => [
'subscribe' => 'Abonner på email opdateringer.',
'subscribed' => 'Du er blevet tilmeldt email notifikationer. Vi har sendt dig en bekræftelse på den indtastede email-adresse.',
'verified' => 'Din tilmelding er nu blevet bekræftet, tak.',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Afmeld email notifikationer.',
'unsubscribed' => 'Du er nu blevet frameldt vores emailnotifikationer.',
'failure' => 'Noget gik galt med bekræftelsen.',
'already-subscribed' => 'Kan ikke abonnere da :email allerede er tilmeldt.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Komponent status opdatering',
'text' => 'Komponentet :component_name har ændret status. Komponentet er nu :component_human_status.\nTak, :app_name',
'html' => '<p>Komponentet :component_name har ændret status. Komponentet er nu :component_human_status.</p><p>\nTak, :app_name</p>',
'tooltip-title' => 'Abonner på notifikation for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "Du er blevet inviteret til :app_name status status side, Klik på linket for at oprette dig.\n:link\nTak, :app_name",
'html' => '<p>Du er blevet inviteret til :app_name status side, Klik på linket for at oprette dig.</p><p><a href=":link">:link</a></p><p>Tak, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Tilmeld',
'username' => 'Brugernavn',
'email' => 'Email',
'password' => 'Adgangskode',
'success' => 'Din konto er nu oprettet.',
'failure' => 'Noget gik galt under tilmeldingen.',
],
'system' => [
'update' => 'Der er en nyere version af Cachet tilgængelig. Du kan læse mere om hvordan du opdatere <a href="https://docs.cachethq.io/docs/updating-cachet">her</a>!',
],
// Modal
'modal' => [
'close' => 'Luk',
'subscribe' => [
'title' => 'Abonner på komponent opdateringer',
'body' => 'Indtast din email adresse for at abonnere på opdateringer angående dette komponent. Hvis du allerede er tilmeldt, vil du modtage emails angående dette komponent.',
'button' => 'Abonner',
],
],
// Other
'home' => 'Hjem',
'description' => 'Hold dig opdateret med de seneste opdateringer fra :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'Om denne side',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Oversigt',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} Ingen åbne hændelser.|Der er en åben hændelse.|Der er <strong>:count</strong> åbne hændelser.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Opret hændelse',
'success' => 'Hændelse tilføjet.',
'failure' => 'Der opstod en fejl i forsøget på at tilføje hændelsen. Prøv venligst igen.',
],
'edit' => [
'title' => 'Redigér hændelse',
'success' => 'Hændelse opdateret.',
'failure' => 'Der opstod en fejl under forsøget på at redigere hændelsen. Prøv venligst igen.',
],
'delete' => [
'success' => 'Hændelsen er blevet slettet og vil ikke blive vist på din statusside.',
'failure' => 'Hændelsen kunne ikke slettes. Prøv venligst igen.',
],
// Incident templates
'templates' => [
'title' => 'Hændelses skabeloner',
'add' => [
'title' => 'Opret hændelses skabelon',
'message' => 'Du bør tilføje en hændelses skabelon.',
'success' => 'Din nye hændelses skabelon er blevet oprettet.',
'failure' => 'En fejl er opstået med hændelses skabelonen.',
],
'edit' => [
'title' => 'Redigér skabelon',
'success' => 'Hændelses skabelonen er blevet opdateret.',
'failure' => 'Der opstod en fejl under forsøget på at opdatere hændelses skabelonen',
],
'delete' => [
'success' => 'Hændelses skabelonen er blevet slettet.',
'failure' => 'Hændelses skabelonen kunne ikke slettes. Prøv venligst igen.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Planlagt vedligeholdelse',
'logged' => '{0} Der er intet planlagt.|Der er 1 planlagt.|Der er <strong>:count</strong> planlagte.',
'scheduled_at' => 'Planlagt til :timestamp',
'add' => [
'title' => 'Tilføj planlagt vedligeholdelse',
'success' => 'Planlagt vedligeholdelse tilføjet.',
'failure' => 'Noget gik galt under forsøget på at tilføje planlagt vedligeholdelse. Prøv venligst igen.',
],
'edit' => [
'title' => 'Rediger planlagt vedligeholdelse',
'success' => 'Planlagt vedligeholdelse er blevet opdateret!',
'failure' => 'Noget gik galt under forsøget på at opdatere planlagt vedligeholdelse. Prøv venligst igen.',
],
'delete' => [
'success' => 'Planlagt vedligeholdelse er blevet slette og vil ikke længere blive vist på din status side.',
'failure' => 'Den planlagt vedligeholdelse kunne ikke slettes. Prøv venligst igen.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Komponentstatus',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Tilføj komponent',
'message' => 'Du bør tilføje en komponent.',
'success' => 'Komponent oprettet.',
'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.',
],
'edit' => [
'title' => 'Redigér komponent',
'success' => 'Komponent opdateret.',
'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.',
],
'delete' => [
'success' => 'Komponentet er blevet slettet!',
'failure' => 'Komponentet kunne ikke slettes. Prøv venligst igen.',
],
// Component groups
'groups' => [
'groups' => 'Komponentgruppe|Komponentgrupper',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Tilføj komponentgruppe',
'success' => 'Komponent gruppe tilføjet.',
'failure' => 'Noget gik galt med komponentet gruppen. Prøv venligst igen.',
],
'edit' => [
'title' => 'Redigér komponentgruppe',
'success' => 'Komponent gruppe opdateret.',
'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.',
],
'delete' => [
'success' => 'Komponent gruppen er blevet slettet!',
'failure' => 'Komponent gruppen kunne ikke slettes. Prøv venligst igen.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Grafer',
'add' => [
'title' => 'Opret graf',
'message' => 'Du bør tilføje en graf.',
'success' => 'Graf oprettet.',
'failure' => 'Noget gik galt med graffen. Prøv venligst igen.',
],
'edit' => [
'title' => 'Redigér graf',
'success' => 'Graf opdateret.',
'failure' => 'Noget gik galt med graffen. Prøv venligst igen.',
],
'delete' => [
'success' => 'Grafen er blevet slette og vil ikke længere blive vist på din status side.',
'failure' => 'Grafen kunne ikke slettes. Prøv venligst igen.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Abonnenter vil modtage notifikationer når hændelser oprettes eller komponenter opdateres.',
'verified' => 'Bekræftet',
'not_verified' => 'Ej bekræftet',
'subscriber' => ':email, abonnerede :date',
'no_subscriptions' => 'Abonnere på alle opdateringer',
'add' => [
'title' => 'Tilføj abonnent',
'success' => 'Subscriber added.',
'failure' => 'Noget gik galt under forsøget på at tilføje en abonnent. Prøv venligst igen.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Redigér abonnent',
'success' => 'Subscriber updated.',
'failure' => 'Noget gik galt under forsøget på at redigere abonnenten. Prøv venligst igen.',
],
],
// Team
'team' => [
'team' => 'Brugere',
'member' => 'Bruger',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Tilføj bruger',
'success' => 'Bruger tilføjet.',
'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.',
],
'edit' => [
'title' => 'Redigér profil',
'success' => 'Profil opdateret.',
'failure' => 'Noget gik galt under forsøget på at opdatere profilen. Prøv venligst igen.',
],
'delete' => [
'success' => 'Slet bruger.',
'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.',
],
'invite' => [
'title' => 'Invite a New Team Member',
'success' => 'The users invited.',
'failure' => 'Invitationen kunne ikke sendes. Prøv venligst igen.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Applikationssetup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'Filen du prøvede at uploade er for stort, billet skal være mindre end :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Tilpasning',
'header' => 'Brugerdefineret header HTML',
'footer' => 'Brugerdefineret footer html',
],
'security' => [
'security' => 'Sikkerhed',
'two-factor' => 'Brugere uden totrinsbekræftelse',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Tema',
],
'edit' => [
'success' => 'Indstillingerne er gemt.',
'failure' => 'Indstillingerne kunne ikke gemmes.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Log ind',
'logged_in' => 'Du er logget ind.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Indtast venligst din totrins bekræftelses nøgle.',
],
// Sidebar footer
'help' => 'Hjælp',
'status_page' => 'Status side',
'logout' => 'Log ud',
// Notifications
'notifications' => [
'notifications' => 'Notifikationer',
'awesome' => 'Fantastisk.',
'whoops' => 'Hov.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Adgangskode',
'site_name' => 'Sidenavn',
'site_domain' => 'Sidens domæne',
'site_timezone' => 'Vælg din tidszone',
'site_locale' => 'Vælg dit sprog',
'enable_google2fa' => 'Aktiver Googles to-trins bekræftelse',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Brugernavn eller email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Bekræftelseskode',
'invalid' => 'Ugyldigt brugernavn eller adgangskode',
'invalid-token' => 'Ugyldig token',
'cookies' => 'Du skal tillade cookies for at logge ind.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Navn',
'status' => 'Status',
'component' => 'Komponent',
'message' => 'Besked',
'message-help' => 'Du kan benytte Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Underret abonnenter',
'visibility' => 'Hændelses synlighed',
'public' => 'Kan ses af alle',
'logged_in_only' => 'Kun synlig for brugere der er logget ind',
'templates' => [
'name' => 'Name',
'template' => 'Skabelon',
'twig' => 'Hændelse skabeloner kan gøre brug af <a href="http://twig.sensiolabs.org/" target="_blank"> Twigs</a> skabelon sprog.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Gruppe',
'description' => 'Beskrivelse',
'link' => 'Link',
'tags' => 'Mærkat',
'tags-help' => 'Komma adskilt.',
'enabled' => 'Komponent er aktivt',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Altid åben',
'collapsed' => 'Minimer gruppen som standard',
'collapsed_incident' => 'Minimer gruppen, men hold den åben hvis der er fejl',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Endelse',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Vis graf på statussiden?',
'default-value' => 'Standard værdi',
'calc_type' => 'Beregning af grafer',
'type_sum' => 'Sum',
'type_avg' => 'Gennemsnit',
'places' => 'Antal decimaler',
'default_view' => 'Standardvisning',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Værdi',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Sidenavn',
'site-url' => 'Sidens URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'Om',
'days-of-incidents' => 'Hvor mange dage skal der vises hændelser for?',
'banner' => 'Banner billede',
'banner-help' => 'Det anbefales ikke at uploade billeder bredere end 930px.',
'subscribers' => 'Tillad folk at tilmelde sig email underretninger?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics kode',
'analytics_gosquared' => 'GoSquared Analytics kode',
'analytics_piwik_url' => 'URL til Piwik installation (uden http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Tidszone',
'site-locale' => 'Sprog på siden',
'date-format' => 'Datoformat',
'incident-date-format' => 'Datoformat for hændelser',
],
'security' => [
'allowed-domains' => 'Tilladte domæner',
'allowed-domains-help' => 'Komma adskilt. Domænet ovenfor har automatisk adgang.',
],
'stylesheet' => [
'custom-css' => 'Tilpasset CSS',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Baggrundsfyld (Komponenter, hændelser og footer)',
'banner-background-color' => 'Baggrundsfarve bag banneret',
'banner-padding' => 'Banner Padding',
'fullwidth-banner' => 'Slå fuldbrede bannere til?',
'text-color' => 'Text Color',
'dashboard-login' => 'Vis oversigtsside ikon i bunden af siden?',
'reds' => 'Rød (Brugt til fejl)',
'blues' => 'Blå (Brugt til information)',
'greens' => 'Grøn (Brugt til success)',
'yellows' => 'Gul (Brugt til advarsler)',
'oranges' => 'Orange (Brugt til noter)',
'metrics' => 'Graffyld',
'links' => 'Links',
],
],
'user' => [
'username' => 'Brugernavn',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API nøgle',
'api-token-help' => 'Hvis du regenerere din API nøgle vil eksisterende applikationer ikke kunne tilgå API\'et.',
'gravatar' => 'Ændre dit profilbillede hos Gravatar.',
'user_level' => 'Brugertype',
'levels' => [
'admin' => 'Administrator',
'user' => 'Bruger',
],
'2fa' => [
'help' => 'Brug totrinsbekræftelse for større sikkerhed på din konto. Du skal installere <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> eller en lignende app på din mobile enhed, for at kunne logge ind med nøgler fra appen.',
],
'team' => [
'description' => 'Inviter brugere, ved at indtaste dere email adresser her.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Tilføj',
'save' => 'Gem',
'update' => 'Opdatér',
'create' => 'Opret',
'edit' => 'Rediger',
'delete' => 'Slet',
'submit' => 'Send',
'cancel' => 'Afbryd',
'remove' => 'Fjern',
'invite' => 'Inviter',
'signup' => 'Tilmeld',
// Other
'optional' => '* ikke påkrævet',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Forrige',
'next' => 'Næste &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Opsætning',
'title' => 'Setup Cachet',
'service_details' => 'Tjenestesdetaljer',
'env_setup' => 'Opsætning af miljø',
'status_page_setup' => 'Status side opsætning',
'show_support' => 'Vis støtte til Cachet?',
'admin_account' => 'Administratorkonto',
'complete_setup' => 'Gennemfør opsætning',
'completed' => 'Cachet er nu sat op og er klar til brug!',
'finish_setup' => 'Gå til oversigtssiden',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => ':attribute skal accepteres.',
'active_url' => ':attribute er ikke en valid URL.',
'after' => ':attribute skal være efter den :date.',
'alpha' => ':attribute må kun indeholde bogstaver.',
'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.',
'alpha_num' => ':attribute må kun indeholde tal og bogstaver.',
'array' => ':attribute skal være et array.',
'before' => ':attribute skal være før den :date.',
'between' => [
'numeric' => ':attribute skal være før den :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => ':attribute skal have mellem :min og :max emner.',
],
'boolean' => ':attribute skal have mellem :min og :max emner.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => ':attribute skal være et billede.',
'in' => ':attribute skal være et billede.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => ':attribute skal være en gyldig JSON streng.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => ':attribute må ikke have mere end :max emner.',
],
'mimes' => ':attribute må ikke have mere end :max emner.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => ':attribute skal være mindst :min kilobytes.',
'string' => ':attribute skal være mindst :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => ':attribute feltet er påkrævet, medmindre :other er i :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => ':attribute skal være :size kilobytes.',
'string' => ':attribute skal være :size karakterer.',
'array' => ':attribute skal være :size karakterer.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => ':attribute skal være en gyldig zone.',
'unique' => ':attribute er allerede i brug.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => 'tilpasset-besked',
],
],
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "Du er blevet inviteret til :app_name status status side, Klik på linket for at oprette dig.\n:link\nTak, :app_name",
'html' => '<p>Du er blevet inviteret til :app_name status side, Klik på linket for at oprette dig.</p><p><a href=":link">:link</a></p><p>Tak, :app_name</p>',
'text' => "Du er blevet inviteret til :app_name status status side, Klik på linket for at oprette dig.\n:link\nTak, :app_name",
'html' => '<p>Du er blevet inviteret til :app_name status side, Klik på linket for at oprette dig.</p><p><a href=":link">:link</a></p><p>Tak, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Tidszone',
'site-locale' => 'Sprog på siden',
'date-format' => 'Datoformat',
'incident-date-format' => 'Datoformat for hændelser',
'site-timezone' => 'Tidszone',
'site-locale' => 'Sprog på siden',
'date-format' => 'Datoformat',
'incident-date-format' => 'Datoformat for hændelser',
],
'security' => [
'allowed-domains' => 'Tilladte domæner',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Letztes Update :timestamp',
'status' => [
1 => 'Funktionsfähig',
2 => 'Leistungsprobleme',
3 => 'Teilweiser Ausfall',
4 => 'Schwerer Ausfall',
],
'group' => [
'other' => 'Andere Komponenten',
],
],
// Incidents
'incidents' => [
'none' => 'Es liegen keine Ereignisse vor',
'past' => 'Vergangene Ereignisse',
'previous_week' => 'Vorherige Woche',
'next_week' => 'Nächste Woche',
'scheduled' => 'Geplante Wartungen',
'scheduled_at' => ', geplant :timestamp',
'status' => [
0 => 'Geplant', // TODO: Hopefully remove this.
1 => 'Untersuchungen laufen',
2 => 'Identifiziert',
3 => 'Unter Beobachtung',
4 => 'Behoben',
],
],
// Service Status
'service' => [
'good' => '[0,1] System funktioniert einwandfrei|[2,Inf] Alle Systeme funktionieren einwandfrei',
'bad' => '[0,1] Das System hat momentan Probleme|[2,Inf] Manche Systeme haben momentan Probleme',
'major' => '[0,1] Das System hat ein schwerwiegendes Problem|[2,Inf] Manche Systeme haben ein schwerwiegendes Problem',
],
'api' => [
'regenerate' => 'API-Schlüssel erneuern',
'revoke' => 'API-Schlüssel widerrufen',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Letzte Stunde',
'hourly' => 'Letzte 12 Stunden',
'weekly' => 'Wöchentlich',
'monthly' => 'Monatlich',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Abonieren, um aktuelle Updates zu erhalten',
'button' => 'Abonnieren',
'manage' => [
'no_subscriptions' => 'Du hast im Augenblick alle Updates abonniert.',
'my_subscriptions' => 'Du hast im Augenblick folgende Updates abonniert.',
],
'email' => [
'subscribe' => 'Aktualisierungen per E-Mail abonnieren.',
'subscribed' => 'Sie haben E-Mail-Benachrichtigungen abonniert, überprüfen Sie bitte Ihre E-Mail, um Ihr Abonnement zu bestätigen.',
'verified' => 'Ihre E-Mail-Abonnement ist bestätigt worden. Danke!',
'manage' => 'Verwalte deine Abonnements',
'unsubscribe' => 'Abonnement widerrufen.',
'unsubscribed' => 'Ihre E-Mail-Abonnement wurde beendet.',
'failure' => 'Beim aktivieren des Abonnements ist ein Fehler aufgetreten.',
'already-subscribed' => 'Abonnement für :email konnte nicht registriert werden, da die E-Mail Adresse schon registriert ist.',
'verify' => [
'text' => "Bitte bestätige den Link in der E-Mail um das Abonnement für :app_name status updates.\n:link zu bestätigen",
'html' => '<p>Bitte bestätige deine E-Mail-Benachrichtigung unter :app_name status updates.</p>',
'button' => 'Abonnement bestätigen',
],
'maintenance' => [
'subject' => '[Planmäßige Wartung] :name',
],
'incident' => [
'subject' => '[Neues Ereignis] :status: :name',
],
'component' => [
'subject' => 'Komponent Status Update',
'text' => 'Der Komponent :component_name hatte eine Status-Änderung. Der Komponent befindet sich nun im :component_human_status.\nDanke, :app_name',
'html' => '<p>Der Komponent :component_name hatte eine Status-Änderung. Der Komponent befindet sich nun im :component_human_status.</p><p>Danke, :app_name</p>',
'tooltip-title' => 'Neuigkeiten für :component_name abonnieren.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.\n:link\nDanke, :app_name",
'html' => '<p>Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.</p><p><a href=":link">:link</a></p><p>Danke, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Registrieren',
'username' => 'Benutzername',
'email' => 'E-Mail',
'password' => 'Passwort',
'success' => 'Ihr Konto wurde erfolgreich erstellt.',
'failure' => 'Mit der Registrierung ist etwas schief gelaufen.',
],
'system' => [
'update' => 'Es ist eine neuere Version von Cachet verfügbar. Lerne <a href="https://docs.cachethq.io/docs/updating-cachet">hier</a>!, wie du updaten kannst!',
],
// Modal
'modal' => [
'close' => 'Schließen',
'subscribe' => [
'title' => 'Abonniere die Komponenten-Updates',
'body' => 'Gib deine E-Mail Adresse ein, um Updates für diesen Komponenten zu erhalten. Wenn du bereits abonniert bist, erhälst du schon Updates für diesen Komponenten.',
'button' => 'Abonnieren',
],
],
// Other
'home' => 'Startseite',
'description' => 'Bleiben sie auf dem Laufenden mit den neuesten Service-Updates von :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'Über diese Seite',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status-Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Ereignisse &amp; Termine',
'incidents' => 'Ereignisse',
'logged' => '{0} Es gibt keine Ereignisse, gute Arbeit.|Du hast ein Ereignis gemeldet.|Du hast <strong>:count</strong> Ereignisse gemeldet.',
'incident-create-template' => 'Vorlage erstellen',
'incident-templates' => 'Ereignis Vorlagen',
'add' => [
'title' => 'Ereignis hinzufügen',
'success' => 'Ereignis hinzugefügt.',
'failure' => 'Es ist ein Fehler beim Hinzufügen der Störung aufgetreten. Bitte erneut versuchen.',
],
'edit' => [
'title' => 'Ereignis bearbeiten',
'success' => 'Ereignis aktualisiert.',
'failure' => 'Es ist ein Fehler beim Editieren der Störung aufgetreten. Bitte erneut versuchen.',
],
'delete' => [
'success' => 'Das Ereignis wurde gelöscht und wird nicht mehr angezeigt.',
'failure' => 'Die Störung konnte nicht gelöscht werden. Bitte versuche es erneut.',
],
// Incident templates
'templates' => [
'title' => 'Vorfall Vorlagen',
'add' => [
'title' => 'Ereignisvorlage erstellen',
'message' => 'Du solltest eine Ereignis-Vorlage hinzufügen.',
'success' => 'Deine neue Ereignis-Vorlage wurde angelegt.',
'failure' => 'Etwas ist mit der Ereignis-Vorlage schief gelaufen.',
],
'edit' => [
'title' => 'Vorlage bearbeiten',
'success' => 'Die Ereignis-Vorlage wurde aktualisiert.',
'failure' => 'Etwas ist mit dem Aktualisieren der Ereignis-Vorlage schief gelaufen',
],
'delete' => [
'success' => 'Die Ereignis-Vorlage wurde gelöscht.',
'failure' => 'Die Ereignis-Vorlage konnte nicht gelöscht werden. Bitte versuche es erneut.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Planmäßige Wartung',
'logged' => '{0} Es gibt keine Zeitpläne, gute Arbeit.|Du hast einen Zeitplan erstellt.|Du hast <strong>:count</strong> Zeitpläne gemeldet.',
'scheduled_at' => 'Geplant am :timestamp',
'add' => [
'title' => 'Planmäßige Wartungsarbeiten hinzufügen',
'success' => 'Zeitplan hinzugefügt.',
'failure' => 'Etwas lief schief mit dem Hinzufügen des Zeitplans. Bitte versuchen Sie es erneut.',
],
'edit' => [
'title' => 'Planmäßige Wartung bearbeiten',
'success' => 'Zeitplan wurde aktualisiert!',
'failure' => 'Etwas lief schief mit dem Editieren des Zeitplans. Bitte versuchen Sie es erneut.',
],
'delete' => [
'success' => 'Der Zeitplan wurde gelöscht und wird nicht auf Ihrer Statusseite angezeigt.',
'failure' => 'Der Zeitplan konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.',
],
],
// Components
'components' => [
'components' => 'Komponenten',
'component_statuses' => 'Komponentenstatus',
'listed_group' => 'Gruppenname :name',
'add' => [
'title' => 'Komponente hinzufügen',
'message' => 'Sie sollten eine Komponente erstellen.',
'success' => 'Komponente erstellt.',
'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.',
],
'edit' => [
'title' => 'Komponente bearbeiten',
'success' => 'Komponente aktualisiert.',
'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.',
],
'delete' => [
'success' => 'Die Komponente wurde gelöscht!',
'failure' => 'Die Komponente konnte nicht gelöscht werden. Bitte versuche es erneut.',
],
// Component groups
'groups' => [
'groups' => 'Komponentengruppe|Komponentengruppen',
'no_components' => 'Sie sollten eine Komponentengruppe hinzufügen.',
'add' => [
'title' => 'Eine Komponentengruppe hinzufügen',
'success' => 'Komponentengruppe hinzugefügt.',
'failure' => 'Etwas ist mit der Komponentengruppe schiefgelaufen, versuchen sie es erneut.',
],
'edit' => [
'title' => 'Komponentengruppe bearbeiten',
'success' => 'Komponentengruppe aktualisiert.',
'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.',
],
'delete' => [
'success' => 'Die Komponentengruppe wurde gelöscht!',
'failure' => 'Die Komponentengruppe konnte nicht gelöscht werden. Bitte versuche es erneut.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metriken',
'add' => [
'title' => 'Metrik erstellen',
'message' => 'Du solltest eine Metrik hinzufügen.',
'success' => 'Metrik erstellt.',
'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.',
],
'edit' => [
'title' => 'Metrik bearbeiten',
'success' => 'Metrik aktualisiert.',
'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.',
],
'delete' => [
'success' => 'Die Metrik wurde gelöscht und wird nicht mehr angezeigt.',
'failure' => 'Die Metrik konnte nicht gelöscht werden. Bitte versuche es erneut.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Abonnenten',
'description' => 'Abonnenten erhalten E-Mail Updates, wenn Vorfälle erstellt oder Komponenten bearbeitet werden.',
'verified' => 'Bestätigt',
'not_verified' => 'Nicht Bestätigt',
'subscriber' => ':email, abonniert am :date',
'no_subscriptions' => 'Aktualisierungen per E-Mail abonnieren',
'add' => [
'title' => 'Einen neuen Abonnenten hinzufügen',
'success' => 'Abonnent hinzugefügt.',
'failure' => 'Etwas lief schief dem dem Hinzufügen eines Abonnenten. Bitte versuchen Sie es erneut.',
'help' => 'Gib jeden Abonnenten in eine neue Zeile ein.',
],
'edit' => [
'title' => 'Abonnent aktualisieren',
'success' => 'Abonnent aktualisiert.',
'failure' => 'Etwas lief schief mit dem Bearbeiten eines Abonnenten. Bitte versuchen sie es erneut.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Mitglied',
'profile' => 'Profil',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Neues Teammitglied hinzufügen',
'success' => 'Teammitglied hinzugefügt.',
'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.',
],
'edit' => [
'title' => 'Profil aktualisieren',
'success' => 'Profil aktualisiert.',
'failure' => 'Etwas lief schief mit dem Aktualisieren des Profils. Bitte versuchen Sie es erneut.',
],
'delete' => [
'success' => 'Benutzer aktualisiert.',
'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.',
],
'invite' => [
'title' => 'Ein neues Teammitglied einladen',
'success' => 'Eine Einladung wurde verschickt',
'failure' => 'Diese Einladung konnte nicht versendet werden. Bitte versuchen Sie es erneut.',
],
],
// Settings
'settings' => [
'settings' => 'Einstellungen',
'app-setup' => [
'app-setup' => 'Anwendungsinstallation',
'images-only' => 'Es können nur Bilder hochgeladen werden.',
'too-big' => 'Die von Ihnen hochgeladene Datei ist zu groß. Sie können Dateien bis zu einer Maximalgröße von :size hochladen.',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Standort',
],
'customization' => [
'customization' => 'Individualisierung',
'header' => 'Benutzerdefinierter HTML Header',
'footer' => 'Benutzerdefinierter HTML Footer',
],
'security' => [
'security' => 'Sicherheit',
'two-factor' => 'Nutzer ohne Zwei-Faktor-Authentifizierung',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Einstellungen gespeichert.',
'failure' => 'Einstellungen konnten nicht gespeichert werden.',
],
'credits' => [
'credits' => 'Danksagungen',
'contributors' => 'Unterstützer',
'license' => 'Cachet ist ein BSD-3-lizensiertes Open Source-Projekt, veröffentlicht von <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Unterstützer & Sponsoren',
'backers' => 'Wenn Du die weitere Entwicklung der Software unterstützen möchtest, kannst Du unter Cachet und GitHub einen Beitrag leisten.',
'thank-you' => 'Vielen Dank an jeden der :count Unterstützer.',
],
],
// Login
'login' => [
'login' => 'Einloggen',
'logged_in' => 'Sie sind eingeloggt.',
'welcome' => 'Willkommen zurück!',
'two-factor' => 'Bitte geben Sie Ihren Token ein.',
],
// Sidebar footer
'help' => 'Hilfe',
'status_page' => 'Statusseite',
'logout' => 'Abmelden',
// Notifications
'notifications' => [
'notifications' => 'Benachrichtigungen',
'awesome' => 'Großartig.',
'whoops' => 'Hoppla.',
],
// Widgets
'widgets' => [
'news' => 'Aktuelle Neuigkeiten',
'news_subtitle' => 'Erhalte die neusten Nachrichten',
],
// Welcome modal
'welcome' => [
'welcome' => 'Willkommen zu Deiner neuen Status Seite!',
'message' => 'Ihre Statusseite ist fast fertig! Vielleicht möchten Sie diese zusätlichen Einstellungen vornehmen',
'close' => 'Bring mich direkt zu meinem Dashboard',
'steps' => [
'component' => 'Komponenten erstellen',
'incident' => 'Vorfälle erstellen',
'customize' => 'Anpassen',
'team' => 'Benutzer hinzufügen',
'api' => 'API Token generieren',
'two-factor' => 'Zwei-Faktor-Authentifizierung',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'E-Mail',
'username' => 'Benutzername',
'password' => 'Passwort',
'site_name' => 'Seitenname',
'site_domain' => 'Domain ihrer Seite',
'site_timezone' => 'Wählen Sie Ihre Zeitzone',
'site_locale' => 'Wählen Sie Ihre Sprache',
'enable_google2fa' => 'Google Zwei-Faktor-Authentifizierung aktivieren',
'cache_driver' => 'Cache-Treiber',
'session_driver' => 'Sitzungs-Treiber',
'mail_driver' => 'Mail Protokoll',
'mail_host' => 'Mail Host',
'mail_address' => 'Absenderadresse',
'mail_username' => 'Mail Nutzername',
'mail_password' => 'Mail Passwort',
],
// Login form fields
'login' => [
'login' => 'Username oder E-Mail',
'email' => 'E-Mail',
'password' => 'Passwort',
'2fauth' => 'Authentifizierungscode',
'invalid' => 'Benutzername oder Passwort ungültig',
'invalid-token' => 'Token ist ungültig',
'cookies' => 'Sie müssen Cookies aktivieren um sich anzumelden.',
'rate-limit' => 'Maximale Anzahl von Bewertungen erreicht.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Komponente',
'message' => 'Nachricht',
'message-help' => 'Sie können auch Markdown verwenden.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'Wann ist dieser Vorfall aufgetreten?',
'notify_subscribers' => 'Abonnenten benachrichtigen',
'visibility' => 'Ereignis Sichtbarkeit',
'public' => 'Öffentlich sichtbar',
'logged_in_only' => 'Nur für angemeldete Benutzer sichtbar',
'templates' => [
'name' => 'Name',
'template' => 'Vorlage',
'twig' => 'Ereignis Vorlagen können den <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> Syntax nutzen.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Gruppe',
'description' => 'Beschreibung',
'link' => 'Link',
'tags' => 'Schlagwörter',
'tags-help' => 'Durch Kommata trennen.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Immer erweitert',
'collapsed' => 'Die Gruppe standardmäßig ausblenden',
'collapsed_incident' => 'Die Gruppe standardmäßig ausblenden, aber erweitern wenn es Probleme gibt',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Beschreibung',
'description-help' => 'Sie können auch Markdown benutzen.',
'display-chart' => 'Diagramm auf der Statusseite anzeigen?',
'default-value' => 'Standardwert',
'calc_type' => 'Berechnung der Metrik',
'type_sum' => 'Summe',
'type_avg' => 'Durchschnitt',
'places' => 'Nachkommastellen',
'default_view' => 'Standardansicht',
'threshold' => 'Wie viele Minuten soll der Abstand zwischen den Messpunkten sein?',
'points' => [
'value' => 'Wert',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Seitenname',
'site-url' => 'URL ihrer Seite',
'display-graphs' => 'Graphen auf der Statusseite anzeigen?',
'about-this-page' => 'Über diese Seite',
'days-of-incidents' => 'Wie viele Tage mit Vorfällen sollen gezeigt werden?',
'banner' => 'Banner Bild',
'banner-help' => 'Es wird empfohlen, dass Sie keine Dateien die breiter als 930 Pixel sind hochladen .',
'subscribers' => 'Personen die Anmeldung für E-Mail-Benachrichtigung erlauben?',
'automatic_localization' => 'Die Status-Seite automatisch auf die Sprache deiner Besucher anpassen?',
],
'analytics' => [
'analytics_google' => 'Google Analytics Code',
'analytics_gosquared' => 'GoSquared Analytics Code',
'analytics_piwik_url' => 'URL der Piwik-Instanz (ohne http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s Seiten-ID',
],
'localization' => [
'site-timezone' => 'Zeitzone ihrer Seite',
'site-locale' => 'Sprache ihrer Seite',
'date-format' => 'Datumsformat',
'incident-date-format' => 'Ereignis Uhrzeit Format',
],
'security' => [
'allowed-domains' => 'Erlaubte Domains',
'allowed-domains-help' => 'Durch Kommata trennen. Die oben genannte Domain ist standardmäßig erlaubt.',
],
'stylesheet' => [
'custom-css' => 'Benutzerdefiniertes Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Hintergrunddateien (Komponenten, Vorfälle, Footer)',
'banner-background-color' => 'Banner Background Color',
'banner-padding' => 'Banner Padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Dashboard-Button im Footer anzeigen?',
'reds' => 'Rot (Genutzt für Fehler)',
'blues' => 'Blau (Genutzt für Informationen)',
'greens' => 'Grün (Genutzt für Erfolgreich)',
'yellows' => 'Gelb (Genutzt für Warnungen)',
'oranges' => 'Orange (Genutzt für Nachrichten)',
'metrics' => 'Kennzahlen-Füllung',
'links' => 'Links',
],
],
'user' => [
'username' => 'Benutzername',
'email' => 'E-Mail',
'password' => 'Passwort',
'api-token' => 'API Token',
'api-token-help' => 'Wenn sie ihren API-Token neu generieren, können bestehende Anwendungen nicht mehr auf Cachet zugreifen.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'Benutzerebene',
'levels' => [
'admin' => 'Admin',
'user' => 'Benutzer',
],
'2fa' => [
'help' => 'Die Zwei-Faktor-Authentifizierung erhöht die Sicherheit Ihres Kontos. Sie benötigen <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> oder eine ähnliche App auf Ihrem Mobilgerät. Beim Anmelden werden sie aufgefordert, einen Token einzugeben, der von der App generiert wird.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Hinzufügen',
'save' => 'Speichern',
'update' => 'Aktualisieren',
'create' => 'Erstellen',
'edit' => 'Bearbeiten',
'delete' => 'Löschen',
'submit' => 'Abschicken',
'cancel' => 'Abbrechen',
'remove' => 'Entfernen',
'invite' => 'Einladen',
'signup' => 'Registrieren',
// Other
'optional' => '* optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Zurück',
'next' => 'Vor &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Installation',
'title' => 'Cachet installieren',
'service_details' => 'Servicedetails',
'env_setup' => 'Einrichtung der Systemumgebung',
'status_page_setup' => 'Statusseite einrichten',
'show_support' => 'Möchten Sie Cachet unterstützen?',
'admin_account' => 'Administrator Konto',
'complete_setup' => 'Installation abschließen',
'completed' => 'Cachet wurde erfolgreich konfiguriert!',
'finish_setup' => 'Zum Dashboard wechseln',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => ':attribute muss akzeptiert werden.',
'active_url' => ':attribute ist keine gültige Internet-Adresse.',
'after' => ':attribute muss ein Datum nach dem :date sein.',
'alpha' => ':attribute darf nur aus Buchstaben bestehen.',
'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.',
'alpha_num' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.',
'array' => ':attribute muss ein Array sein.',
'before' => ':attribute muss ein Datum vor dem :date sein.',
'between' => [
'numeric' => ':attribute muss ein Datum vor dem :date sein.',
'file' => ':attribute muss zwischen :min und :max liegen.',
'string' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
'array' => ':attribute muss zwischen :min & :max Elemente haben.',
],
'boolean' => ':attribute muss zwischen :min & :max Elemente haben.',
'confirmed' => ':attribute Feld muss true oder false sein.',
'date' => ':attribute Bestätigung stimmt nicht überein.',
'date_format' => ':attribute ist kein gültiges Datum.',
'different' => ':attribute entspricht nicht dem Format :format.',
'digits' => ':attribute und :other dürfen nicht identisch sein.',
'digits_between' => ':attribute muss :digits Zeichen lang sein.',
'email' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
'exists' => ':attribute muss eine gültige E-Mail-Ad­res­se sein.',
'distinct' => ':attribute hat doppelte Werte.',
'filled' => 'Das Format von :attribute ist ungültig.',
'image' => ':attribute muss ein Bild sein.',
'in' => ':attribute muss ein Bild sein.',
'in_array' => ':attribute existiert nicht in :other.',
'integer' => 'Das ausgewählte :attribute ist ungültig.',
'ip' => ':attribute muss eine ganze Zahl sein.',
'json' => ':attribut muss ein gültiger JSON-String sein.',
'max' => [
'numeric' => ':attribute muss eine gültige IP-Adresse sein.',
'file' => ':attribute darf nicht größer sein als :max.',
'string' => ':attribute darf nicht größer sein als :max kilobytes.',
'array' => ':attribute darf nicht mehr als :max Elemente haben.',
],
'mimes' => ':attribute darf nicht mehr als :max Elemente haben.',
'min' => [
'numeric' => ':attribute muss einem der Dateitypen: :values entsprechen.',
'file' => ':attribute muss mindestens :min Kilobytes groß sein.',
'string' => ':attribute muss mindestens :min Kilobytes groß sein.',
'array' => ':attribute muss mindestens :min Zeichen enthalten.',
],
'not_in' => ':attribute muss mindestens :min Elemente haben.',
'numeric' => 'Das ausgewählte :attribute ist ungültig.',
'present' => ':attribute muss ausgefüllt sein.',
'regex' => ':attribute muss eine Zahl sein.',
'required' => 'Das Format von :attribute ist ungültig.',
'required_if' => 'Das Feld :attribute ist erforderlich.',
'required_unless' => 'Das :attribute Feld ist erforderlich außer :other hat den Wert :values.',
'required_with' => ':attribute wird benötigt wenn :other :value entspricht.',
'required_with_all' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.',
'required_without' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.',
'required_without_all' => ':attribute muss angegeben werden, wenn :values nicht angegeben wurde.',
'same' => ':attribute ist erforderlich, wenn keiner von :values vorhanden sind.',
'size' => [
'numeric' => ':attribute und :other müssen übereinstimmen.',
'file' => ':attribute muss :size Kilobytes groß sein.',
'string' => ':attribute muss :size Zeichen lang sein.',
'array' => ':attribute muss :size Zeichen lang sein.',
],
'string' => ':attribute muss :size Elemente beinhalten.',
'timezone' => ':attribute muss eine gültige Zeitzone sein.',
'unique' => ':attribute ist schon vergeben.',
'url' => 'Das Format von :attribute ist ungültig.',
/*
|--------------------------------------------------------------------------
| 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' => 'Individuelle Nachricht',
],
],
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.\n:link\nDanke, :app_name",
'html' => '<p>Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.</p><p><a href=":link">:link</a></p><p>Danke, :app_name</p>',
'text' => "Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.\n:link\nDanke, :app_name",
'html' => '<p>Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.</p><p><a href=":link">:link</a></p><p>Danke, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Unterstützer',
'license' => 'Cachet ist ein BSD-3-lizensiertes Open Source-Projekt, veröffentlicht von <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Unterstützer & Sponsoren',
'backers' => 'Wenn Du die Entwicklung der Software unterstützen möchtest, kannst Du unter <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> einen Beitrag leisten.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Vielen Dank an jeden der :count Unterstützer.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Cachet unterstützen',
'support_subtitle' => 'Unterstütze uns unter <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong>!',
'news' => 'Aktuelle Neuigkeiten',
'news_subtitle' => 'Erhalte die neusten Nachrichten',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s Seiten-ID',
],
'localization' => [
'site-timezone' => 'Zeitzone ihrer Seite',
'site-locale' => 'Sprache ihrer Seite',
'date-format' => 'Datumsformat',
'incident-date-format' => 'Vorfall Zeitstempel-Format',
'site-timezone' => 'Zeitzone ihrer Seite',
'site-locale' => 'Sprache ihrer Seite',
'date-format' => 'Datumsformat',
'incident-date-format' => 'Vorfall Zeitstempel-Format',
],
'security' => [
'allowed-domains' => 'Erlaubte Domains',

View File

@@ -0,0 +1,144 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Components
'components' => [
'last_updated' => 'Last updated :timestamp',
'status' => [
1 => 'Operational',
2 => 'Performance Issues',
3 => 'Partial Outage',
4 => 'Major Outage',
],
'group' => [
'other' => 'Other Components',
],
],
// Incidents
'incidents' => [
'none' => 'No incidents reported',
'past' => 'Past Incidents',
'previous_week' => 'Previous Week',
'next_week' => 'Next Week',
'scheduled' => 'Scheduled Maintenance',
'scheduled_at' => ', scheduled :timestamp',
'status' => [
0 => 'Scheduled', // TODO: Hopefully remove this.
1 => 'Investigating',
2 => 'Identified',
3 => 'Watching',
4 => 'Fixed',
],
],
// Service Status
'service' => [
'good' => '[0,1] System operational|[2,Inf] All systems are operational',
'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues',
'major' => '[0,1] The service experiencing a major outage|[2,Inf] Some systems are experiencing a major outage',
],
'api' => [
'regenerate' => 'Regenerate API Key',
'revoke' => 'Revoke API Key',
],
// Metrics
'metrics' => [
'filter' => [
'last_hour' => 'Last Hour',
'hourly' => 'Last 12 Hours',
'weekly' => 'Week',
'monthly' => 'Month',
],
],
// Subscriber
'subscriber' => [
'subscribe' => 'Subscribe to get the most recent updates',
'button' => 'Subscribe',
'manage' => [
'no_subscriptions' => 'You\'re currently subscribed to all updates.',
'my_subscriptions' => 'You\'re currently subscribed to the following updates.',
],
'email' => [
'subscribe' => 'Subscribe to email updates.',
'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.',
'verified' => 'Your email subscription has been confirmed. Thank you!',
'manage' => 'Manage your subscription',
'unsubscribe' => 'Unsubscribe from email updates.',
'unsubscribed' => 'Your email subscription has been cancelled.',
'failure' => 'Something went wrong with the subscription.',
'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.',
'verify' => [
'text' => "Please confirm your email subscription to :app_name status updates.\n:link",
'html' => '<p>Please confirm your email subscription to :app_name status updates.</p>',
'button' => 'Confirm Subscription',
],
'maintenance' => [
'subject' => '[Maintenance Scheduled] :name',
],
'incident' => [
'subject' => '[New Incident] :status: :name',
],
'component' => [
'subject' => 'Component Status Update',
'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name',
'html' => '<p>The component :component_name has seen a status change. The component is now at :component_human_status.</p><p>Thank you, :app_name</p>',
'tooltip-title' => 'Subscribe to notifications for :component_name.',
],
],
],
'users' => [
'email' => [
'invite' => [
'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name",
'html' => '<p>You have been invited to the team :app_name status page, to sign up follow the next link.</p><p><a href=":link">:link</a></p><p>Thank you, :app_name</p>',
],
],
],
'signup' => [
'title' => 'Sign Up',
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'success' => 'Your account has been created.',
'failure' => 'Something went wrong with the signup.',
],
'system' => [
'update' => 'There is a newer version of Cachet available. You can learn how to update <a href="https://docs.cachethq.io/docs/updating-cachet">here</a>!',
],
// Modal
'modal' => [
'close' => 'Close',
'subscribe' => [
'title' => 'Subscribe to component updates',
'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.',
'button' => 'Subscribe',
],
],
// Other
'home' => 'Home',
'description' => 'Stay up to date with the latest service updates from :app.',
'powered_by' => 'Powered by <a href="https://cachethq.io" class="links">Cachet</a>.',
'about_this_site' => 'About This Site',
'rss-feed' => 'RSS',
'atom-feed' => 'Atom',
'feed' => 'Status Feed',
];

View File

@@ -0,0 +1,273 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'dashboard' => 'Dashboard',
// Incidents
'incidents' => [
'title' => 'Incidents &amp; Schedule',
'incidents' => 'Incidents',
'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported <strong>:count</strong> incidents.',
'incident-create-template' => 'Create Template',
'incident-templates' => 'Incident Templates',
'add' => [
'title' => 'Report an incident',
'success' => 'Incident added.',
'failure' => 'There was an error adding the incident, please try again.',
],
'edit' => [
'title' => 'Edit an incident',
'success' => 'Incident updated.',
'failure' => 'There was an error editing the incident, please try again.',
],
'delete' => [
'success' => 'The incident has been deleted and will not show on your status page.',
'failure' => 'The incident could not be deleted, please try again.',
],
// Incident templates
'templates' => [
'title' => 'Incident Templates',
'add' => [
'title' => 'Create an incident template',
'message' => 'You should add an incident template.',
'success' => 'Your new incident template has been created.',
'failure' => 'Something went wrong with the incident template.',
],
'edit' => [
'title' => 'Edit Template',
'success' => 'The incident template has been updated.',
'failure' => 'Something went wrong updating the incident template',
],
'delete' => [
'success' => 'The incident template has been deleted.',
'failure' => 'The incident template could not be deleted, please try again.',
],
],
],
// Incident Maintenance
'schedule' => [
'schedule' => 'Scheduled Maintenance',
'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported <strong>:count</strong> schedules.',
'scheduled_at' => 'Scheduled at :timestamp',
'add' => [
'title' => 'Add Scheduled Maintenance',
'success' => 'Schedule added.',
'failure' => 'Something went wrong adding the schedule, please try again.',
],
'edit' => [
'title' => 'Edit Scheduled Maintenance',
'success' => 'Schedule has been updated!',
'failure' => 'Something went wrong editing the schedule, please try again.',
],
'delete' => [
'success' => 'The scheduled maintenance has been deleted and will not show on your status page.',
'failure' => 'The scheduled maintenance could not be deleted, please try again.',
],
],
// Components
'components' => [
'components' => 'Components',
'component_statuses' => 'Component Statuses',
'listed_group' => 'Grouped under :name',
'add' => [
'title' => 'Add a component',
'message' => 'You should add a component.',
'success' => 'Component created.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component',
'success' => 'Component updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'The component has been deleted!',
'failure' => 'The component could not be deleted, please try again.',
],
// Component groups
'groups' => [
'groups' => 'Component group|Component groups',
'no_components' => 'You should add a component group.',
'add' => [
'title' => 'Add a component group',
'success' => 'Component group added.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'edit' => [
'title' => 'Edit a component group',
'success' => 'Component group updated.',
'failure' => 'Something went wrong with the component group, please try again.',
],
'delete' => [
'success' => 'Component group has been deleted!',
'failure' => 'The component group could not be deleted, please try again.',
],
],
],
// Metrics
'metrics' => [
'metrics' => 'Metrics',
'add' => [
'title' => 'Create a metric',
'message' => 'You should add a metric.',
'success' => 'Metric created.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'edit' => [
'title' => 'Edit a metric',
'success' => 'Metric updated.',
'failure' => 'Something went wrong with the metric, please try again.',
],
'delete' => [
'success' => 'The metric has been deleted and will no longer display on your status page.',
'failure' => 'The metric could not be deleted, please try again.',
],
],
// Subscribers
'subscribers' => [
'subscribers' => 'Subscribers',
'description' => 'Subscribers will receive email updates when incidents are created or components are updated.',
'verified' => 'Verified',
'not_verified' => 'Not verified',
'subscriber' => ':email, subscribed :date',
'no_subscriptions' => 'Subscribed to all updates',
'add' => [
'title' => 'Add a new subscriber',
'success' => 'Subscriber has been added!',
'failure' => 'Something went wrong adding the subscriber, please try again.',
'help' => 'Enter each subscriber on a new line.',
],
'edit' => [
'title' => 'Update subscriber',
'success' => 'Subscriber has been updated!',
'failure' => 'Something went wrong editing the subscriber, please try again.',
],
],
// Team
'team' => [
'team' => 'Team',
'member' => 'Member',
'profile' => 'Profile',
'description' => 'Team Members will be able to add, modify &amp; edit components and incidents.',
'add' => [
'title' => 'Add a new team member',
'success' => 'Team member added.',
'failure' => 'The team member could not be added, please try again.',
],
'edit' => [
'title' => 'Update profile',
'success' => 'Profile updated.',
'failure' => 'Something went wrong updating the profile, please try again.',
],
'delete' => [
'success' => 'Team member has been deleted and will no longer have access to the dashboard!',
'failure' => 'The team member could not be added, please try again.',
],
'invite' => [
'title' => 'Invite a new team member',
'success' => 'An invite has been sent',
'failure' => 'The invite could not be sent, please try again.',
],
],
// Settings
'settings' => [
'settings' => 'Settings',
'app-setup' => [
'app-setup' => 'Application Setup',
'images-only' => 'Only images may be uploaded.',
'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size',
],
'analytics' => [
'analytics' => 'Analytics',
],
'localization' => [
'localization' => 'Localization',
],
'customization' => [
'customization' => 'Customization',
'header' => 'Custom Header HTML',
'footer' => 'Custom Footer HTML',
],
'security' => [
'security' => 'Security',
'two-factor' => 'Users without two-factor authentication',
],
'stylesheet' => [
'stylesheet' => 'Stylesheet',
],
'theme' => [
'theme' => 'Theme',
],
'edit' => [
'success' => 'Settings saved.',
'failure' => 'Settings could not be saved.',
],
'credits' => [
'credits' => 'Credits',
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
// Login
'login' => [
'login' => 'Login',
'logged_in' => 'You\'re logged in.',
'welcome' => 'Welcome Back!',
'two-factor' => 'Please enter your token.',
],
// Sidebar footer
'help' => 'Help',
'status_page' => 'Status Page',
'logout' => 'Logout',
// Notifications
'notifications' => [
'notifications' => 'Notifications',
'awesome' => 'Awesome.',
'whoops' => 'Whoops.',
],
// Widgets
'widgets' => [
'news' => 'Latest News',
'news_subtitle' => 'Get the latest update',
],
// Welcome modal
'welcome' => [
'welcome' => 'Welcome to your new Status page!',
'message' => 'Your status page is almost ready! You might want to configure these extra settings',
'close' => 'Take me straight to my dashboard',
'steps' => [
'component' => 'Create components',
'incident' => 'Create incidents',
'customize' => 'Customize',
'team' => 'Add users',
'api' => 'Generate API token',
'two-factor' => 'Two Factor Authentication',
],
],
];

View File

@@ -0,0 +1,192 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// Setup form fields
'setup' => [
'email' => 'Email',
'username' => 'Username',
'password' => 'Password',
'site_name' => 'Site Name',
'site_domain' => 'Site Domain',
'site_timezone' => 'Select your timezone',
'site_locale' => 'Select your language',
'enable_google2fa' => 'Enable Google Two Factor Authentication',
'cache_driver' => 'Cache Driver',
'session_driver' => 'Session Driver',
'mail_driver' => 'Mail Driver',
'mail_host' => 'Mail Host',
'mail_address' => 'Mail From Address',
'mail_username' => 'Mail Username',
'mail_password' => 'Mail Password',
],
// Login form fields
'login' => [
'login' => 'Username or Email',
'email' => 'Email',
'password' => 'Password',
'2fauth' => 'Authentication Code',
'invalid' => 'Invalid username or password',
'invalid-token' => 'Invalid token',
'cookies' => 'You must enable cookies to login.',
'rate-limit' => 'Rate limit exceeded.',
],
// Incidents form fields
'incidents' => [
'name' => 'Name',
'status' => 'Status',
'component' => 'Component',
'message' => 'Message',
'message-help' => 'You may also use Markdown.',
'scheduled_at' => 'When to schedule the maintenance for?',
'incident_time' => 'When did this incident occur?',
'notify_subscribers' => 'Notify subscribers?',
'visibility' => 'Incident Visibility',
'public' => 'Viewable by public',
'logged_in_only' => 'Only visible to logged in users',
'templates' => [
'name' => 'Name',
'template' => 'Template',
'twig' => 'Incident Templates can make use of the <a href="http://twig.sensiolabs.org/" target="_blank">Twig</a> templating language.',
],
],
// Components form fields
'components' => [
'name' => 'Name',
'status' => 'Status',
'group' => 'Group',
'description' => 'Description',
'link' => 'Link',
'tags' => 'Tags',
'tags-help' => 'Comma separated.',
'enabled' => 'Component enabled?',
'groups' => [
'name' => 'Name',
'collapsing' => 'Choose visibility of the group',
'visible' => 'Always expanded',
'collapsed' => 'Collapse the group by default',
'collapsed_incident' => 'Collapse the group, but expand if there are issues',
],
],
// Metric form fields
'metrics' => [
'name' => 'Name',
'suffix' => 'Suffix',
'description' => 'Description',
'description-help' => 'You may also use Markdown.',
'display-chart' => 'Display chart on status page?',
'default-value' => 'Default value',
'calc_type' => 'Calculation of metrics',
'type_sum' => 'Sum',
'type_avg' => 'Average',
'places' => 'Decimal places',
'default_view' => 'Default view',
'threshold' => 'How many minutes of threshold between metric points?',
'points' => [
'value' => 'Value',
],
],
// Settings
'settings' => [
/// Application setup
'app-setup' => [
'site-name' => 'Site Name',
'site-url' => 'Site URL',
'display-graphs' => 'Display graphs on status page?',
'about-this-page' => 'About this page',
'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 .",
'subscribers' => 'Allow people to signup to email notifications?',
'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?',
],
'analytics' => [
'analytics_google' => 'Google Analytics code',
'analytics_gosquared' => 'GoSquared Analytics code',
'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)',
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',
'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.',
],
'stylesheet' => [
'custom-css' => 'Custom Stylesheet',
],
'theme' => [
'background-color' => 'Background Color',
'background-fills' => 'Background fills (components, incidents, footer)',
'banner-background-color' => 'Banner background color',
'banner-padding' => 'Banner padding',
'fullwidth-banner' => 'Enable fullwidth banner?',
'text-color' => 'Text Color',
'dashboard-login' => 'Show dashboard button in the footer?',
'reds' => 'Red (used for errors)',
'blues' => 'Blue (used for information)',
'greens' => 'Green (used for success)',
'yellows' => 'Yellow (used for alerts)',
'oranges' => 'Orange (used for notices)',
'metrics' => 'Metrics fill',
'links' => 'Links',
],
],
'user' => [
'username' => 'Username',
'email' => 'Email',
'password' => 'Password',
'api-token' => 'API Token',
'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.',
'gravatar' => 'Change your profile picture at Gravatar.',
'user_level' => 'User Level',
'levels' => [
'admin' => 'Admin',
'user' => 'User',
],
'2fa' => [
'help' => 'Enabling two factor authentication increases security of your account. You will need to download <a href="https://support.google.com/accounts/answer/1066447?hl=en">Google Authenticator</a> or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.',
],
'team' => [
'description' => 'Invite your team members by entering their email addresses here.',
'email' => 'Email #:id',
],
],
// Buttons
'add' => 'Add',
'save' => 'Save',
'update' => 'Update',
'create' => 'Create',
'edit' => 'Edit',
'delete' => 'Delete',
'submit' => 'Submit',
'cancel' => 'Cancel',
'remove' => 'Remove',
'invite' => 'Invite',
'signup' => 'Sign Up',
// Other
'optional' => '* Optional',
];

View File

@@ -0,0 +1,28 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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' => '&laquo; Previous',
'next' => 'Next &raquo;',
];

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'setup' => 'Setup',
'title' => 'Setup Cachet',
'service_details' => 'Service Details',
'env_setup' => 'Environment Setup',
'status_page_setup' => 'Status Page Setup',
'show_support' => 'Show support for Cachet?',
'admin_account' => 'Administrator Account',
'complete_setup' => 'Complete Setup',
'completed' => 'Cachet has been configured successfully!',
'finish_setup' => 'Go to dashboard',
];

View File

@@ -0,0 +1,122 @@
<?php
/*
* This file is part of Cachet.
*
* (c) Alt Three Services Limited
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
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 a date before :date.',
'file' => 'The :attribute must be between :min and :max.',
'string' => 'The :attribute must be between :min and :max kilobytes.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute must have between :min and :max items.',
'confirmed' => 'The :attribute field must be true or false.',
'date' => 'The :attribute confirmation does not match.',
'date_format' => 'The :attribute is not a valid date.',
'different' => 'The :attribute does not match the format :format.',
'digits' => 'The :attribute and :other must be different.',
'digits_between' => 'The :attribute must be :digits digits.',
'email' => 'The :attribute must be between :min and :max digits.',
'exists' => 'The :attribute must be a valid email address.',
'distinct' => 'The :attribute field has a duplicate value.',
'filled' => 'The :attribute format is invalid.',
'image' => 'The :attribute must be an image.',
'in' => 'The :attribute must be an image.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The selected :attribute is invalid.',
'ip' => 'The :attribute must be an integer.',
'json' => 'The :attribute must be a valid JSON string.',
'max' => [
'numeric' => 'The :attribute must be a valid IP address.',
'file' => 'The :attribute may not be greater than :max.',
'string' => 'The :attribute may not be greater than :max kilobytes.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute may not have more than :max items.',
'min' => [
'numeric' => 'The :attribute must be a file of type: :values.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min kilobytes.',
'array' => 'The :attribute must be at least :min characters.',
],
'not_in' => 'The :attribute must have at least :min items.',
'numeric' => 'The selected :attribute is invalid.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute must be a number.',
'required' => 'The :attribute format is invalid.',
'required_if' => 'The :attribute field is required.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :other is :value.',
'required_with_all' => 'The :attribute field is required when :values is present.',
'required_without' => 'The :attribute field is required when :values is present.',
'required_without_all' => 'The :attribute field is required when :values is not present.',
'same' => 'The :attribute field is required when none of :values are present.',
'size' => [
'numeric' => 'The :attribute and :other must match.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must be :size characters.',
],
'string' => 'The :attribute must contain :size items.',
'timezone' => 'The :attribute must be a valid zone.',
'unique' => 'The :attribute has already been taken.',
'url' => 'The :attribute format is invalid.',
/*
|--------------------------------------------------------------------------
| 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' => [],
];

View File

@@ -103,8 +103,8 @@ return [
'users' => [
'email' => [
'invite' => [
'text' => "Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.\n:link\nΕυχαριστούμε, :app_name",
'html' => '<p>Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.</p><p><a href=":link">:link</a></p><p>Ευχαριστούμε, :app_name</p>',
'text' => "Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.\n:link\nΕυχαριστούμε, :app_name",
'html' => '<p>Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.</p><p><a href=":link">:link</a></p><p>Ευχαριστούμε, :app_name</p>',
],
],
],

View File

@@ -224,7 +224,7 @@ return [
'contributors' => 'Contributors',
'license' => 'Cachet is a BSD-3-licensed open source project, released by <a href="https://alt-three.com/?utm_source=cachet&utm_medium=credits&utm_campaign=Cachet%20Credit%20Dashboard" target="_blank">Alt Three Services Limited</a>.',
'backers-title' => 'Backers & Sponsors',
'backers' => 'If you\'d like to support future development, check out the <a href="https://patreon.com/jbrooksuk" target="_blank">Cachet Patreon</a> campaign.',
'backers' => 'If you\'d like to support future development, check out the CrowdIn and GitHub.',
'thank-you' => 'Thank you to each and every one of the :count contributors.',
],
],
@@ -251,8 +251,6 @@ return [
// Widgets
'widgets' => [
'support' => 'Support Cachet',
'support_subtitle' => 'Check out our <strong><a href="https://patreon.com/jbrooksuk" target="_blank">Patreon</a></strong> page!',
'news' => 'Latest News',
'news_subtitle' => 'Get the latest updates',
],

View File

@@ -118,10 +118,10 @@ return [
'analytics_piwik_siteid' => 'Piwik\'s site id',
],
'localization' => [
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
'site-timezone' => 'Site timezone',
'site-locale' => 'Site language',
'date-format' => 'Date format',
'incident-date-format' => 'Incident timestamp format',
],
'security' => [
'allowed-domains' => 'Allowed domains',

Some files were not shown because too many files have changed in this diff Show More