Compare commits

..

402 Commits

Author SHA1 Message Date
syuilo
1fc9206c6d 6.0.0 2018-08-16 08:02:50 +09:00
syuilo
a8fb0d477f Merge pull request #2251 from syuilo/provide-thumbnails
Provide drive file thumbnails
2018-08-16 07:59:16 +09:00
syuilo
0c372b68d4 Merge pull request #2252 from syuilo/greenkeeper/minio-7.0.0
Update minio to the latest version 🚀
2018-08-16 07:58:56 +09:00
syuilo
e7d9018944 ✌️ 2018-08-16 07:56:53 +09:00
syuilo
ce16884587 Update example.yml 2018-08-16 07:31:58 +09:00
greenkeeper[bot]
3345733d00 fix(package): update minio to version 7.0.0 2018-08-15 22:26:17 +00:00
greenkeeper[bot]
f91cccb6b1 fix(package): update @types/webpack to version 4.4.10 2018-08-16 07:24:19 +09:00
syuilo
6183262037 wip 2018-08-16 07:17:04 +09:00
syuilo
1c7a194950 wip 2018-08-16 06:27:35 +09:00
greenkeeper[bot]
286e15b967 fix(package): update @types/node to version 10.7.1 2018-08-16 06:08:15 +09:00
syuilo
744d366874 Merge pull request #2248 from syuilo/new-kao
Add new kao
2018-08-16 05:17:56 +09:00
Aya Morisawa
afa62d3d44 Add new kao 2018-08-16 05:17:00 +09:00
Aya Morisawa
270c7997c6 Remove trailing comma 2018-08-16 05:15:51 +09:00
Aya Morisawa
fa95641f88 Use Array.prototype.length to avoid magic number 2018-08-16 05:15:06 +09:00
syuilo
aa9fe38c25 Merge pull request #2247 from syuilo/clickable-reaction
Make reactions in reactions-viewer clickable
2018-08-16 05:00:13 +09:00
Aya Morisawa
0d33cbbbbb Make reactions in reactions-viewer clickable 2018-08-16 04:57:09 +09:00
syuilo
bf077da72f Trim code 2018-08-16 04:42:44 +09:00
syuilo
d8f8e19d06 Merge pull request #2246 from mei23/mei-0816-player
動画プレーヤーの修正
2018-08-16 03:17:41 +09:00
mei23
3c3d3e4c0c Fix url-preview.vue 2018-08-16 03:06:59 +09:00
syuilo
0efbeb36df 5.25.0 2018-08-16 01:29:11 +09:00
syuilo
73c396cb39 2018-08-16 01:25:35 +09:00
syuilo
8e75f8a125 Fix 2018-08-16 01:20:52 +09:00
syuilo
e8a7e95c65 Update summaly 2018-08-16 01:17:01 +09:00
syuilo
70a6889fe5 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-16 00:59:54 +09:00
syuilo
6aff7375f6 Update backers 2018-08-16 00:59:48 +09:00
Aya Morisawa
d2ef95a8c3 Make text unclickable 2018-08-16 00:49:40 +09:00
syuilo
1ae51df74a Update .travis.yml 2018-08-16 00:42:20 +09:00
syuilo
3098c6a915 Merge pull request #2242 from syuilo/l10n_master
New Crowdin translations
2018-08-16 00:16:31 +09:00
Aya Morisawa
ab3f8fd10c Enhance log message 2018-08-16 00:13:24 +09:00
Aya Morisawa
4bdef3720c Update setup.en.md 2018-08-15 23:55:30 +09:00
syuilo
c02cecc9e5 New translations ja.yml (English) 2018-08-15 23:30:49 +09:00
syuilo
08b431723a Refactoring 2018-08-15 20:27:49 +09:00
syuilo
83dcfec053 Improve MFM 2018-08-15 20:27:36 +09:00
syuilo
69ac7b739f Improve MFM 2018-08-15 20:23:50 +09:00
syuilo
9ccf9a2496 Fix #2229 2018-08-15 20:20:46 +09:00
syuilo
78563ef9a0 Fix #2228 2018-08-15 20:09:56 +09:00
syuilo
019d157b92 Merge pull request #2198 from syuilo/l10n_master
New Crowdin translations
2018-08-15 19:48:03 +09:00
syuilo
14de35e3f5 Merge pull request #2234 from acid-chicken/patch-player
Update player whitelist
2018-08-15 19:04:31 +09:00
Acid Chicken (硫酸鶏)
a860479e88 Update url-preview.vue 2018-08-15 19:00:44 +09:00
Acid Chicken (硫酸鶏)
b351b3fae5 Update url-preview.vue 2018-08-15 18:49:05 +09:00
syuilo
89918a9f79 New translations ja.yml (English) 2018-08-15 17:08:24 +09:00
syuilo
cadd020915 New translations ja.yml (English) 2018-08-15 16:51:16 +09:00
syuilo
e80933b8ae New translations ja.yml (English) 2018-08-15 16:40:52 +09:00
syuilo
4c0832884f New translations ja.yml (English) 2018-08-15 16:30:48 +09:00
syuilo
e4ca940979 New translations ja.yml (English) 2018-08-15 16:20:51 +09:00
syuilo
3fd9be3967 New translations ja.yml (English) 2018-08-15 16:13:11 +09:00
syuilo
79ec7aba1d New translations ja.yml (English) 2018-08-15 13:40:56 +09:00
syuilo
42b1f7eddd New translations ja.yml (English) 2018-08-15 11:30:56 +09:00
syuilo
889a73caa4 New translations ja.yml (Catalan) 2018-08-15 11:11:41 +09:00
syuilo
c34a89e962 New translations ja.yml (Portuguese) 2018-08-15 11:11:39 +09:00
syuilo
2b4bf681e5 New translations ja.yml (Korean) 2018-08-15 11:11:36 +09:00
syuilo
d1d59e3557 New translations ja.yml (Polish) 2018-08-15 11:11:34 +09:00
syuilo
668c21830c New translations ja.yml (Chinese Simplified) 2018-08-15 11:11:31 +09:00
syuilo
7c37ed07f8 New translations ja.yml (Italian) 2018-08-15 11:11:29 +09:00
syuilo
a135d8fd59 New translations ja.yml (Russian) 2018-08-15 11:11:27 +09:00
syuilo
0db9aae162 New translations ja.yml (English) 2018-08-15 11:11:25 +09:00
syuilo
1875c362af New translations ja.yml (Spanish) 2018-08-15 11:11:23 +09:00
syuilo
9b36dd9565 New translations ja.yml (German) 2018-08-15 11:11:21 +09:00
syuilo
69452a27de New translations ja.yml (French) 2018-08-15 11:11:18 +09:00
syuilo
6aa5c5895f Merge pull request #2219 from syuilo/patch-2215
Resolve #2215
2018-08-15 11:07:07 +09:00
syuilo
12f20c67b1 New translations ja.yml (English) 2018-08-15 09:21:05 +09:00
syuilo
66b8e5647d New translations ja.yml (English) 2018-08-15 09:11:16 +09:00
syuilo
188a23fec7 New translations ja.yml (English) 2018-08-15 09:01:12 +09:00
syuilo
b408b45000 New translations ja.yml (English) 2018-08-15 08:55:29 +09:00
Aya Morisawa
c53cb94250 Resolve #2215 2018-08-15 06:50:49 +09:00
syuilo
ba2eeabe38 Merge pull request #2216 from syuilo/patch-2201
Resolve #2201
2018-08-15 04:46:52 +09:00
Aya Morisawa
259fac224e Resolve #2201 2018-08-15 04:44:39 +09:00
syuilo
aad5440c9e New translations ja.yml (English) 2018-08-15 04:41:14 +09:00
syuilo
5c40f0010f New translations ja.yml (English) 2018-08-15 04:31:06 +09:00
syuilo
fb1d181424 New translations ja.yml (English) 2018-08-15 04:21:29 +09:00
syuilo
12cbd8ef5b New translations ja.yml (English) 2018-08-15 04:11:22 +09:00
syuilo
cfc4385d1f New translations ja.yml (English) 2018-08-15 04:00:59 +09:00
syuilo
880ef024d0 New translations ja.yml (English) 2018-08-15 03:51:09 +09:00
syuilo
c6c6edbc0a New translations ja.yml (English) 2018-08-15 03:41:21 +09:00
syuilo
83ba951bf9 5.24.1 2018-08-15 02:38:47 +09:00
syuilo
9c22b1a68a Fix 2018-08-15 02:35:25 +09:00
syuilo
cd6a1d3446 5.24.0 2018-08-15 02:14:57 +09:00
syuilo
4a9fc0c8ed Better query 2018-08-15 02:08:18 +09:00
syuilo
fada899b30 Merge pull request #2210 from mei23/mei-0814-ap3
ActivityPub Followers/Following/Outbox の実装
2018-08-15 02:04:08 +09:00
syuilo
22b099fa8a Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-15 02:01:52 +09:00
syuilo
e0bc0d2830 Add new kao 2018-08-15 02:01:49 +09:00
greenkeeper[bot]
90768d30aa fix(package): update seedrandom to version 2.4.4 2018-08-15 01:53:48 +09:00
greenkeeper[bot]
177c549493 fix(package): update url-loader to version 1.1.0 2018-08-15 01:53:40 +09:00
syuilo
5e1ee68189 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-15 01:51:46 +09:00
syuilo
175f6303bc Update theme color 2018-08-15 01:51:43 +09:00
syuilo
cf9f2a5562 Merge pull request #2211 from skid9000/patch-2
Update doc for twitter integration.
2018-08-14 22:55:02 +09:00
Skid
f04526baca Update example.yml 2018-08-14 15:45:36 +02:00
Skid
f085ecedb3 Update setup.en.md 2018-08-14 15:41:55 +02:00
mei23
0986301788 Implement ActivityPub Followers/Following/Outbox 2018-08-14 20:13:32 +09:00
greenkeeper[bot]
fe418d8d9a fix(package): update @types/ws to version 6.0.0 2018-08-14 17:07:35 +09:00
greenkeeper[bot]
6009be34dc fix(package): update @types/node to version 10.7.0 2018-08-14 17:07:23 +09:00
greenkeeper[bot]
01a0a54a2c fix(package): update @types/mongodb to version 3.1.4 2018-08-14 17:07:15 +09:00
greenkeeper[bot]
cfcaf77e21 fix(package): update mongodb to version 3.1.3 2018-08-14 17:07:07 +09:00
greenkeeper[bot]
3b37bdc0b9 fix(package): update vue-style-loader to version 4.1.2 2018-08-14 17:06:54 +09:00
syuilo
ec07112f94 Fix bug 2018-08-14 16:53:57 +09:00
syuilo
464faf2673 Merge pull request #2200 from syuilo/use-deque
Use deque instead of linked list
2018-08-14 08:22:23 +09:00
Aya Morisawa
bde20a1a65 Use deque instead of linked list 2018-08-14 08:21:25 +09:00
syuilo
86c7276da9 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-14 08:16:24 +09:00
syuilo
fec988bb79 Provide isFirstNote flag 2018-08-14 08:16:21 +09:00
syuilo
0702d0974b Merge pull request #2199 from syuilo/patch-2176
Resolve #2176
2018-08-14 07:51:45 +09:00
Aya Morisawa
f443d36dbb Resolve #2176 2018-08-14 07:49:59 +09:00
syuilo
5477f0a865 New translations ja.yml (English) 2018-08-14 05:42:07 +09:00
Aya Morisawa
dc02168f33 Merge #2182 2018-08-14 05:25:02 +09:00
Aya Morisawa
cc5c32b4d2 Clean up 2018-08-14 05:24:51 +09:00
syuilo
a35680a838 New translations ja.yml (Catalan) 2018-08-14 04:52:05 +09:00
syuilo
770cba73a6 New translations ja.yml (Portuguese) 2018-08-14 04:52:03 +09:00
syuilo
401fc758fd New translations ja.yml (Korean) 2018-08-14 04:52:01 +09:00
syuilo
e8503e6351 New translations ja.yml (Polish) 2018-08-14 04:51:58 +09:00
syuilo
de23753409 New translations ja.yml (Chinese Simplified) 2018-08-14 04:51:56 +09:00
syuilo
4857d86cdd New translations ja.yml (Italian) 2018-08-14 04:51:54 +09:00
syuilo
dc4a072678 New translations ja.yml (Russian) 2018-08-14 04:51:52 +09:00
syuilo
c6ee5ccd88 New translations ja.yml (English) 2018-08-14 04:51:50 +09:00
syuilo
68b630cb37 New translations ja.yml (Spanish) 2018-08-14 04:51:48 +09:00
syuilo
94c0238d3a New translations ja.yml (German) 2018-08-14 04:51:45 +09:00
syuilo
dbea387433 New translations ja.yml (French) 2018-08-14 04:51:43 +09:00
syuilo
d35f62d0e4 Merge pull request #2195 from syuilo/instance-management-system
管理画面
2018-08-14 04:42:16 +09:00
Aya Morisawa
09b8e81a77 wip 2018-08-14 04:39:37 +09:00
Aya Morisawa
3b38979a34 wip 2018-08-14 04:30:42 +09:00
greenkeeper[bot]
0fd8c86c24 fix(package): update mongodb to version 3.1.2 2018-08-14 03:38:01 +09:00
syuilo
58d0ed1a2e 5.23.2 2018-08-14 02:36:06 +09:00
syuilo
8939452036 Merge pull request #2192 from acid-chicken/acid-chicken-patch-3
Re: Re: Fix #2177
2018-08-14 02:31:00 +09:00
Acid Chicken (硫酸鶏)
a2931d6f7e Update ui.header.vue 2018-08-14 02:26:58 +09:00
Acid Chicken (硫酸鶏)
38b75ad977 Update avatar.vue 2018-08-14 02:10:06 +09:00
syuilo
dc4f585954 Merge pull request #2191 from syuilo/greenkeeper/parse5-5.1.0
Update parse5 to the latest version 🚀
2018-08-14 01:58:01 +09:00
syuilo
1fbe5365f7 Update example.yml 2018-08-14 01:57:52 +09:00
greenkeeper[bot]
04257db938 fix(package): update parse5 to version 5.1.0 2018-08-13 16:54:58 +00:00
Aya Morisawa
ba08d1aa53 wip 2018-08-14 01:48:11 +09:00
syuilo
c29cb5bfb9 Update package.json 2018-08-14 01:38:29 +09:00
Aya Morisawa
fb1e2efbdd wip 2018-08-14 01:37:23 +09:00
syuilo
131a454e7c Merge pull request #2190 from mei23/mei-apsendvis2
ActivityPub送信時の公開範囲の実装
2018-08-14 01:36:56 +09:00
Aya Morisawa
92e5cff285 wip 2018-08-14 01:35:36 +09:00
syuilo
b24e32e14e 5.23.0 2018-08-14 01:32:49 +09:00
syuilo
943805bdcd Merge pull request #2180 from syuilo/l10n_master
New Crowdin translations
2018-08-14 01:32:11 +09:00
Aya Morisawa
ba9340a26b wip 2018-08-14 01:24:46 +09:00
Aya Morisawa
00119328f2 wip 2018-08-14 01:19:05 +09:00
syuilo
a73c65da07 New translations ja.yml (French) 2018-08-14 01:11:32 +09:00
syuilo
9021bb5694 wip 2018-08-14 01:05:58 +09:00
syuilo
a3cf63823f Merge pull request #2189 from syuilo/patch-1
Hide unimplemented button
2018-08-13 23:53:15 +09:00
Acid Chicken (硫酸鶏)
f15878cc6f Update avatar.vue
refs: https://github.com/syuilo/misskey/pull/2182#discussion_r209609541
2018-08-13 22:49:32 +09:00
Aya Morisawa
33469ff87a Hide Unimplemented button 2018-08-13 22:08:59 +09:00
syuilo
23b0723168 Merge pull request #2188 from Tosuke/patch1
Create apps without authentication(#2025)
2018-08-13 12:38:02 +09:00
Tosuke
fda1ab3e05 Create apps without authentication(#2025) 2018-08-13 12:30:32 +09:00
syuilo
490c05a869 New translations ja.yml (English) 2018-08-13 06:32:08 +09:00
syuilo
f0137daebe New translations ja.yml (English) 2018-08-13 04:51:11 +09:00
syuilo
b9fc0e6d71 Merge pull request #2183 from acid-chicken/patch-1
Make player height taller
2018-08-13 04:42:49 +09:00
Acid Chicken (硫酸鶏)
979efee412 Update url-preview.vue 2018-08-13 04:41:12 +09:00
mei23
f079041827 ActivityPub visibility on send 2018-08-13 03:49:17 +09:00
Acid Chicken (硫酸鶏)
4edd9efc0b Update avatar.vue
refs: https://github.com/syuilo/misskey/pull/2182#discussion_r209464350
2018-08-13 03:47:56 +09:00
Acid Chicken (硫酸鶏)
2913c7ccfb Update avatar.vue 2018-08-13 03:42:12 +09:00
Acid Chicken (硫酸鶏)
e1f460f90f Update user.header.vue 2018-08-13 03:40:50 +09:00
Acid Chicken (硫酸鶏)
70f927ea43 Update avatar.vue 2018-08-13 03:39:32 +09:00
Acid Chicken (硫酸鶏)
80d343bb0b Update avatar.vue 2018-08-13 03:36:42 +09:00
syuilo
9e41fddea3 Merge pull request #2130 from acid-chicken/patch-player
WIP: Add player
2018-08-13 03:25:22 +09:00
Acid Chicken (硫酸鶏)
8384efc8c7 Create whitelist 2018-08-13 03:23:36 +09:00
syuilo
7797c86581 Merge pull request #2181 from acid-chicken/patch-1
Re: Fix #2177
2018-08-13 01:59:11 +09:00
Acid Chicken (硫酸鶏)
4da8cc478f Update ui.header.vue 2018-08-13 01:58:15 +09:00
syuilo
285deeec52 New translations ja.yml (Catalan) 2018-08-13 01:31:20 +09:00
syuilo
2916e49422 New translations ja.yml (Portuguese) 2018-08-13 01:31:18 +09:00
syuilo
41e5b9134b New translations ja.yml (Korean) 2018-08-13 01:31:16 +09:00
syuilo
d0d853dcb2 New translations ja.yml (Polish) 2018-08-13 01:31:13 +09:00
syuilo
be46c7e4c5 New translations ja.yml (Chinese Simplified) 2018-08-13 01:31:11 +09:00
syuilo
8e0f41d608 New translations ja.yml (Italian) 2018-08-13 01:31:09 +09:00
syuilo
a7b438072c New translations ja.yml (Russian) 2018-08-13 01:31:06 +09:00
syuilo
99958e2fce New translations ja.yml (English) 2018-08-13 01:31:04 +09:00
syuilo
b82843d359 New translations ja.yml (Spanish) 2018-08-13 01:31:02 +09:00
syuilo
4dfc2dfa89 New translations ja.yml (German) 2018-08-13 01:30:59 +09:00
syuilo
50c945607f New translations ja.yml (French) 2018-08-13 01:30:57 +09:00
syuilo
01f28b21dd #1211 2018-08-13 01:25:50 +09:00
syuilo
2cb39a8882 Fix #2097 2018-08-13 00:59:36 +09:00
Aya Morisawa
6ddb6bc160 Add .vsls.json 2018-08-13 00:24:45 +09:00
Acid Chicken (硫酸鶏)
92befbb4cc Fix #2177
Resolves #2177
2018-08-13 00:18:02 +09:00
syuilo
ab701bb93e Merge pull request #2159 from syuilo/l10n_master
New Crowdin translations
2018-08-12 23:53:22 +09:00
greenkeeper[bot]
7f9a88fd1c fix(package): update vue-js-modal to version 1.3.17 2018-08-12 23:13:52 +09:00
mei23
c5073b33ef Fix ActivityPub followers/specified detection 2018-08-12 20:37:35 +09:00
greenkeeper[bot]
765b922a8b fix(package): update ts-node to version 7.0.1 2018-08-12 16:22:43 +09:00
syuilo
9b7d6274fa New translations ja.yml (French) 2018-08-12 07:40:57 +09:00
syuilo
26b384aef1 New translations ja.yml (French) 2018-08-12 07:30:58 +09:00
syuilo
0b1e5e3e08 New translations ja.yml (French) 2018-08-12 07:20:58 +09:00
syuilo
5b7506756e New translations ja.yml (French) 2018-08-12 07:11:02 +09:00
Aya Morisawa
1f28a0dfeb Improve nya 2018-08-12 05:20:31 +09:00
mei23
f56ec82f6b Fix ActivityPub attachment url 2018-08-12 04:42:14 +09:00
syuilo
8ccbabf5ca 5.22.1 2018-08-12 03:09:45 +09:00
syuilo
7c763600b7 Fix #2162 2018-08-12 03:09:22 +09:00
syuilo
499491003b New translations ja.yml (Polish) 2018-08-12 00:31:30 +09:00
Aya Morisawa
3a77d871d5 Stop supporting docker 2018-08-12 00:30:58 +09:00
Aya Morisawa
4ee6d0b549 Refactoring (#2160) 2018-08-12 00:01:07 +09:00
syuilo
64aa733b16 New translations ja.yml (Polish) 2018-08-11 22:51:08 +09:00
syuilo
c8c4ec6ad4 5.22.0 2018-08-11 21:35:22 +09:00
syuilo
c9ee737078 Fix bug 2018-08-11 21:34:12 +09:00
syuilo
ebc2cca0b4 New Crowdin translations (#2158) 2018-08-11 21:29:07 +09:00
syuilo
fc94df06eb New Crowdin translations (#2157) 2018-08-11 21:13:38 +09:00
syuilo
190a03103e New translations ja.yml (Catalan) 2018-08-11 21:11:31 +09:00
syuilo
0d75ae9d9a New translations ja.yml (Portuguese) 2018-08-11 21:11:29 +09:00
syuilo
3129f8f073 New translations ja.yml (Korean) 2018-08-11 21:11:27 +09:00
syuilo
7f751d3f20 New translations ja.yml (Polish) 2018-08-11 21:11:25 +09:00
syuilo
0b5b834f8b New translations ja.yml (Chinese Simplified) 2018-08-11 21:11:23 +09:00
syuilo
0f649f7d37 New translations ja.yml (Italian) 2018-08-11 21:11:21 +09:00
syuilo
a1b100d412 New translations ja.yml (Russian) 2018-08-11 21:11:19 +09:00
syuilo
dd4ee1627e New translations ja.yml (English) 2018-08-11 21:11:16 +09:00
syuilo
1da0fdcf78 New translations ja.yml (Spanish) 2018-08-11 21:11:14 +09:00
syuilo
800eec73b8 New translations ja.yml (German) 2018-08-11 21:11:12 +09:00
syuilo
166cb5e179 New translations ja.yml (French) 2018-08-11 21:11:10 +09:00
syuilo
4a5e145048 Add new reaction: rip 😇 2018-08-11 21:08:34 +09:00
syuilo
be68f42220 Implement messaging/messages/read 2018-08-11 21:01:39 +09:00
syuilo
7942aa677f Update doc 2018-08-11 21:01:26 +09:00
syuilo
2fcf9288a5 Refactoring 2018-08-11 20:53:03 +09:00
MeiMei
9bc17974f2 未利用時はTwitterでログインを表示しない (#2156) 2018-08-11 20:20:35 +09:00
Acid Chicken (硫酸鶏)
19c872a1f3 Update url-preview.vue 2018-08-11 19:56:53 +09:00
Acid Chicken (硫酸鶏)
9252c59d90 Merge branch 'master' into patch-player 2018-08-11 19:56:05 +09:00
MeiMei
a8f142096c Cache failed url-preview (apply to proxy/client) (#2154) 2018-08-11 18:04:59 +09:00
syuilo
3c90abfb96 5.21.0 2018-08-11 12:24:16 +09:00
greenkeeper[bot]
12037fab9b fix(package): update @types/node to version 10.5.8 (#2152) 2018-08-11 12:21:42 +09:00
greenkeeper[bot]
73cc425093 fix(package): update request to version 2.88.0 (#2151) 2018-08-11 12:21:30 +09:00
syuilo
5c97da935d New Crowdin translations (#2150) 2018-08-11 12:21:18 +09:00
syuilo
0b154ac7ba Merge branch 'master' into l10n_master 2018-08-11 12:21:06 +09:00
syuilo
d4eb0c8df9 New translations ja.yml (Spanish) 2018-08-11 01:42:11 +09:00
syuilo
5ba6f20701 New translations ja.yml (Spanish) 2018-08-11 01:31:44 +09:00
syuilo
695a082582 New translations ja.yml (Spanish) 2018-08-11 01:21:58 +09:00
syuilo
a52c588f49 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-11 00:49:31 +09:00
syuilo
fa469725c7 Add doc 2018-08-11 00:49:29 +09:00
greenkeeper[bot]
a1f0cb1bc7 fix(package): update summaly to version 2.1.2 (#2149) 2018-08-11 00:44:26 +09:00
greenkeeper[bot]
fbbd33ded2 fix(package): update file-type to version 9.0.0 2018-08-10 20:44:03 +09:00
greenkeeper[bot]
9658e2b3fb fix(package): update element-ui to version 2.4.6 2018-08-10 20:43:56 +09:00
MeiMei
3d10b19727 Fix Powered by <b>Misskey</b>. (#2140) 2018-08-10 20:11:54 +09:00
syuilo
ab7725ff69 良い感じにした 2018-08-10 14:33:34 +09:00
syuilo
6372451d17 Fix bug 2018-08-10 14:15:12 +09:00
syuilo
2c11cc3f0a 5.20.1 2018-08-10 01:04:40 +09:00
greenkeeper[bot]
7f65f896f9 fix(package): update summaly to version 2.1.1 (#2135) 2018-08-10 01:02:20 +09:00
syuilo
def823ceea Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-10 00:51:43 +09:00
syuilo
454d294cf3 Fix #2133 など 2018-08-10 00:51:40 +09:00
greenkeeper[bot]
1affdbdbab fix(package): update node-sass to version 4.9.3 (#2131) 2018-08-10 00:25:25 +09:00
greenkeeper[bot]
52286f4be8 fix(package): update summaly to version 2.1.0 (#2132) 2018-08-10 00:25:16 +09:00
Acid Chicken (硫酸鶏)
1b9f293959 Update url-preview.vue
多分もう折り返す必要はないのだわ
2018-08-09 23:34:54 +09:00
Acid Chicken (硫酸鶏)
7289d5b401 Add player 2018-08-09 16:44:34 +09:00
syuilo
01d3f5f09d 5.20.0 2018-08-09 04:35:17 +09:00
syuilo
4333ff00a0 New Crowdin translations (#2116) 2018-08-09 04:34:21 +09:00
syuilo
25b88afbb7 Merge pull request #2127 from acid-chicken/acid-chicken-patch-3
Fix bug
2018-08-09 04:22:36 +09:00
Acid Chicken (硫酸鶏)
6a92c19227 Update url-preview.vue 2018-08-09 04:21:25 +09:00
syuilo
5bdbf98f8c New translations ja.yml (English) 2018-08-09 04:21:24 +09:00
syuilo
56b69b5fb7 Merge pull request #2126 from acid-chicken/acid-chicken-patch-2
ニコニコ動画
2018-08-09 04:07:33 +09:00
Acid Chicken (硫酸鶏)
ebf0479ecc Update url-preview.vue 2018-08-09 04:05:28 +09:00
syuilo
196c55edbc Merge pull request #2125 from acid-chicken/acid-chicken-patch-2
Spotify
2018-08-09 03:32:55 +09:00
Acid Chicken (硫酸鶏)
e724c1e7e8 Update url-preview.vue 2018-08-09 03:32:09 +09:00
syuilo
4e915e96a5 New translations ja.yml (French) 2018-08-09 02:52:24 +09:00
syuilo
e148f6ce5e New translations ja.yml (French) 2018-08-09 02:41:44 +09:00
syuilo
652d7d2c05 New translations ja.yml (French) 2018-08-09 02:36:35 +09:00
syuilo
0b0111fe23 New translations ja.yml (French) 2018-08-09 02:31:11 +09:00
greenkeeper[bot]
869c19c666 fix(package): update style-loader to version 0.22.1 2018-08-09 00:59:39 +09:00
syuilo
86a5f715d3 Merge pull request #2121 from syuilo/greenkeeper/systeminformation-3.42.9
Update systeminformation to the latest version 🚀
2018-08-08 23:18:27 +09:00
syuilo
514aeac2d8 Merge pull request #2120 from syuilo/greenkeeper/vue-loader-15.3.0
Update vue-loader to the latest version 🚀
2018-08-08 23:18:16 +09:00
syuilo
8980a26713 Merge pull request #2119 from syuilo/greenkeeper/style-loader-0.22.0
Update style-loader to the latest version 🚀
2018-08-08 23:18:06 +09:00
syuilo
a39e2b28d1 Merge pull request #2118 from syuilo/greenkeeper/commander-2.17.1
Update commander to the latest version 🚀
2018-08-08 23:17:53 +09:00
greenkeeper[bot]
bef617cb7c fix(package): update systeminformation to version 3.42.9 2018-08-08 05:13:03 +00:00
greenkeeper[bot]
1dc1feca0f fix(package): update vue-loader to version 15.3.0 2018-08-07 21:34:59 +00:00
syuilo
5d097fb29d New translations ja.yml (French) 2018-08-08 00:51:48 +09:00
syuilo
f29fe986af New translations ja.yml (French) 2018-08-08 00:43:05 +09:00
syuilo
0c774979c0 New translations ja.yml (French) 2018-08-08 00:32:08 +09:00
syuilo
f0bc2ed1d7 New translations ja.yml (French) 2018-08-08 00:22:38 +09:00
syuilo
b174e5e57a New translations ja.yml (English) 2018-08-07 23:21:52 +09:00
greenkeeper[bot]
90eed0ea0d fix(package): update style-loader to version 0.22.0 2018-08-07 13:13:16 +00:00
syuilo
ae50b71c07 New translations ja.yml (Polish) 2018-08-07 20:53:54 +09:00
greenkeeper[bot]
c730e5edfa fix(package): update commander to version 2.17.1 2018-08-07 11:23:35 +00:00
syuilo
b2eb50f260 New translations ja.yml (Catalan) 2018-08-07 13:31:40 +09:00
syuilo
790c7f2249 New translations ja.yml (Portuguese) 2018-08-07 13:31:38 +09:00
syuilo
6a0f34c283 New translations ja.yml (Korean) 2018-08-07 13:31:36 +09:00
syuilo
d151445db7 New translations ja.yml (Polish) 2018-08-07 13:31:34 +09:00
syuilo
18a3007273 New translations ja.yml (Chinese Simplified) 2018-08-07 13:31:31 +09:00
syuilo
bea8c3c65c New translations ja.yml (Italian) 2018-08-07 13:31:29 +09:00
syuilo
391ee01fe3 New translations ja.yml (Russian) 2018-08-07 13:31:26 +09:00
syuilo
be7cf9f731 New translations ja.yml (English) 2018-08-07 13:31:24 +09:00
syuilo
b92c2aa40e New translations ja.yml (Spanish) 2018-08-07 13:31:21 +09:00
syuilo
45ebcbf785 New translations ja.yml (German) 2018-08-07 13:31:19 +09:00
syuilo
5f32484be0 New translations ja.yml (French) 2018-08-07 13:31:17 +09:00
syuilo
7bd33ecc72 ✌️ 2018-08-07 13:25:50 +09:00
syuilo
e245122f12 New translations ja.yml (English) 2018-08-07 12:41:03 +09:00
syuilo
d4f7058574 🍕 2018-08-07 12:37:17 +09:00
syuilo
21570e2111 New translations ja.yml (Catalan) 2018-08-07 11:12:10 +09:00
syuilo
63e1165a01 New translations ja.yml (Portuguese) 2018-08-07 11:12:07 +09:00
syuilo
89b5a69127 New translations ja.yml (Korean) 2018-08-07 11:12:04 +09:00
syuilo
1152a9d03a New translations ja.yml (Polish) 2018-08-07 11:12:02 +09:00
syuilo
10092d4570 New translations ja.yml (Chinese Simplified) 2018-08-07 11:12:00 +09:00
syuilo
429b4bec64 New translations ja.yml (Italian) 2018-08-07 11:11:58 +09:00
syuilo
99f96583b6 New translations ja.yml (Russian) 2018-08-07 11:11:56 +09:00
syuilo
5adb765f85 New translations ja.yml (English) 2018-08-07 11:11:54 +09:00
syuilo
0eb787e0d0 New translations ja.yml (Spanish) 2018-08-07 11:11:52 +09:00
syuilo
4493c856a9 New translations ja.yml (German) 2018-08-07 11:11:50 +09:00
syuilo
59d3d4a749 New translations ja.yml (French) 2018-08-07 11:11:47 +09:00
syuilo
980ae3dcb3 Merge pull request #2114 from gutfuckllc/devel
Localized all hiragana lines.
2018-08-07 11:09:55 +09:00
syuilo
3a76113b78 Merge pull request #2109 from syuilo/l10n_master
New Crowdin translations
2018-08-07 11:09:34 +09:00
syuilo
ec8105b2ae Merge pull request #2112 from syuilo/greenkeeper/@types/node-10.5.7
Update @types/node to the latest version 🚀
2018-08-07 11:09:16 +09:00
syuilo
bf05785345 Merge pull request #2110 from syuilo/greenkeeper/typescript-eslint-parser-18.0.0
Update typescript-eslint-parser to the latest version 🚀
2018-08-07 11:09:07 +09:00
syuilo
82346d788b Merge pull request #2115 from syuilo/greenkeeper/vue-loader-15.2.7
Update vue-loader to the latest version 🚀
2018-08-07 11:08:46 +09:00
greenkeeper[bot]
d86cfa86e4 fix(package): update vue-loader to version 15.2.7 2018-08-07 02:05:20 +00:00
gutfuckllc
b85f13dad3 Localize mobile search.vue 2018-08-06 21:06:09 -04:00
gutfuckllc
eb8c3fe884 Localize a dev file 2018-08-06 21:03:24 -04:00
gutfuckllc
ff325d9588 Localized annotations line 2018-08-06 21:00:58 -04:00
gutfuckllc
a98392ff27 Localize "only one file attached" popup 2018-08-06 20:57:14 -04:00
greenkeeper[bot]
22b8aab7a0 fix(package): update @types/node to version 10.5.7 2018-08-06 22:08:57 +00:00
gutfuckllc
24de518922 Localized 2 missing lines for mobile widgets.vue 2018-08-06 16:08:54 -04:00
gutfuckllc
a169c7756f Added more close buttons 2018-08-06 16:05:48 -04:00
gutfuckllc
249a7f4f68 Slight reordering 2018-08-06 16:05:32 -04:00
gutfuckllc
4f590e0a96 Localized adjective 2018-08-06 16:04:20 -04:00
gutfuckllc
f5b5b290e4 Localized copy-paste message (added common) 2018-08-06 16:02:53 -04:00
gutfuckllc
1f75cf4ace Localize missing line 2018-08-06 16:00:12 -04:00
gutfuckllc
1e4f11a979 Localize japanese adjective. 2018-08-06 15:58:09 -04:00
gutfuckllc
be12e23aa1 Localize unlocalized line. 2018-08-06 15:55:39 -04:00
gutfuckllc
790e6ceca4 Localize unlocalized line 2018-08-06 15:53:21 -04:00
gutfuckllc
a303d52990 Fix typo 2018-08-06 15:53:06 -04:00
greenkeeper[bot]
096fab575c fix(package): update typescript-eslint-parser to version 18.0.0 2018-08-06 19:52:58 +00:00
gutfuckllc
a256393b81 Merge remote-tracking branch 'upstream/master' into devel 2018-08-06 15:45:52 -04:00
syuilo
e8eee9057a New translations ja.yml (Spanish) 2018-08-07 03:51:39 +09:00
syuilo
d81acae17e 5.19.0 2018-08-07 03:33:21 +09:00
syuilo
313715bc75 Merge pull request #2108 from syuilo/l10n_master
New Crowdin translations
2018-08-07 03:32:25 +09:00
syuilo
94dabd2038 New translations ja.yml (English) 2018-08-07 03:31:58 +09:00
syuilo
a3d58e5bc7 New translations ja.yml (Catalan) 2018-08-07 03:22:45 +09:00
syuilo
bfdfd026a2 New translations ja.yml (Portuguese) 2018-08-07 03:22:43 +09:00
syuilo
b713f06599 New translations ja.yml (Korean) 2018-08-07 03:22:41 +09:00
syuilo
2172c5edca New translations ja.yml (Polish) 2018-08-07 03:22:39 +09:00
syuilo
9bc0cfacfa New translations ja.yml (Chinese Simplified) 2018-08-07 03:22:37 +09:00
syuilo
546cfeadbe New translations ja.yml (Italian) 2018-08-07 03:22:33 +09:00
syuilo
2413583ce9 New translations ja.yml (Russian) 2018-08-07 03:22:30 +09:00
syuilo
d7510491a5 New translations ja.yml (English) 2018-08-07 03:22:28 +09:00
syuilo
61db07edf4 New translations ja.yml (Spanish) 2018-08-07 03:22:25 +09:00
syuilo
5c3ac8f952 New translations ja.yml (German) 2018-08-07 03:22:22 +09:00
syuilo
5bfcb75ec3 New translations ja.yml (French) 2018-08-07 03:22:18 +09:00
syuilo
d733a1b445 i18n 2018-08-07 03:20:26 +09:00
syuilo
75c44cd349 Merge pull request #2107 from syuilo/l10n_master
New Crowdin translations
2018-08-07 00:28:13 +09:00
syuilo
f4d247cfae New translations ja.yml (English) 2018-08-07 00:21:42 +09:00
syuilo
4260ec713f Improve error handling 2018-08-06 21:48:23 +09:00
syuilo
99f4ab7000 ✌️ 2018-08-06 21:35:49 +09:00
syuilo
b6157e0012 5.18.0 2018-08-06 18:30:19 +09:00
syuilo
4405c19852 Merge pull request #2104 from syuilo/greenkeeper/webpack-4.16.5
Update webpack to the latest version 🚀
2018-08-06 18:29:07 +09:00
syuilo
5f208a7d99 ユーザー検索APIを統合 2018-08-06 18:28:27 +09:00
greenkeeper[bot]
2ec4cc9a07 fix(package): update webpack to version 4.16.5 2018-08-06 07:19:30 +00:00
gutfuckllc
06390380f8 Translated mute. 2018-08-06 03:18:52 -04:00
gutfuckllc
752186066b Merge remote-tracking branch 'upstream/master' into devel 2018-08-05 16:54:54 -04:00
syuilo
10f9549a04 非公開の投稿に自分以外が返信したりRenoteしたりできないように 2018-08-06 04:38:31 +09:00
syuilo
84a4174883 削除された投稿に返信したりRenoteしたりできないように 2018-08-06 04:07:22 +09:00
syuilo
ee765d0812 Fix test 2018-08-06 00:31:09 +09:00
syuilo
1ccd2def50 5.17.0 2018-08-06 00:15:13 +09:00
syuilo
0d9782571f 🎨 2018-08-06 00:09:21 +09:00
syuilo
973018fc98 Merge pull request #2095 from syuilo/l10n_master
New Crowdin translations
2018-08-06 00:01:17 +09:00
syuilo
d0926a3ba1 MFMの((()))構文が顔文字と競合する対策としてタグ形式の構文も追加 2018-08-05 23:56:08 +09:00
syuilo
be67f5f422 🎨 2018-08-05 23:38:31 +09:00
syuilo
b70b607c4f New translations ja.yml (Polish) 2018-08-05 22:00:49 +09:00
syuilo
2bd38fa052 New translations ja.yml (Polish) 2018-08-05 21:51:12 +09:00
syuilo
43b6140dbe Fix bug 2018-08-05 21:03:52 +09:00
syuilo
813804a43e 5.16.0 2018-08-05 21:01:03 +09:00
syuilo
bec9604445 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-05 20:57:27 +09:00
syuilo
2e454dad2d 🎨 2018-08-05 20:57:24 +09:00
syuilo
7d64435e56 Merge pull request #2091 from syuilo/l10n_master
New Crowdin translations
2018-08-05 19:42:59 +09:00
syuilo
6ef28214df ひとつの投稿内で使えるそれぞれの動きのあるMFM構文は3回までに制限 2018-08-05 19:36:19 +09:00
syuilo
5bbc95d659 文字数が多い場合は動きを無効に 2018-08-05 19:20:26 +09:00
syuilo
83794f254c New translations ja.yml (French) 2018-08-05 16:31:14 +09:00
syuilo
005d25a07b Fix test 2018-08-05 13:50:49 +09:00
syuilo
255222bfb4 5.15.0 2018-08-05 13:47:51 +09:00
syuilo
9e5e3c2f2e ✌️ 2018-08-05 13:44:44 +09:00
syuilo
5bd80f115f Merge pull request #2089 from syuilo/greenkeeper/@types/node-10.5.6
Update @types/node to the latest version 🚀
2018-08-05 13:41:05 +09:00
syuilo
c86e1a3e9b Merge pull request #2088 from syuilo/greenkeeper/commander-2.17.0
Update commander to the latest version 🚀
2018-08-05 13:40:57 +09:00
syuilo
128a201b9d #2080 など 2018-08-05 13:40:26 +09:00
syuilo
b68f74f39c typo 2018-08-05 12:33:55 +09:00
syuilo
cd28504dd8 Add new MFM syntax 2018-08-05 12:33:51 +09:00
gutfuckllc
911762fedf Removed start.sh 2018-08-04 13:13:56 -04:00
gutfuckllc
de448fc99f Added start.sh 2018-08-04 13:13:29 -04:00
syuilo
a3531981ee New translations ja.yml (French) 2018-08-05 00:30:59 +09:00
syuilo
fc8d06a9ab New translations ja.yml (Korean) 2018-08-04 23:20:55 +09:00
syuilo
5de8edf15f New translations ja.yml (Korean) 2018-08-04 23:10:59 +09:00
syuilo
f762cf2770 Merge branch 'master' of https://github.com/syuilo/misskey 2018-08-04 23:04:56 +09:00
syuilo
d84cae9358 5.14.0 2018-08-04 23:04:45 +09:00
syuilo
9c54721010 Merge pull request #2090 from syuilo/l10n_master
New Crowdin translations
2018-08-04 23:03:59 +09:00
syuilo
16f35c81a1 New translations ja.yml (Korean) 2018-08-04 23:00:59 +09:00
syuilo
d0dbb62a54 New translations ja.yml (English) 2018-08-04 23:00:57 +09:00
syuilo
9fa68f4478 New translations ja.yml (Catalan) 2018-08-04 22:51:25 +09:00
syuilo
0d76625868 New translations ja.yml (Portuguese) 2018-08-04 22:51:23 +09:00
syuilo
5a8a701188 New translations ja.yml (Korean) 2018-08-04 22:51:21 +09:00
syuilo
121344afbb New translations ja.yml (Polish) 2018-08-04 22:51:19 +09:00
syuilo
d647cf3446 New translations ja.yml (Chinese Simplified) 2018-08-04 22:51:16 +09:00
syuilo
04a23b3f2f New translations ja.yml (Italian) 2018-08-04 22:51:14 +09:00
syuilo
08826e1c41 New translations ja.yml (Russian) 2018-08-04 22:51:12 +09:00
syuilo
2e31e3c7cb New translations ja.yml (English) 2018-08-04 22:51:10 +09:00
syuilo
7aed50f9fa New translations ja.yml (Spanish) 2018-08-04 22:51:08 +09:00
syuilo
2de782dbe4 New translations ja.yml (German) 2018-08-04 22:51:06 +09:00
syuilo
50693fbe25 New translations ja.yml (French) 2018-08-04 22:51:03 +09:00
syuilo
9a2ff56a79 動きのあるMFMを無効にするオプションを実装 2018-08-04 22:48:35 +09:00
syuilo
daed63d66c Update doc 2018-08-04 22:33:37 +09:00
syuilo
f2241a47b7 New translations ja.yml (Catalan) 2018-08-04 22:31:23 +09:00
syuilo
de95aac59b New translations ja.yml (Portuguese) 2018-08-04 22:31:20 +09:00
syuilo
8612ac0c6a New translations ja.yml (Korean) 2018-08-04 22:31:18 +09:00
syuilo
2118e500a8 New translations ja.yml (Polish) 2018-08-04 22:31:16 +09:00
syuilo
a7063eab85 New translations ja.yml (Chinese Simplified) 2018-08-04 22:31:14 +09:00
syuilo
5b5ae0e47f New translations ja.yml (Italian) 2018-08-04 22:31:12 +09:00
syuilo
b19ecc1a0d New translations ja.yml (Russian) 2018-08-04 22:31:10 +09:00
syuilo
ac9223957f New translations ja.yml (English) 2018-08-04 22:31:07 +09:00
syuilo
e580adc41e New translations ja.yml (Spanish) 2018-08-04 22:31:05 +09:00
syuilo
607a105b78 New translations ja.yml (German) 2018-08-04 22:31:03 +09:00
syuilo
cc601cf600 New translations ja.yml (French) 2018-08-04 22:31:01 +09:00
syuilo
be9f6ad294 Implement surrender of reversi 2018-08-04 22:28:01 +09:00
syuilo
a2952c02cf New translations ja.yml (French) 2018-08-04 21:31:21 +09:00
syuilo
244d567b3a 5.13.2 2018-08-04 12:38:14 +09:00
syuilo
61a9ad23f1 Fix bug 2018-08-04 12:35:57 +09:00
greenkeeper[bot]
864d1a39cd fix(package): update @types/node to version 10.5.6 2018-08-04 01:48:39 +00:00
greenkeeper[bot]
e14f244e83 fix(package): update commander to version 2.17.0 2018-08-04 00:14:18 +00:00
163 changed files with 2886 additions and 949 deletions

View File

@@ -50,8 +50,11 @@ remoteDriveCapacityMb: 8
# If enabled:
# Server will not cache remote files (Using direct link instead).
# You can save your storage.
# Users cannot see remote images when they turn off "Show media from a remote server" setting.
preventCache: false
#
# NOTE:
# * Users cannot see remote images when they turn off "Show media from a remote server" setting.
# * Since thumbnails are not provided, traffic increases.
preventCacheRemoteFiles: false
drive:
storage: 'db'
@@ -64,7 +67,7 @@ drive:
# config:
# endPoint:
# port:
# secure:
# useSSL:
# accessKey:
# secretKey:
@@ -75,7 +78,7 @@ drive:
# config:
# endPoint: s3-us-west-2.amazonaws.com
# region: us-west-2
# secure: true
# useSSL: true
# accessKey: XXX
# secretKey: YYY
@@ -87,7 +90,7 @@ drive:
# config:
# endPoint: s3-us-west-2.amazonaws.com
# region: us-west-2
# secure: true
# useSSL: true
# accessKey: XXX
# secretKey: YYY
@@ -123,6 +126,7 @@ drive:
# google_maps_api_key: example-google-maps-api-key
# Twitter integration
# You need to set the oauth callback url as : https://<your-misskey-instance>/api/tw/cb
# twitter:
# consumer_key: example-twitter-consumer-key
# consumer_secret: example-twitter-consumer-secret-key

View File

@@ -22,7 +22,6 @@ addons:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
- graphicsmagick
cache:
directories:

4
.vsls.json Normal file
View File

@@ -0,0 +1,4 @@
{
"$schema": "http://json.schemastore.org/vsls",
"gitignore": "exclude"
}

View File

@@ -5,6 +5,15 @@ ChangeLog
This document describes breaking changes only.
6.0.0
-----
### Migration
オブジェクトストレージを使用している場合、設定ファイルの`drive.config.secure``drive.config.useSSL`にリネームしてください。
If you use object storage, please rename `drive.config.secure` to `drive.config.useSSL` in config.
5.0.0
-----

View File

@@ -43,9 +43,34 @@ If you want to...
:heart: Backers & Sponsors
----------------------------------------------------------------
| <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D"> | <img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D"> |
|:-:|:-:|:-:|:-:|
| [Gargron](https://www.patreon.com/mastodon) | [39ff](https://www.patreon.com/user/creators?u=12378075) | [dansup](https://www.patreon.com/dansup) | [Takashi Shibuya](https://www.patreon.com/user/creators?u=12531784) |
<table>
<tr>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12378075/0156f769e20f412594fa6b87d85fe228/1?token-time=2145916800&token-hash=IsIJRUXszzoD6-7pDnRY8I05T9nSznc4GTaxj7C9SwU%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12959468/c249e15aebec4424b5c0f427173671b6/1?token-time=2145916800&token-hash=lubpCEdxAkxPlpR2O6bvZ7BIh8Q4nGf-U_mE1qpjVAQ%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/1?token-time=2145916800&token-hash=f03BFb4S2FUx9YEt87TnEmifb4h33OywGBW2akQVtQY%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/2?token-time=2145916800&token-hash=zElv7ZcPL3viGsXbNG_KWiKrbV0vvw1gk0panx8DJoo%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D"></td>
<td><img src="https://c8.patreon.com/2/100/12718187"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12931605/ead494101f364dffa90efe49e36fb494/1?token-time=2145916800&token-hash=NzSFPjIlodXyv41rwK61aZWVZWfI4surJaNj8vWKvqM%3D"></td>
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D"></td>
</tr>
<tr>
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
<td><a href="https://www.patreon.com/user/creators?u=12378075">39ff</a></td>
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
<td><a href="https://www.patreon.com/user/creators?u=12531784">Takashi Shibuya</a></td>
<td><a href="https://www.patreon.com/fujishan">fujishan</a></td>
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
<td><a href="https://www.patreon.com/user?u=5881381">Naoki Kosaka</a></td>
<td><a href="https://www.patreon.com/user?u=12731202">negao</a></td>
<td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td>
<td><a href="https://www.patreon.com/user?u=12931605">Reiju</a></td>
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
</tr>
</table>
:four_leaf_clover: Copyright
----------------------------------------------------------------

View File

@@ -1,26 +0,0 @@
FROM base/archlinux
MAINTAINER Aya Morisawa
RUN rm /etc/pacman.d/mirrorlist
RUN echo 'Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
RUN echo 'Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist
RUN rm /etc/localtime
RUN ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN pacman -Sy --noconfirm
RUN pacman -S --noconfirm pacman
RUN pacman-db-upgrade
RUN pacman -S --noconfirm archlinux-keyring
RUN pacman -Syyu --noconfirm
RUN pacman -S --noconfirm git nodejs npm mongodb redis
COPY misskey.sh /root/misskey.sh
RUN chmod u+x /root/misskey.sh
EXPOSE 80
EXPOSE 443
EXPOSE 27017
CMD ["/root/misskey.sh"]

View File

@@ -1,6 +0,0 @@
#!/bin/sh
redis-server --daemonize yes
mongod > /dev/null &
cd /root/misskey
npm start
tail -f /dev/null

View File

@@ -1,29 +0,0 @@
Setup with Docker :whale:
================================================================
Ensure that the working directory is the repository root directory.
To create misskey image:
``` console
$ sudo docker build -t misskey ./docker
```
To run misskey:
``` console
$ sudo docker run --rm -i -t -p $PORT:80 -v $(pwd):/root/misskey -v $DBPATH:/data/db misskey
```
where `$PORT` is the port used to access Misskey Web from host browser
and `$DBPATH` is the path of MongoDB database on the host for data persistence.
ex:
``` console
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db misskey
```
If you want to run misskey in production mode, add `--env NODE_ENV=production` like this:
``` console
$ sudo docker run --rm -i -t -p 80:80 -v $(pwd):/root/misskey -v /data/db:/data/db --env NODE_ENV=production misskey
```
Note that `$(pwd)` is the working directory.

View File

@@ -62,6 +62,13 @@ npm install web-push -g
web-push generate-vapid-keys
```
*(optional)* Create a twitter application
----------------------------------------------------------------
If you want to enable the twitter integration, you need to create a twitter app at [https://developer.twitter.com/en/apply/user](https://developer.twitter.com/en/apply/user).
In the app you need to set the oauth callback url as : https://misskey-instance/api/tw/cb
*5.* Make configuration file
----------------------------------------------------------------
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -70,6 +66,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "Unbekannt"
future: "Zukunft"
@@ -38,13 +39,8 @@ common:
weeks_ago: "vor {0} Woche{0:n}"
months_ago: "vor {0} Monat{0:en}"
years_ago: "vor {} Jahr{0:en}"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "So"
monday: "Mo"
@@ -70,6 +66,7 @@ common:
congrats: "Glückwunsch!"
angry: "Wütend"
confused: "Verwirrt"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "Was machst du gerade?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "Keine weitere Chronik vorhanden"
resize-form: "Ziehen um die Größe zu verändern"
new-message: "Neue Nachricht"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "Nachricht hier eingeben"
send: "Senden"
attach-from-local: "Wähle Dateien von deinem PC aus"
attach-from-drive: "Wähle Dateien von deinem Speicher aus"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "Gelesen"
deleted: "Diese Nachricht wurde gelöscht"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Melde an..."
signin: "Anmelden"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "Benutzername"
checking: "Überprüfung..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Schwarz ... komplett"
notes: "Blau ... Hinweise"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "Zeige Details"
private: "Dieser Beitrag ist eine privat"
deleted: "Dieser Beitrag wurde entfernt"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "Laden fehlgeschlagen."
retry: "Erneut versuchen"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "Neue Notiz"
reply: "Antworten"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "Listen"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "Dein Profil"
drive: "Speicher"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -8,15 +8,17 @@ common:
about: "Thank you for finding Misskey. Misskey is a <b>decentralized microblogging platform</b> born on Earth. Since it exists within the Fediverse (a universe where various social media platforms are organized), it is mutually linked with other social media platforms. Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet?"
adblock:
detected: "Please disable ad blocker."
warning: "<strong>Misskey is not running ads</strong>, but some features may be unavailable or malfunctioning if ad blocking features are enabled."
application-authorization: "Application authorizations."
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
application-authorization: "Application authorizations"
close: "Close"
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
got-it: "Got it!"
customization-tips:
title: "Customization tips"
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
paragraph2: "You can change the display by <strong>right clicking</strong> on some widgets."
paragraph3: "To delete a widget, <strong>drag and drop the widget onto the area labeled \"Trash\"</strong> in the header."
paragraph4: "To finish the customization, click \"Finish\" in the upper right."
paragraph3: "To delete a widget, drag and drop the widget onto <strong>the area labeled \"Trash\"</strong> in the header."
paragraph4: "To finish the customization, click \"Finish\" on the upper right."
gotit: "Got it!"
notification:
file-uploaded: "File uploaded!"
@@ -26,7 +28,6 @@ common:
notified-by: "Notified by {}:"
reply-from: "Reply from {}:"
quoted-by: "Quoted by {}:"
name: "Misskey"
time:
unknown: "unknown"
future: "future"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}week(s) ago"
months_ago: "{}month(s) ago"
years_ago: "{}year(s) ago"
month-and-day: "{month}/{day}"
trash: "Trash"
date:
full-year: "Year"
month: "Month"
day: "Day"
hours: "Hour"
minutes: "Minutes"
weekday-short:
sunday: "S"
monday: "M"
@@ -70,6 +66,7 @@ common:
congrats: "Congrats!"
angry: "Angry"
confused: "Confused"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "What are you doing?"
@@ -87,7 +84,8 @@ common:
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
i-like-sushi: "I prefer sushi rather than pudding"
show-reversi-board-labels: "Show row and column labels in Reversi"
verified-user: "Verified user"
verified-user: "Authorized User"
disable-animated-mfm: "Disable animated texts in a post"
reversi:
drawn: "Draw"
my-turn: "Your turn"
@@ -153,7 +151,7 @@ auth/views/form.vue:
notification-read: "Read your notifications."
notification-write: "Manage your notifications."
cancel: "Cancel"
accept: "Grant access."
accept: "Allow access."
auth/views/index.vue:
loading: "Loading"
denied: "Application authorization denied."
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "Waiting for {}"
cancel: "Cancel"
common/views/components/games/reversi/reversi.game.vue:
surrender: "Surrender"
surrendered: "By surrender"
is-llotheo: "The lesser one wins"
looped-map: "Looped map"
can-put-everywhere: "Can put everywhere"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "Play reversi with your friends!"
@@ -175,13 +179,13 @@ common/views/components/games/reversi/reversi.index.vue:
rule: "How to play"
rule-desc: "Reversi is a strategy board game for two players, played on an 8×8 uncheckered board. There are sixty-four identical game pieces called disks (often spelled \"discs\"), which are light on one side and dark on the other. Players take turns placing disks on the board with their assigned color facing up. During a play, any disks of the opponent's color that are in a straight line and bounded by the disk just placed and another disk of the current player's color are turned over to the current player's color. The object of the game is to have the majority of disks turned to display your color when the last playable empty square is filled."
mode-invite: "Invite"
mode-invite-desc: "Invite to the game a user."
invitations: "You received invitation!"
my-games: "My games"
mode-invite-desc: "Game with a specified user."
invitations: "Youve got an invitation!"
my-games: "My game"
all-games: "All games"
enter-username: "Enter username"
enter-username: "Enter a username"
game-state:
ended: "Ended"
ended: "Finished"
playing: "In Progress"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "Game settings"
@@ -190,20 +194,20 @@ common/views/components/games/reversi/reversi.room.vue:
black-or-white: "Black/White"
black-is: "Black is {}"
rules: "Rules"
is-llotheo: "The lesser one wins"
is-llotheo: "The lesser side wins"
looped-map: "Looped map"
can-put-everywhere: "Can put everywhere"
settings-of-the-bot: "Bot settings"
this-game-is-started-soon: "The game will begin soon"
waiting-for-other: "Waiting for the other party's preparation"
waiting-for-me: "Waiting for the your preparation"
waiting-for-both: "Waiting for yours"
this-game-is-started-soon: "The game will begin in seconds"
waiting-for-other: "Waiting for the opponent"
waiting-for-me: "Waiting for you"
waiting-for-both: "Prepareing"
cancel: "Cancel"
ready: "Ready"
cancel-ready: "Cancel \"Ready\""
common/views/components/connect-failed.vue:
title: "Unable to connect to the server"
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please try again later."
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please {try again} later."
thanks: "Thank you for using Misskey."
troubleshoot: "Troubleshoot"
common/views/components/connect-failed.troubleshooter.vue:
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "There is no further history"
resize-form: "Drag to resize"
new-message: "New message"
only-one-file-attached: "Only ONE file can be attached to a message."
common/views/components/messaging-room.form.vue:
input-message-here: "Enter message here"
send: "Send"
attach-from-local: "Attach files from your device"
attach-from-drive: "Attach files from your Drive"
only-one-file-attached: "Only one file can be attached to the message."
common/views/components/messaging-room.message.vue:
is-read: "Read"
deleted: "This message has been deleted"
@@ -254,9 +260,9 @@ common/views/components/nav.vue:
feedback: "Feedback"
common/views/components/note-menu.vue:
favorite: "Favorite this note"
pin: "Pin to your profile page"
pin: "Pin to your profile"
delete: "Delete"
delete-confirm: "Are you sure you want to delete this post?"
delete-confirm: "Delete this post?"
remote: "Show original note"
common/views/components/poll.vue:
vote-to: "Vote for '{}'"
@@ -266,9 +272,9 @@ common/views/components/poll.vue:
show-result: "Show results"
voted: "Voted"
common/views/components/poll-editor.vue:
no-only-one-choice: "At least two choices are required for this survey."
no-only-one-choice: "At least two choices are required"
choice-n: "Choice {}"
remove: "Delete this choice"
remove: "Delete the choice"
add: "+ Add a choice"
destroy: "Discard the poll"
common/views/components/reaction-picker.vue:
@@ -279,17 +285,19 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Signing in..."
signin: "Sign in"
or: "Or"
signin-with-twitter: "Log in with Twitter"
common/views/components/signup.vue:
username: "Username"
checking: "Checking..."
checking: "Confirming..."
available: "Available"
unavailable: "Unavailable"
error: "Network error"
invalid-format: "Only use letters, numbers and -."
too-short: "Please enter at least 1 character!"
too-long: "Please enter up to 20 characters."
invalid-format: "letters, numbers and _ are acceptable."
too-short: "Should not be blank!"
too-long: "Enter within 20 characters."
password: "Password"
password-placeholder: "We recommend more than 8 characters."
password-placeholder: "More than 8 characters are recommended."
weak-password: "Weak password"
normal-password: "Fair password"
strong-password: "Strong password"
@@ -319,9 +327,9 @@ common/views/components/uploader.vue:
common/views/components/visibility-chooser.vue:
public: "Public"
home: "Home"
home-desc: "Post to the home timeline only"
home-desc: "Post to Home only"
followers: "Followers"
followers-desc: "Post to followers only"
followers-desc: "Post to Followers only"
specified: "Direct"
specified-desc: "Post to specified users only"
private: "Private"
@@ -332,8 +340,8 @@ common/views/widgets/broadcast.vue:
next: "Next"
common/views/widgets/calendar.vue:
year: "Year {}"
month: "Month {}"
day: "Day {}"
month: "{},"
day: "{}"
today: "Today: "
this-month: "This month: "
this-year: "This year: "
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "Follow"
request-pending: "Pending follow request"
follow-request: "Follow request"
desktop:
banner-crop-title: "Crop the part that appears as a banner"
banner: "Banner"
uploading-banner: "Uploading a new banner"
banner-updated: "Successfully updated the banner"
choose-banner: "Choose the banner"
avatar-crop-title: "Crop the part that appears as an avatar"
avatar: "Avatar"
uploading-avatar: "Uploading a new avatar"
avatar-updated: "Successfully updated the avatar"
choose-avatar: "Select an image for the avatar"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -435,7 +454,7 @@ desktop/views/components/drive.file.vue:
rename-file: "Rename file"
input-new-file-name: "Enter new name"
copied: "Copied"
copied-url-to-clipboard: "Copied URL to clipboard"
copied-url-to-clipboard: "URL has been copied to clipboard"
desktop/views/components/drive.folder.vue:
unable-to-process: "The operation could not be completed."
circular-reference-detected: "The destination folder is a subfolder of the folder you wish to move."
@@ -469,7 +488,7 @@ desktop/views/components/drive.vue:
upload: "Upload a file"
url-upload: "Upload from a URL"
desktop/views/components/media-image.vue:
sensitive: "The content is NSFW"
sensitive: "NSFW"
click-to-show: "Click to show"
desktop/views/components/media-video.vue:
sensitive: "The content is NSFW"
@@ -508,8 +527,8 @@ desktop/views/components/messaging-window.vue:
title: "Messaging"
desktop/views/components/note-detail.vue:
more: "Load more conversations"
private: "This post is private"
deleted: "This post has been removed"
private: "Post is private"
deleted: "Post has been removed"
reposted-by: "Reposted by {}"
location: "Location"
renote: "Repost"
@@ -520,8 +539,10 @@ desktop/views/components/notes.note.vue:
renote: "Repost"
add-reaction: "Add a reaction"
detail: "Show details"
private: "This post is private"
deleted: "The post has been deleted"
private: "Post is private"
deleted: "Post has been deleted"
hide: "Hide"
see-more: "See more"
desktop/views/components/notes.vue:
error: "Loading failed."
retry: "Retry"
@@ -533,15 +554,15 @@ desktop/views/components/post-form.vue:
add-visible-user: "+Add a user"
attach-location-information: "Attach location information"
hide-contents: "Hide contents"
reply-placeholder: "Reply to this note..."
quote-placeholder: "Quote this note..."
reply-placeholder: "Reply to this Post..."
quote-placeholder: "Quote this Post..."
submit: "Post"
reply: "Reply"
renote: "Repost"
posted: "Posted!"
replied: "Replied!"
reposted: "Reposted!"
note-failed: "Failed to post the note"
note-failed: "Failed to post"
reply-failed: "Failed to reply"
renote-failed: "Failed to repost"
posting: "Posting"
@@ -554,11 +575,12 @@ desktop/views/components/post-form.vue:
recent-tags: "Recent"
click-to-tagging: "Click to tagging"
visibility: "Visibility"
geolocation-alert: "Your device does not support geolocalization."
geolocation-alert: "Your device can not measure location infomation"
error: "Error"
enter-username: "Please enter a username..."
annotations: "Annotations for the post (optional)"
desktop/views/components/post-form-window.vue:
note: "New note"
note: "New Post"
reply: "Reply"
attaches: "{} media attached"
uploading-media: "Uploading {} media"
@@ -570,9 +592,9 @@ desktop/views/components/renote-form.vue:
renote: "Repost"
reposting: "Reposting..."
success: "Reposted!"
failure: "Repost failed"
failure: "Failed to Repost"
desktop/views/components/renote-form-window.vue:
title: "Are you sure you want to repost this?"
title: "Do you want to Repost it?"
desktop/views/components/settings-window.vue:
settings: "Settings"
desktop/views/components/settings.vue:
@@ -667,11 +689,11 @@ desktop/views/components/settings.2fa.vue:
submit: "Submit"
success: "Settings saved!"
failed: "Failed to setup. Please ensure that the token is correct."
info: "From now on, enter the token that is displayed on your device in addition to your password when signing-in to Misskey."
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
desktop/views/components/settings.api.vue:
intro: "To access the API, set this token as the key 'i' of request parameters."
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
regeneration-of-token: "In the unlikely event that this token leaks out, you can regenerate it."
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
regeneration-of-token: "In case this token (may) leaks out, you want to regenerate it so that youll be safe."
regenerate-token: "Regenerate the token"
token: "Token:"
enter-password: "Please enter the password"
@@ -691,18 +713,18 @@ desktop/views/components/settings.password.vue:
changed: "Password updated"
desktop/views/components/settings.profile.vue:
avatar: "Avatar"
choice-avatar: "Choose an image"
choice-avatar: "Select an image"
name: "Name"
location: "Location"
description: "Description"
birthday: "Birthday"
save: "Update profile"
locked-account: "Protect your account"
is-locked: "Make a note private"
is-locked: "Make your posts private"
other: "Other"
is-bot: "This account is a Bot"
is-cat: "This account is a Cat"
profile-updated: "Profile updated"
profile-updated: "Profile has successfully updated"
desktop/views/components/sub-note-content.vue:
private: "This post is private"
deleted: "This post has been deleted"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "Lists"
desktop/views/components/ui.header.vue:
welcome-back: "Welcome back,"
adjective: "Sir "
desktop/views/components/ui.header.account.vue:
profile: "Your profile"
drive: "Media storage"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "User lists"
create-list: "Create new list"
list-name: "List name"
desktop/views/components/user-preview.vue:
notes: "Posts"
following: "Following"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "Pop-out"
close: "Close"
desktop/views/pages/admin/admin.vue:
dashboard: "Dashboard"
drive: "Drive"
users: "Users"
update: "Updates"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "Dashboard"
all-users: "All Users"
original-users: "Users on this instance"
all-notes: "All Posts"
original-notes: "Posts on this instance"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "Suspend a user"
suspend: "Suspend"
suspended: "Successfully suspended."
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "Unsuspend users"
unsuspend: "Unsuspend"
unsuspended: "The user has successfully unsuspended."
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Only media posts"
is-media-view: "Media view"
@@ -773,7 +816,7 @@ desktop/views/pages/welcome.vue:
gotit: "Got it!"
signin: "Log In"
signup: "Sign up"
signin-button: "Log in"
signin-button: "Logging in..."
signup-button: "Sign up"
timeline: "Timeline"
powered-by-misskey: "Powered by <b>Misskey</b>."
@@ -784,35 +827,35 @@ desktop/views/pages/favorites.vue:
desktop/views/pages/home-customize.vue:
title: "Customize home layout"
desktop/views/pages/note.vue:
prev: "Previous note"
next: "Next note"
prev: "Previous post"
next: "Next post"
desktop/views/pages/selectdrive.vue:
title: "Choose file(s)"
ok: "OK"
cancel: "Cancel"
upload: "Upload files from your device"
desktop/views/pages/search.vue:
not-available: "The search function can not be used."
not-available: "The search feature is not available."
not-found: "No posts were found for '{}'"
desktop/views/pages/share.vue:
share-with: "Share with {}."
desktop/views/pages/tag.vue:
no-posts-found: "No posts \"{}\" found."
no-posts-found: "No posts contains \"{}\" found."
desktop/views/pages/user-list.users.vue:
users: "User"
add-user: "Add a user"
username: "Username"
desktop/views/pages/user/user.followers-you-know.vue:
title: "Followers you know"
title: "Followers you may know"
loading: "Loading"
no-users: "No followers you know"
desktop/views/pages/user/user.friends.vue:
title: "Frequent mentions"
loading: "Loading"
no-users: "No users"
no-users: "No frequent mentions"
desktop/views/pages/user/user.vue:
is-suspended: "This account has been suspended."
is-remote: "This user is a remote user, so the information about them that you see here is not complete. "
is-remote: "The user is a remote user. Information about them that you see here may not complete."
view-remote: "See their complete profile"
desktop/views/pages/user/user.home.vue:
last-used-at: "Last active:"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mute"
muted: "Muting"
unmute: "Unmute"
push-to-a-list: "Add to list"
list-pushed: "Successfully added {user} to {list}."
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Following"
@@ -835,18 +880,18 @@ desktop/views/pages/user/user.header.vue:
is-bot: "This account is a Bot"
desktop/views/pages/user/user.timeline.vue:
default: "Posts"
with-replies: "Notes and replies"
with-replies: "Posts and replies"
with-media: "Media"
empty: "This user doesn't seem to have posted anything yet."
desktop/views/widgets/messaging.vue:
title: "Messaging"
title: "Message"
desktop/views/widgets/notifications.vue:
title: "Notifications"
settings: "Settings"
desktop/views/widgets/polls.vue:
title: "Polls"
refresh: "refresh"
nothing: "Nothing"
nothing: "No polls found!"
desktop/views/widgets/post-form.vue:
title: "Post"
note: "Post"
@@ -856,11 +901,11 @@ desktop/views/widgets/profile.vue:
desktop/views/widgets/trends.vue:
title: "Trend"
refresh: "refresh"
nothing: "Nothing"
nothing: "No trends found!"
desktop/views/widgets/users.vue:
title: "Recommended users"
refresh: "refresh"
no-one: "No one"
no-one: "Anyone!"
mobile/views/components/drive.vue:
drive: "Media storage"
used: "used"
@@ -890,7 +935,7 @@ mobile/views/components/drive.file-detail.vue:
hash: "Hash (md5)"
exif: "EXIF"
mobile/views/components/media-image.vue:
sensitive: "The content is NSFW"
sensitive: "NSFW"
click-to-show: "Click to show"
mobile/views/components/media-video.vue:
sensitive: "The content is NSFW"
@@ -901,7 +946,7 @@ mobile/views/components/follow-button.vue:
request-pending: "Pending follow request"
follow-request: "Follow request"
mobile/views/components/friends-maker.vue:
title: "Let's follow users"
title: "Let's follow them"
empty: "Featured user was not found."
fetching: "Loading"
refresh: "See more"
@@ -932,7 +977,7 @@ mobile/views/components/notes.vue:
failed: "Failed to load"
retry: "Retry"
mobile/views/components/notifications.vue:
more: "More"
more: "See more"
empty: "No notifications"
mobile/views/components/post-form.vue:
add-visible-user: "Add a user"
@@ -941,7 +986,7 @@ mobile/views/components/post-form.vue:
renote: "Renote"
quote-placeholder: "Quote this post... (optional)"
reply-placeholder: "Reply to this note..."
cw-placeholder: "Comments about content (optional)"
cw-placeholder: "Comments for the post (optional)"
location-alert: "Your device does not provide location services"
error: "Error"
username-prompt: "Enter user name"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "More"
mobile/views/components/ui.header.vue:
welcome-back: "Welcome back, "
adjective: "Sir"
mobile/views/components/ui.nav.vue:
timeline: "Timeline"
notifications: "Notifications"
@@ -971,7 +1017,7 @@ mobile/views/components/ui.nav.vue:
about: "About Misskey"
mobile/views/components/user-timeline.vue:
no-notes: "It seems this user hasn't posted anything yet."
no-notes-with-media: "There are no notes with media attachments"
no-notes-with-media: "There are no posts attaching media"
load-more: "More"
mobile/views/components/users-list.vue:
all: "All"
@@ -986,7 +1032,7 @@ mobile/views/pages/drive.vue:
drive: "Drive"
more: "Load more"
mobile/views/pages/signup.vue:
lets-start: "Let's start! 📦"
lets-start: "Your account is now ready! 📦"
mobile/views/pages/followers.vue:
followers-of: "Followers of {}"
mobile/views/pages/following.vue:
@@ -1002,7 +1048,9 @@ mobile/views/pages/welcome.vue:
signup: "Sign up"
mobile/views/pages/widgets.vue:
dashboard: "Dashboard"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
add-widget: "Add"
customization-tips: "Customization tips"
mobile/views/pages/widgets/activity.vue:
activity: "Activity"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "Search"
empty: "No posts were found for '{}'"
not-found: "No posts were found for \"{}\"."
mobile/views/pages/selectdrive.vue:
select-file: "Choose files"
mobile/views/pages/settings.vue:
@@ -1052,7 +1101,7 @@ mobile/views/pages/settings.vue:
specify-language: "Select your language"
design: "Design and display"
dark-mode: "Dark Mode"
i-am-under-limited-internet: "I'm under limited internet"
i-am-under-limited-internet: "I'm in limited bandwidth"
circle-icons: "Use circle icons"
timeline: "Timeline"
show-reply-target: "Show reply target"
@@ -1064,7 +1113,7 @@ mobile/views/pages/settings.vue:
behavior: "Behavior"
fetch-on-scroll: "Endless loading on scroll"
disable-via-mobile: "Don't mark the post as 'from mobile'"
load-raw-images: "Show attached images in high-quality"
load-raw-images: "Show attached images in original quality"
load-remote-media: "Show media from a remote server"
twitter: "Twitter integration"
twitter-connect: "Connect to your Twitter account"
@@ -1085,7 +1134,7 @@ mobile/views/pages/user.vue:
follows-you: "Follows you"
following: "Following"
followers: "Followers"
notes: "Notes"
notes: "Posts"
overview: "Overview"
timeline: "Timeline"
media: "Media"
@@ -1135,3 +1184,5 @@ docs:
name: "Name"
type: "Type"
description: "Description"
dev/views/index.vue:
manage-apps: "Manage apps"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
application-authorization: "Autorizaciones de la aplicación."
close: "Cerrar"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "¡Listo!"
customization-tips:
title: "Consejos de personalización"
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
@@ -26,7 +28,6 @@ common:
notified-by: "Notificado por {}:"
reply-from: "Respuesta de {}:"
quoted-by: "Citado por {}:"
name: "Misskey"
time:
unknown: "Desconocido"
future: "Futuro"
@@ -38,13 +39,8 @@ common:
weeks_ago: "Hace {} semana(s)"
months_ago: "Hace {} mes(es)"
years_ago: "Hace {} año(s)"
month-and-day: "{day} de {month}"
trash: "Papelera"
date:
full-year: "Año"
month: "Mes"
day: "Día"
hours: "horas"
minutes: "minutos"
weekday-short:
sunday: "domingo"
monday: "lunes"
@@ -70,6 +66,7 @@ common:
congrats: "felicidades"
angry: "enfadado"
confused: "confundido"
rip: "RIP"
pudding: "Chafado"
note-placeholders:
a: "¿Qué haces?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "Prefiero sushi a pudín"
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
verified-user: "Usuario verificado"
disable-animated-mfm: "Desactivar texto animado en una publicación"
reversi:
drawn: "Empatado"
my-turn: "Mi turno"
@@ -168,21 +166,27 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "Esperando por {}"
cancel: "Cancelar"
common/views/components/games/reversi/reversi.game.vue:
surrender: "Rendirse"
surrendered: "Por rendirse"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
invite: "招待"
rule: "遊び方"
sub-title: "¡Juega Reversi con tus amigos!"
invite: "Invitar"
rule: "Cómo jugar"
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
mode-invite: "招待"
mode-invite-desc: "指定したユーザーと対戦するモードです。"
invitations: "対局の招待があります!"
my-games: "自分の対局"
all-games: "みんなの対局"
enter-username: "ユーザー名を入力してください"
mode-invite: "Invitar"
mode-invite-desc: "Invitar un usuario al juego."
invitations: "¡Has recibido una invitación!"
my-games: "Mis juegos"
all-games: "Todos los juegos"
enter-username: "Ingresar nombre de usuario"
game-state:
ended: "終了"
playing: "進行中"
ended: "Finalizado"
playing: "En progreso"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "Configuración de juego"
choose-map: "Elije un mapa"
@@ -194,7 +198,7 @@ common/views/components/games/reversi/reversi.room.vue:
looped-map: "Mapa en bucle"
can-put-everywhere: "Puedes colocar donde quieras"
settings-of-the-bot: "Configuración de bot"
this-game-is-started-soon: "ゲームは数秒後に開始されます"
this-game-is-started-soon: "El juego comenzará pronto"
waiting-for-other: "Esperando a que se prepare el adversario"
waiting-for-me: "Esperando por la preparación"
waiting-for-both: "Esperando por ti"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "El historial se ha acabado"
resize-form: "Arrastra para redimensionar"
new-message: "Nuevo mensaje"
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
common/views/components/messaging-room.form.vue:
input-message-here: "Escribe el mensaje aquí"
send: "Enviar"
attach-from-local: "Adjunta ficheros desde tu PC"
attach-from-drive: "Adjunta ficheros desde tu disco"
only-one-file-attached: "Un único archivo se puede conectar al mensaje"
common/views/components/messaging-room.message.vue:
is-read: "Leer"
deleted: "El mensaje se ha borrado"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "Identificador"
signing-in: "Entrando..."
signin: "Entra"
or: "O"
signin-with-twitter: "Ingresar con Twitter"
common/views/components/signup.vue:
username: "Usuario"
checking: "Comprobando..."
@@ -373,46 +381,57 @@ common/views/widgets/tips.vue:
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
tips-line10: "Usando el accesorio de Máquina del Tiempo puedes encontrar publicaciones antiguas"
tips-line11: "Puedes resaltar publicaciones en la página de usuario haciendo click en \"...\""
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます"
tips-line23: "まゆかわいいよまゆ"
tips-line24: "Misskeyは2014年にサービスを開始しました"
tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
tips-line13: "Todos los archivos añadidos a la publicación se han guardado en tu unidad."
tips-line14: "Cuando personalizas el inicio puedas dar click derecho a un accesorio y cambiar el diseño."
tips-line17: "Al colocar ** delante y luego del texto, lo estarás destacando en negrillas"
tips-line19: "Algunas ventanas pueden ser separadas fuera del navegador"
tips-line20: "El porcentaje mostrando en el accesorio de calendario indica el porcentaje de tiempo transcurrido."
tips-line21: "También puedes usar la API para desarrollar tus propios bots."
tips-line23: "Mayu is tan bonito con sus cejas."
tips-line24: "Misskey inició en 2014."
tips-line25: "Puedes recibir notificaciones incluso si Misskey no está abierto en un navegador compatible."
common/views/pages/follow.vue:
signed-in-as: "{}としてサインイン中"
following: "フォロー中"
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
signed-in-as: "Autenticado como {}"
following: "Siguiendo"
follow: "Seguir"
request-pending: "Solicitud pendiente"
follow-request: "Solicitar suscripción"
desktop:
banner-crop-title: "Corta la parte que aparece como un banner"
banner: "Banner"
uploading-banner: "Cargando un nuevo banner"
banner-updated: "Banner actualizado"
choose-banner: "Escoge un banner"
avatar-crop-title: "Corta la parte que aparece como un avatar"
avatar: "Avatar"
uploading-avatar: "Cargando un nuevo avatar"
avatar-updated: "Avatar actualizado"
choose-avatar: "Escoge una imagen de avatar"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
replies: "Red ... Replies"
renotes: "Green ... Renotes"
total: "Negro ... Total"
notes: "Azul ... Notas"
replies: "Rojo ... Respuestas"
renotes: "Verde ... Republicaciones"
desktop/views/components/activity.vue:
title: "アクティビティ"
toggle: "表示を切り替え"
title: "Actividad"
toggle: "Alternar vistas"
desktop/views/components/calendar.vue:
title: "{1} {2}"
prev: "前の月"
next: "次の月"
go: "クリックして時間遡行"
title: "{1} / {2}"
prev: "Mes anterior"
next: "Próximo mes"
go: "Click para navegar"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"
cancel: "キャンセル"
ok: "決定"
choose-prompt: "ファイルを選択"
choose-file: "Escoger archivos"
upload: "Cargar archivos de tu dispositivo"
cancel: "Cancelar"
ok: "OK"
choose-prompt: "Escoger archivos"
desktop/views/components/choose-folder-from-drive-window.vue:
cancel: "キャンセル"
ok: "決定"
cancel: "Cancelar"
ok: "OK"
choose-prompt: "Escoge una Carpeta"
desktop/views/components/crop-window.vue:
skip: "クロップをスキップ"
skip: "Ignorar el cortado"
cancel: "Cancelar"
ok: "OK"
desktop/views/components/drive-window.vue:
@@ -423,8 +442,8 @@ desktop/views/components/drive.file.vue:
banner: "Banner"
contextmenu:
rename: "Renombrar"
mark-as-sensitive: "閲覧注意に設定"
unmark-as-sensitive: "閲覧注意を解除"
mark-as-sensitive: "Marcar como 'sensible'"
unmark-as-sensitive: "Desmarcar como 'sensible'"
copy-url: "Copia la URL"
download: "Descargar"
else-files: "Otros"
@@ -469,8 +488,8 @@ desktop/views/components/drive.vue:
upload: "Subir fichero"
url-upload: "Subir desde una URL"
desktop/views/components/media-image.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
sensitive: "El contenido es NSFW (no seguro para ver en el trabajo, 'not safe for work')"
click-to-show: "Click para mostrar"
desktop/views/components/media-video.vue:
sensitive: "閲覧注意"
click-to-show: "クリックして表示"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "Mostrar detalles"
private: "Esta publicación es privada"
deleted: "Esta publicación ha sido borrada"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "Error al cargar."
retry: "Reintentar"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "Tu dispositivo no tiene soporte de geolocalización."
error: "Error"
enter-username: "Por favor escribe un nombre de usuario..."
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "Nota nueva"
reply: "Responder"
@@ -634,26 +656,26 @@ desktop/views/components/settings.vue:
version: "バージョン:"
latest-version: "最新のバージョン:"
update-checking: "アップデートを確認中"
do-update: "アップデートを確認"
update-settings: "詳細設定"
prevent-update: "アップデートを延期する(非推奨)"
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
no-updates: "利用可能な更新はありません"
no-updates-desc: "お使いのMisskeyは最新です。"
update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。"
advanced-settings: "高度な設定"
debug-mode: "デバッグモードを有効にする"
debug-mode-desc: "この設定はブラウザに記憶されます。"
experimental: "実験的機能を有効にする"
experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
tools: "ツール"
task-manager: "タスクマネージャ"
third-parties: "サードパーティ"
do-update: "Chequear por actualizaciones"
update-settings: "Configuración avanzada"
prevent-update: "Posponer actualizaciones (no recomendado)"
prevent-update-desc: "Incluso si activas esta configuración, algunas actualizaciones podrían aplicarse. Esta configuración está habilitada sólo para este dispositivo."
no-updates: "No hay actualizaciones disponibles"
no-updates-desc: "Tu Misskey está actualizado"
update-available: "Una nueva versión está disponible"
update-available-desc: "Las actualizaciones se aplicarán cuando actualices la página nuevamente."
advanced-settings: "Avanzado"
debug-mode: "Habilitar modo de depuración"
debug-mode-desc: "Esta configuración se ha guardado en el navegador."
experimental: "Habilitar herramientas experimentales"
experimental-desc: "Activar esto puede hacer que tu cliente de Misskey se vuelva inestable. La configuración se ha guardado en el navegador."
tools: "Herramientas"
task-manager: "Navegador de tareas"
third-parties: "Servicios externos"
desktop/views/components/settings.2fa.vue:
intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
detail: "詳細..."
url: "https://www.google.co.jp/intl/ja/landing/2step/"
detail: "Ver detalles..."
url: "https://www.google.com/landing/2step/"
caution: "Si pierdes acceso al dispositivo, no podrás conectarte a Misskey."
register: "Registrar un dispositivo"
already-registered: "Un dispositivo ya fue registrado"
@@ -686,19 +708,19 @@ desktop/views/components/settings.password.vue:
reset: "Cambiar contraseña"
enter-current-password: "Ingresar contraseña actual"
enter-new-password: "Ingresar nueva contraseña"
enter-new-password-again: "もう一度新しいパスワードを入力してください"
not-match: "新しいパスワードが一致しません"
changed: "パスワードを変更しました"
enter-new-password-again: "Ingresar nueva contraseña de nuevo"
not-match: "Las nuevas contraseñas no se corresponden consigo mismas"
changed: "Contraseña actualizada"
desktop/views/components/settings.profile.vue:
avatar: "アイコン"
choice-avatar: "画像を選択"
name: "名前"
location: "場所"
description: "自己紹介"
birthday: "誕生日"
save: "保存"
locked-account: "アカウントの保護"
is-locked: "投稿を非公開にする"
avatar: "Avatar"
choice-avatar: "Escoger una imagen"
name: "Nombre"
location: "Localización"
description: "Descripción"
birthday: "Fecha de nacimiento"
save: "Perfil actualizado"
locked-account: "Protege tu cuenta"
is-locked: "Crear una nota privada"
other: "その他"
is-bot: "このアカウントはBotです"
is-cat: "このアカウントはCatです"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
application-authorization: "Permissions de l'application"
close: "Fermer"
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte peut être compromis."
got-it: "J'ai compris !"
customization-tips:
title: "Conseils de personnalisation"
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
@@ -26,7 +28,6 @@ common:
notified-by: "Notifié par {} :"
reply-from: "Réponse de {} :"
quoted-by: "Cité·e par {} :"
name: "Misskey"
time:
unknown: "inconnu"
future: "future"
@@ -38,13 +39,8 @@ common:
weeks_ago: "Il y a {} semaines·s"
months_ago: "Il y a {} mois"
years_ago: "Il y a {} an·s"
month-and-day: "{month}/{day}"
trash: "Corbeille"
date:
full-year: "Année "
month: "Mois"
day: "Jour"
hours: "heures"
minutes: "minutes"
weekday-short:
sunday: "D"
monday: "L"
@@ -70,6 +66,7 @@ common:
congrats: "Félicitations !"
angry: "En colère"
confused: "Confus"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "Que faîtes vous maintenant ?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "Je préfère les sushis (au pudding)"
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
verified-user: "Utilisateur·trice vérifié·e"
disable-animated-mfm: "Désactiver les textes animés dans les publications"
reversi:
drawn: "Partie nulle"
my-turn: "Cest votre tour"
@@ -98,7 +96,7 @@ common:
black: "Noirs"
white: "Blancs"
total: "Total"
this-turn: "Tour de {}"
this-turn: "Tour {}"
widgets:
analog-clock: "Horloge analogique"
profile: "Profil"
@@ -116,7 +114,7 @@ common:
notifications: "Notifications"
users: "Utilisateurs"
polls: "Sondages"
post-form: "投稿フォーム"
post-form: "Formulaire de publication"
messaging: "Messagerie"
server: "Info sur le serveur"
donation: "Dons"
@@ -156,7 +154,7 @@ auth/views/form.vue:
accept: "Autoriser laccès"
auth/views/index.vue:
loading: "Chargement en cours"
denied: "アプリケーションの連携をキャンセルしました。"
denied: "L'autorisation de l'application a été refusée."
denied-paragraph: "Cette application ne va pas accéder à votre compte."
already-authorized: "Cette application est déjà autorisée"
allowed: "アプリケーションの連携を許可しました"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "En attente de {}"
cancel: "Annuler"
common/views/components/games/reversi/reversi.game.vue:
surrender: "Se rendre"
surrendered: "Par abandon"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "Carte en boucle"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "Jouer à Reversi avec vos amis·es !"
@@ -197,12 +201,12 @@ common/views/components/games/reversi/reversi.room.vue:
this-game-is-started-soon: "La partie commencera dans quelques instants"
waiting-for-other: "En attente que l'adversaire soit prêt"
waiting-for-me: "En attente que vous soyez prêt"
waiting-for-both: "準備中"
waiting-for-both: "En attente que vous soyez prêt"
cancel: "Annuler"
ready: "Prêt"
cancel-ready: "準備続行"
cancel-ready: "Annuler \"Je suis prêt\""
common/views/components/connect-failed.vue:
title: "Impossible de se connecter au server."
title: "Échec de connexion au serveur"
description: "Il y a soit un problème avec votre connexion internet, soit le serveur est hors-ligne ou en maintenance. Veuillez {ressayer} plus tard."
thanks: "On vous remercie d'utiliser Misskey."
troubleshoot: "dépanner"
@@ -212,7 +216,7 @@ common/views/components/connect-failed.troubleshooter.vue:
checking-network: "Vérification de la connexion au réseau"
internet: "Connexion Internet"
checking-internet: "Vérification de la connexion internet"
server: "Connexion au server"
server: "Connexion au serveur"
checking-server: "Vérification de la connexion au serveur"
finding: "Recherche d'un problème"
no-network: "Aucune connexion au réseau"
@@ -220,9 +224,9 @@ common/views/components/connect-failed.troubleshooter.vue:
no-internet: "Aucune connexion internet."
no-internet-desc: "Veuillez vérifier que vous êtes bien connecté à internet."
no-server: "Impossible de se connecter au serveur"
no-server-desc: "Votre connexion est OK, mais il a été impossible de vous connecter au serveur de Misskey. Il y a des chances que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
success: "Connexion au serveur de Misskey reussie!"
success-desc: "La connexion au serveur a été reussie. Veuillez recharger la page."
no-server-desc: "Votre connexion semble correcte, mais il a été impossible de vous connecter au serveur de Misskey. Il se peut que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard."
success: "Connexion au serveur de Misskey réussie !"
success-desc: "Succès de la connexion au serveur de Misskey. Veuillez recharger la page."
flush: "Vider le cache"
set-version: "Choisissez une version"
common/views/components/messaging.vue:
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "Il n'y a pas plus d'historique"
resize-form: "Faites glisser pour redimensionner"
new-message: "Nouveau message"
only-one-file-attached: "Un seul fichier uniquement peut être joint au message"
common/views/components/messaging-room.form.vue:
input-message-here: "Tapez ici votre message"
send: "Envoyer"
attach-from-local: "Joindre un fichier depuis votre PC"
attach-from-drive: "Joindre un fichier depuis votre Drive"
only-one-file-attached: "Un seul fichier uniquement peut être joint au message"
common/views/components/messaging-room.message.vue:
is-read: "Lu"
deleted: "Ce message a été supprimé"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Connexion...."
signin: "Se connecter"
or: "Ou"
signin-with-twitter: "Se connecter via Twitter"
common/views/components/signup.vue:
username: "Nom d'utilisateur"
checking: "Vérification"
@@ -286,10 +294,10 @@ common/views/components/signup.vue:
unavailable: "Non disponible"
error: "Erreur de réseau"
invalid-format: "Utilisez seulement des lettres, nombres et/ou -."
too-short: "Veuillez taper au moins un charactère!"
too-long: "Veuillez entrer au maximum 20 charactères."
too-short: "Veuillez saisir au moins un caractère !"
too-long: "Veuillez entrer au maximum 20 caractères."
password: "Mot de Passe"
password-placeholder: "Nous recommendons au moins 8 charactères."
password-placeholder: "Nous recommendons au moins 8 caractères."
weak-password: "Faible"
normal-password: "Moyen"
strong-password: "Fort"
@@ -299,21 +307,21 @@ common/views/components/signup.vue:
password-not-matched: "Les mots de passes ne correspondent pas."
recaptcha: "Vérifier"
create: "Créer un compte"
some-error: "La création de compte a échoué. Veuillez ressayer."
some-error: "La création du compte a échoué. Veuillez réessayer."
common/views/components/special-message.vue:
new-year: "Bonne année!"
christmas: "Joyeux Noël!"
new-year: "Bonne année !"
christmas: "Joyeux Noël !"
common/views/components/stream-indicator.vue:
connecting: "Connexion en cours"
reconnecting: "Re-connexion en cours"
reconnecting: "Reconnexion en cours"
connected: "Connecté"
common/views/components/twitter-setting.vue:
description: "Si vous liez votre compte Twitter à votre compte Misskey, vous verrez ensuite votre compte Twitter s'afficher sur votre profile, vous aurez aussi la possibilité de vous connecter à Misskey en utilisant votre compte Twitter."
connected-to: "Vous êtes connecté à ce compte"
detail: "Detail..."
connected-to: "Vous êtes connecté à ce compte Twitter"
detail: "Détails …"
reconnect: "Reconnecter"
connect: "Lier votre compte Twitter"
disconnect: "Deconnecter"
disconnect: "Déconnecter"
common/views/components/uploader.vue:
waiting: "En attente"
common/views/components/visibility-chooser.vue:
@@ -323,12 +331,12 @@ common/views/components/visibility-chooser.vue:
followers: "Abonné·e·s"
followers-desc: "Publier à vos abonné·e·s uniquement"
specified: "Direct"
specified-desc: "Publier aux utilisateurs mentionnés"
specified-desc: "Publier aux utilisateurs·trices mentionné·es"
private: "Privé"
common/views/widgets/broadcast.vue:
fetching: "Récuperation"
no-broadcasts: "No broadcasts"
have-a-nice-day: "Passez une bonne journée!"
no-broadcasts: "Aucune annonce"
have-a-nice-day: "Passez une bonne journée !"
next: "Suivant"
common/views/widgets/calendar.vue:
year: "{} année"
@@ -339,13 +347,13 @@ common/views/widgets/calendar.vue:
this-year: "Cette année :"
common/views/widgets/donation.vue:
title: "Dons"
text: "Toutes les depences pour couvrir les frais de Misskey sortent directement de notre poche. Nous ne recevons pas d'argent, si vous pouvez nous faire dons d'argent, on vous serait eternellement reconnaissant. Si vous êtes intéressés veuilles contacter {}. Merci pour votre contribution!"
text: "Les frais pour faire fonctionner Misskey sortent directement de notre poche. Nous ne recevons pas d'argent issu de la publicité, si vous pouvez nous faire des dons, on vous serait éternellement reconnaissants. Si vous êtes intéressé·es veuillez contacter {}. Merci pour votre contribution !"
common/views/widgets/photo-stream.vue:
title: "Flux de photo"
no-photos: "Pas de photos"
common/views/widgets/posts-monitor.vue:
title: "Graph des publications"
toggle: "Basculer les vues"
toggle: "Basculer entre les vues"
common/views/widgets/hashtags.vue:
title: "Étiquettes"
count: "{} utilisateurs mentionnés"
@@ -364,18 +372,18 @@ common/views/widgets/slideshow.vue:
common/views/widgets/tips.vue:
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
tips-line3: "Vous pouvez glisser et déposer des fichiers sur la fenêtre de la note"
tips-line4: "Vous pouvez coller des images à partir du presse-papier sur la fenêtre de la note"
tips-line5: "Vous pouvez téléverser des fichiers sur le Drive en faisant un glisser/déplacer"
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
tips-line8: "Vous pouvez personnaliser l'Accueil via les paramètres"
tips-line9: "Misskey est sous licence AGPLv3"
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
tips-line11: "Vous pouvez épingler des notes sur votre page en appuyant sur \"…\""
tips-line13: "Tous les fichiers attachés à cette publication sont sauvegardés dans le Drive"
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
tips-line17: "Vous pouvez mettre un texte en surbrillance en le mettant entre ** **"
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "Vous pouvez aussi utiliser l'API pour développer des Bots."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "Suivre"
request-pending: "Demande d'abonnement en attente"
follow-request: "Demande d'abonnement"
desktop:
banner-crop-title: "Découpez la partie qui apparaîtra comme une bannière"
banner: "Bannière"
uploading-banner: "Téléversement d'une nouvelle bannière"
banner-updated: "La bannière est mise à jour"
choose-banner: "Choisir une bannière"
avatar-crop-title: "Découpez la partie qui apparaîtra dans l'avatar"
avatar: "Avatar"
uploading-avatar: "Téléversement du nouvel avatar"
avatar-updated: "L'avatar est mis à jour"
choose-avatar: "Choisir un avatar"
desktop/views/components/activity.chart.vue:
total: "Noirs ... Total"
notes: "Bleu ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "Afficher les détails"
private: "cette publication est privée"
deleted: "cette publication a été supprimée"
hide: "Masquer"
see-more: "Voir plus"
desktop/views/components/notes.vue:
error: "Échec du chargement."
retry: "Réessayer"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "Votre appareil ne prend pas en charge les services de localisation"
error: "Erreur"
enter-username: "Saisir un nom d'utilisateur …"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "Nouvelle note"
reply: "Répondre"
@@ -603,7 +625,7 @@ desktop/views/components/settings.vue:
circle-icons: "Utiliser des icônes circulaires"
gradient-window-header: "Utiliser les dégradés sur la barre de titre de la fenêtre"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-reply-target: "リプライ先を表示する"
show-reply-target: "Afficher les réponses"
show-my-renotes: "Afficher mes republications dans le fil"
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
show-maps: "Afficher la carte"
@@ -717,7 +739,8 @@ desktop/views/components/timeline.vue:
global: "Global"
list: "Listes"
desktop/views/components/ui.header.vue:
welcome-back: "Vous êtes de retour !"
welcome-back: "Content de vous revoir !"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "Votre profil"
drive: "Drive"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "Listes de l'utilisateur"
create-list: "Créer une liste"
list-name: "Nom de la liste"
desktop/views/components/user-preview.vue:
notes: "Publications"
following: "Abonné à"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "Fermer"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Les publications médias uniquement"
is-media-view: "Vue média"
@@ -797,7 +840,7 @@ desktop/views/pages/search.vue:
desktop/views/pages/share.vue:
share-with: "Partager avec {}"
desktop/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "Pas de message avec un hashtag {} trouvé."
desktop/views/pages/user-list.users.vue:
users: "Utilisateurs"
add-user: "Ajouter un utilisateur"
@@ -822,12 +865,14 @@ desktop/views/pages/user/user.photos.vue:
no-photos: "Pas de photos"
desktop/views/pages/user/user.profile.vue:
follows-you: "Vous suis"
stalk: "ストークする"
stalk: "Traquer"
stalking: "ストーキングしています"
unstalk: "ストーク解除"
mute: "Mettre en sourdine"
muted: "Muting"
unmute: "Enlever la sourdine"
push-to-a-list: "Ajouter à la liste"
list-pushed: "Vous avez ajouté {user} à la liste {list}."
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Suit"
@@ -870,11 +915,11 @@ mobile/views/components/drive.vue:
load-more: "Charger plus"
nothing-in-drive: "Rien"
folder-is-empty: "Ce dossier est vide"
prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
prompt: "Que veux-tu faire ? (Entrez un nombre): <1 → Télécharger le fichier | 2 → Télécharger le fichier avec l'URL | 3 → Créer le dossier | 4 → Modifier le nom du dossier | 5 → Déplacer ce dossier | 6 → Supprimer ce dossier >"
deletion-alert: "Désolé ! La suppression dun dossier nest pas encore implémentée."
folder-name: "Nom du dossier"
root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
root-rename-alert: "L'emplacement actuel est la racine, pas le dossier, vous ne pouvez donc pas le renommer. Veuillez vous déplacer dans le dossier dont vous souhaitez modifier le nom."
root-move-alert: "L'emplacement actuel est la racine, ce n'est pas un dossier et il ne peut pas être déplacé. Veuillez vous déplacer dans le dossier que vous souhaitez déplacer."
url-prompt: "URL du fichier que vous souhaitez téléverser"
uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
mobile/views/components/drive-file-detail.vue:
@@ -954,7 +999,8 @@ mobile/views/components/timeline.vue:
empty: "Pas de notes"
load-more: "Afficher plus"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
welcome-back: "Content de vous revoir ! "
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "Fil d'actualité"
notifications: "Notifications"
@@ -986,7 +1032,7 @@ mobile/views/pages/drive.vue:
drive: "Drive"
more: "Afficher plus ..."
mobile/views/pages/signup.vue:
lets-start: "📦 始めましょう"
lets-start: "Commençons ! 📦"
mobile/views/pages/followers.vue:
followers-of: "Abonné·e·s de {}"
mobile/views/pages/following.vue:
@@ -997,12 +1043,14 @@ mobile/views/pages/home.vue:
hybrid: "Social"
global: "Global"
mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
no-posts-found: "Pas de message avec un hashtag {} trouvé."
mobile/views/pages/welcome.vue:
signup: "S'enregistrer"
mobile/views/pages/widgets.vue:
dashboard: "Tableau de bord"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "Ajouter"
customization-tips: "Conseils de personnalisation"
mobile/views/pages/widgets/activity.vue:
activity: "Activité"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "Chercher"
empty: "Aucun message trouvé pour '{}' "
not-found: "Aucun post pour {} n'a été trouvé."
mobile/views/pages/selectdrive.vue:
select-file: "Choisissez un fichier"
mobile/views/pages/settings.vue:
@@ -1055,9 +1104,9 @@ mobile/views/pages/settings.vue:
i-am-under-limited-internet: "J'ai un accès Internet limité"
circle-icons: "Utiliser des icônes circulaires"
timeline: "Fil d'actualité"
show-reply-target: "リプライ先を表示する"
show-reply-target: "Afficher les réponses"
show-my-renotes: "Afficher mes republications"
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
show-renoted-my-notes: "Afficher les notes que j'ai repartagé"
post-style: "Style de la publication"
post-style-standard: "Standard"
post-style-smart: "Intelligent"
@@ -1135,3 +1184,5 @@ docs:
name: "Nom"
type: "Type"
description: "Description"
dev/views/index.vue:
manage-apps: "Gestion des applications"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -70,6 +66,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,16 +39,10 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -75,6 +70,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
@@ -95,6 +91,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
@@ -182,6 +179,13 @@ common/views/components/games/reversi/reversi.vue:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -254,12 +258,14 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
@@ -306,6 +312,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
@@ -433,6 +441,18 @@ common/views/pages/follow.vue:
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -592,6 +612,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
@@ -630,6 +652,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
@@ -818,6 +841,7 @@ desktop/views/components/timeline.vue:
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
@@ -850,11 +874,10 @@ desktop/views/components/received-follow-requests-window.vue:
accept: "承認"
reject: "拒否"
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
@@ -874,6 +897,29 @@ desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -959,6 +1005,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
@@ -1114,6 +1162,7 @@ mobile/views/components/timeline.vue:
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
@@ -1175,6 +1224,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
@@ -1223,6 +1274,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
@@ -1327,3 +1379,7 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -1,128 +1,126 @@
---
meta:
lang: "日本語"
lang: "한국어"
divider: ""
common:
misskey: "A ⭐ of fediverse"
about-title: "A ⭐ of fediverse."
about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
about: "Misskey를 찾아 주셔서 감사합니다. Misskey은 지구에서 태어난 <b>분산 마이크로 블로그 SNS </b> 입니다. Fediverse (다양한 SNS로 구성되는 우주)에 존재하는 다른 SNS와 상호 연결되어 있습니다. 잠시 도시의 번잡함에서 벗어나 새로운 인터넷에 다이브 해 보지 않겠습니까."
adblock:
detected: "広告ブロッカーを無効にしてください"
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
detected: "광고 차단기를 해제하십시오"
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
application-authorization: "앱의 연계"
close: "닫기"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
title: "사용자 정의 팁"
paragraph1: "홈 정의는 위젯을 추가 / 삭제하거나 드래그 앤 드롭하여 정렬 할 수 있습니다."
paragraph2: "일부 위젯은 <strong>오른쪽 클릭</strong> 하여 모양을 변경할 수 있습니다."
paragraph3: "위젯을 삭제하려면 헤더 <strong>\"휴지통\"</strong> 라고 쓰여진 영역으로 끌어다 놓습니다."
paragraph4: "사용자 정의를 종료하려면 오른쪽 상단의 '완료' 를 클릭합니다."
gotit: "Got it!"
notification:
file-uploaded: "ファイルがアップロードされました"
message-from: "{}さんからメッセージ:"
reversi-invited: "対局への招待があります"
reversi-invited-by: "{}さんから"
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
file-uploaded: "파일이 업로드되었습니다"
message-from: "{}씨로부터 메시지:"
reversi-invited: "대결에 초대되어 있습니다"
reversi-invited-by: "{}"
notified-by: "{}"
reply-from: "{}님으로부터 답글:"
quoted-by: "{}씨가 인용:"
time:
unknown: "なぞのじかん"
future: "未来"
just_now: "たった今"
seconds_ago: "{}秒前"
minutes_ago: "{}分前"
hours_ago: "{}時間前"
days_ago: "{}日前"
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
unknown: "수수께끼의 시간"
future: "미래"
just_now: "방금"
seconds_ago: "{}초전"
minutes_ago: "{}분전"
hours_ago: "{}시간전"
days_ago: "{}일전"
weeks_ago: "{}주전"
months_ago: "{}개월전"
years_ago: "{}년전"
month-and-day: "{month}月 {day}日"
trash: "휴지통"
weekday-short:
sunday: ""
monday: ""
tuesday: ""
wednesday: ""
thursday: ""
friday: ""
saturday: ""
sunday: ""
monday: ""
tuesday: ""
wednesday: ""
thursday: ""
friday: ""
saturday: ""
weekday:
sunday: "日曜日"
monday: "月曜日"
tuesday: "火曜日"
wednesday: "水曜日"
thursday: "木曜日"
friday: "金曜日"
saturday: "土曜日"
sunday: "일요일"
monday: "월요일"
tuesday: "화요일"
wednesday: "수요일"
thursday: "목요일"
friday: "금요일"
saturday: "토요일"
reactions:
like: "いいね"
love: "しゅき"
laugh: ""
hmm: "ふぅ~む"
surprise: "わお"
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
like: "좋네"
love: "좋아"
laugh: "크크"
hmm: "음..."
surprise: "와우"
congrats: "받으세요"
angry: "화냈어"
confused: "곤란하고 있어"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
b: "何かありましたか?"
c: "何をお考えですか?"
d: "言いたいことは?"
e: "ここに書いてください"
f: "あなたが書くのを待っています..."
search: "検索"
delete: "削除"
loading: "読み込み中"
ok: "わかった"
update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
a: "지금 어떻게하고있어?"
b: "뭔가 있었습니까?"
c: "무엇을 생각하십니까?"
d: "말하고 싶은 것은?"
e: "여기에 써주십시오"
f: "당신이 쓸 것을 당신 기다리고 있습니다..."
search: "검색"
delete: "삭제"
loading: "로드 중"
ok: "확인"
update-available-title: "갱신이 있습니다"
update-available: "Misskey의 새로운 버전이 있습니다 ({newer} 현재 {current}을 사용 중). 페이지를 다시로드하면 업데이트가 적용됩니다."
my-token-regenerated: "당신의 토큰이 업데이트되어 있기 때문에 로그 아웃합니다."
i-like-sushi: "나는(푸딩보다 오히려)스시가 좋아"
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
verified-user: "인증 된 사용자"
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
opponent-turn: "相手のターンです"
turn-of: "{}のターンです"
past-turn-of: "{}のターン"
won: "{}の勝ち"
black: ""
white: ""
total: "合計"
this-turn: "{}ターン目"
drawn: "무승부"
my-turn: "당신의 차례입니다"
opponent-turn: "상대의 차례입니다"
turn-of: "{}의 차례입니다"
past-turn-of: "{}"
won: "{} 승리"
black: "검정"
white: "흰색"
total: "합계"
this-turn: "{}턴눈"
widgets:
analog-clock: "アナログ時計"
profile: "プロフィール"
calendar: "カレンダー"
timemachine: "カレンダー(タイムマシン)"
activity: "アクティビティ"
rss: "RSSリーダー"
memo: "付箋"
trends: "トレンド"
photo-stream: "フォトストリーム"
posts-monitor: "投稿チャート"
slideshow: "スライドショー"
version: "バージョン"
broadcast: "ブロードキャスト"
notifications: "通知"
users: "おすすめユーザー"
polls: "アンケート"
post-form: "投稿フォーム"
messaging: "メッセージ"
server: "サーバー情報"
donation: "寄付のお願い"
nav: "ナビゲーション"
tips: "ヒント"
hashtags: "ハッシュタグ"
analog-clock: "아날로그 시계"
profile: "프로필"
calendar: "달력"
timemachine: "달력(타임머신)"
activity: "활동"
rss: "RSS 리더"
memo: "끈끈이"
trends: "트렌드"
photo-stream: "포토 스트림"
posts-monitor: "게시물 차트"
slideshow: "슬라이드 쇼"
version: "버전"
broadcast: "브로드 캐스트"
notifications: "통지"
users: "추천 사용자"
polls: "설문"
post-form: "게시 양식"
messaging: "메시지"
server: "서버 정보"
donation: "기부 요청"
nav: "네비게이션"
tips: ""
hashtags: "해시 태그"
deck:
widgets: "ウィジェット"
home: "ホーム"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,12 +11,14 @@ common:
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
application-authorization: "アプリの連携"
close: "Zamknij"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "Rozumiem!"
customization-tips:
title: "Wskazówki o dostosowywaniu"
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
paragraph3: "Aby usunąć widżet, <strong>przeciągnij i upuść widżet do części nazwanej „Kosz”</strong> w nagłówku."
paragraph4: "Aby zakończyć dostosowywanie, naciśnij „Zakończ” w w prawym górnym rogu."
gotit: "Rozumiem!"
notification:
file-uploaded: "Wysłano plik!"
@@ -26,7 +28,6 @@ common:
notified-by: "Powiadomiono przez {}:"
reply-from: "Odpowiedź od {}:"
quoted-by: "Zacytowano przez {}:"
name: "Misskey"
time:
unknown: "nieznany"
future: "w przyszłości"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{} tyg. temu"
months_ago: "{} mies. temu"
years_ago: "{} lat temu"
month-and-day: "{month}-{day}"
trash: "Kosz"
date:
full-year: "Rok"
month: "Miesiąc"
day: "Dzień"
hours: "Godzina"
minutes: "Minuty"
weekday-short:
sunday: "N"
monday: "Pn"
@@ -70,6 +66,7 @@ common:
congrats: "Gratuluję!"
angry: "Wściekły"
confused: "Zmieszany"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "Co robisz?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "Wolę sushi od puddingu"
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
verified-user: "Zweryfikowany użytkownik"
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
reversi:
drawn: "Remis"
my-turn: "Twoja kolej"
@@ -141,55 +139,61 @@ common:
stack-left: "Przypnij do lewej"
pop-right: "Odepnij w prawo"
auth/views/form.vue:
share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
permission-ask: "このアプリは次の権限を要求しています:"
account-read: "アカウントの情報を見る。"
account-write: "アカウントの情報を操作する。"
note-write: "投稿する。"
like-write: "いいねしたりいいね解除する。"
following-write: "フォローしたりフォロー解除する。"
drive-read: "ドライブを見る。"
drive-write: "ドライブを操作する。"
notification-read: "通知を見る。"
notification-write: "通知を操作する。"
cancel: "キャンセル"
accept: "アクセスを許可"
share-access: "Czy chcesz <b>zezwolić</b> <i>{{ app.name }}</i> na dostęp do Twojego konta?"
permission-ask: "Ta aplikacja wymaga następujących uprawnień:"
account-read: "Wyświetlanie informacji o koncie:"
account-write: "Modyfikowanie informacji o koncie:"
note-write: "Publikacja."
like-write: "Reagowanie na wpisy."
following-write: "Śledzenie i cofanie śledzenia."
drive-read: "Odczytywanie Twojego dysku."
drive-write: "Wysyłanie i usuwanie plików na Twoim dysku."
notification-read: "Odczytywanie Twoich powiadomień."
notification-write: "Zarządzanie Twoimi powiadomieniami."
cancel: "Anuluj"
accept: "Przyznaj dostęp."
auth/views/index.vue:
loading: "読み込み中"
denied: "アプリケーションの連携をキャンセルしました。"
denied-paragraph: "このアプリがあなたのアカウントにアクセスすることはありません。"
already-authorized: "このアプリは既に連携済みです"
loading: "Ładowanie"
denied: "Odrzucono uwierzytelnianie aplikacji."
denied-paragraph: "Ta aplikacja nie uzyska dostępu do Twojego konta."
already-authorized: "Ta aplikacja została już uwierzytelniona."
allowed: "アプリケーションの連携を許可しました"
callback-url: "アプリケーションに戻っています"
please-go-back: "アプリケーションに戻って、やっていってください。"
error: "セッションが存在しません。"
sign-in: "サインインしてください"
callback-url: "Powracam do aplikacji."
please-go-back: "Wróć do aplikacji."
error: "Sesja nie istnieje."
sign-in: "Proszę zalogować się."
common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
waiting-for: "Oczekiwanie na {}"
cancel: "Anuluj"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
invite: "招待"
rule: "遊び方"
sub-title: "Zagraj w Reversi ze znajomymi!"
invite: "Zaproś"
rule: "Jak grać"
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
mode-invite: "招待"
mode-invite-desc: "指定したユーザーと対戦するモードです。"
invitations: "対局の招待があります!"
my-games: "自分の対局"
all-games: "みんなの対局"
enter-username: "ユーザー名を入力してください"
mode-invite: "Zaproś"
mode-invite-desc: "Zaproś użytkownika do gry."
invitations: "Otrzymałeś(-aś) zaproszenie!"
my-games: "Moje gry"
all-games: "Wszystkie gry"
enter-username: "Wprowadź nazwę użytkownika"
game-state:
ended: "終了"
playing: "進行中"
ended: "Zakończono"
playing: "W trakcie"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "ゲームの設定"
choose-map: "マップを選択"
random: "ランダム"
black-or-white: "先手/後手"
settings-of-the-game: "Ustawienia gry"
choose-map: "Wybierz mapę"
random: "Losowy"
black-or-white: "Czarny/biały"
black-is: "{}が黒"
rules: "ルール"
rules: "Zasady"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "Brak dalszej historii"
resize-form: "Przeciągnij aby zmienić rozmiar"
new-message: "Nowa wiadomość"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "Wprowadź wiadomość tutaj"
send: "Wyślij"
attach-from-local: "Załącz pliki z komputera"
attach-from-drive: "Załącz pliki z dysku"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "Przeczytano"
deleted: "Wiadomość została usunięta"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Logowanie…"
signin: "Zaloguj"
or: "または"
signin-with-twitter: "Zaloguj się za pomocą Twittera"
common/views/components/signup.vue:
username: "Nazwa użytkownika"
checking: "Sprawdzanie…"
@@ -362,23 +370,23 @@ common/views/widgets/slideshow.vue:
folder: "Naciśnij i wybierz folder"
no-image: "Brak obrazu w tym folderze"
common/views/widgets/tips.vue:
tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
tips-line1: "Możesz przejść do osi czasu używając <kbd>t</kbd>."
tips-line2: "Otwórz formularz nowego wpisu używając <kbd>p</kbd> lub <kbd>n</kbd>."
tips-line3: "Możesz przeciągnąć i upuścić pliki w formularzu wpisu."
tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
tips-line5: "Możesz wysłać pliki przeciągając i upuszczając je w Dysku."
tips-line6: "Możesz przenieść katalog przeciągając go w Dysku."
tips-line7: "Możesz przenieść katalog przeciągając go w Dysku."
tips-line8: "Strona główna może zostać dostosowana w ustawieniach."
tips-line9: "Misskey jest dostępny na licencji AGPLv3."
tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
tips-line11: "Możesz przypiąć wpis na stronie użytkownika klikając na „…”"
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
tips-line17: "Oznaczenie tekstu **w ten sposób** wyróżni go."
tips-line19: "Część okien może zostać odłączona z przeglądarki."
tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
tips-line21: "APIを利用してbotの開発なども行えます"
tips-line21: "Możesz też używać API, aby tworzyć boty."
tips-line23: "まゆかわいいよまゆ"
tips-line24: "Misskey zaczął działać w 2014."
tips-line25: "Możesz otrzymywać powiadomienia nawet jeżeli Misskey nie jest otwarty w obsługiwanej przeglądarce."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-request: "Poproś o śledzenie"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "Baner"
uploading-banner: "Wysyłanie baneru"
banner-updated: "Zmieniono baner"
choose-banner: "Wybierz baner"
avatar-crop-title: "Wybierz część obrazu, która zostanie użyta jako awatar"
avatar: "Awatar"
uploading-avatar: "Wysyłanie awatara"
avatar-updated: "Wysłano awatar"
choose-avatar: "Wybierz awatar"
desktop/views/components/activity.chart.vue:
total: "Czarny … Łącznie"
notes: "Niebieski … Wpisy"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "Pokaż szczegóły"
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
hide: "Zwiń"
see-more: "Więcej"
desktop/views/components/notes.vue:
error: "Ładowanie nie powiodło się."
retry: "Spróbuj ponownie"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "Twoje urządzenie nie obsługuje geolokalizacji."
error: "Bład"
enter-username: "Wprowadź nazwę użytkownika…"
annotations: "Treść ostrzeżenia (opcjonalnie)"
desktop/views/components/post-form-window.vue:
note: "Nowy wpis"
reply: "Odpowiedz"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "Listy"
desktop/views/components/ui.header.vue:
welcome-back: "Witaj ponownie,"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "Twój profil"
drive: "Dysk"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "Listy"
create-list: "Utwórz listę"
list-name: "Nazwa listy"
desktop/views/components/user-preview.vue:
notes: "Wpisy"
following: "Śledzeni"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "Pop-out"
close: "Zamknij"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "Tylko wpisy z zawartością multimedialną"
is-media-view: "Widok multimediów"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "Wycisz"
muted: "Wyciszyłeś"
unmute: "Cofnij wyciszenie"
push-to-a-list: "Dodaj do listy"
list-pushed: "Dodałeś(-aś) {user} do {list}."
desktop/views/pages/user/user.header.vue:
posts: "Wpisy"
following: "Śledzeni"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "Więcej"
mobile/views/components/ui.header.vue:
welcome-back: "Witaj ponownie, "
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "Oś czasu"
notifications: "Powiadomienia"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "Kokpit"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "Dodaj"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "Aktywność"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "Szukaj"
empty: "Nie znaleziono wpisów zawierających '{}'"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "Wybierz plik"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "Nazwa"
type: "Rodzaj"
description: "Opis"
dev/views/index.vue:
manage-apps: "Zarządzaj aplikacjami"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -70,6 +66,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -70,6 +66,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,13 +39,8 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -70,6 +66,7 @@ common:
congrats: "おめでとう"
angry: "おこ"
confused: "こまこまのこまり"
rip: "RIP"
pudding: "Pudding"
note-placeholders:
a: "今どうしてる?"
@@ -88,6 +85,7 @@ common:
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
verified-user: "認証済みのユーザー"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
reversi:
drawn: "引き分け"
my-turn: "あなたのターンです"
@@ -168,6 +166,12 @@ common/views/components/games/reversi/reversi.vue:
matching:
waiting-for: "{}を待っています"
cancel: "キャンセル"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
is-llotheo: "石の少ない方が勝ち(ロセオ)"
looped-map: "ループマップ"
can-put-everywhere: "どこでも置けるモード"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
@@ -235,11 +239,13 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
deleted: "このメッセージは削除されました"
@@ -279,6 +285,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -388,6 +396,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -522,6 +541,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
retry: "リトライ"
@@ -557,6 +578,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
reply: "返信"
@@ -718,6 +740,7 @@ desktop/views/components/timeline.vue:
list: "リスト"
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
drive: "ドライブ"
@@ -746,6 +769,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -760,6 +784,25 @@ desktop/views/components/users-list-item.vue:
desktop/views/components/window.vue:
popout: "ポップアウト"
close: "閉じる"
desktop/views/pages/admin/admin.vue:
dashboard: "ダッシュボード"
drive: "ドライブ"
users: "ユーザー"
update: "更新"
desktop/views/pages/admin/admin.dashboard.vue:
dashboard: "ダッシュボード"
all-users: "全てのユーザー"
original-users: "このインスタンスのユーザー"
all-notes: "全てのノート"
original-notes: "このインスタンスのノート"
desktop/views/pages/admin/admin.suspend-user.vue:
suspend-user: "ユーザーの凍結"
suspend: "凍結"
suspended: "凍結しました"
desktop/views/pages/admin/admin.unsuspend-user.vue:
unsuspend-user: "ユーザーの凍結の解除"
unsuspend: "凍結の解除"
unsuspended: "凍結を解除しました"
desktop/views/pages/deck/deck.tl-column.vue:
is-media-only: "メディア投稿のみ"
is-media-view: "メディアビュー"
@@ -828,6 +871,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"
@@ -955,6 +1000,7 @@ mobile/views/components/timeline.vue:
load-more: "もっと"
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
notifications: "通知"
@@ -1003,6 +1049,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
mobile/views/pages/share.vue:
@@ -1041,6 +1089,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
mobile/views/pages/settings.vue:
@@ -1135,3 +1184,5 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "5.13.1",
"clientVersion": "1.0.7963",
"version": "6.0.0",
"clientVersion": "1.0.8367",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,
@@ -31,6 +31,7 @@
"@types/dateformat": "1.0.1",
"@types/debug": "0.0.30",
"@types/deep-equal": "1.0.1",
"@types/double-ended-queue": "2.1.0",
"@types/elasticsearch": "5.0.25",
"@types/file-type": "5.2.1",
"@types/gulp": "3.8.36",
@@ -57,9 +58,9 @@
"@types/minio": "6.0.2",
"@types/mkdirp": "0.5.2",
"@types/mocha": "5.2.3",
"@types/mongodb": "3.1.3",
"@types/mongodb": "3.1.4",
"@types/ms": "0.7.30",
"@types/node": "10.5.5",
"@types/node": "10.7.1",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/qrcode": "1.2.0",
@@ -76,10 +77,10 @@
"@types/systeminformation": "3.23.0",
"@types/tmp": "0.0.33",
"@types/uuid": "3.4.3",
"@types/webpack": "4.4.9",
"@types/webpack": "4.4.10",
"@types/webpack-stream": "3.2.10",
"@types/websocket": "0.0.39",
"@types/ws": "5.1.2",
"@types/ws": "6.0.0",
"animejs": "2.2.0",
"autosize": "4.0.2",
"autwh": "0.1.0",
@@ -88,7 +89,7 @@
"bootstrap-vue": "2.0.0-rc.11",
"cafy": "11.3.0",
"chalk": "2.4.1",
"commander": "2.16.0",
"commander": "2.17.1",
"crc-32": "1.2.0",
"css-loader": "1.0.0",
"dateformat": "3.0.3",
@@ -97,8 +98,9 @@
"deepcopy": "0.6.3",
"diskusage": "0.2.4",
"dompurify": "1.0.5",
"double-ended-queue": "2.1.0-0",
"elasticsearch": "15.1.1",
"element-ui": "2.4.5",
"element-ui": "2.4.6",
"emojilib": "2.3.0",
"escape-regexp": "0.0.1",
"eslint": "5.0.1",
@@ -106,7 +108,7 @@
"eventemitter3": "3.1.0",
"exif-js": "2.3.0",
"file-loader": "1.1.11",
"file-type": "8.1.0",
"file-type": "9.0.0",
"fuckadblock": "3.2.1",
"gulp": "3.9.1",
"gulp-cssnano": "2.1.3",
@@ -145,8 +147,9 @@
"koa-slow": "2.1.0",
"koa-views": "6.1.4",
"loader-utils": "1.1.0",
"lodash.assign": "4.2.0",
"mecab-async": "0.1.2",
"minio": "6.0.0",
"minio": "7.0.0",
"mkdirp": "0.5.1",
"mocha": "5.2.0",
"moji": "0.5.1",
@@ -154,13 +157,13 @@
"monk": "6.0.6",
"ms": "2.1.1",
"nan": "2.10.0",
"node-sass": "4.9.2",
"node-sass": "4.9.3",
"node-sass-json-importer": "3.3.1",
"nprogress": "0.2.0",
"object-assign-deep": "0.4.0",
"on-build-webpack": "0.1.0",
"os-utils": "0.0.14",
"parse5": "5.0.0",
"parse5": "5.1.0",
"portscanner": "2.2.0",
"progress-bar-webpack-plugin": "1.11.0",
"promise-sequential": "1.1.1",
@@ -171,49 +174,50 @@
"recaptcha-promise": "0.1.3",
"reconnecting-websocket": "3.2.2",
"redis": "2.8.0",
"request": "2.87.0",
"request": "2.88.0",
"request-promise-native": "1.0.5",
"rimraf": "2.6.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass-loader": "7.1.0",
"seedrandom": "2.4.3",
"seedrandom": "2.4.4",
"sharp": "0.20.5",
"showdown": "1.8.6",
"showdown-highlightjs-extension": "0.1.2",
"single-line-log": "1.1.2",
"speakeasy": "2.0.0",
"style-loader": "0.21.0",
"stringz": "1.0.0",
"style-loader": "0.22.1",
"stylus": "0.54.5",
"stylus-loader": "3.0.2",
"summaly": "2.0.6",
"systeminformation": "3.42.8",
"summaly": "2.1.3",
"systeminformation": "3.42.9",
"syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0",
"tmp": "0.0.33",
"ts-loader": "4.4.1",
"ts-node": "7.0.0",
"ts-node": "7.0.1",
"tslint": "5.10.0",
"typescript": "2.9.2",
"typescript-eslint-parser": "17.0.1",
"typescript-eslint-parser": "18.0.0",
"uglify-es": "3.3.9",
"url-loader": "1.0.1",
"url-loader": "1.1.0",
"uuid": "3.3.2",
"v-animate-css": "0.0.2",
"vue": "2.5.17",
"vue-cropperjs": "2.2.1",
"vue-js-modal": "1.3.16",
"vue-js-modal": "1.3.17",
"vue-json-tree-view": "2.1.4",
"vue-loader": "15.2.6",
"vue-loader": "15.3.0",
"vue-router": "3.0.1",
"vue-style-loader": "4.1.1",
"vue-style-loader": "4.1.2",
"vue-template-compiler": "2.5.17",
"vuedraggable": "2.16.0",
"vuex": "3.0.1",
"vuex-persistedstate": "2.5.4",
"web-push": "3.3.2",
"webfinger.js": "2.6.6",
"webpack": "4.16.4",
"webpack": "4.16.5",
"webpack-cli": "3.1.0",
"websocket": "1.0.26",
"ws": "6.0.0",

View File

@@ -8,14 +8,14 @@ import VueRouter from 'vue-router';
import './style.styl';
import init from '../init';
import Index from './views/index.vue';
import * as config from '../config';
/**
* init
*/
init(launch => {
document.title = '%i18n:common.name% | %i18n:common.application-authorization%';
document.title = `${config.name} | %i18n:common.application-authorization%`;
// Init router
const router = new VueRouter({

View File

@@ -38,7 +38,7 @@ export default function(type, data): Notification {
switch (data.type) {
case 'mention':
return {
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}さんから:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
title: '%i18n:common.notification.notified-by%'.split("{}")[0] + `${getUserName(data.user)}:` + '%i18n:common.notification.notified-by%'.split("{}")[1],
body: getNoteSummary(data),
icon: data.user.avatarUrl
};

View File

@@ -1,13 +0,0 @@
export default date => {
if (typeof date == 'string') date = new Date(date);
return (
date.getFullYear() + '%i18n:common.date.full-year%' +
(date.getMonth() + 1) + '%i18n:common.date.month%' +
date.getDate() + '%i18n:common.date.day%' +
' ' +
date.getHours() + '%i18n:common.date.hours%' +
date.getMinutes() + '%i18n:common.date.minutes%' +
' ' +
`(${['日', '月', '火', '水', '木', '金', '土'][date.getDay()]})`
);
};

View File

@@ -1,5 +1,9 @@
export default () => [
const kaos = [
'(=^・・^=)',
'v(\'ω\')v',
'🐡( \'-\' 🐡 )フグパンチ!!!!'
][Math.floor(Math.random() * 3)];
'🐡( \'-\' 🐡 )フグパンチ!!!!',
'🖕(´・_・`)🖕',
'(。><。)'
];
export default () => kaos[Math.floor(Math.random() * kaos.length)];

View File

@@ -132,7 +132,7 @@ export default Vue.extend({
this.users = users;
this.fetching = false;
} else {
(this as any).api('users/search_by_username', {
(this as any).api('users/search', {
query: this.q,
limit: 30
}).then(users => {

View File

@@ -1,6 +1,16 @@
<template>
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-if="disablePreview"></router-link>
<router-link class="mk-avatar" :to="user | userPage" :title="user | acct" :target="target" :style="style" v-else v-user-preview="user.id"></router-link>
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick">
<span class="inner" :style="style"></span>
</span>
<span class="mk-avatar" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick">
<span class="inner" :style="style"></span>
</span>
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id">
<span class="inner" :style="style"></span>
</router-link>
<router-link class="mk-avatar" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview">
<span class="inner" :style="style"></span>
</router-link>
</template>
<script lang="ts">
@@ -15,6 +25,10 @@ export default Vue.extend({
required: false,
default: null
},
disableLink: {
required: false,
default: false
},
disablePreview: {
required: false,
default: false
@@ -24,26 +38,71 @@ export default Vue.extend({
lightmode(): boolean {
return this.$store.state.device.lightmode;
},
cat(): boolean {
return this.user.isCat && this.$store.state.settings.circleIcons;
},
style(): any {
return {
backgroundColor: this.lightmode
? `rgb(${ this.user.avatarColor.slice(0, 3).join(',') })`
? `rgb(${this.user.avatarColor.slice(0, 3).join(',')})`
: this.user.avatarColor && this.user.avatarColor.length == 3
? `rgb(${ this.user.avatarColor.join(',') })`
? `rgb(${this.user.avatarColor.join(',')})`
: null,
backgroundImage: this.lightmode ? null : `url(${ this.user.avatarUrl })`,
backgroundImage: this.lightmode ? null : `url(${this.user.avatarUrl})`,
borderRadius: this.$store.state.settings.circleIcons ? '100%' : null
};
}
},
methods: {
onClick(e) {
this.$emit('click', e);
}
}
});
</script>
<style lang="stylus" scoped>
.mk-avatar
root(isDark)
display inline-block
vertical-align bottom
background-size cover
background-position center center
transition border-radius 1s ease
&:not(.cat)
overflow hidden
border-radius 8px
&.cat::before,
&.cat::after
background #df548f
border solid 4px isDark ? #e0eefd : #202224
box-sizing border-box
content ''
display inline-block
height 50%
width 50%
&.cat::before
border-radius 0 75% 75%
transform rotate(37.5deg) skew(30deg)
&.cat::after
border-radius 75% 0 75% 75%
transform rotate(-37.5deg) skew(-30deg)
.inner
background-position center center
background-size cover
bottom 0
left 0
position absolute
right 0
top 0
transition border-radius 1s ease
z-index 1
.mk-avatar[data-darkmode]
root(true)
.mk-avatar:not([data-darkmode])
root(false)
</style>

View File

@@ -1,14 +1,18 @@
<template>
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
<header><b>{{ blackUser | userName }}</b>(%i18n:common.reversi.black%) vs <b>{{ whiteUser | userName }}</b>(%i18n:common.reversi.white%)</header>
<button class="go-index" v-if="selfNav" @click="goIndex">%fa:arrow-left%</button>
<header><b><router-link :to="blackUser | userPage">{{ blackUser | userName }}</router-link></b>(%i18n:common.reversi.black%) vs <b><router-link :to="whiteUser | userPage">{{ whiteUser | userName }}</router-link></b>(%i18n:common.reversi.white%)</header>
<div style="overflow: hidden">
<div style="overflow: hidden; line-height: 28px;">
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}<mk-ellipsis/></p>
<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', $options.filters.userName(turnUser)) }}</p>
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
<p class="result" v-if="game.isEnded && logPos == logs.length">
<template v-if="game.winner">{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
<template v-if="game.winner">
<span>{{ '%i18n:common.reversi.won%'.replace('{}', $options.filters.userName(game.winner)) }}</span>
<span v-if="game.surrendered != null"> (%i18n:@surrendered%)</span>
</template>
<template v-else>%i18n:common.reversi.drawn%</template>
</p>
</div>
@@ -41,6 +45,10 @@
<p class="status"><b>{{ '%i18n:common.reversi.this-turn%'.split('{}')[0] }}{{ logPos }}{{ '%i18n:common.reversi.this-turn%'.split('{}')[1] }}</b> %i18n:common.reversi.black%:{{ o.blackCount }} %i18n:common.reversi.white%:{{ o.whiteCount }} %i18n:common.reversi.total%:{{ o.blackCount + o.whiteCount }}</p>
<div class="actions" v-if="!game.isEnded && iAmPlayer">
<form-button @click="surrender">%i18n:@surrender%</form-button>
</div>
<div class="player" v-if="game.isEnded">
<el-button-group>
<el-button type="primary" @click="logPos = 0" :disabled="logPos == 0">%fa:angle-double-left%</el-button>
@@ -52,6 +60,12 @@
<el-button type="primary" @click="logPos = logs.length" :disabled="logPos == logs.length">%fa:angle-double-right%</el-button>
</el-button-group>
</div>
<div class="info">
<p v-if="game.settings.isLlotheo">%i18n:@is-llotheo%</p>
<p v-if="game.settings.loopedBoard">%i18n:@looped-map%</p>
<p v-if="game.settings.canPutEverywhere">%i18n:@can-put-everywhere%</p>
</div>
</div>
</template>
@@ -62,7 +76,20 @@ import Reversi, { Color } from '../../../../../../../games/reversi/core';
import { url } from '../../../../../config';
export default Vue.extend({
props: ['initGame', 'connection'],
props: {
initGame: {
type: Object,
require: true
},
connection: {
type: Object,
require: true
},
selfNav: {
type: Boolean,
require: true
}
},
data() {
return {
@@ -79,22 +106,27 @@ export default Vue.extend({
if (!this.$store.getters.isSignedIn) return false;
return this.game.user1Id == this.$store.state.i.id || this.game.user2Id == this.$store.state.i.id;
},
myColor(): Color {
if (!this.iAmPlayer) return null;
if (this.game.user1Id == this.$store.state.i.id && this.game.black == 1) return true;
if (this.game.user2Id == this.$store.state.i.id && this.game.black == 2) return true;
return false;
},
opColor(): Color {
if (!this.iAmPlayer) return null;
return this.myColor === true ? false : true;
},
blackUser(): any {
return this.game.black == 1 ? this.game.user1 : this.game.user2;
},
whiteUser(): any {
return this.game.black == 1 ? this.game.user2 : this.game.user1;
},
turnUser(): any {
if (this.o.turn === true) {
return this.game.black == 1 ? this.game.user1 : this.game.user2;
@@ -104,11 +136,13 @@ export default Vue.extend({
return null;
}
},
isMyTurn(): boolean {
if (!this.iAmPlayer) return false;
if (this.turnUser == null) return false;
return this.turnUser.id == this.$store.state.i.id;
},
cellsStyle(): any {
return {
'grid-template-rows': `repeat(${this.game.settings.map.length}, 1fr)`,
@@ -165,11 +199,13 @@ export default Vue.extend({
mounted() {
this.connection.on('set', this.onSet);
this.connection.on('rescue', this.onRescue);
this.connection.on('ended', this.onEnded);
},
beforeDestroy() {
this.connection.off('set', this.onSet);
this.connection.off('rescue', this.onRescue);
this.connection.off('ended', this.onEnded);
clearInterval(this.pollingClock);
},
@@ -215,6 +251,10 @@ export default Vue.extend({
}
},
onEnded(x) {
this.game = x.game;
},
checkEnd() {
this.game.isEnded = this.o.isEnded;
if (this.game.isEnded) {
@@ -250,6 +290,16 @@ export default Vue.extend({
this.checkEnd();
this.$forceUpdate();
},
surrender() {
(this as any).api('games/reversi/games/surrender', {
gameId: this.game.id
});
},
goIndex() {
this.$emit('go-index');
}
}
});
@@ -261,10 +311,21 @@ export default Vue.extend({
root(isDark)
text-align center
> .go-index
position absolute
top 0
left 0
z-index 1
width 42px
height 42px
> header
padding 8px
border-bottom dashed 1px isDark ? #4c5761 : #c4cdd4
a
color inherit
> .board
width calc(100% - 16px)
max-width 500px
@@ -381,6 +442,9 @@ root(isDark)
margin 0
padding 16px 0
> .actions
padding-bottom 16px
> .player
padding-bottom 32px

View File

@@ -1,7 +1,7 @@
<template>
<div>
<x-room v-if="!g.isStarted" :game="g" :connection="connection"/>
<x-game v-else :init-game="g" :connection="connection"/>
<x-game v-else :init-game="g" :connection="connection" :self-nav="selfNav" @go-index="goIndex"/>
</div>
</template>
@@ -16,7 +16,16 @@ export default Vue.extend({
XGame,
XRoom
},
props: ['game'],
props: {
game: {
type: Object,
required: true
},
selfNav: {
type: Boolean,
require: true
}
},
data() {
return {
connection: null,
@@ -36,6 +45,9 @@ export default Vue.extend({
onStarted(game) {
Object.assign(this.g, game);
this.$forceUpdate();
},
goIndex() {
this.$emit('go-index');
}
}
});

View File

@@ -96,11 +96,7 @@ export default Vue.extend({
methods: {
go(game) {
(this as any).api('games/reversi/games/show', {
gameId: game.id
}).then(game => {
this.$emit('go', game);
});
this.$emit('go', game);
},
match() {

View File

@@ -1,7 +1,7 @@
<template>
<div class="vchtoekanapleubgzioubdtmlkribzfd">
<div v-if="game">
<x-gameroom :game="game"/>
<x-gameroom :game="game" :self-nav="selfNav" @go-index="goIndex"/>
</div>
<div class="matching" v-else-if="matching">
<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
@@ -34,6 +34,11 @@ export default Vue.extend({
gameId: {
type: String,
required: false
},
selfNav: {
type: Boolean,
require: false,
default: true
}
},
@@ -48,6 +53,10 @@ export default Vue.extend({
},
watch: {
game() {
this.$emit('gamed', this.game);
},
gameId() {
this.fetch();
}
@@ -91,18 +100,24 @@ export default Vue.extend({
(this as any).api('games/reversi/games/show', {
gameId: this.gameId
}).then(game => {
this.nav(game, true);
this.game = game;
Progress.done();
});
}
},
nav(game, silent) {
this.matching = null;
this.game = game;
async nav(game, actualNav = true) {
if (this.selfNav) {
// 受け取ったゲーム情報が省略されたものなら完全な情報を取得する
if (game != null && (game.settings == null || game.settings.map == null)) {
game = await (this as any).api('games/reversi/games/show', {
gameId: game.id
});
}
if (!silent) {
this.$emit('nav', this.game);
this.game = game;
} else {
this.$emit('nav', game, actualNav);
}
},
@@ -121,7 +136,8 @@ export default Vue.extend({
}).then(game => {
if (game) {
this.matching = null;
this.game = game;
this.nav(game);
}
});
},
@@ -129,6 +145,11 @@ export default Vue.extend({
onMatched(game) {
this.matching = null;
this.game = game;
this.nav(game, false);
},
goIndex() {
this.nav(null);
}
}
});

View File

@@ -83,7 +83,7 @@ export default Vue.extend({
}
} else {
if (items[0].kind == 'file') {
alert('メッセージに添付できるのはひとつのファイルのみです');
alert('%i18n:only-one-file-attached%');
}
}
},
@@ -105,7 +105,7 @@ export default Vue.extend({
return;
} else if (e.dataTransfer.files.length > 1) {
e.preventDefault();
alert('メッセージに添付できるのはひとつのファイルのみです');
alert('%i18n:only-one-file-attached%');
return;
}

View File

@@ -61,7 +61,7 @@ export default Vue.extend({
const date = new Date(message.createdAt).getDate();
const month = new Date(message.createdAt).getMonth() + 1;
message._date = date;
message._datetext = `${month}${date}`;
message._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return message;
});
},
@@ -111,7 +111,7 @@ export default Vue.extend({
this.form.upload(e.dataTransfer.files[0]);
return;
} else if (e.dataTransfer.files.length > 1) {
alert('メッセージに添付できるのはひとつのファイルのみです');
alert('%i18n:@only-one-file-attached%');
return;
}

View File

@@ -1,5 +1,6 @@
import Vue from 'vue';
import * as emojilib from 'emojilib';
import { length } from 'stringz';
import parse from '../../../../../mfm/parse';
import getAcct from '../../../../../misc/acct/render';
import { url } from '../../../config';
@@ -40,10 +41,13 @@ export default Vue.component('misskey-flavored-markdown', {
ast = this.ast;
}
let bigCount = 0;
let motionCount = 0;
// Parse ast to DOM
const els = flatten(ast.map(token => {
switch (token.type) {
case 'text':
case 'text': {
const text = token.content.replace(/(\r\n|\n|\r)/g, '\n');
if (this.shouldBreak) {
@@ -54,30 +58,52 @@ export default Vue.component('misskey-flavored-markdown', {
} else {
return createElement('span', text.replace(/\n/g, ' '));
}
}
case 'bold':
case 'bold': {
return createElement('b', token.bold);
}
case 'big':
case 'big': {
bigCount++;
const isLong = length(token.big) > 10;
const isMany = bigCount > 3;
return (createElement as any)('strong', {
attrs: {
style: 'display: inline-block; font-size: 200%;'
style: `display: inline-block; font-size: ${ isMany ? '100%' : '150%' };`
},
directives: [{
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
name: 'animate-css',
value: { classes: 'tada', iteration: 'infinite' }
}]
}, token.big);
}
case 'url':
case 'motion': {
motionCount++;
const isLong = length(token.motion) > 10;
const isMany = motionCount > 3;
return (createElement as any)('span', {
attrs: {
style: 'display: inline-block;'
},
directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
name: 'animate-css',
value: { classes: 'rubberBand', iteration: 'infinite' }
}]
}, token.motion);
}
case 'url': {
return createElement(MkUrl, {
props: {
url: token.content,
target: '_blank'
}
});
}
case 'link':
case 'link': {
return createElement('a', {
attrs: {
class: 'link',
@@ -86,8 +112,9 @@ export default Vue.component('misskey-flavored-markdown', {
title: token.url
}
}, token.title);
}
case 'mention':
case 'mention': {
return (createElement as any)('a', {
attrs: {
href: `${url}/@${getAcct(token)}`,
@@ -99,16 +126,18 @@ export default Vue.component('misskey-flavored-markdown', {
value: token.content
}]
}, token.content);
}
case 'hashtag':
case 'hashtag': {
return createElement('a', {
attrs: {
href: `${url}/tags/${encodeURIComponent(token.hashtag)}`,
target: '_blank'
}
}, token.content);
}
case 'code':
case 'code': {
return createElement('pre', {
class: 'code'
}, [
@@ -118,15 +147,17 @@ export default Vue.component('misskey-flavored-markdown', {
}
})
]);
}
case 'inline-code':
case 'inline-code': {
return createElement('code', {
domProps: {
innerHTML: token.html
}
});
}
case 'quote':
case 'quote': {
const text2 = token.quote.replace(/(\r\n|\n|\r)/g, '\n');
if (this.shouldBreak) {
@@ -145,27 +176,32 @@ export default Vue.component('misskey-flavored-markdown', {
}
}, text2.replace(/\n/g, ' '));
}
}
case 'title':
case 'title': {
return createElement('div', {
attrs: {
class: 'title'
}
}, token.title);
}
case 'emoji':
case 'emoji': {
const emoji = emojilib.lib[token.emoji];
return createElement('span', emoji ? emoji.char : token.content);
}
case 'search':
case 'search': {
return createElement(MkGoogle, {
props: {
q: token.query
}
});
}
default:
default: {
console.log('unknown ast type:', token.type);
}
}
}));

View File

@@ -2,7 +2,7 @@
<header class="bvonvjxbwzaiskogyhbwgyxvcgserpmu">
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
<router-link class="name" :to="note.user | userPage" v-user-preview="note.user.id">{{ note.user | userName }}</router-link>
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:bookmark%</span>
<span class="is-verified" v-if="note.user.isVerified" title="%i18n:common.verified-user%">%fa:star%</span>
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
<span class="is-bot" v-if="note.user.isBot">bot</span>
<span class="is-cat" v-if="note.user.isCat">cat</span>

View File

@@ -8,6 +8,7 @@
<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
<img v-if="reaction == 'rip'" src="/assets/reactions/rip.png" alt="%i18n:common.reactions.rip%">
<template v-if="reaction == 'pudding'">
<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">

View File

@@ -10,9 +10,10 @@
<button @click="react('hmm')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.hmm%"><mk-reaction-icon reaction='hmm'/></button>
<button @click="react('surprise')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.surprise%"><mk-reaction-icon reaction='surprise'/></button>
<button @click="react('congrats')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.congrats%"><mk-reaction-icon reaction='congrats'/></button>
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="4" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="5" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="6" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
<button @click="react('angry')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="7" title="%i18n:common.reactions.angry%"><mk-reaction-icon reaction='angry'/></button>
<button @click="react('confused')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="8" title="%i18n:common.reactions.confused%"><mk-reaction-icon reaction='confused'/></button>
<button @click="react('rip')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="9" title="%i18n:common.reactions.rip%"><mk-reaction-icon reaction='rip'/></button>
<button @click="react('pudding')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="10" title="%i18n:common.reactions.pudding%"><mk-reaction-icon reaction='pudding'/></button>
</div>
</div>
</div>

View File

@@ -1,15 +1,16 @@
<template>
<div class="mk-reactions-viewer">
<template v-if="reactions">
<span v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
<span v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
<span v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
<span v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
<span v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
<span v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
<span v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
<span v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
<span v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
<span :class="{notReacted}" @click="react('like')" v-if="reactions.like"><mk-reaction-icon reaction="like"/><span>{{ reactions.like }}</span></span>
<span :class="{notReacted}" @click="react('love')" v-if="reactions.love"><mk-reaction-icon reaction="love"/><span>{{ reactions.love }}</span></span>
<span :class="{notReacted}" @click="react('laugh')" v-if="reactions.laugh"><mk-reaction-icon reaction="laugh"/><span>{{ reactions.laugh }}</span></span>
<span :class="{notReacted}" @click="react('hmm')" v-if="reactions.hmm"><mk-reaction-icon reaction="hmm"/><span>{{ reactions.hmm }}</span></span>
<span :class="{notReacted}" @click="react('surprise')" v-if="reactions.surprise"><mk-reaction-icon reaction="surprise"/><span>{{ reactions.surprise }}</span></span>
<span :class="{notReacted}" @click="react('congrats')" v-if="reactions.congrats"><mk-reaction-icon reaction="congrats"/><span>{{ reactions.congrats }}</span></span>
<span :class="{notReacted}" @click="react('angry')" v-if="reactions.angry"><mk-reaction-icon reaction="angry"/><span>{{ reactions.angry }}</span></span>
<span :class="{notReacted}" @click="react('confused')" v-if="reactions.confused"><mk-reaction-icon reaction="confused"/><span>{{ reactions.confused }}</span></span>
<span :class="{notReacted}" @click="react('rip')" v-if="reactions.rip"><mk-reaction-icon reaction="rip"/><span>{{ reactions.rip }}</span></span>
<span :class="{notReacted}" @click="react('pudding')" v-if="reactions.pudding"><mk-reaction-icon reaction="pudding"/><span>{{ reactions.pudding }}</span></span>
</template>
</div>
</template>
@@ -21,6 +22,17 @@ export default Vue.extend({
computed: {
reactions(): number {
return this.note.reactionCounts;
},
notReacted(): boolean {
return this.note.myReaction == null;
}
},
methods: {
react(reaction: string) {
(this as any).api('notes/reactions/create', {
noteId: this.note.id,
reaction: reaction
});
}
}
});
@@ -39,6 +51,9 @@ root(isDark)
> span
margin-right 8px
&.notReacted
cursor pointer
> .mk-reaction-icon
font-size 1.4em

View File

@@ -12,13 +12,13 @@
</ui-input>
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
<p style="margin: 8px 0;" v-if="twitterIntegration">%i18n:@or%<a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p>
</form>
</template>
<script lang="ts">
import Vue from 'vue';
import { apiUrl, host } from '../../../config';
import { apiUrl, host, twitterIntegration } from '../../../config';
export default Vue.extend({
props: {
@@ -36,7 +36,8 @@ export default Vue.extend({
password: '',
token: '',
apiUrl,
host
host,
twitterIntegration
};
},
methods: {

View File

@@ -45,6 +45,9 @@ root(isDark)
color isDark ? #fff : #606266
transition 0.1s
*
pointer-events none
&:hover
&:focus
color $theme-color

View File

@@ -1,7 +1,5 @@
<template>
<iframe v-if="youtubeId" type="text/html" height="250"
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
frameborder="0"/>
<iframe v-if="player" :src="player" heigth="250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
<div v-else-if="tweetUrl && detail" class="twitter">
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
<a :href="url"></a>
@@ -48,7 +46,7 @@ export default Vue.extend({
thumbnail: null,
icon: null,
sitename: null,
youtubeId: null,
player: null,
tweetUrl: null,
misskeyUrl
};
@@ -56,11 +54,7 @@ export default Vue.extend({
created() {
const url = new URL(this.url);
if (url.hostname == 'www.youtube.com') {
this.youtubeId = url.searchParams.get('v');
} else if (url.hostname == 'youtu.be') {
this.youtubeId = url.pathname;
} else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
this.tweetUrl = url;
const twttr = (window as any).twttr || {};
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
@@ -79,20 +73,99 @@ export default Vue.extend({
twttr.ready = loadTweet;
(window as any).twttr = twttr;
}
} else {
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
res.json().then(info => {
return;
}
fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
res.json().then(info => {
if (info.url != null) {
this.title = info.title;
this.description = info.description;
this.thumbnail = info.thumbnail;
this.icon = info.icon;
this.sitename = info.sitename;
this.fetching = false;
});
});
}
}
if ([ // THIS IS THE WHITELIST FOR THE EMBED PLAYER
'afreecatv.com',
'aparat.com',
'applemusic.com',
'amazon.com',
'awa.fm',
'bandcamp.com',
'bbc.co.uk',
'beatport.com',
'bilibili.com',
'boomstream.com',
'breakers.tv',
'cam4.com',
'cavelis.net',
'chaturbate.com',
'cnn.com',
'cybergame.tv',
'dailymotion.com',
'deezer.com',
'djlive.pl',
'e-onkyo.com',
'eventials.com',
'facebook.com',
'fc2.com',
'gameplank.tv',
'goodgame.ru',
'google.com',
'hardtunes.com',
'instagram.com',
'johnnylooch.com',
'kexp.org',
'lahzenegar.com',
'liveedu.tv',
'livetube.cc',
'livestream.com',
'meridix.com',
'mixcloud.com',
'mixer.com',
'mobcrush.com',
'mylive.in.th',
'myspace.com',
'netflix.com',
'newretrowave.com',
'nhk.or.jp',
'nicovideo.jp',
'nico.ms',
'noisetrade.com',
'nood.tv',
'npr.org',
'openrec.tv',
'pandora.com',
'pandora.tv',
'picarto.tv',
'pscp.tv',
'restream.io',
'reverbnation.com',
'sermonaudio.com',
'smashcast.tv',
'songkick.com',
'soundcloud.com',
'spinninrecords.com',
'spotify.com',
'stitcher.com',
'stream.me',
'switchboard.live',
'tunein.com',
'twitcasting.tv',
'twitch.tv',
'twitter.com',
'vaughnlive.tv',
'veoh.com',
'vimeo.com',
'watchpeoplecode.com',
'web.tv',
'youtube.com',
'youtu.be'
].some(x => x == url.hostname || url.hostname.endsWith(`.${x}`)))
this.player = info.player;
} // info.url
}) // json
}); // fetch
} // created
});
</script>

View File

@@ -71,7 +71,6 @@ export default Vue.extend({
this.user = user;
this.fetching = false;
Progress.done();
document.title = getUserName(this.user) + ' | %i18n:common.name%';
});
},

View File

@@ -4,7 +4,7 @@
<div>
<p>%fa:R hdd%Storage</p>
<p>Total: {{ total | bytes(1) }}</p>
<p>Available: {{ available | bytes(1) }}</p>
<p>Free: {{ available | bytes(1) }}</p>
<p>Used: {{ used | bytes(1) }}</p>
</div>
</div>

View File

@@ -22,6 +22,7 @@ declare const _CODENAME_: string;
declare const _LICENSE_: string;
declare const _GOOGLE_MAPS_API_KEY_: string;
declare const _WELCOME_BG_URL_: string;
declare const _TWITTER_INTEGRATION_: boolean;
export const host = _HOST_;
export const hostname = _HOSTNAME_;
@@ -47,3 +48,4 @@ export const codename = _CODENAME_;
export const license = _LICENSE_;
export const googleMapsApiKey = _GOOGLE_MAPS_API_KEY_;
export const welcomeBgUrl = _WELCOME_BG_URL_;
export const twitterIntegration = _TWITTER_INTEGRATION_;

View File

@@ -8,7 +8,7 @@ export default (os: OS) => (cb, file = null) => {
const w = os.new(CropWindow, {
image: file,
title: 'アバターとして表示する部分を選択',
title: '%i18n:desktop.avatar-crop-title%',
aspectRatio: 1 / 1
});
@@ -18,11 +18,11 @@ export default (os: OS) => (cb, file = null) => {
data.append('file', blob, file.name + '.cropped.png');
os.api('drive/folders/find', {
name: 'アイコン'
name: '%i18n:desktop.avatar%'
}).then(iconFolder => {
if (iconFolder.length === 0) {
os.api('drive/folders/create', {
name: 'アイコン'
name: '%i18n:desktop.avatar%'
}).then(iconFolder => {
upload(data, iconFolder);
});
@@ -41,7 +41,7 @@ export default (os: OS) => (cb, file = null) => {
const upload = (data, folder) => {
const dialog = os.new(ProgressDialog, {
title: '新しいアバターをアップロードしています'
title: '%i18n:desktop.uploading-avatar%'
});
document.body.appendChild(dialog.$el);
@@ -76,10 +76,10 @@ export default (os: OS) => (cb, file = null) => {
});
os.apis.dialog({
title: '%fa:info-circle%アバターを更新しました',
text: '新しいアバターが反映されるまで時間がかかる場合があります。',
title: '%fa:info-circle% %i18n:desktop.avatar-updated%',
text: null,
actions: [{
text: 'わかった'
text: '%i18n:common.got-it%'
}]
});
@@ -92,7 +92,7 @@ export default (os: OS) => (cb, file = null) => {
} else {
os.apis.chooseDriveFile({
multiple: false,
title: '%fa:image%アバターにする画像を選択'
title: '%fa:image% %i18n:desktop.choose-avatar%'
}).then(file => {
fileSelected(file);
});

View File

@@ -8,7 +8,7 @@ export default (os: OS) => {
const cropImage = file => new Promise((resolve, reject) => {
const w = os.new(CropWindow, {
image: file,
title: 'バナーとして表示する部分を選択',
title: '%i18n:desktop.banner-crop-title%',
aspectRatio: 16 / 9
});
@@ -18,11 +18,11 @@ export default (os: OS) => {
data.append('file', blob, file.name + '.cropped.png');
os.api('drive/folders/find', {
name: 'バナー'
name: '%i18n:desktop.banner%'
}).then(bannerFolder => {
if (bannerFolder.length === 0) {
os.api('drive/folders/create', {
name: 'バナー'
name: '%i18n:desktop.banner%'
}).then(iconFolder => {
resolve(upload(data, iconFolder));
});
@@ -43,7 +43,7 @@ export default (os: OS) => {
const upload = (data, folder) => new Promise((resolve, reject) => {
const dialog = os.new(ProgressDialog, {
title: '新しいバナーをアップロードしています'
title: '%i18n:desktop.uploading-banner%'
});
document.body.appendChild(dialog.$el);
@@ -79,10 +79,10 @@ export default (os: OS) => {
});
os.apis.dialog({
title: '%fa:info-circle%バナーを更新しました',
text: '新しいバナーが反映されるまで時間がかかる場合があります。',
title: '%fa:info-circle% %i18n:desktop.banner-updated%',
text: null,
actions: [{
text: 'わかった'
text: '%i18n:common.got-it%'
}]
});
@@ -95,7 +95,7 @@ export default (os: OS) => {
? Promise.resolve(file)
: os.apis.chooseDriveFile({
multiple: false,
title: '%fa:image%バナーにする画像を選択'
title: '%fa:image% %i18n:desktop.choose-banner%'
});
return selectedFile

View File

@@ -24,6 +24,7 @@ import updateBanner from './api/update-banner';
import MkIndex from './views/pages/index.vue';
import MkDeck from './views/pages/deck/deck.vue';
import MkAdmin from './views/pages/admin/admin.vue';
import MkUser from './views/pages/user/user.vue';
import MkFavorites from './views/pages/favorites.vue';
import MkSelectDrive from './views/pages/selectdrive.vue';
@@ -55,6 +56,7 @@ init(async (launch) => {
routes: [
{ path: '/', name: 'index', component: MkIndex },
{ path: '/deck', name: 'deck', component: MkDeck },
{ path: '/admin', name: 'admin', component: MkAdmin },
{ path: '/i/customize-home', component: MkHomeCustomize },
{ path: '/i/favorites', component: MkFavorites },
{ path: '/i/messaging/:user', component: MkMessagingRoom },

View File

@@ -16,7 +16,7 @@
<p>%i18n:@banner%</p>
</div>
<div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`">
<img :src="file.url" alt="" @load="onThumbnailLoaded"/>
<img :src="file.thumbnailUrl" alt="" @load="onThumbnailLoaded"/>
</div>
<p class="name">
<span>{{ file.name.lastIndexOf('.') != -1 ? file.name.substr(0, file.name.lastIndexOf('.')) : file.name }}</span>
@@ -99,7 +99,7 @@ export default Vue.extend({
text: '%i18n:@contextmenu.set-as-banner%',
action: this.setAsBanner
}]
}, {
}, /*{
type: 'nest',
text: '%i18n:@contextmenu.open-in-app%',
menu: [{
@@ -107,11 +107,11 @@ export default Vue.extend({
text: '%i18n:@contextmenu.add-app%...',
action: this.addApp
}]
}], {
closed: () => {
this.isContextmenuShowing = false;
}
});
}*/], {
closed: () => {
this.isContextmenuShowing = false;
}
});
},
onDragstart(e) {

View File

@@ -67,16 +67,16 @@ export default Vue.extend({
text: '%i18n:@contextmenu.rename%',
icon: '%fa:i-cursor%',
action: this.rename
}, null, {
}/*, null, {
type: 'item',
text: '%i18n:common.delete%',
icon: '%fa:R trash-alt%',
action: this.deleteFolder
}], {
closed: () => {
this.isContextmenuShowing = false;
}
});
}*/], {
closed: () => {
this.isContextmenuShowing = false;
}
});
},
onMouseover() {

View File

@@ -567,6 +567,7 @@ export default Vue.extend({
// ファイル一覧取得
(this as any).api('drive/files', {
folderId: this.folder ? this.folder.id : null,
untilId: this.files[this.files.length - 1].id,
limit: max + 1
}).then(files => {
if (files.length == max + 1) {

View File

@@ -37,7 +37,7 @@ export default Vue.extend({
style(): any {
return {
'background-color': this.image.properties.avgColor && this.image.properties.avgColor.length == 3 ? `rgb(${this.image.properties.avgColor.join(',')})` : 'transparent',
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.url})`
'background-image': this.raw ? `url(${this.image.url})` : `url(${this.image.thumbnailUrl})`
};
}
},

View File

@@ -79,7 +79,6 @@
<script lang="ts">
import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify';
import parse from '../../../../../mfm/parse';
import MkPostFormWindow from './post-form-window.vue';
@@ -129,7 +128,7 @@ export default Vue.extend({
: 0;
},
title(): string {
return dateStringify(this.p.createdAt);
return new Date(this.p.createdAt).toLocaleString();
},
urls(): string[] {
if (this.p.text) {

View File

@@ -12,7 +12,6 @@
<script lang="ts">
import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify';
export default Vue.extend({
props: {
@@ -28,7 +27,7 @@ export default Vue.extend({
},
computed: {
title(): string {
return dateStringify(this.note.createdAt);
return new Date(this.note.createdAt).toLocaleString();
}
}
});

View File

@@ -12,13 +12,12 @@
<script lang="ts">
import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify';
export default Vue.extend({
props: ['note'],
computed: {
title(): string {
return dateStringify(this.note.createdAt);
return new Date(this.note.createdAt).toLocaleString();
}
}
});

View File

@@ -18,7 +18,7 @@
<div class="body">
<p v-if="p.cw != null" class="cw">
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '隠す' : 'もっと見る' }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="p.cw == null || showContent">
<div class="text">
@@ -71,7 +71,6 @@
<script lang="ts">
import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify';
import parse from '../../../../../mfm/parse';
import MkPostFormWindow from './post-form-window.vue';
@@ -128,7 +127,7 @@ export default Vue.extend({
},
title(): string {
return dateStringify(this.p.createdAt);
return new Date(this.p.createdAt).toLocaleString();
},
urls(): string[] {

View File

@@ -33,7 +33,7 @@
<script lang="ts">
import Vue from 'vue';
import { url } from '../../../config';
import * as config from '../../../config';
import getNoteSummary from '../../../../../misc/get-note-summary';
import XNote from './notes.note.vue';
@@ -69,7 +69,7 @@ export default Vue.extend({
const date = new Date(note.createdAt).getDate();
const month = new Date(note.createdAt).getMonth() + 1;
note._date = date;
note._datetext = `${month}${date}`;
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return note;
});
}
@@ -149,7 +149,7 @@ export default Vue.extend({
// サウンドを再生する
if (this.$store.state.device.enableSounds && !silent) {
const sound = new Audio(`${url}/assets/post.mp3`);
const sound = new Audio(`${config.url}/assets/post.mp3`);
sound.volume = this.$store.state.device.soundVolume;
sound.play();
}
@@ -187,7 +187,7 @@ export default Vue.extend({
clearNotification() {
this.unreadCount = 0;
document.title = '%i18n:common.name%';
document.title = config.name;
},
onVisibilitychange() {

View File

@@ -130,7 +130,7 @@ export default Vue.extend({
const date = new Date(notification.createdAt).getDate();
const month = new Date(notification.createdAt).getMonth() + 1;
notification._date = date;
notification._datetext = `${month}${date}`;
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return notification;
});
}

View File

@@ -14,7 +14,7 @@
<b>%i18n:@recent-tags%:</b>
<a v-for="tag in recentHashtags.slice(0, 5)" @click="addTag(tag)" title="%@click-to-tagging%">#{{ tag }}</a>
</div>
<input v-show="useCw" v-model="cw" placeholder="内容への注釈 (オプション)">
<input v-show="useCw" v-model="cw" placeholder="%i18n:@annotations%">
<textarea :class="{ with: (files.length != 0 || poll) }"
ref="text" v-model="text" :disabled="posting"
@keydown="onKeydown" @paste="onPaste" :placeholder="placeholder"

View File

@@ -55,6 +55,7 @@
<span>%i18n:@show-maps-desc%</span>
</mk-switch>
<mk-switch v-model="$store.state.settings.reversiBoardLabels" @change="onChangeReversiBoardLabels" text="%i18n:common.show-reversi-board-labels%"/>
<mk-switch v-model="$store.state.settings.disableAnimatedMfm" @change="onChangeDisableAnimatedMfm" text="%i18n:common.disable-animated-mfm%"/>
</section>
<section class="web" v-show="page == 'web'">
@@ -376,6 +377,12 @@ export default Vue.extend({
value: v
});
},
onChangeDisableAnimatedMfm(v) {
this.$store.dispatch('settings/set', {
key: 'disableAnimatedMfm',
value: v
});
},
onChangeGradientWindowHeader(v) {
this.$store.dispatch('settings/set', {
key: 'gradientWindowHeader',

View File

@@ -4,7 +4,7 @@
<div class="main" ref="main">
<div class="backdrop"></div>
<div class="main">
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>%i18n:@adjective%</p>
<div class="container" ref="mainContainer">
<div class="left">
<x-nav/>
@@ -155,10 +155,15 @@ root(isDark)
max-width 1300px
margin 0 auto
> *
position absolute
height 48px
> .center
margin auto
right 0
> .icon
margin auto
display block
width 48px
height 48px
@@ -169,11 +174,12 @@ root(isDark)
opacity 0.3
cursor pointer
> .left
height 48px
> .left,
> .center
left 0
> .right
height 48px
right 0
> *
display inline-block

View File

@@ -27,7 +27,7 @@ export default Vue.extend({
methods: {
add() {
(this as any).apis.input({
title: 'リスト名',
title: '%i18n:@list-name%',
}).then(async title => {
const list = await (this as any).api('users/lists/create', {
title

View File

@@ -10,13 +10,13 @@
<div class="description">{{ u.description }}</div>
<div class="status">
<div>
<p>%i18n:@notes%</p><a>{{ u.notesCount }}</a>
<p>%i18n:@notes%</p><span>{{ u.notesCount }}</span>
</div>
<div>
<p>%i18n:@following%</p><a>{{ u.followingCount }}</a>
<p>%i18n:@following%</p><span>{{ u.followingCount }}</span>
</div>
<div>
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
<p>%i18n:@followers%</p><span>{{ u.followersCount }}</span>
</div>
</div>
<mk-follow-button v-if="$store.getters.isSignedIn && u.id != $store.state.i.id" :user="u"/>
@@ -149,7 +149,7 @@ root(isDark)
font-size 0.7em
color #aaa
> a
> span
font-size 1em
color $theme-color

View File

@@ -0,0 +1,37 @@
<template>
<div>
<h1>%i18n:@dashboard%</h1>
<div v-if="stats">
<p><b>%i18n:@all-users%</b>: <span>{{ stats.usersCount | number }}</span></p>
<p><b>%i18n:@original-users%</b>: <span>{{ stats.originalUsersCount | number }}</span></p>
<p><b>%i18n:@all-notes%</b>: <span>{{ stats.notesCount | number }}</span></p>
<p><b>%i18n:@original-notes%</b>: <span>{{ stats.originalNotesCount | number }}</span></p>
</div>
</div>
</template>
<script lang="ts">
import Vue from "vue";
export default Vue.extend({
data() {
return {
stats: null
};
},
created() {
(this as any).api('stats').then(stats => {
this.stats = stats;
});
}
});
</script>
<style lang="stylus" scoped>
h1
margin 0 0 1em 0
padding 0 0 8px 0
font-size 1em
color #555
border-bottom solid 1px #eee
</style>

View File

@@ -0,0 +1,51 @@
<template>
<div>
<header>%i18n:@suspend-user%</header>
<input v-model="username" type="text" class="ui"/>
<button class="ui" @click="suspendUser" :disabled="suspending">%i18n:@suspend%</button>
</div>
</template>
<script lang="ts">
import Vue from "vue";
import parseAcct from "../../../../../../misc/acct/parse";
export default Vue.extend({
data() {
return {
username: null,
suspending: false
};
},
methods: {
async suspendUser() {
this.suspending = true;
const user = await (this as any).os.api(
"users/show",
parseAcct(this.username)
);
await (this as any).os.api("admin/suspend-user", {
userId: user.id
});
this.suspending = false;
(this as any).os.apis.dialog({ text: "%i18n:@suspended%" });
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
header
margin 10px 0
button
margin 16px 0
</style>

View File

@@ -0,0 +1,51 @@
<template>
<div>
<header>%i18n:@unsuspend-user%</header>
<input v-model="username" type="text" class="ui"/>
<button class="ui" @click="unsuspendUser" :disabled="unsuspending">%i18n:@unsuspend%</button>
</div>
</template>
<script lang="ts">
import Vue from "vue";
import parseAcct from "../../../../../../misc/acct/parse";
export default Vue.extend({
data() {
return {
username: null,
unsuspending: false
};
},
methods: {
async unsuspendUser() {
this.unsuspending = true;
const user = await (this as any).os.api(
"users/show",
parseAcct(this.username)
);
await (this as any).os.api("admin/unsuspend-user", {
userId: user.id
});
this.unsuspending = false;
(this as any).os.apis.dialog({ text: "%i18n:@unsuspended%" });
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
header
margin 10px 0
button
margin 16px 0
</style>

View File

@@ -0,0 +1,102 @@
<template>
<div class="mk-admin">
<nav>
<ul>
<li @click="nav('dashboard')" :class="{ active: page == 'dashboard' }">%fa:chalkboard .fw%%i18n:@dashboard%</li>
<li @click="nav('users')" :class="{ active: page == 'users' }">%fa:users .fw%%i18n:@users%</li>
<!-- <li @click="nav('drive')" :class="{ active: page == 'drive' }">%fa:cloud .fw%%i18n:@drive%</li> -->
<!-- <li @click="nav('update')" :class="{ active: page == 'update' }">%i18n:@update%</li> -->
</ul>
</nav>
<main>
<div v-if="page == 'dashboard'">
<x-dashboard/>
</div>
<div v-if="page == 'users'">
<x-suspend-user/>
<x-unsuspend-user/>
</div>
<div v-if="page == 'drive'"></div>
<div v-if="page == 'update'"></div>
</main>
</div>
</template>
<script lang="ts">
import Vue from "vue";
import XDashboard from "./admin.dashboard.vue";
import XSuspendUser from "./admin.suspend-user.vue";
import XUnsuspendUser from "./admin.unsuspend-user.vue";
export default Vue.extend({
components: {
XDashboard,
XSuspendUser,
XUnsuspendUser
},
data() {
return {
page: 'dashboard'
};
},
methods: {
nav(page: string) {
this.page = page;
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
.mk-admin
display flex
height 100%
margin 32px
> nav
flex 0 0 250px
width 100%
height 100%
padding 16px 0 0 0
overflow auto
border-right solid 1px #ddd
> ul
list-style none
> li
display block
padding 10px 16px
margin 0
color #666
cursor pointer
user-select none
transition margin-left 0.2s ease
> [data-fa]
margin-right 4px
&:hover
color #555
&.active
margin-left 8px
color $theme-color !important
> main
width 100%
padding 16px 32px
header
margin 10px 0
button
margin 16px 0
position absolute
right 0
</style>

View File

@@ -72,7 +72,7 @@ export default Vue.extend({
const date = new Date(note.createdAt).getDate();
const month = new Date(note.createdAt).getMonth() + 1;
note._date = date;
note._datetext = `${month}${date}`;
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return note;
});
}

View File

@@ -51,7 +51,7 @@ export default Vue.extend({
const date = new Date(notification.createdAt).getDate();
const month = new Date(notification.createdAt).getMonth() + 1;
notification._date = date;
notification._datetext = `${month}${date}`;
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return notification;
});
}

View File

@@ -1,6 +1,6 @@
<template>
<component :is="ui ? 'mk-ui' : 'div'">
<mk-reversi :game-id="$route.params.game" @nav="nav"/>
<mk-reversi :game-id="$route.params.game" @nav="nav" :self-nav="false"/>
</component>
</template>
@@ -14,9 +14,14 @@ export default Vue.extend({
}
},
methods: {
nav(game) {
history.pushState(null, null, '/reversi/' + game.id);
},
nav(game, actualNav) {
if (actualNav) {
this.$router.push('/reversi/' + game.id);
} else {
// TODO: https://github.com/vuejs/vue-router/issues/703
this.$router.push('/reversi/' + game.id);
}
}
}
});
</script>

View File

@@ -4,9 +4,11 @@
<script lang="ts">
import Vue from 'vue';
import * as config from '../../../config';
export default Vue.extend({
mounted() {
document.title = '%i18n:common.name% - %i18n:@title%';
document.title = `${config.name} - %i18n:@title%`;
}
});
</script>

View File

@@ -7,6 +7,7 @@
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import * as config from '../../../config';
export default Vue.extend({
props: {
@@ -16,7 +17,7 @@ export default Vue.extend({
}
},
mounted() {
document.title = '%i18n:common.name%';
document.title = config.name;
Progress.start();
},

View File

@@ -1,6 +1,6 @@
<template>
<div class="pptjhabgjtt7kwskbfv4y3uml6fpuhmr">
<h1>{{'%i18n:@share-with%'.split("{}")[0] + '%i18n:common.name%' + '%i18n:@share-with%'.split("{}")[1]}}</h1>
<h1>{{ '%i18n:@share-with%'.replace('{}', name) }}</h1>
<div>
<mk-signin v-if="!$store.getters.isSignedIn"/>
<mk-post-form v-else-if="!posted" :initial-text="text" :instant="true" @posted="posted = true"/>
@@ -12,10 +12,12 @@
<script lang="ts">
import Vue from 'vue';
import * as config from '../../../config';
export default Vue.extend({
data() {
return {
name: config.name,
posted: false,
text: new URLSearchParams(location.search).get('text')
};

View File

@@ -176,6 +176,10 @@ root(isDark)
height 120px
box-shadow 1px 1px 3px rgba(#000, 0.2)
> &.cat::before,
> &.cat::after
border-width 8px
> .body
padding 16px 16px 16px 154px
color isDark ? #c5ced6 : #555

View File

@@ -13,7 +13,7 @@
<span v-if="user.isMuted">%fa:eye% %i18n:@unmute%</span>
<span v-if="!user.isMuted">%fa:eye-slash% %i18n:@mute%</span>
</button>
<button class="mute ui" @click="list">%fa:list% リストに追加</button>
<button class="mute ui" @click="list">%fa:list% %i18n:@push-to-a-list%</button>
</div>
</div>
</template>
@@ -76,7 +76,7 @@ export default Vue.extend({
});
(this as any).apis.dialog({
title: 'Done!',
text: `${this.user.name}${list.title}に追加しました。`
text: '%i18n:@list-pushed%'.replace('{user}', this.user.name).replace('{list}', list.title)
});
});
}

View File

@@ -68,7 +68,6 @@ export default Vue.extend({
this.user = user;
this.fetching = false;
Progress.done();
document.title = getUserName(this.user) + ' | %i18n:common.name%';
});
},

View File

@@ -8,7 +8,7 @@
<div class="body" :style="{ backgroundImage: `url('${ welcomeBgUrl }')` }">
<div class="container">
<div class="info">
<span>%i18n:common.name% <b>{{ host }}</b></span>
<span><b>{{ host }}</b></span>
<span class="stats" v-if="stats">
<span>%fa:user% {{ stats.originalUsersCount | number }}</span>
<span>%fa:pencil-alt% {{ stats.originalNotesCount | number }}</span>
@@ -16,9 +16,9 @@
</div>
<main>
<div class="about">
<h1 v-if="name">{{ name }}</h1>
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%"></h1>
<p class="powerd-by" v-if="name">%i18n:@powered-by-misskey%</p>
<h1 v-if="name != 'Misskey'">{{ name }}</h1>
<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" :alt="name"></h1>
<p class="powerd-by" v-if="name != 'Misskey'" v-html="'%i18n:@powered-by-misskey%'"></p>
<p class="desc" v-html="description || '%i18n:common.about%'"></p>
<a ref="signup" @click="signup">📦 %i18n:@signup%</a>
</div>
@@ -32,7 +32,7 @@
<mk-nav class="nav"/>
</div>
<mk-forkit class="forkit"/>
<img src="assets/title.dark.svg" alt="%i18n:common.name%">
<img src="assets/title.dark.svg" :alt="name">
</div>
<div class="tl">
<mk-welcome-timeline :max="20"/>

View File

@@ -55,7 +55,7 @@ export default define({
}).then(data => {
this.clear();
}).catch(err => {
alert('失敗した');
alert('Something happened');
}).then(() => {
this.posting = false;
});

View File

@@ -6,10 +6,11 @@
<div class="banner"
:style="$store.state.i.bannerUrl ? `background-image: url(${$store.state.i.bannerUrl})` : ''"
title="%i18n:@update-banner%"
@click="os.apis.updateBanner"
@click="() => os.apis.updateBanner()"
></div>
<mk-avatar class="avatar" :user="$store.state.i"
@click="os.apis.updateAvatar"
:disable-link="true"
@click="() => os.apis.updateAvatar()"
title="%i18n:@update-avatar%"
/>
<router-link class="name" :to="$store.state.i | userPage">{{ $store.state.i | userName }}</router-link>

View File

@@ -1,6 +1,6 @@
<template>
<mk-ui>
<p v-if="fetching">読み込み中</p>
<p v-if="fetching">%i18n:common.loading%</p>
<b-card v-if="!fetching" :header="app.name">
<b-form-group label="App Secret">
<b-input :value="app.secret" readonly/>

View File

@@ -1,6 +1,6 @@
<template>
<mk-ui>
<b-button to="/apps" variant="primary">アプリの管理</b-button>
<b-button to="/apps" variant="primary">%i18n:@manage-apps%</b-button>
</mk-ui>
</template>

View File

@@ -1,7 +1,7 @@
<template>
<div>
<b-navbar toggleable="md" type="dark" variant="info">
<b-navbar-brand>%i18n:common.name% Developers</b-navbar-brand>
<b-navbar-brand>Developers</b-navbar-brand>
<b-navbar-nav>
<b-nav-item to="/">Home</b-nav-item>
<b-nav-item to="/apps">Apps</b-nav-item>

View File

@@ -55,7 +55,7 @@ Vue.mixin({
console.info(`Misskey v${version} (${codename})`);
console.info(
'%cここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。',
'%c%i18n:common.do-not-copy-paste%',
'color: red; background: yellow; font-size: 16px; font-weight: bold;');
// BootTimer解除

View File

@@ -43,7 +43,7 @@ export default Vue.extend({
thumbnail(): any {
return {
'background-color': this.file.properties.avgColor && this.file.properties.avgColor.length == 3 ? `rgb(${this.file.properties.avgColor.join(',')})` : 'transparent',
'background-image': `url(${this.file.url})`
'background-image': `url(${this.file.thumbnailUrl})`
};
}
},

View File

@@ -27,7 +27,7 @@ export default Vue.extend({
},
computed: {
style(): any {
let url = `url(${this.image.url})`;
let url = `url(${this.image.thumbnailUrl})`;
if (this.$store.state.device.loadRemoteMedia || this.$store.state.device.lightmode) {
url = null;

View File

@@ -38,6 +38,7 @@
<script lang="ts">
import Vue from 'vue';
import getNoteSummary from '../../../../../misc/get-note-summary';
import * as config from '../../../config';
const displayLimit = 30;
@@ -66,7 +67,7 @@ export default Vue.extend({
const date = new Date(note.createdAt).getDate();
const month = new Date(note.createdAt).getMonth() + 1;
note._date = date;
note._datetext = `${month}${date}`;
note._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return note;
});
}
@@ -183,7 +184,7 @@ export default Vue.extend({
clearNotification() {
this.unreadCount = 0;
document.title = '%i18n:common.name%';
document.title = config.name;
},
onVisibilitychange() {

View File

@@ -42,7 +42,7 @@ export default Vue.extend({
const date = new Date(notification.createdAt).getDate();
const month = new Date(notification.createdAt).getMonth() + 1;
notification._date = date;
notification._datetext = `${month}${date}`;
notification._datetext = '%i18n:common.month-and-day%'.replace('{month}', month.toString()).replace('{day}', date.toString());
return notification;
});
}

View File

@@ -3,12 +3,12 @@
<mk-special-message/>
<div class="main" ref="main">
<div class="backdrop"></div>
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>%i18n:@adjective%</p>
<div class="content" ref="mainContainer">
<button class="nav" @click="$parent.isDrawerOpening = true">%fa:bars%</button>
<template v-if="hasUnreadNotification || hasUnreadMessagingMessage || hasGameInvitation">%fa:circle%</template>
<h1>
<slot>%i18n:common.name%</slot>
<slot>config.name</slot>
</h1>
<slot name="func"></slot>
</div>
@@ -20,11 +20,13 @@
<script lang="ts">
import Vue from 'vue';
import * as anime from 'animejs';
import * as config from '../../../config';
export default Vue.extend({
props: ['func'],
data() {
return {
config,
hasGameInvitation: false,
connection: null,
connectionId: null

View File

@@ -25,6 +25,7 @@
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -43,7 +44,7 @@ export default Vue.extend({
window.addEventListener('popstate', this.onPopState);
},
mounted() {
document.title = '%i18n:common.name% Drive';
document.title = `${config.name} Drive`;
document.documentElement.style.background = '#fff';
},
beforeDestroy() {
@@ -63,7 +64,7 @@ export default Vue.extend({
(this.$refs as any).browser.openContextMenu();
},
onMoveRoot(silent) {
const title = '%i18n:common.name% Drive';
const title = `${config.name} Drive`;
if (!silent) {
// Rewrite URL
@@ -76,7 +77,7 @@ export default Vue.extend({
this.folder = null;
},
onOpenFolder(folder, silent) {
const title = folder.name + ' | %i18n:common.name% Drive';
const title = `${folder.name} | ${config.name} Drive`;
if (!silent) {
// Rewrite URL
@@ -89,7 +90,7 @@ export default Vue.extend({
this.folder = folder;
},
onOpenFile(file, silent) {
const title = file.name + ' | %i18n:common.name% Drive';
const title = `${file.name} | ${config.name} Drive`;
if (!silent) {
// Rewrite URL

View File

@@ -14,6 +14,7 @@
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -28,7 +29,7 @@ export default Vue.extend({
this.fetch();
},
mounted() {
document.title = '%i18n:common.name% | %i18n:@notifications%';
document.title = `${config.name} | %i18n:@notifications%`;
},
methods: {
fetch() {

View File

@@ -21,6 +21,7 @@ import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import parseAcct from '../../../../../misc/acct/parse';
import getUserName from '../../../../../misc/get-user-name';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -49,7 +50,7 @@ export default Vue.extend({
this.user = user;
this.fetching = false;
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | ' + config.name;
});
},
onLoaded() {

View File

@@ -20,6 +20,7 @@
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import parseAcct from '../../../../../misc/acct/parse';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -48,7 +49,7 @@ export default Vue.extend({
this.user = user;
this.fetching = false;
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | %i18n:common.name%';
document.title = '%i18n:@followers-of%'.replace('{}', this.name) + ' | ' + config.name;
});
},
onLoaded() {

View File

@@ -1,21 +1,27 @@
<template>
<mk-ui>
<span slot="header">%fa:gamepad%%i18n:@reversi%</span>
<mk-reversi :game-id="$route.params.game" @nav="nav"/>
<mk-reversi :game-id="$route.params.game" @nav="nav" :self-nav="false"/>
</mk-ui>
</template>
<script lang="ts">
import Vue from 'vue';
import * as config from '../../../../config';
export default Vue.extend({
mounted() {
document.title = '%i18n:common.name% %i18n:@reversi%';
document.title = `${config.name} %i18n:@reversi%`;
document.documentElement.style.background = '#fff';
},
methods: {
nav(game) {
history.pushState(null, null, '/reversi/' + game.id);
nav(game, actualNav) {
if (actualNav) {
this.$router.push('/reversi/' + game.id);
} else {
// TODO: https://github.com/vuejs/vue-router/issues/703
this.$router.push('/reversi/' + game.id);
}
}
}
});

View File

@@ -49,6 +49,7 @@
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import XTl from './home.timeline.vue';
import * as config from '../../../config';
export default Vue.extend({
components: {
@@ -96,7 +97,7 @@ export default Vue.extend({
},
mounted() {
document.title = '%i18n:common.name%';
document.title = config.name;
Progress.start();

View File

@@ -11,6 +11,7 @@
<script lang="ts">
import Vue from 'vue';
import parseAcct from '../../../../../misc/acct/parse';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -47,7 +48,7 @@ export default Vue.extend({
this.user = user;
this.fetching = false;
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | %i18n:common.name%`;
document.title = `%i18n:@messaging%: ${Vue.filter('userName')(this.user)} | ${config.name}`;
});
}
}

View File

@@ -8,10 +8,11 @@
<script lang="ts">
import Vue from 'vue';
import getAcct from '../../../../../misc/acct/render';
import * as config from '../../../config';
export default Vue.extend({
mounted() {
document.title = '%i18n:common.name% %i18n:@messaging%';
document.title = `${config.name} %i18n:@messaging%`;
},
methods: {
navigate(user) {

View File

@@ -16,6 +16,7 @@
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import * as config from '../../../config';
export default Vue.extend({
data() {
@@ -31,7 +32,7 @@ export default Vue.extend({
this.fetch();
},
mounted() {
document.title = '%i18n:common.name%';
document.title = config.name;
},
methods: {
fetch() {

View File

@@ -15,7 +15,7 @@ import Progress from '../../../common/scripts/loading';
export default Vue.extend({
mounted() {
document.title = '%i18n:common.name% | %i18n:@notifications%';
document.title = '%i18n:@notifications%';
Progress.start();
},

View File

@@ -25,7 +25,7 @@ export default Vue.extend({
};
},
mounted() {
document.title = '%i18n:common.name% | %i18n:@title%';
document.title = '%i18n:@title%';
Progress.start();

View File

@@ -3,7 +3,7 @@
<span slot="header">%fa:search% {{ q }}</span>
<main>
<p v-if="!fetching && empty">%fa:search%{{ q }}に関する投稿は見つかりませんでした</p>
<p :class="$style.empty" v-if="!fetching && empty">%fa:search% {{ '%i18n:not-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:not-found%'.split('{}')[1] }}</p>
<mk-notes ref="timeline" :more="existMore ? more : null"/>
</main>
</mk-ui>
@@ -12,6 +12,7 @@
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
import * as config from '../../../config';
const limit = 20;
@@ -34,7 +35,7 @@ export default Vue.extend({
}
},
mounted() {
document.title = `%i18n:@search%: ${this.q} | %i18n:common.name%`;
document.title = `%i18n:@search%: ${this.q} | ${config.name}`;
this.fetch();
},

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