Compare commits
272 Commits
Author | SHA1 | Date | |
---|---|---|---|
d7cd3a05dd | |||
882c60ef10 | |||
59c4c9a0b8 | |||
4a57482216 | |||
6bbccedb2d | |||
fee629849e | |||
e9ebc5151d | |||
8a5c8e8e2e | |||
4000da6be8 | |||
977a4373c5 | |||
e559417cab | |||
f793478709 | |||
15c9d15b8d | |||
3c194142a8 | |||
81dbf64eb7 | |||
7e646f109c | |||
d94c060998 | |||
3d29b052ea | |||
875d793512 | |||
5cdd6521a2 | |||
1df9c1005f | |||
53481accf1 | |||
8fcf75f77c | |||
b1385de758 | |||
f8ba73bebf | |||
ff4cb3555b | |||
361af34956 | |||
11689e6d18 | |||
6ea0028e0e | |||
b39d12f01a | |||
f97c1276fe | |||
73375a2f43 | |||
b87a35b71c | |||
9db9067647 | |||
7053c3125e | |||
e89a63e88c | |||
1b13700ae2 | |||
b7c2fa0c0c | |||
df847ebd86 | |||
fa72856272 | |||
20921e91bf | |||
f597e7c4ae | |||
380651ba62 | |||
45f852b832 | |||
80bf1d4b38 | |||
6909add1ec | |||
d53d059480 | |||
22830965e3 | |||
fa07b3023c | |||
02568df664 | |||
57acfae786 | |||
949c113c7f | |||
6656c87024 | |||
16d7f4ff92 | |||
2145d928df | |||
463aa3f56b | |||
38b4265bce | |||
85c4fdfdb1 | |||
4edb2d9587 | |||
58be3393c3 | |||
c64d8aa90a | |||
0457cd0afc | |||
ee8abb3abb | |||
48516c2eb4 | |||
8a88c896da | |||
048b9c295e | |||
6b3e3eb129 | |||
46ecabc7cb | |||
cc7af0b331 | |||
af654ee92b | |||
5c8adb3935 | |||
794821a847 | |||
4afbdaa3ce | |||
4d98f4d022 | |||
bec63f1454 | |||
4e7b1537d7 | |||
8010ad53ba | |||
6acbde05c2 | |||
beaecd54ee | |||
f0af941cef | |||
ac5d798cde | |||
d2a7c56149 | |||
fc0d339c9d | |||
11303b5bec | |||
b5bcc23d5f | |||
7c92eb2a14 | |||
466cae524e | |||
620722cb55 | |||
160f424466 | |||
fa051df381 | |||
5bd0695b0e | |||
831adfd22e | |||
9b5031dc4f | |||
150c1340a7 | |||
82190d18c8 | |||
0887580132 | |||
48f50bb811 | |||
5d4c63edb3 | |||
df6456c80a | |||
81d5e8c301 | |||
c221bf585c | |||
cdac704836 | |||
c0e0efa050 | |||
2711f86a95 | |||
c21119bb09 | |||
7b172d0b33 | |||
b102b1b0e8 | |||
df4afb32e7 | |||
ed21254497 | |||
5505b2e7af | |||
5d93748ff5 | |||
abddea0443 | |||
9fc1cc5255 | |||
1aa274e10d | |||
deeb536613 | |||
66b64320f1 | |||
9df620a520 | |||
9851612acf | |||
075934eac2 | |||
7fe0fa22c3 | |||
41dc729d95 | |||
e2cb34f109 | |||
ed7b619634 | |||
d09050f13f | |||
dcc76ab4f2 | |||
e035d942b3 | |||
9eada028b8 | |||
1cac95ce8a | |||
b707a574d1 | |||
df40121e4c | |||
0f2c3dfd79 | |||
2c187460a0 | |||
a32a78b5ef | |||
80d7c9bdef | |||
bc6439a339 | |||
d93e60d4dd | |||
4ba43b69b6 | |||
02b9032587 | |||
8b6649b41f | |||
a5a25813d8 | |||
27ceae7406 | |||
5d75746681 | |||
51a6bc4fe1 | |||
94f866b7c8 | |||
95be55135e | |||
7c50d9f1e9 | |||
5d9bb44f1b | |||
b832323508 | |||
48ce86d633 | |||
b1e377dab0 | |||
4c17d488d3 | |||
73c585b9a2 | |||
a3377ff0ba | |||
0a17033551 | |||
12c13660ca | |||
3f1b85452b | |||
5776c52205 | |||
e7a36d6176 | |||
8d42e94e57 | |||
20386acf4e | |||
c92e25ce16 | |||
08599c887e | |||
90ccbd3834 | |||
0931681e8f | |||
0a0da355b9 | |||
b2ec82fba5 | |||
d62597c265 | |||
23d311b6ef | |||
7efdee9145 | |||
45429c9d6b | |||
45adea23b4 | |||
aaa8331733 | |||
501922ed9c | |||
652bb03087 | |||
f1e769e74d | |||
b2e4957bb8 | |||
cb6a4037f2 | |||
9740db8685 | |||
41784de9be | |||
208493ba13 | |||
9798a9bf15 | |||
1df8487d20 | |||
dbfbdfa3f3 | |||
27853e9d51 | |||
03b4fe18f3 | |||
1f32531e07 | |||
a1397bfdbc | |||
bcdb70f407 | |||
ef81a66cf0 | |||
186b0ea560 | |||
ff53b04f4c | |||
1ac9730c7d | |||
d66e2947de | |||
92ca9b1444 | |||
f34ae64ff5 | |||
9ca8383f39 | |||
9fdc884e51 | |||
eeb4772a3c | |||
769e1ed45b | |||
78207c8a4d | |||
7837949b1a | |||
14b16b4733 | |||
256c216dfb | |||
13cee2b4f5 | |||
eb45eeb1ae | |||
3154350b64 | |||
519c9c4499 | |||
c2f6b09969 | |||
c8e2b22942 | |||
f433182c4c | |||
957392aaae | |||
bd8d06e133 | |||
dce347a117 | |||
ef37e20555 | |||
c617b60f70 | |||
fe6243b7a0 | |||
f5e31de81d | |||
5c495ebf7c | |||
9dd64c67a3 | |||
018837db0b | |||
00d5fdfc13 | |||
2debb0c2ca | |||
148d6737cc | |||
c15cb8d28c | |||
1d5471db70 | |||
086b83c1fe | |||
c509e0b86c | |||
e8a1ad9823 | |||
6446b1cfb1 | |||
2b9216c441 | |||
28656a701f | |||
cd628eaf54 | |||
5b9918538a | |||
b05ba5bd68 | |||
0afc7483f6 | |||
c069d01e4b | |||
070e5a3314 | |||
43b5a1e469 | |||
81bbf887e4 | |||
e0aa2ab2b6 | |||
f5000a0364 | |||
694ea9b5a0 | |||
d70bd44db7 | |||
c3cd499e8e | |||
64c89a6d52 | |||
0a4a7bf64c | |||
f879ea760a | |||
08d6269f90 | |||
f454473d6c | |||
2c347d7213 | |||
e6158838e0 | |||
974fe80245 | |||
9676723c85 | |||
9115629424 | |||
8f02716774 | |||
8feb5bd9a4 | |||
826542201e | |||
7ab1315008 | |||
662407f1ba | |||
679de41d8d | |||
89a97142c2 | |||
0a175fddba | |||
64d40b7e49 | |||
ac7e0d5973 | |||
f095951193 | |||
b93eab9cf7 | |||
53298933e4 | |||
e7cfae3ccb | |||
ebb03113ab | |||
b3a0fe823e | |||
bd8897bcc8 | |||
e3896122df |
@ -54,6 +54,8 @@ jobs:
|
||||
- run:
|
||||
name: Build
|
||||
command: |
|
||||
node-gyp configure
|
||||
node-gyp build
|
||||
npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)
|
||||
ls -1ARl node_modules > ls
|
||||
- save_cache:
|
||||
@ -88,7 +90,7 @@ jobs:
|
||||
- run:
|
||||
name: Test
|
||||
command: |
|
||||
npm run test || (npm rebuild && npm run test) || ((node-gyp configure && node-gyp build && npm run build || (echo -e '\033[0;34mRebuild modules\033[0;39m' && ls -1A node_modules | grep '^[^@]' | xargs npm rebuild && ls -1A node_modules | grep '^@' | xargs -I%1 sh -c 'ls -1A node_modules/'%1' | xargs -P0 -I%2 npm rebuild node_modules/'%1'/%2' && npm run build)) && npm run test)
|
||||
npm run test
|
||||
ls -1ARl node_modules > ls
|
||||
- save_cache:
|
||||
name: Cache npm packages
|
||||
|
@ -15,6 +15,9 @@
|
||||
"vue/attributes-order": false,
|
||||
"vue/require-prop-types": false,
|
||||
"vue/require-default-prop": false,
|
||||
"vue/html-closing-bracket-spacing": false,
|
||||
"vue/singleline-html-element-content-newline": false,
|
||||
"vue/no-v-html": false,
|
||||
"no-console": 0,
|
||||
"no-unused-vars": 0,
|
||||
"no-empty": 0
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,3 +18,4 @@ api-docs.json
|
||||
/elasticsearch
|
||||
*.code-workspace
|
||||
yarn.lock
|
||||
.DS_Store
|
||||
|
1
.node-version
Normal file
1
.node-version
Normal file
@ -0,0 +1 @@
|
||||
v11.7.0
|
39
CHANGELOG.md
39
CHANGELOG.md
@ -1,6 +1,45 @@
|
||||
ChangeLog
|
||||
=========
|
||||
|
||||
10.78.0
|
||||
----------
|
||||
* 他のインスタンスからアンケートに投票できるように
|
||||
* スパムアカウントを報告できるように
|
||||
* アクティブユーザー数のチャートを追加
|
||||
* 管理画面でドライブのファイルをURLやIDから操作できるように
|
||||
* リアクション解除を他のサーバーと送受信するように
|
||||
* ログイン時に二段階認証が分かりにくいのを改善
|
||||
* 投稿のツールチップを出すのは時間の上だけに変更
|
||||
* `*`や`_`でもイタリック構文を使えるように(アルファベットのみ)
|
||||
* `__`でも太字構文を使えるように(アルファベットのみ)
|
||||
* ハッシュタグ判定の強化
|
||||
* ストーク機能の廃止
|
||||
* ソーシャルタイムラインにフォロワー限定投稿が含まれていない問題を修正
|
||||
* リストタイムラインでフォロワー限定投稿が含まれていない問題を修正
|
||||
* リストタイムラインに自分宛てでないダイレクト投稿が非公開扱いで表示される問題を修正
|
||||
* 自分宛てのダイレクト投稿がホーム/ソーシャルタイムラインにストリームで流れない問題を修正
|
||||
* ストリームで投稿が流れてきたとき、返信先が「この投稿は非公開です」となる問題を修正
|
||||
* 関係のない返信がタイムラインに流れる問題を修正
|
||||
* 常にメディアを閲覧注意として投稿するオプションが機能していなかった問題を修正
|
||||
* リモートユーザーのアイコンが消えることがある問題を修正
|
||||
* ドライブのファイルメニューからアバターやバナーに設定することができない問題を修正
|
||||
* クライアントのAPIリクエストをストリーム経由で行うオプションを廃止
|
||||
* 一部箇所でカスタム絵文字が適用されていないのを修正
|
||||
|
||||
10.77.0
|
||||
----------
|
||||
* ローカルタイムライン無効オプションをグローバルタイムライン無効オプションと分離
|
||||
* モデレータはLTL無効時でもUIからLTLを消さない
|
||||
* インスタンス情報ページに各種タイムラインの有効/無効を表示
|
||||
|
||||
10.76.0
|
||||
----------
|
||||
* disableLocalTimeline機能を強化
|
||||
* インスタンス情報ページの強化
|
||||
* ハッシュタグ判定の強化
|
||||
* SVGサムネイルを表示するように
|
||||
* CWの引き継ぎ機能を無効化
|
||||
|
||||
10.75.0
|
||||
----------
|
||||
* ダイレクトを非公開のように使えるように
|
||||
|
30
README.md
30
README.md
@ -7,7 +7,7 @@
|
||||
[](https://david-dm.org/syuilo/misskey)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
**Sophisticated microblogging platform, evolving forever.**
|
||||
**A forever evolving, sophisticated microblogging platform.**
|
||||
|
||||
<p align="justify">
|
||||
<a href="https://misskey.xyz">Misskey</a> is a decentralized microblogging platform born on Earth.
|
||||
@ -27,7 +27,7 @@ Why don't you take a short break from the hustle and bustle of the city, and div
|
||||
|
||||
<h3 align="left">Posting</h3>
|
||||
<p align="justify">
|
||||
Just post your idea, hot topics and anything you want to share. You may decorate your words, attach your favorite pictures or movies, and create a poll - those are all supported in Misskey!
|
||||
Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls!
|
||||
</p>
|
||||
|
||||
---
|
||||
@ -36,7 +36,7 @@ Just post your idea, hot topics and anything you want to share. You may decorate
|
||||
|
||||
<h3 align="right">Reactions</h3>
|
||||
<p align="justify">
|
||||
The simplest way to tell your emotions to the posts. You can choose the best reaction from various reactions. Reactions on Misskey has much more expressive than other social media which only allows pushing “likes”.
|
||||
Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”.
|
||||
</p>
|
||||
|
||||
---
|
||||
@ -45,7 +45,7 @@ The simplest way to tell your emotions to the posts. You can choose the best rea
|
||||
|
||||
<h3 align="left">Interface</h3>
|
||||
<p align="justify">
|
||||
Highly customizable UI for your taste. We understand no UI fits for everyone. Make your graceful home by editing, adjusting layouts of timeline, and placing widgets.
|
||||
Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets.
|
||||
</p>
|
||||
|
||||
---
|
||||
@ -54,33 +54,35 @@ Highly customizable UI for your taste. We understand no UI fits for everyone. Ma
|
||||
|
||||
<h3 align="right">Misskey Drive</h3>
|
||||
<p align="justify">
|
||||
Organized uploaded files. Wanna post a picture you have already uploaded? Wish to create a folder for your files? Misskey Drive is the best solution for you.
|
||||
Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution!
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
and more! Now it's time to experience the world with your own eyes at [misskey.xyz](https://misskey.xyz) or [other instances](https://joinmisskey.github.io/).
|
||||
...and more! Experience Misskey with your own eyes at [misskey.xyz](https://misskey.xyz) or join one of the [other instances](https://joinmisskey.github.io/) that are available.
|
||||
|
||||
:package: Create your own instance
|
||||
:package: Create Your Own Instance
|
||||
----------------------------------------------------------------
|
||||
Please see [Setup and installation guide](./docs/setup.en.md).
|
||||
Please see the [Setup and Installation Guide](./docs/setup.en.md).
|
||||
|
||||
:wrench: Contribution
|
||||
----------------------------------------------------------------
|
||||
Please see [Contribution guide](./CONTRIBUTING.md).
|
||||
Please see the [Contribution Guide](./CONTRIBUTING.md).
|
||||
|
||||
:heart: Backers & Sponsors
|
||||
----------------------------------------------------------------
|
||||
<!-- PATREON_START -->
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=WeuDzzz24cRXJogyIkU-mxARqkdyms-rcZKbO-GpGjw%3D" alt="weep" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/12059069" alt="naga_rus" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=prtYqPOiSHBulhM7NU0VzMaWx39-9ntdq25b6kafDNA%3D" alt="negao" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=djaJ9cwy9uwTiF9UFtxYQdS8Nw7BhyfaREzZUbErN-0%3D" alt="Melilot" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/3?token-time=2145916800&token-hash=c8HeVqLtmdgH-gSBJg8i10gmOcwllM87MDHeznl3el0%3D" alt="Melilot" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=LtV2lRi3L2jOWMLwccr9qWYfPrFlzIo2jYZHKzHEb6k%3D" alt="Xeltica" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=Ch3iF81ZGP0LMo894Y9ajpLisgtE91SnxtZE7fxsgrM%3D" alt="べすれい" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=1FlxS9MEgmNGH_RHUVHbO5hIXB5I1z0lvA33CTvYvjA%3D" alt="gutfuckllc" width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12059069">naga_rus</a></td>
|
||||
<td><a href="https://www.patreon.com/negao">negao</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td>
|
||||
<td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
|
||||
@ -90,17 +92,21 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
||||
<table><tr>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=0xgcpqvFDqRcV_YIEhcPNVH7gs9sLg_BBnTJXCkN4ao%3D" alt="mydarkstar" width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/12718187" alt="Peter G." width="100"></td>
|
||||
<td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=2PsbFNw0tnubZzgSXD01R6hIgncfiElG7H7HX2Y3dyo%3D" alt="nemu" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=9JtETp0X8gI280Ne1E8bxn6j4Lw5o2k4mJkICx97V_k%3D" alt="YUKIMOCHI" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=zrInDotuEIFslKphuSiCqr3M-r-rveTXjVKWr-VK6M0%3D" alt="Acid Chicken" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/2?token-time=2145916800&token-hash=zcwFxb2zopzWwksKVU1YpfAEjsl4yKT02aQ6yiAFRiQ%3D" alt="natalie" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=5T8XcaAf9Zyzfg3QubR06s_kJZkArVEM2dwObrBVAU4%3D" alt="Hiratake" width="100"></td>
|
||||
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=ubVARikVOg3v7NW6LDhtG-ClE1LTU3I2TJ3js2-5xDs%3D" alt="Naoki Hirayama" width="100"></td>
|
||||
</tr><tr>
|
||||
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</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=16542964">Takumi Sugita</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td>
|
||||
<td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td>
|
||||
<td><a href="https://www.patreon.com/acid_chicken">Acid Chicken</a></td>
|
||||
<td><a href="https://www.patreon.com/user?u=4389829">natalie</a></td>
|
||||
<td><a href="https://www.patreon.com/hiratake">Hiratake</a></td>
|
||||
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
||||
</tr></table>
|
||||
@ -116,14 +122,14 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||
</tr></table>
|
||||
|
||||
**Last updated:** Sun, 06 Jan 2019 21:53:06 UTC
|
||||
**Last updated:** Fri, 18 Jan 2019 11:58:06 UTC
|
||||
<!-- PATREON_END -->
|
||||
|
||||
:four_leaf_clover: Copyright
|
||||
----------------------------------------------------------------
|
||||
> Copyright (c) 2014-2019 syuilo
|
||||
|
||||
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||
Misskey is open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||
|
||||
[![][agpl-3.0-badge]][AGPL-3.0]
|
||||
|
||||
|
@ -11,14 +11,14 @@ Ce guide explique comment installer et configurer Misskey avec Docker.
|
||||
*1.* Télécharger Misskey
|
||||
----------------------------------------------------------------
|
||||
1. `git clone -b master git://github.com/syuilo/misskey.git` Clone le dépôt de Misskey sur la branche master.
|
||||
2. `cd misskey` Permet de se déplacer dans le dossier du dépôt.
|
||||
2. `cd misskey` Naviguez dans le dossier du dépôt.
|
||||
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout sur le tag de la [dernière version](https://github.com/syuilo/misskey/releases/latest).
|
||||
|
||||
*2.* Configuration de Misskey
|
||||
----------------------------------------------------------------
|
||||
1. `cp .config/example.yml .config/default.yml` Copie le fichier `.config/example.yml` et le renommer en `default.yml`.
|
||||
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copie le fichier `.config/mongo_initdb_example.js` et le renomme en `mongo_initdb.js`.
|
||||
3. Editer `default.yml` et `mongo_initdb.js`.
|
||||
3. Editez `default.yml` et `mongo_initdb.js`.
|
||||
|
||||
*3.* Configurer Docker
|
||||
----------------------------------------------------------------
|
||||
@ -64,4 +64,4 @@ Utilisez la commande `docker-compose up -d`. GLHF!
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
Si vous avez des questions ou des problèmes, n'hésitez pas à nous contacter !
|
||||
Si vous avez des questions ou des problèmes, n'hésitez pas à nous contacter !
|
||||
|
@ -110,6 +110,8 @@ You can check if the service is running with `systemctl status misskey`.
|
||||
3. `npm install`
|
||||
4. `npm run build`
|
||||
5. Check [ChangeLog](../CHANGELOG.md) for migration information
|
||||
6. Restart your Misskey process to apply changes
|
||||
7. Enjoy
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
@ -10,8 +10,8 @@ Ce guide décrit les étapes à suivre afin d'installer et de configurer une ins
|
||||
|
||||
*1.* Création de l'utilisateur Misskey
|
||||
----------------------------------------------------------------
|
||||
Lancer misskey en tant qu'utilisateur est une mauvaise idée, nous avons besoin de créer un utilisateur dédié.
|
||||
Sur Debian, à titre d'exemple :
|
||||
Executer misskey en tant que super-utilisateur étant une mauvaise idée, nous allons créer un utilisateur dédié.
|
||||
Sous Debian, par exemple :
|
||||
|
||||
```
|
||||
adduser --disabled-password --disabled-login misskey
|
||||
@ -32,10 +32,10 @@ Installez les paquets suivants :
|
||||
|
||||
*3.* Paramètrage de MongoDB
|
||||
----------------------------------------------------------------
|
||||
En mode root :
|
||||
1. `mongo` Accédez au shell de mango
|
||||
En root :
|
||||
1. `mongo` Ouvrez le shell mongo
|
||||
2. `use misskey` Utilisez la base de données misskey
|
||||
3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
|
||||
3. `db.users.save( {dummy:"dummy"} )` Écrivez une donnée factice pour initialiser la base de données.
|
||||
4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Créez l'utilisateur misskey.
|
||||
5. `exit` Vous avez terminé !
|
||||
|
||||
@ -44,12 +44,12 @@ En mode root :
|
||||
1. `su - misskey` Basculez vers l'utilisateur misskey.
|
||||
2. `git clone -b master git://github.com/syuilo/misskey.git` Clonez la branche master du dépôt misskey.
|
||||
3. `cd misskey` Accédez au dossier misskey.
|
||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Télécharge la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout sur le tag de la [version la plus récente](https://github.com/syuilo/misskey/releases/latest)
|
||||
5. `npm install` Installez les dépendances de misskey.
|
||||
|
||||
*5.* Création du fichier de configuration
|
||||
----------------------------------------------------------------
|
||||
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le `default.yml`.
|
||||
1. `cp .config/example.yml .config/default.yml` Copiez le fichier `.config/example.yml` et renommez-le`default.yml`.
|
||||
2. Editez le fichier `default.yml`
|
||||
|
||||
*6.* Construction de Misskey
|
||||
@ -59,7 +59,7 @@ Construisez Misskey comme ceci :
|
||||
|
||||
`npm run build`
|
||||
|
||||
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential`, `python`.
|
||||
Si vous êtes sous Debian, vous serez amené à installer les paquets `build-essential` et `python`.
|
||||
|
||||
Si vous rencontrez des erreurs concernant certains modules, utilisez node-gyp:
|
||||
|
||||
@ -77,7 +77,7 @@ Lancez tout simplement `npm start`. Bonne chance et amusez-vous bien !
|
||||
|
||||
### Démarrage avec systemd
|
||||
|
||||
1. Créez une service systemd sur : `/etc/systemd/system/misskey.service`
|
||||
1. Créez un service systemd sur : `/etc/systemd/system/misskey.service`
|
||||
2. Editez-le puis copiez et coller ceci dans le fichier :
|
||||
|
||||
```
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{}票"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "Verstanden!"
|
||||
customization-tips:
|
||||
title: "Anpassung-Tipps"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden."
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Löschen"
|
||||
delete-confirm: "Diesen Post löschen?"
|
||||
remote: "Auf Quelle anzeigen"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Stimme für '{}'"
|
||||
vote-count: "{} Stimmen"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Sicherheit"
|
||||
signin: "サインイン履歴"
|
||||
password: "Passwort"
|
||||
2fa: "Zwei-Faktor-Authentifizierung"
|
||||
other: "Anderes"
|
||||
license: "Lizenz"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Automatische Pop-out Fenster"
|
||||
auto-popout-desc: "Pop-out ein offenes Fenster wenn möglich. Diese Einstellung wird im Browser gespeichert."
|
||||
advanced: "Erweiterte Einstellungen"
|
||||
api-via-stream: "API-Anfrage via stream"
|
||||
api-via-stream-desc: "API-Anfrage über WebSocket statt native Aktualisierungs-API (für bessere Leistung). Diese Einstellung wird im Browser gespeichert."
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "Please do not enter or paste the code here. Account may be compromised."
|
||||
load-more: "Load more"
|
||||
enter-password: "Please enter the Password"
|
||||
2fa: "Two-factor authentication"
|
||||
got-it: "Got it!"
|
||||
customization-tips:
|
||||
title: "Customization tips"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "Thin"
|
||||
line-width-normal: "Regular"
|
||||
line-width-thick: "Thick"
|
||||
hide-password: "Hide Password"
|
||||
show-password: "Show Password"
|
||||
do-not-use-in-production: "This is a development build. Do not use in production."
|
||||
user-suspended: "This user has been suspended."
|
||||
is-remote-user: "This user's information is mirrored."
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Delete"
|
||||
delete-confirm: "Are you sure you want to delete this post?"
|
||||
remote: "Show original note"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "Mention"
|
||||
mute: "Mute"
|
||||
unmute: "Unmute"
|
||||
block: "Block"
|
||||
unblock: "Unblock"
|
||||
push-to-list: "Add to list"
|
||||
select-list: "Select a list"
|
||||
list-pushed: "Successfully added {user} to {list}."
|
||||
report-abuse: "Report abuse"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Vote for '{}'"
|
||||
vote-count: "{} votes"
|
||||
@ -607,8 +622,8 @@ desktop/views/components/drive.file.vue:
|
||||
copy-url: "Copy URL"
|
||||
download: "Download"
|
||||
else-files: "Others"
|
||||
set-as-avatar: "Set as avatar"
|
||||
set-as-banner: "Set as banner"
|
||||
set-as-avatar: "Set as an avatar"
|
||||
set-as-banner: "Set as a banner"
|
||||
open-in-app: "Open in app"
|
||||
add-app: "Add app"
|
||||
rename-file: "Rename file"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Security"
|
||||
signin: "Sign in history"
|
||||
password: "Password"
|
||||
2fa: "Two-factor authentication"
|
||||
other: "Other"
|
||||
license: "License"
|
||||
theme: "Theme"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "Example: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Auto pop-out window"
|
||||
auto-popout-desc: "If it's possible, pop-out display will be used instead of opening a new window. This setting is stored in your browser."
|
||||
advanced: "Advanced settings"
|
||||
api-via-stream: "API request via stream"
|
||||
api-via-stream-desc: "API request is performed via the WebSocket connection instead of native fetch API (for better performance). This setting is stored in the browser."
|
||||
deck-nav: "Transitionless deck navigation"
|
||||
deck-nav-desc: "You get a temporary column without page transitions during navigation when using the deck."
|
||||
deck-default: "Use Deck as default UI"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "Federation"
|
||||
announcements: "Announcements"
|
||||
hashtags: "Hashtags"
|
||||
abuse: "Abuse"
|
||||
back-to-misskey: "Back to Misskey"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "Dashboard"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "Instances"
|
||||
this-instance: "This instance"
|
||||
federated: "Federated"
|
||||
admin/views/abuse.vue:
|
||||
title: "Abuse"
|
||||
target: "Target"
|
||||
reporter: "Reporter"
|
||||
details: "Details"
|
||||
remove-report: "Remove"
|
||||
admin/views/instance.vue:
|
||||
instance: "Instance"
|
||||
instance-name: "Instance name"
|
||||
@ -1035,6 +1053,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "Maximum numbers of post characters"
|
||||
disable-registration: "Disable new user registration"
|
||||
disable-local-timeline: "Disable the Local Timeline"
|
||||
disable-global-timeline: "Disable global timeline"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "Invite"
|
||||
save: "Save"
|
||||
saved: "Saved"
|
||||
@ -1078,6 +1098,7 @@ admin/views/charts.vue:
|
||||
notes-total: "Total posts"
|
||||
users: "The number of users: increase/decrease"
|
||||
users-total: "Total users"
|
||||
active-users: "Active users"
|
||||
drive: "Capacity used as the storage: increase/decrease"
|
||||
drive-total: "Total usage of Drive"
|
||||
drive-files: "The number of files on the storage: increase/decrease"
|
||||
@ -1086,6 +1107,10 @@ admin/views/charts.vue:
|
||||
network-time: "Response time"
|
||||
network-usage: "Traffic"
|
||||
admin/views/drive.vue:
|
||||
operation: "Operations"
|
||||
fileid-or-url: "File ID or URL"
|
||||
file-not-found: "File not found"
|
||||
lookup: "Look up"
|
||||
sort:
|
||||
title: "Sort"
|
||||
createdAtAsc: "Age - Oldest First"
|
||||
@ -1101,6 +1126,8 @@ admin/views/drive.vue:
|
||||
deleted: "Deleted successfully"
|
||||
mark-as-sensitive: "Mark as 'sensitive'"
|
||||
unmark-as-sensitive: "Unmark as 'sensitive'"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "Operations"
|
||||
username-or-userid: "Username or user ID"
|
||||
@ -1124,6 +1151,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "Date Registered (Descending)"
|
||||
updatedAtAsc: "Last Updated (Ascending)"
|
||||
updatedAtDesc: "Last Updated (Descending)"
|
||||
state:
|
||||
title: "Status"
|
||||
all: "All"
|
||||
admin: "Administrator"
|
||||
moderator: "Moderator"
|
||||
adminOrModerator: "Admin/Moderator"
|
||||
verified: "Verified account"
|
||||
suspended: "Suspended"
|
||||
origin:
|
||||
title: "Origin"
|
||||
combined: "Local + Remote"
|
||||
@ -1136,6 +1171,8 @@ admin/views/moderators.vue:
|
||||
title: "Register Moderator"
|
||||
add: "Register"
|
||||
added: "Registered a Moderator."
|
||||
remove: "Discharge"
|
||||
removed: "The moderator has been discharged"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "Add emoji"
|
||||
@ -1217,22 +1254,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "No photos"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "Follows you"
|
||||
stalk: "Stalk"
|
||||
stalking: "Stalking"
|
||||
unstalk: "Unstalk"
|
||||
mute: "Mute"
|
||||
muted: "Muting"
|
||||
unmute: "Unmute"
|
||||
block: "Block"
|
||||
unblock: "Unblock"
|
||||
block-confirm: "Are you sure block this user?"
|
||||
push-to-a-list: "Add to list"
|
||||
list-pushed: "Successfully added {user} to {list}."
|
||||
menu: "Menu"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Notes"
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
mention: "Mentions"
|
||||
is-bot: "This account is a Bot"
|
||||
years-old: "{age} years old"
|
||||
year: "/"
|
||||
@ -1473,14 +1499,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "Overview"
|
||||
timeline: "Timeline"
|
||||
media: "Media"
|
||||
mute: "Mute"
|
||||
unmute: "Unmute"
|
||||
block: "Block"
|
||||
unblock: "Unblock"
|
||||
years-old: "{age} years old"
|
||||
push-to-list: "Add to list"
|
||||
select-list: "Select a list"
|
||||
list-pushed: "Successfully added {user} to {list}."
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Recent notes"
|
||||
images: "Images"
|
||||
@ -1526,12 +1545,10 @@ deck/deck.user-column.vue:
|
||||
posts: "Posts"
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
mention: "Mentions"
|
||||
images: "Images"
|
||||
activity: "Activity"
|
||||
timeline: "Timeline"
|
||||
pinned-notes: "Pinned posts"
|
||||
push-to-a-list: "Add to list"
|
||||
docs:
|
||||
edit-this-page-on-github: "Found an error, or do you want to contribute to the documentation?"
|
||||
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "Por favor no copies código aquí. Tu cuenta puede resultar comprometida."
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "¡Listo!"
|
||||
customization-tips:
|
||||
title: "Consejos de personalización"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción."
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Borrar"
|
||||
delete-confirm: "¿Seguro que quieres borrar la publicación?"
|
||||
remote: "Ver el original"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "'{}' para votar"
|
||||
vote-count: "{} votos"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Seguridad"
|
||||
signin: "Historial de inicios de sesión"
|
||||
password: "Contraseña"
|
||||
2fa: "Autenticación de Doble-Factor"
|
||||
other: "Otros"
|
||||
license: "Licencia"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Ventana emergente automática"
|
||||
auto-popout-desc: "Muestra una ventana emergente si es posible. Esta configuración depende del navegador."
|
||||
advanced: "Configuración avanzada"
|
||||
api-via-stream: "Solicitar API por medio de un stream"
|
||||
api-via-stream-desc: "Las peticiones de las API se realizan por conexiones WebSocket en lugar de las tradicionales (para una mejora en el rendimiento). Esta función depende del navegador."
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "Veuillez ne pas entrer ou coller le code ici. Le compte pourrait être compromis."
|
||||
load-more: "Charger plus"
|
||||
enter-password: "Veuillez entrer le mot de passe"
|
||||
2fa: "Authentification à deux facteurs"
|
||||
got-it: "J’ai compris !"
|
||||
customization-tips:
|
||||
title: "Conseils de personnalisation"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "Fine"
|
||||
line-width-normal: "Normale"
|
||||
line-width-thick: "Épaisse"
|
||||
hide-password: "Masquer le mot de passe"
|
||||
show-password: "Afficher le mot de passe"
|
||||
do-not-use-in-production: "Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production."
|
||||
user-suspended: "Cet·te utilisateur·trice a été suspendu·e"
|
||||
is-remote-user: "Ces informations appartiennent à un utilisateur distant."
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Supprimer"
|
||||
delete-confirm: "Supprimer cette publication ?"
|
||||
remote: "Afficher la note originale"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Voter pour '{}'"
|
||||
vote-count: "{} votes"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Sécurité"
|
||||
signin: "Historique de connexion"
|
||||
password: "Mot de Passe"
|
||||
2fa: "Vérification en deux étapes"
|
||||
other: "Autres"
|
||||
license: "Licence"
|
||||
theme: "Thèmes"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "Exemple : https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Fenêtre contextuelle automatique"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "Paramètres avancés"
|
||||
api-via-stream: "Requête API via le flux"
|
||||
api-via-stream-desc: "Lorsque ce paramètre est activé, une demande d'API est effectuée via une connexion WebSocket (pour une meilleure performance). Lorsqu'il est désactivé, l'API de récupération native est utilisée. Ce paramètre n'est valide que sur cet appareil."
|
||||
deck-nav: "Deck sans tansitions"
|
||||
deck-nav-desc: "Vous obtenez une colonne temporaire sans transitions dans la page pendant la navigation, lors de l’utilisation du Deck."
|
||||
deck-default: "Utiliser le Deck comme IU par défaut"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "Fédération"
|
||||
announcements: "Annonces"
|
||||
hashtags: "Hashtags"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Retour vers Misskey"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "Tableau de bord"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "Instances"
|
||||
this-instance: "Cette instance"
|
||||
federated: "Fédérées"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "Instance"
|
||||
instance-name: "Nom de l’instance"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "Nombre maximal de caractères pour les messages"
|
||||
disable-registration: "Désactiver les inscriptions"
|
||||
disable-local-timeline: "Désactiver le fil local"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "Inviter"
|
||||
save: "Sauvegarder"
|
||||
saved: "Enregistré"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "Total des notes"
|
||||
users: "Nombre d’utilisateurs : augmentation/diminution"
|
||||
users-total: "Nombre total des utilisateurs"
|
||||
active-users: "Utilisateur·rice·s actif·ve·s"
|
||||
drive: "Capacité utilisée comme stockage : augmentation/diminution"
|
||||
drive-total: "Utilisation totale du lecteur"
|
||||
drive-files: "Le nombre de fichiers sur l'espace de stockage : augmentation/diminution"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "Temps de réponse"
|
||||
network-usage: "Traffic"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "Tri"
|
||||
createdAtAsc: "Âge - Du plus ancien"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "Supprimé"
|
||||
mark-as-sensitive: "Marquer comme sensible"
|
||||
unmark-as-sensitive: "Ne pas marquer comme sensible"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "Actions"
|
||||
username-or-userid: "Nom d’utilisateur·rice ou ID utilisateur"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "Date d’inscription (Descendant)"
|
||||
updatedAtAsc: "Mis à jour récemment (Ascendant)"
|
||||
updatedAtDesc: "Mis à jour récemment (descendant)"
|
||||
state:
|
||||
title: "État"
|
||||
all: "Tout"
|
||||
admin: "Admin"
|
||||
moderator: "Modérateur"
|
||||
adminOrModerator: "Administrateur/Modérateur"
|
||||
verified: "Compte vérifié"
|
||||
suspended: "Suspendu"
|
||||
origin:
|
||||
title: "Origine"
|
||||
combined: "Locaux + distants"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "Ajout d’un modérateur"
|
||||
add: "Ajouter"
|
||||
added: "Ajouté en tant que modérateur"
|
||||
remove: "Révoquer"
|
||||
removed: "Le modérateur a été révoqué"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "Ajouter un émoji"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "Pas de photos"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "Vous suit"
|
||||
stalk: "Traquer"
|
||||
stalking: "Entrain de poursuivre"
|
||||
unstalk: "Cesser la poursuite"
|
||||
mute: "Mettre en sourdine"
|
||||
muted: "Muting"
|
||||
unmute: "Enlever la sourdine"
|
||||
block: "Bloquer"
|
||||
unblock: "Débloquer"
|
||||
block-confirm: "Bloquer cet utilisateur ?"
|
||||
push-to-a-list: "Ajouter à la liste"
|
||||
list-pushed: "Vous avez ajouté {user} à la liste {list}."
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Notes"
|
||||
following: "Suit"
|
||||
followers: "Abonnés"
|
||||
mention: "Mentions"
|
||||
is-bot: "Ce compte est un Bot"
|
||||
years-old: "{age} ans"
|
||||
year: "/"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "Aperçu"
|
||||
timeline: "Fil d’actualité"
|
||||
media: "Média"
|
||||
mute: "Mettre en sourdine"
|
||||
unmute: "Enlever la sourdine"
|
||||
block: "Bloquer"
|
||||
unblock: "Débloquer"
|
||||
years-old: "{age} ans"
|
||||
push-to-list: "Ajouter à la liste"
|
||||
select-list: "Sélectionnez une liste"
|
||||
list-pushed: "Vous avez ajouté {user} à la liste {list} avec succès."
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Notes récentes"
|
||||
images: "Images"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "Notes"
|
||||
following: "Suit"
|
||||
followers: "Abonnés"
|
||||
mention: "Mentions"
|
||||
images: "Images"
|
||||
activity: "Activité"
|
||||
timeline: "Fil d’actualité"
|
||||
pinned-notes: "Notes épinglées"
|
||||
push-to-a-list: "Ajouter à une liste"
|
||||
docs:
|
||||
edit-this-page-on-github: "Vous avez trouvé une erreur ou vous voulez contribuer à la documentation ?"
|
||||
edit-this-page-on-github-link: "Éditez cette page sur GitHub !"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{}票"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
@ -379,6 +380,19 @@ common/views/components/note-menu.vue:
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{}票"
|
||||
@ -855,7 +869,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -870,9 +883,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -1106,6 +1116,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
|
||||
admin/views/dashboard.vue:
|
||||
@ -1117,6 +1128,13 @@ admin/views/dashboard.vue:
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1163,6 +1181,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1207,6 +1227,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1216,6 +1237,10 @@ admin/views/charts.vue:
|
||||
network-usage: "通信量"
|
||||
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1231,6 +1256,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
@ -1375,23 +1402,12 @@ desktop/views/pages/user/user.photos.vue:
|
||||
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1680,14 +1696,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
@ -1741,12 +1750,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
|
||||
load-more: "もっとあらへんのか!"
|
||||
enter-password: "パスワードを入れてや"
|
||||
2fa: "二段階認証"
|
||||
got-it: "ほい"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "ほかす"
|
||||
delete-confirm: "この投稿を削除してもええか?"
|
||||
remote: "投稿元に行ってみよか"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票や!"
|
||||
vote-count: "{}票"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "こんな感じでサインインしたらしいで"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q?{{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
|
||||
advanced: "もっと設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、WebSocket接続を経由してAPIリクエストが行われんで(パフォーマンス向上するかも、知らんけど)。オフにすると、ネイティブの fetch API が利用されるで。この設定はこのデバイスのみ有効やで。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使うとるとき、ナビゲーションが発生するときにページ移動せんで、一時的なカラムで受けれるようにするで"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "知っといてや"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "ワイのインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を止める"
|
||||
disable-local-timeline: "ローカルタイムラインを使えんようにする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "来てや"
|
||||
save: "保存"
|
||||
saved: "保存したで!"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はあらへんで"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされとるで"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしとるで"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしとるで"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロックやめたる"
|
||||
block-confirm: "このユーザーをブロックしてええか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加したで。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotや"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "こんなやつ"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュートやめたる"
|
||||
block: "ブロック"
|
||||
unblock: "ブロックやめたる"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに入れたる"
|
||||
select-list: "リスト選んでや"
|
||||
list-pushed: "{user}を{list}に追加したで"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近儲かりまっか?"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めしはった投稿"
|
||||
push-to-a-list: "リストに入れたる"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "여기에 코드를 입력하거나 붙여넣지 마십시오. 계정이 무단으로 사용될 수 있습니다."
|
||||
load-more: "더보기"
|
||||
enter-password: "비밀번호를 입력하여 주십시오"
|
||||
2fa: "二段階認証"
|
||||
got-it: "알겠습니다"
|
||||
customization-tips:
|
||||
title: "커스터마이징 도움말"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "얇음"
|
||||
line-width-normal: "보통"
|
||||
line-width-thick: "두꺼움"
|
||||
hide-password: "비밀번호 숨기기"
|
||||
show-password: "비밀번호 표시"
|
||||
do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오."
|
||||
user-suspended: "이 사용자는 정지된 상태입니다."
|
||||
is-remote-user: "이 유저 정보는 복사본입니다."
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "삭제"
|
||||
delete-confirm: "이 글을 삭제하시겠습니까?"
|
||||
remote: "글 원본 보기"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "\"{}\"에 투표하기"
|
||||
vote-count: "{}표"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "보안"
|
||||
signin: "로그인 기록"
|
||||
password: "비밀번호"
|
||||
2fa: "2단계 인증"
|
||||
other: "기타"
|
||||
license: "라이선스"
|
||||
theme: "테마"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "예: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "창 자동 팝아웃"
|
||||
auto-popout-desc: "창이 열릴 때 팝아웃 (브라우저 밖으로 분리) 이 가능한 경우 자동으로 팝아웃합니다. 이 설정은 브라우저에 저장됩니다."
|
||||
advanced: "고급 설정"
|
||||
api-via-stream: "스트리밍을 사용한 API 요청"
|
||||
api-via-stream-desc: "이 설정을 ON으로 하면 websocket 연결을 통하여 API 요청을 합니다 (성능 향상을 기대할 수 있습니다). OFF로 두는 경우 네이티브 fetch API가 사용됩니다. 이 설정은 이 장치에만 유효합니다."
|
||||
deck-nav: "덱 내 탐색"
|
||||
deck-nav-desc: "덱을 사용중일 때, 내비게이션이 발생하였을 경우 페이지를 이동하지 않고 일시적으로 임시 칼럼을 생성하도록 합니다."
|
||||
deck-default: "덱을 기본 UI로 설정"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "연합"
|
||||
announcements: "공지사항"
|
||||
hashtags: "해시태그"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskey로 돌아가기"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "대시보드"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "인스턴스"
|
||||
this-instance: "이 인스턴스"
|
||||
federated: "연합"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "인스턴스"
|
||||
instance-name: "인스턴스 이름"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "글의 최대 문자수"
|
||||
disable-registration: "사용자 등록 비활성화"
|
||||
disable-local-timeline: "로컬 타임라인 비활성화"
|
||||
disable-global-timeline: "글로벌 타임라인 비활성화"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "초대"
|
||||
save: "저장"
|
||||
saved: "저장하였습니다"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "글 누적 수"
|
||||
users: "사용자 증감"
|
||||
users-total: "사용자 누적"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "드라이브 사용량 증감"
|
||||
drive-total: "드라이브 사용량 누적"
|
||||
drive-files: "드라이브 파일 수 증감"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "응답시간"
|
||||
network-usage: "통신량"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "정렬"
|
||||
createdAtAsc: "업로드 날짜 오랜 순"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "삭제하였습니다"
|
||||
mark-as-sensitive: "열람주의로 설정"
|
||||
unmark-as-sensitive: "열람주의 해제"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "작업"
|
||||
username-or-userid: "사용자명 혹은 사용자 ID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "등록일이 최신인 순"
|
||||
updatedAtAsc: "수정일이 오래된 순"
|
||||
updatedAtDesc: "수정일이 최신인 순"
|
||||
state:
|
||||
title: "상태"
|
||||
all: "모두"
|
||||
admin: "관리자"
|
||||
moderator: "모더레이터"
|
||||
adminOrModerator: "관리자+모더레이터"
|
||||
verified: "공식 계정"
|
||||
suspended: "정지됨"
|
||||
origin:
|
||||
title: "위치 (오리진)"
|
||||
combined: "로컬 + 원격"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "모더레이터 등록"
|
||||
add: "등록"
|
||||
added: "모더레이터를 등록하였습니다"
|
||||
remove: "해제"
|
||||
removed: "모더레이터 등록을 해제했습니다"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "이모지 등록"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "사진이 없습니다"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "당신을 팔로우합니다"
|
||||
stalk: "스토킹"
|
||||
stalking: "스토킹하고 있습니다"
|
||||
unstalk: "스토킹 중단"
|
||||
mute: "뮤트"
|
||||
muted: "뮤트하였습니다"
|
||||
unmute: "뮤트 해제"
|
||||
block: "차단"
|
||||
unblock: "차단 해제"
|
||||
block-confirm: "이 사용자를 차단하시겠습니까?"
|
||||
push-to-a-list: "리스트에 추가"
|
||||
list-pushed: "{user}을(를) {list}에 추가하였습니다."
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "글"
|
||||
following: "팔로잉"
|
||||
followers: "팔로워"
|
||||
mention: "멘션"
|
||||
is-bot: "이 계정은 Bot입니다"
|
||||
years-old: "{age}세"
|
||||
year: "년"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "요약"
|
||||
timeline: "타임라인"
|
||||
media: "미디어"
|
||||
mute: "뮤트"
|
||||
unmute: "뮤트 해제"
|
||||
block: "차단"
|
||||
unblock: "차단 해제"
|
||||
years-old: "{age}세"
|
||||
push-to-list: "리스트에 추가"
|
||||
select-list: "목록을 선택하여 주십시오"
|
||||
list-pushed: "{user}을(를) {list}에 추가하였습니다"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "최근 글"
|
||||
images: "이미지"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "글"
|
||||
following: "팔로잉"
|
||||
followers: "팔로워"
|
||||
mention: "멘션"
|
||||
images: "이미지"
|
||||
activity: "활동"
|
||||
timeline: "타임라인"
|
||||
pinned-notes: "고정해놓은 글"
|
||||
push-to-a-list: "리스트에 추가"
|
||||
docs:
|
||||
edit-this-page-on-github: "틀린 점이나 개선할 점을 찾으셨나요?"
|
||||
edit-this-page-on-github-link: "이 페이지를 GitHub에서 편집"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "Origineel tonen"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Stemmen op '{}'"
|
||||
vote-count: "{} stemmen"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Beveiliging"
|
||||
signin: "Inloggeschiedenis"
|
||||
password: "Wachtwoord"
|
||||
2fa: "Authenticatie in twee stappen"
|
||||
other: "Overig"
|
||||
license: "Licentie"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Venster automatisch uitvouwen"
|
||||
auto-popout-desc: "Venster uitvouwen, indien mogelijk. Deze instelling wordt opgeslagen in je browser."
|
||||
advanced: "Geavanceerde instellingen"
|
||||
api-via-stream: "API-verzoek via stream"
|
||||
api-via-stream-desc: "API-verzoek wordt uitgevoerd via de WebSocket-verbinding i.p.v. de ingebouwde ophaal-API (voor verbeterde prestaties). Deze instelling wordt opgeslagen in je browser."
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "Geen foto's"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "Volgt jou"
|
||||
stalk: "Stalken"
|
||||
stalking: "Stalkend"
|
||||
unstalk: "Stoppen met stalken"
|
||||
mute: "Dempen"
|
||||
muted: "Dempend"
|
||||
unmute: "Ontdempen"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "Overzicht"
|
||||
timeline: "Tijdlijn"
|
||||
media: "Media"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Recente notities"
|
||||
images: "Afbeeldingen"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "Heb je een fout ontdekt of wil je bijdragen aan de documentatie? "
|
||||
edit-this-page-on-github-link: "Bewerk deze pagina op GitHub!"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "Skjønner!"
|
||||
customization-tips:
|
||||
title: "カスタマイズのヒント"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Slett"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{} stemmer"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "Passord"
|
||||
2fa: "To-faktor autentisering"
|
||||
other: "Annet"
|
||||
license: "Lisens"
|
||||
theme: "Utseende"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "Avanserte innstillinger"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Innlegg"
|
||||
following: "Følger"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "Oversikt"
|
||||
timeline: "タイムライン"
|
||||
media: "Media"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Nylige innlegg"
|
||||
images: "Bilder"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
|
||||
load-more: "Załaduj więcej"
|
||||
enter-password: "Wprowadź Hasło"
|
||||
2fa: "二段階認証"
|
||||
got-it: "Rozumiem!"
|
||||
customization-tips:
|
||||
title: "Wskazówki o dostosowywaniu"
|
||||
@ -120,10 +121,12 @@ common:
|
||||
reduce-motion: "Zredukuj ruch w UI"
|
||||
this-setting-is-this-device-only: "このデバイスのみ"
|
||||
use-os-default-emojis: "Użyj domyślnych Emoji systemowych"
|
||||
line-width: "線の太さ"
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
line-width: "Szerokości linii"
|
||||
line-width-thin: "Chuda"
|
||||
line-width-normal: "Normalna"
|
||||
line-width-thick: "Gruba"
|
||||
hide-password: "Ukryj hasło"
|
||||
show-password: "Pokaż hasło"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "Informacje o użytkowniku są kopiowane."
|
||||
@ -315,13 +318,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: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
only-one-file-attached: "Tylko JEDEN plik może zostać dołączony do wiadomości"
|
||||
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: "メッセージに添付できるのはひとつのファイルのみです"
|
||||
only-one-file-attached: "Tylko jeden plik może zostać dołączony do wiadomości"
|
||||
common/views/components/messaging-room.message.vue:
|
||||
is-read: "Przeczytano"
|
||||
deleted: "Wiadomość została usunięta"
|
||||
@ -337,7 +340,7 @@ common/views/components/nav.vue:
|
||||
common/views/components/note-menu.vue:
|
||||
mention: "Wspomnij"
|
||||
detail: "Szczegóły"
|
||||
copy-content: "内容をコピー"
|
||||
copy-content: "Skopiuj zawartość"
|
||||
copy-link: "Skopiuj adres"
|
||||
favorite: "Dodaj do ulubionych"
|
||||
unfavorite: "Usuń z ulubionych"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "Usuń"
|
||||
delete-confirm: "Czy na pewno chcesz usunąć ten wpis?"
|
||||
remote: "Pokaż oryginał"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Zagłosuj na '{}'"
|
||||
vote-count: "{} głosów"
|
||||
@ -383,7 +398,7 @@ common/views/components/signin.vue:
|
||||
signin-with-discord: "Zaloguj się za pomocą Discorda"
|
||||
login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
|
||||
common/views/components/signup.vue:
|
||||
invitation-code: "招待コード"
|
||||
invitation-code: "Kod zaproszenia"
|
||||
invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
|
||||
username: "Nazwa użytkownika"
|
||||
checking: "Sprawdzanie…"
|
||||
@ -414,30 +429,30 @@ common/views/components/stream-indicator.vue:
|
||||
connected: "Połączono"
|
||||
common/views/components/notification-settings.vue:
|
||||
title: "Powiadomienia"
|
||||
mark-as-read-all-notifications: "すべての通知を既読にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
|
||||
auto-watch: "投稿の自動ウォッチ"
|
||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||
mark-as-read-all-notifications: "Oznacz wszystkie powiadomienia jako przeczytane"
|
||||
mark-as-read-all-unread-notes: "Oznacz wszystkie wpisy jako przeczytane"
|
||||
mark-as-read-all-talk-messages: "Oznacz wszystkie rozmowy jako przeczytane"
|
||||
auto-watch: "Automatycznie nasłuchuj wpisów"
|
||||
auto-watch-desc: "Automatycznie otrzymuj powiadomienia o wpisach, w których zareagowałeś(-aś) lub odpowiedziałeś(-aś)."
|
||||
common/views/components/integration-settings.vue:
|
||||
title: "サービス連携"
|
||||
connect: "Połącz"
|
||||
disconnect: "Rozłącz"
|
||||
connected-to: "次のアカウントに接続されています"
|
||||
connected-to: "Jesteś połączony(-a) z następującym kontem"
|
||||
common/views/components/github-setting.vue:
|
||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||
connected-to: "次のGitHubアカウントに接続されています"
|
||||
detail: "Więcej..."
|
||||
reconnect: "Połącz ponownie"
|
||||
connect: "GitHubと接続する"
|
||||
disconnect: "切断する"
|
||||
disconnect: "Rozłącz"
|
||||
common/views/components/discord-setting.vue:
|
||||
description: "お使いのDiscordアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでDiscordアカウント情報が表示されるようになったり、Discordを用いた便利なサインインを利用できるようになります。"
|
||||
connected-to: "次のDiscordアカウントに接続されています"
|
||||
detail: "Szczegóły…"
|
||||
reconnect: "Połącz ponownie"
|
||||
connect: "Discordと接続する"
|
||||
disconnect: "切断する"
|
||||
disconnect: "Rozłącz"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "Oczekiwanie"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
@ -448,7 +463,7 @@ common/views/components/visibility-chooser.vue:
|
||||
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||
specified: "Bezpośredni"
|
||||
specified-desc: "Tylko dla określonych użytkowników"
|
||||
local-public: "公開 (ローカルのみ)"
|
||||
local-public: "Publiczny (tylko lokalnie)"
|
||||
local-public-desc: "リモートへは公開しない"
|
||||
local-home: "ホーム (ローカルのみ)"
|
||||
local-followers: "Dla śledzących (tylko lokalnie)"
|
||||
@ -474,24 +489,24 @@ common/views/components/profile-editor.vue:
|
||||
banner: "Baner"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
is-bot: "To konto jest prowadzone przez bota"
|
||||
is-locked: "Żądanania śledzenia wymagają zatwierdzenia"
|
||||
careful-bot: "Botからのフォローだけ承認制にする"
|
||||
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
|
||||
is-locked: "Prośby śledzenia wymagają zatwierdzenia"
|
||||
careful-bot: "Prośby śledzenia od botów wymagają zatwierdzenia"
|
||||
auto-accept-followed: "Automatyczne zatwierdzaj śledzenia od osób, które śledzisz."
|
||||
advanced: "Inne"
|
||||
privacy: "Prywatność"
|
||||
save: "Zapisz"
|
||||
saved: "Pomyślnie zaktualizowano profil"
|
||||
uploading: "アップロード中"
|
||||
upload-failed: "アップロードに失敗しました"
|
||||
email: "メール設定"
|
||||
uploading: "Wysyłanie"
|
||||
upload-failed: "Wysyłanie nie powiodło się"
|
||||
email: "Ustawienia e-mail"
|
||||
email-address: "Adres e-mail"
|
||||
email-verified: "メールアドレスが確認されました"
|
||||
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。"
|
||||
common/views/components/user-list-editor.vue:
|
||||
users: "ユーザー"
|
||||
rename: "リスト名を変更"
|
||||
delete: "リストを削除"
|
||||
remove-user: "このリストから削除"
|
||||
users: "Użytkownicy"
|
||||
rename: "Zmień nazwę listy"
|
||||
delete: "Usuń listę"
|
||||
remove-user: "Usuń z tej listy"
|
||||
delete-are-you-sure: "リスト「$1」を削除しますか?"
|
||||
deleted: "削除しました"
|
||||
common/views/widgets/broadcast.vue:
|
||||
@ -547,7 +562,7 @@ common/views/widgets/tips.vue:
|
||||
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."
|
||||
common/views/pages/not-found.vue:
|
||||
page-not-found: "ページが見つかりませんでした"
|
||||
page-not-found: "Strona nie została znaleziona"
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
following: "Śledzisz"
|
||||
@ -667,7 +682,7 @@ desktop/views/components/friends-maker.vue:
|
||||
desktop/views/components/game-window.vue:
|
||||
game: "Reversi"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Wyślij"
|
||||
done: "Zakończ"
|
||||
add-widget: "Dodaj widżet:"
|
||||
add: "Dodaj"
|
||||
desktop/views/input-dialog.vue:
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "Bezpieczeństwo"
|
||||
signin: "Historia logowań"
|
||||
password: "Hasło"
|
||||
2fa: "Uwierzytelnianie dwuetapowe"
|
||||
other: "Inne"
|
||||
license: "Licencja"
|
||||
theme: "Motyw"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "Np: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "Automatycznie pojawiające się okna"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "Ustawienia zaawansowane"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "Użyj Talię jako domyślne UI"
|
||||
@ -865,7 +876,7 @@ desktop/views/components/settings.2fa.vue:
|
||||
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
||||
common/views/components/api-settings.vue:
|
||||
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
||||
regenerate-token: "Wygeneruj nowy token"
|
||||
token: "Token:"
|
||||
@ -896,9 +907,9 @@ common/views/components/mute-and-block.vue:
|
||||
save: "Zapisz"
|
||||
common/views/components/password-settings.vue:
|
||||
reset: "Zmień hasło"
|
||||
enter-current-password: "現在のパスワードを入力してください"
|
||||
enter-new-password: "新しいパスワードを入力してください"
|
||||
enter-new-password-again: "もう一度新しいパスワードを入力してください"
|
||||
enter-current-password: "Wprowadź obecne hasło"
|
||||
enter-new-password: "Wprowadź nowe hasło"
|
||||
enter-new-password-again: "Wprowadź ponownie nowe hasło"
|
||||
not-match: "新しいパスワードが一致しません"
|
||||
changed: "パスワードを変更しました"
|
||||
failed: "パスワード変更に失敗しました"
|
||||
@ -950,7 +961,7 @@ desktop/views/components/ui.header.post.vue:
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Szukaj"
|
||||
desktop/views/components/received-follow-requests-window.vue:
|
||||
title: "Poproś o śledzenie"
|
||||
title: "Prośby o śledzenie"
|
||||
accept: "Zatwierdź"
|
||||
reject: "Odmów"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "Ogłoszenia"
|
||||
hashtags: "Hashtagi"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "Zaproś"
|
||||
save: "Zapisz"
|
||||
saved: "Zapisano"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "Czas reakcji"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,10 +1125,12 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
user-not-found: "ユーザーが見つかりません"
|
||||
user-not-found: "Nie znaleziono użytkownika"
|
||||
lookup: "照会"
|
||||
reset-password: "パスワードをリセット"
|
||||
password-updated: "パスワードは現在「{password}」です"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "Źródło"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "Zarejestruj się"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "Brak zdjęć"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "Śledzi Cię"
|
||||
stalk: "Stalkuj"
|
||||
stalking: "Stalkujesz"
|
||||
unstalk: "Przestań stalkować"
|
||||
mute: "Wycisz"
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
block: "Zablokuj"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "Dodaj do listy"
|
||||
list-pushed: "Dodałeś(-aś) {user} do {list}."
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
mention: "Wspomnij"
|
||||
is-bot: "To konto jest botem"
|
||||
years-old: "{age} lat"
|
||||
year: "/"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "Przegląd"
|
||||
timeline: "Oś czasu"
|
||||
media: "Multimedia"
|
||||
mute: "Wycisz"
|
||||
unmute: "ミュート解除"
|
||||
block: "Zablokuj"
|
||||
unblock: "Odblokuj"
|
||||
years-old: "{age} lat"
|
||||
push-to-list: "Dodaj do listy"
|
||||
select-list: "Wybierz listę"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Ostatnie wpisy"
|
||||
images: "Zdjęcia"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
mention: "Wspomnij"
|
||||
images: "Zdjęcia"
|
||||
activity: "Aktywność"
|
||||
timeline: "Oś czasu"
|
||||
pinned-notes: "Przypięte posty"
|
||||
push-to-a-list: "Dodaj do listy"
|
||||
docs:
|
||||
edit-this-page-on-github: "Znalazłeś błąd lub chcesz pomóc w tworzeniu dokumentacji?"
|
||||
edit-this-page-on-github-link: "Edytuj stronę na GitHubie!"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
|
||||
load-more: "もっと読み込む"
|
||||
enter-password: "パスワードを入力してください"
|
||||
2fa: "二段階認証"
|
||||
got-it: "Entendi!"
|
||||
customization-tips:
|
||||
title: "Dicas de personalização"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{}票"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "Linha do tempo"
|
||||
media: "Mídia"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "Notas recentes"
|
||||
images: "Imagens"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "Edite esta página no GitHub!"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "Пожалуйста, не вводите и не вставляйте сюда код. Аккаунту может угрожать опасность."
|
||||
load-more: "Загрузить больше"
|
||||
enter-password: "Пожалуйста, введите ваш пароль"
|
||||
2fa: "二段階認証"
|
||||
got-it: "わかった"
|
||||
customization-tips:
|
||||
title: "Советы по настройке"
|
||||
@ -124,6 +125,8 @@ common:
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
hide-password: "パスワードを隠す"
|
||||
show-password: "パスワードを表示する"
|
||||
do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне."
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
is-remote-user: "このユーザー情報はコピーです。"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "削除"
|
||||
delete-confirm: "この投稿を削除しますか?"
|
||||
remote: "投稿元で見る"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "「{}」に投票する"
|
||||
vote-count: "{}票"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
license: "ライセンス"
|
||||
theme: "テーマ"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "ウィンドウの自動ポップアウト"
|
||||
auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
|
||||
advanced: "詳細設定"
|
||||
api-via-stream: "ストリームを経由したAPIリクエスト"
|
||||
api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
|
||||
deck-nav: "デッキ内ナビゲーション"
|
||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
||||
deck-default: "デッキをデフォルトのUIにする"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "連合"
|
||||
announcements: "お知らせ"
|
||||
hashtags: "ハッシュタグ"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "Misskeyに戻る"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "ダッシュボード"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "インスタンス"
|
||||
this-instance: "このインスタンス"
|
||||
federated: "連合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "インスタンス"
|
||||
instance-name: "インスタンス名"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "投稿の最大文字数"
|
||||
disable-registration: "ユーザー登録の受付を停止する"
|
||||
disable-local-timeline: "ローカルタイムラインを無効にする"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "招待"
|
||||
save: "保存"
|
||||
saved: "保存しました"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "投稿の積算"
|
||||
users: "ユーザーの増減"
|
||||
users-total: "ユーザーの積算"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "ドライブ使用量の増減"
|
||||
drive-total: "ドライブ使用量の積算"
|
||||
drive-files: "ドライブのファイル数の増減"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "応答時間"
|
||||
network-usage: "通信量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "ソート"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "削除しました"
|
||||
mark-as-sensitive: "閲覧注意に設定"
|
||||
unmark-as-sensitive: "閲覧注意を解除"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "ユーザー名またはユーザーID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "登録日時が新しい順"
|
||||
updatedAtAsc: "更新日時が古い順"
|
||||
updatedAtDesc: "更新日時が新しい順"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "オリジン"
|
||||
combined: "ローカル+リモート"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "モデレーターの登録"
|
||||
add: "登録"
|
||||
added: "モデレーターを登録しました"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "絵文字の登録"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "写真はありません"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "フォローされています"
|
||||
stalk: "ストークする"
|
||||
stalking: "ストーキングしています"
|
||||
unstalk: "ストーク解除"
|
||||
mute: "ミュートする"
|
||||
muted: "ミュートしています"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロックする"
|
||||
unblock: "ブロック解除"
|
||||
block-confirm: "このユーザーをブロックしますか?"
|
||||
push-to-a-list: "リストに追加"
|
||||
list-pushed: "{user}を{list}に追加しました。"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
is-bot: "このアカウントはBotです"
|
||||
years-old: "{age}歳"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概要"
|
||||
timeline: "タイムライン"
|
||||
media: "メディア"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
years-old: "{age}歳"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近の投稿"
|
||||
images: "画像"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
mention: "メンション"
|
||||
images: "画像"
|
||||
activity: "アクティビティ"
|
||||
timeline: "タイムライン"
|
||||
pinned-notes: "ピン留めされた投稿"
|
||||
push-to-a-list: "リストに追加"
|
||||
docs:
|
||||
edit-this-page-on-github: "間違いや改善点を見つけましたか?"
|
||||
edit-this-page-on-github-link: "このページをGitHubで編集"
|
||||
|
@ -27,6 +27,7 @@ common:
|
||||
do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。"
|
||||
load-more: "加载更多"
|
||||
enter-password: "请输入您的密码"
|
||||
2fa: "二段階認証"
|
||||
got-it: "没问题"
|
||||
customization-tips:
|
||||
title: "客制化提示"
|
||||
@ -109,7 +110,7 @@ common:
|
||||
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
|
||||
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
|
||||
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
|
||||
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||
use-avatar-reversi-stones: "用头像作为 Reversi 中的 “石头”"
|
||||
verified-user: "认证用户"
|
||||
disable-animated-mfm: "在帖子中禁用动画文本"
|
||||
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
|
||||
@ -120,12 +121,14 @@ common:
|
||||
reduce-motion: "减弱UI中的动画效果"
|
||||
this-setting-is-this-device-only: "设置仅在本设备中生效"
|
||||
use-os-default-emojis: "使用设备系统默认的 emojis"
|
||||
line-width: "線の太さ"
|
||||
line-width-thin: "細い"
|
||||
line-width-normal: "普通"
|
||||
line-width-thick: "太い"
|
||||
line-width: "线条宽度"
|
||||
line-width-thin: "细"
|
||||
line-width-normal: "正常"
|
||||
line-width-thick: "粗"
|
||||
hide-password: "隐藏密码"
|
||||
show-password: "显示密码"
|
||||
do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用."
|
||||
user-suspended: "このユーザーは凍結されています。"
|
||||
user-suspended: "该用户已被冻结。"
|
||||
is-remote-user: "该用户的信息已被复制."
|
||||
is-remote-post: "该投稿已被复制."
|
||||
view-on-remote: "查看准确的信息"
|
||||
@ -264,7 +267,7 @@ common/views/components/media-banner.vue:
|
||||
sensitive: "阅读注意"
|
||||
click-to-show: "点击以显示"
|
||||
common/views/components/theme.vue:
|
||||
theme: "テーマ"
|
||||
theme: "主题"
|
||||
light-theme: "主题"
|
||||
dark-theme: "黑暗模式主题"
|
||||
light-themes: "明亮主题"
|
||||
@ -281,7 +284,7 @@ common/views/components/theme.vue:
|
||||
base-theme: "基础主题"
|
||||
base-theme-light: "亮"
|
||||
base-theme-dark: "暗"
|
||||
find-more-theme: "その他のテーマを入手"
|
||||
find-more-theme: "获取更多主题"
|
||||
theme-name: "主题名称"
|
||||
preview-created-theme: "预览"
|
||||
invalid-theme: "无效主题"
|
||||
@ -303,9 +306,9 @@ common/views/components/theme.vue:
|
||||
common/views/components/cw-button.vue:
|
||||
hide: "隐藏"
|
||||
show: "查看更多"
|
||||
chars: "{count}文字"
|
||||
chars: "{count} 字"
|
||||
files: "{count} 个文件"
|
||||
poll: "アンケート"
|
||||
poll: "调查问卷"
|
||||
common/views/components/messaging.vue:
|
||||
search-user: "查找用户"
|
||||
you: "您"
|
||||
@ -335,9 +338,9 @@ common/views/components/nav.vue:
|
||||
develop: "开发者"
|
||||
feedback: "反馈"
|
||||
common/views/components/note-menu.vue:
|
||||
mention: "メンション"
|
||||
mention: "提到"
|
||||
detail: "详细信息"
|
||||
copy-content: "内容をコピー"
|
||||
copy-content: "复制内容"
|
||||
copy-link: "复制链接"
|
||||
favorite: "收藏这个投稿"
|
||||
unfavorite: "取消收藏"
|
||||
@ -346,6 +349,18 @@ common/views/components/note-menu.vue:
|
||||
delete: "删除"
|
||||
delete-confirm: "确定删除这个投稿吗?"
|
||||
remote: "显示原始投稿"
|
||||
common/views/components/user-menu.vue:
|
||||
mention: "メンション"
|
||||
mute: "ミュート"
|
||||
unmute: "ミュート解除"
|
||||
block: "ブロック"
|
||||
unblock: "ブロック解除"
|
||||
push-to-list: "リストに追加"
|
||||
select-list: "リストを選択してください"
|
||||
list-pushed: "{user}を{list}に追加しました"
|
||||
report-abuse: "スパムを報告"
|
||||
report-abuse-detail: "どのような迷惑行為を行っていますか?"
|
||||
report-abuse-reported: "管理者に報告されました。ご協力ありがとうございました。"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "为\"{}\"投票"
|
||||
vote-count: "{}票"
|
||||
@ -414,16 +429,16 @@ common/views/components/stream-indicator.vue:
|
||||
connected: "已连接"
|
||||
common/views/components/notification-settings.vue:
|
||||
title: "通知"
|
||||
mark-as-read-all-notifications: "すべての通知を既読にする"
|
||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
|
||||
auto-watch: "投稿の自動ウォッチ"
|
||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||
mark-as-read-all-notifications: "将所有通知标为已读"
|
||||
mark-as-read-all-unread-notes: "将所有帖子标为已读"
|
||||
mark-as-read-all-talk-messages: "将所有对话标为已读"
|
||||
auto-watch: "自动查看帖子"
|
||||
auto-watch-desc: "自动接收有关您做出反应或回复的帖子的通知。"
|
||||
common/views/components/integration-settings.vue:
|
||||
title: "サービス連携"
|
||||
title: "服务合作"
|
||||
connect: "连接"
|
||||
disconnect: "未连接"
|
||||
connected-to: "次のアカウントに接続されています"
|
||||
connected-to: "您的账号已连接一下社交账号"
|
||||
common/views/components/github-setting.vue:
|
||||
description: "当您用GitHub连接Misskey账户后,您将能够看到有关您自己的信息,并且您将能够使用GitHub登录。"
|
||||
connected-to: "此账户已连接GitHub"
|
||||
@ -476,7 +491,7 @@ common/views/components/profile-editor.vue:
|
||||
is-bot: "整个账户是机器人"
|
||||
is-locked: "关注者请求需要批准"
|
||||
careful-bot: "机器人的关注者请求需要批准"
|
||||
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
|
||||
auto-accept-followed: "自动同意来自您关注的人的关注申请"
|
||||
advanced: "其他选项"
|
||||
privacy: "隐私"
|
||||
save: "保存"
|
||||
@ -543,11 +558,11 @@ common/views/widgets/tips.vue:
|
||||
tips-line19: "可以在浏览器外部分离多个窗口。"
|
||||
tips-line20: "日历小部件的百分比显示经过的时间百分比。"
|
||||
tips-line21: "您也可以使用API开发机器人。"
|
||||
tips-line23: "藍かわいいよ藍"
|
||||
tips-line23: "Ai-chan kawaii!"
|
||||
tips-line24: "Misskey自2014年开始运营。"
|
||||
tips-line25: "在与通知功能兼容的浏览器中,您可以在Misskey未打开的情况下接收通知"
|
||||
common/views/pages/not-found.vue:
|
||||
page-not-found: "ページが見つかりませんでした"
|
||||
page-not-found: "啊喔, 页面走丢了..."
|
||||
common/views/pages/follow.vue:
|
||||
signed-in-as: "用 {}登录"
|
||||
following: "正在关注"
|
||||
@ -759,7 +774,6 @@ desktop/views/components/settings.vue:
|
||||
security: "安全性"
|
||||
signin: "登录历史"
|
||||
password: "密码"
|
||||
2fa: "两步验证"
|
||||
other: "其他"
|
||||
license: "许可证"
|
||||
theme: "主题"
|
||||
@ -773,9 +787,6 @@ desktop/views/components/settings.vue:
|
||||
web-search-engine-desc: "例如: https://www.google.com/?#q={{query}}"
|
||||
auto-popout: "自动弹出窗口"
|
||||
auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。"
|
||||
advanced: "更多设置"
|
||||
api-via-stream: "通过API请求的Stream"
|
||||
api-via-stream-desc: "API请求通过WebSocket连接而不是本机提取API执行(以获得更好的性能)。 此设置存储在浏览器中。"
|
||||
deck-nav: "Deck 内的导航"
|
||||
deck-nav-desc: "在使用Deck时,您会在导航期间获得一个没有页面过渡的临时列。"
|
||||
deck-default: "将Deck界面设置为默认UI显示界面"
|
||||
@ -979,6 +990,7 @@ admin/views/index.vue:
|
||||
federation: "联合"
|
||||
announcements: "公告"
|
||||
hashtags: "标签"
|
||||
abuse: "スパム報告"
|
||||
back-to-misskey: "返回 Misskey"
|
||||
admin/views/dashboard.vue:
|
||||
dashboard: "Dashboard"
|
||||
@ -988,6 +1000,12 @@ admin/views/dashboard.vue:
|
||||
instances: "例子"
|
||||
this-instance: "此实例"
|
||||
federated: "联合"
|
||||
admin/views/abuse.vue:
|
||||
title: "スパム報告"
|
||||
target: "対象"
|
||||
reporter: "報告者"
|
||||
details: "詳細"
|
||||
remove-report: "削除"
|
||||
admin/views/instance.vue:
|
||||
instance: "例子"
|
||||
instance-name: "实例名称"
|
||||
@ -1034,6 +1052,8 @@ admin/views/instance.vue:
|
||||
max-note-text-length: "最大帖子字符数"
|
||||
disable-registration: "停用新用户注册功能"
|
||||
disable-local-timeline: "停用本地时间线功能"
|
||||
disable-global-timeline: "グローバルタイムラインを無効にする"
|
||||
disabling-timelines-info: "これらのタイムラインを無効にしても、管理者およびモデレーターは引き続き利用できます。"
|
||||
invite: "邀请"
|
||||
save: "保存"
|
||||
saved: "保存完毕"
|
||||
@ -1077,6 +1097,7 @@ admin/views/charts.vue:
|
||||
notes-total: "帖子总数"
|
||||
users: "用户数量:增加/减少"
|
||||
users-total: "用户总数"
|
||||
active-users: "アクティブユーザー数"
|
||||
drive: "存储容量:增加/减少"
|
||||
drive-total: "云盘总容量"
|
||||
drive-files: "云盘上的文件数:增加/减少"
|
||||
@ -1085,6 +1106,10 @@ admin/views/charts.vue:
|
||||
network-time: "响应时间"
|
||||
network-usage: "网络流量"
|
||||
admin/views/drive.vue:
|
||||
operation: "操作"
|
||||
fileid-or-url: "ファイルIDまたはファイルURL"
|
||||
file-not-found: "ファイルが見つかりません"
|
||||
lookup: "照会"
|
||||
sort:
|
||||
title: "排序"
|
||||
createdAtAsc: "アップロード日時が古い順"
|
||||
@ -1100,6 +1125,8 @@ admin/views/drive.vue:
|
||||
deleted: "已删除"
|
||||
mark-as-sensitive: "标记为“敏感”"
|
||||
unmark-as-sensitive: "取消标记为“敏感”"
|
||||
marked-as-sensitive: "閲覧注意に設定しました"
|
||||
unmarked-as-sensitive: "閲覧注意を解除しました"
|
||||
admin/views/users.vue:
|
||||
operation: "操作"
|
||||
username-or-userid: "用户名或用户ID"
|
||||
@ -1123,6 +1150,14 @@ admin/views/users.vue:
|
||||
createdAtDesc: "注册时间从新到旧"
|
||||
updatedAtAsc: "更新时间从旧到新"
|
||||
updatedAtDesc: "更新时间从新到旧"
|
||||
state:
|
||||
title: "状態"
|
||||
all: "すべて"
|
||||
admin: "管理者"
|
||||
moderator: "モデレーター"
|
||||
adminOrModerator: "管理者+モデレーター"
|
||||
verified: "公式アカウント"
|
||||
suspended: "凍結済み"
|
||||
origin:
|
||||
title: "源自"
|
||||
combined: "本地+远程"
|
||||
@ -1135,6 +1170,8 @@ admin/views/moderators.vue:
|
||||
title: "注册版主"
|
||||
add: "注册"
|
||||
added: "已注册版主。"
|
||||
remove: "解除"
|
||||
removed: "モデレーター登録を解除しました"
|
||||
admin/views/emoji.vue:
|
||||
add-emoji:
|
||||
title: "添加emoji"
|
||||
@ -1216,22 +1253,11 @@ desktop/views/pages/user/user.photos.vue:
|
||||
no-photos: "没有图片"
|
||||
desktop/views/pages/user/user.profile.vue:
|
||||
follows-you: "关注您"
|
||||
stalk: "跟踪"
|
||||
stalking: "正在跟踪"
|
||||
unstalk: "解除跟踪"
|
||||
mute: "静音"
|
||||
muted: "正在静音"
|
||||
unmute: "取消静音"
|
||||
block: "屏蔽"
|
||||
unblock: "取消屏蔽"
|
||||
block-confirm: "您确定要屏蔽这个用户吗?"
|
||||
push-to-a-list: "添加至列表"
|
||||
list-pushed: "成功添加{user}到{list}"
|
||||
menu: "メニュー"
|
||||
desktop/views/pages/user/user.header.vue:
|
||||
posts: "帖子"
|
||||
following: "关注中"
|
||||
followers: "关注者"
|
||||
mention: "メンション"
|
||||
is-bot: "这个账户是Bot"
|
||||
years-old: "{age}岁"
|
||||
year: "年"
|
||||
@ -1472,14 +1498,7 @@ mobile/views/pages/user.vue:
|
||||
overview: "概观"
|
||||
timeline: "时间线"
|
||||
media: "媒体"
|
||||
mute: "静音"
|
||||
unmute: "取消静音"
|
||||
block: "屏蔽"
|
||||
unblock: "取消屏蔽"
|
||||
years-old: "{age}岁"
|
||||
push-to-list: "添加至列表"
|
||||
select-list: "选择一个列表"
|
||||
list-pushed: "成功添加{user}到{list}"
|
||||
mobile/views/pages/user/home.vue:
|
||||
recent-notes: "最近的帖子"
|
||||
images: "图片"
|
||||
@ -1525,12 +1544,10 @@ deck/deck.user-column.vue:
|
||||
posts: "帖子"
|
||||
following: "关注中"
|
||||
followers: "关注者"
|
||||
mention: "メンション"
|
||||
images: "图片"
|
||||
activity: "活动"
|
||||
timeline: "时间线"
|
||||
pinned-notes: "标记投稿"
|
||||
push-to-a-list: "添加至列表"
|
||||
docs:
|
||||
edit-this-page-on-github: "发现错误或想要为文档做出贡献?"
|
||||
edit-this-page-on-github-link: "在GitHub上编辑这个页面。"
|
||||
|
40
package.json
40
package.json
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "10.75.0",
|
||||
"clientVersion": "2.0.13368",
|
||||
"version": "10.78.0",
|
||||
"clientVersion": "2.0.13640",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@ -24,7 +24,7 @@
|
||||
"@fortawesome/free-brands-svg-icons": "5.6.3",
|
||||
"@fortawesome/free-regular-svg-icons": "5.5.0",
|
||||
"@fortawesome/free-solid-svg-icons": "5.6.3",
|
||||
"@fortawesome/vue-fontawesome": "0.1.2",
|
||||
"@fortawesome/vue-fontawesome": "0.1.5",
|
||||
"@koa/cors": "2.2.3",
|
||||
"@prezzemolo/rap": "0.1.2",
|
||||
"@prezzemolo/zip": "0.0.3",
|
||||
@ -43,6 +43,7 @@
|
||||
"@types/gulp-uglify": "3.0.6",
|
||||
"@types/gulp-util": "3.0.34",
|
||||
"@types/is-root": "1.0.0",
|
||||
"@types/is-svg": "3.0.0",
|
||||
"@types/is-url": "1.2.28",
|
||||
"@types/js-yaml": "3.11.4",
|
||||
"@types/katex": "0.5.0",
|
||||
@ -60,7 +61,7 @@
|
||||
"@types/minio": "7.0.1",
|
||||
"@types/mkdirp": "0.5.2",
|
||||
"@types/mocha": "5.2.5",
|
||||
"@types/mongodb": "3.1.14",
|
||||
"@types/mongodb": "3.1.18",
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.12.18",
|
||||
"@types/nodemailer": "4.6.5",
|
||||
@ -76,7 +77,7 @@
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
"@types/sharp": "0.21.0",
|
||||
"@types/showdown": "1.9.0",
|
||||
"@types/showdown": "1.9.2",
|
||||
"@types/speakeasy": "2.0.3",
|
||||
"@types/systeminformation": "3.23.1",
|
||||
"@types/tinycolor2": "1.4.1",
|
||||
@ -86,7 +87,7 @@
|
||||
"@types/webpack-stream": "3.2.10",
|
||||
"@types/websocket": "0.0.40",
|
||||
"@types/ws": "6.0.1",
|
||||
"animejs": "2.2.0",
|
||||
"animejs": "3.0.1",
|
||||
"apexcharts": "2.5.1",
|
||||
"autobind-decorator": "2.4.0",
|
||||
"autosize": "4.0.2",
|
||||
@ -96,23 +97,23 @@
|
||||
"bootstrap-vue": "2.0.0-rc.11",
|
||||
"cafy": "12.0.0",
|
||||
"chai": "4.2.0",
|
||||
"chai-http": "4.2.0",
|
||||
"chalk": "2.4.1",
|
||||
"chalk": "2.4.2",
|
||||
"chai-http": "4.2.1",
|
||||
"commander": "2.19.0",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "1.0.1",
|
||||
"cssnano": "4.1.7",
|
||||
"cssnano": "4.1.8",
|
||||
"dateformat": "3.0.3",
|
||||
"debug": "4.1.0",
|
||||
"deep-equal": "1.0.1",
|
||||
"deepcopy": "0.6.3",
|
||||
"diskusage": "1.0.0",
|
||||
"double-ended-queue": "2.1.0-0",
|
||||
"elasticsearch": "15.2.0",
|
||||
"elasticsearch": "15.3.0",
|
||||
"emojilib": "2.4.0",
|
||||
"escape-regexp": "0.0.1",
|
||||
"eslint": "5.11.1",
|
||||
"eslint-plugin-vue": "5.0.0",
|
||||
"eslint": "5.12.0",
|
||||
"eslint-plugin-vue": "5.1.0",
|
||||
"eventemitter3": "3.1.0",
|
||||
"feed": "2.0.2",
|
||||
"file-loader": "2.0.0",
|
||||
@ -136,8 +137,9 @@
|
||||
"http-signature": "1.2.0",
|
||||
"insert-text-at-cursor": "0.1.1",
|
||||
"is-root": "2.0.0",
|
||||
"is-svg": "3.0.0",
|
||||
"is-url": "1.2.4",
|
||||
"js-yaml": "3.12.0",
|
||||
"js-yaml": "3.12.1",
|
||||
"jsdom": "13.1.0",
|
||||
"json5": "2.1.0",
|
||||
"json5-loader": "1.0.1",
|
||||
@ -157,7 +159,7 @@
|
||||
"langmap": "0.0.16",
|
||||
"loader-utils": "1.2.3",
|
||||
"lookup-dns-cache": "2.1.0",
|
||||
"minio": "7.0.2",
|
||||
"minio": "7.0.3",
|
||||
"mkdirp": "0.5.1",
|
||||
"mocha": "5.2.0",
|
||||
"moji": "0.5.1",
|
||||
@ -191,7 +193,7 @@
|
||||
"request": "2.88.0",
|
||||
"request-promise-native": "1.0.5",
|
||||
"request-stats": "3.0.0",
|
||||
"rimraf": "2.6.2",
|
||||
"rimraf": "2.6.3",
|
||||
"rndstr": "1.0.0",
|
||||
"s-age": "1.1.2",
|
||||
"seedrandom": "2.4.4",
|
||||
@ -210,7 +212,7 @@
|
||||
"textarea-caret": "3.1.0",
|
||||
"tinycolor2": "1.4.1",
|
||||
"tmp": "0.0.33",
|
||||
"ts-loader": "5.3.1",
|
||||
"ts-loader": "5.3.3",
|
||||
"ts-node": "7.0.1",
|
||||
"tslint": "5.12.0",
|
||||
"tslint-sonarts": "1.8.0",
|
||||
@ -224,7 +226,7 @@
|
||||
"vue-color": "2.7.0",
|
||||
"vue-content-loading": "1.5.3",
|
||||
"vue-cropperjs": "3.0.0",
|
||||
"vue-i18n": "8.6.0",
|
||||
"vue-i18n": "8.7.0",
|
||||
"vue-js-modal": "1.3.28",
|
||||
"vue-loader": "15.4.2",
|
||||
"vue-marquee-text-component": "1.1.1",
|
||||
@ -239,8 +241,8 @@
|
||||
"vuex-persistedstate": "2.5.4",
|
||||
"web-push": "3.3.3",
|
||||
"webfinger.js": "2.7.0",
|
||||
"webpack": "4.28.3",
|
||||
"webpack-cli": "3.1.2",
|
||||
"webpack": "4.28.4",
|
||||
"webpack-cli": "3.2.1",
|
||||
"websocket": "1.0.28",
|
||||
"ws": "6.1.2",
|
||||
"xev": "2.0.1"
|
||||
|
48
src/chart/active-users.ts
Normal file
48
src/chart/active-users.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import autobind from 'autobind-decorator';
|
||||
import Chart, { Obj } from '.';
|
||||
import { IUser, isLocalUser } from '../models/user';
|
||||
|
||||
/**
|
||||
* アクティブユーザーに関するチャート
|
||||
*/
|
||||
type ActiveUsersLog = {
|
||||
local: {
|
||||
/**
|
||||
* アクティブユーザー数
|
||||
*/
|
||||
count: number;
|
||||
};
|
||||
|
||||
remote: ActiveUsersLog['local'];
|
||||
};
|
||||
|
||||
class ActiveUsersChart extends Chart<ActiveUsersLog> {
|
||||
constructor() {
|
||||
super('activeUsers');
|
||||
}
|
||||
|
||||
@autobind
|
||||
protected async getTemplate(init: boolean, latest?: ActiveUsersLog): Promise<ActiveUsersLog> {
|
||||
return {
|
||||
local: {
|
||||
count: 0
|
||||
},
|
||||
remote: {
|
||||
count: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@autobind
|
||||
public async update(user: IUser) {
|
||||
const update: Obj = {
|
||||
count: 1
|
||||
};
|
||||
|
||||
await this.incIfUnique({
|
||||
[isLocalUser(user) ? 'local' : 'remote']: update
|
||||
}, 'users', user._id.toHexString());
|
||||
}
|
||||
}
|
||||
|
||||
export default new ActiveUsersChart();
|
@ -316,21 +316,9 @@ export default abstract class Chart<T> {
|
||||
const res: ArrayValue<T> = {} as any;
|
||||
|
||||
/**
|
||||
* [{
|
||||
* xxxxx: 1, yyyyy: 5
|
||||
* }, {
|
||||
* xxxxx: 2, yyyyy: 6
|
||||
* }, {
|
||||
* xxxxx: 3, yyyyy: 7
|
||||
* }]
|
||||
*
|
||||
* [{ foo: 1, bar: 5 }, { foo: 2, bar: 6 }, { foo: 3, bar: 7 }]
|
||||
* を
|
||||
*
|
||||
* {
|
||||
* xxxxx: [1, 2, 3],
|
||||
* yyyyy: [5, 6, 7]
|
||||
* }
|
||||
*
|
||||
* { foo: [1, 2, 3], bar: [5, 6, 7] }
|
||||
* にする
|
||||
*/
|
||||
const dive = (x: Obj, path?: string) => {
|
||||
|
83
src/client/app/admin/views/abuse.vue
Normal file
83
src/client/app/admin/views/abuse.vue
Normal file
@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="faExclamationCircle"/> {{ $t('title') }}</div>
|
||||
<section class="fit-top">
|
||||
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||
<div v-for="report in userReports" :key="report.id" class="haexwsjc">
|
||||
<ui-horizon-group inputs>
|
||||
<ui-input :value="report.user | acct" type="text">
|
||||
<span>{{ $t('target') }}</span>
|
||||
</ui-input>
|
||||
<ui-input :value="report.reporter | acct" type="text">
|
||||
<span>{{ $t('reporter') }}</span>
|
||||
</ui-input>
|
||||
</ui-horizon-group>
|
||||
<ui-textarea :value="report.comment" readonly>
|
||||
<span>{{ $t('details') }}</span>
|
||||
</ui-textarea>
|
||||
<ui-button @click="removeReport(report)">{{ $t('remove-report') }}</ui-button>
|
||||
</div>
|
||||
</sequential-entrance>
|
||||
<ui-button v-if="existMore" @click="fetchUserReports">{{ $t('@.load-more') }}</ui-button>
|
||||
</section>
|
||||
</ui-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../i18n';
|
||||
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('admin/views/abuse.vue'),
|
||||
|
||||
data() {
|
||||
return {
|
||||
limit: 10,
|
||||
untilId: undefined,
|
||||
userReports: [],
|
||||
existMore: false,
|
||||
faExclamationCircle
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.fetchUserReports();
|
||||
},
|
||||
|
||||
methods: {
|
||||
fetchUserReports() {
|
||||
this.$root.api('admin/abuse-user-reports', {
|
||||
untilId: this.untilId,
|
||||
limit: this.limit + 1
|
||||
}).then(reports => {
|
||||
if (reports.length == this.limit + 1) {
|
||||
reports.pop();
|
||||
this.existMore = true;
|
||||
} else {
|
||||
this.existMore = false;
|
||||
}
|
||||
this.userReports = this.userReports.concat(reports);
|
||||
this.untilId = this.userReports[this.userReports.length - 1].id;
|
||||
});
|
||||
},
|
||||
|
||||
removeReport(report) {
|
||||
this.$root.api('admin/remove-abuse-user-report', {
|
||||
reportId: report.id
|
||||
}).then(() => {
|
||||
this.userReports = this.userReports.filter(r => r.id != report.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.haexwsjc
|
||||
padding-bottom 16px
|
||||
border-bottom solid 1px var(--faceDivider)
|
||||
|
||||
</style>
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="cdeuzmsthagexbkpofbmatmugjuvogfb">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="broadcast-tower"/> {{ $t('announcements') }}</div>
|
||||
<section v-for="(announcement, i) in announcements" class="fit-top">
|
||||
@ -83,10 +83,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.cdeuzmsthagexbkpofbmatmugjuvogfb
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
|
||||
</style>
|
||||
|
@ -10,6 +10,7 @@
|
||||
<optgroup :label="$t('users')">
|
||||
<option value="users">{{ $t('charts.users') }}</option>
|
||||
<option value="users-total">{{ $t('charts.users-total') }}</option>
|
||||
<option value="active-users">{{ $t('charts.active-users') }}</option>
|
||||
</optgroup>
|
||||
<optgroup :label="$t('notes')">
|
||||
<option value="notes">{{ $t('charts.notes') }}</option>
|
||||
@ -67,6 +68,7 @@ export default Vue.extend({
|
||||
case 'federation-instances-total': return this.federationInstancesChart(true);
|
||||
case 'users': return this.usersChart(false);
|
||||
case 'users-total': return this.usersChart(true);
|
||||
case 'active-users': return this.activeUsersChart();
|
||||
case 'notes': return this.notesChart('combined');
|
||||
case 'local-notes': return this.notesChart('local');
|
||||
case 'remote-notes': return this.notesChart('remote');
|
||||
@ -107,12 +109,14 @@ export default Vue.extend({
|
||||
const [perHour, perDay] = await Promise.all([Promise.all([
|
||||
this.$root.api('charts/federation', { limit: limit, span: 'hour' }),
|
||||
this.$root.api('charts/users', { limit: limit, span: 'hour' }),
|
||||
this.$root.api('charts/active-users', { limit: limit, span: 'hour' }),
|
||||
this.$root.api('charts/notes', { limit: limit, span: 'hour' }),
|
||||
this.$root.api('charts/drive', { limit: limit, span: 'hour' }),
|
||||
this.$root.api('charts/network', { limit: limit, span: 'hour' })
|
||||
]), Promise.all([
|
||||
this.$root.api('charts/federation', { limit: limit, span: 'day' }),
|
||||
this.$root.api('charts/users', { limit: limit, span: 'day' }),
|
||||
this.$root.api('charts/active-users', { limit: limit, span: 'day' }),
|
||||
this.$root.api('charts/notes', { limit: limit, span: 'day' }),
|
||||
this.$root.api('charts/drive', { limit: limit, span: 'day' }),
|
||||
this.$root.api('charts/network', { limit: limit, span: 'day' })
|
||||
@ -122,16 +126,18 @@ export default Vue.extend({
|
||||
perHour: {
|
||||
federation: perHour[0],
|
||||
users: perHour[1],
|
||||
notes: perHour[2],
|
||||
drive: perHour[3],
|
||||
network: perHour[4]
|
||||
activeUsers: perHour[2],
|
||||
notes: perHour[3],
|
||||
drive: perHour[4],
|
||||
network: perHour[5]
|
||||
},
|
||||
perDay: {
|
||||
federation: perDay[0],
|
||||
users: perDay[1],
|
||||
notes: perDay[2],
|
||||
drive: perDay[3],
|
||||
network: perDay[4]
|
||||
activeUsers: perDay[2],
|
||||
notes: perDay[3],
|
||||
drive: perDay[4],
|
||||
network: perDay[5]
|
||||
}
|
||||
};
|
||||
|
||||
@ -183,7 +189,7 @@ export default Vue.extend({
|
||||
},
|
||||
legend: {
|
||||
labels: {
|
||||
color: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||
colors: tinycolor(getComputedStyle(document.documentElement).getPropertyValue('--text')).toRgbString()
|
||||
},
|
||||
},
|
||||
xaxis: {
|
||||
@ -321,6 +327,24 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
|
||||
activeUsersChart(): any {
|
||||
return {
|
||||
series: [{
|
||||
name: 'Combined',
|
||||
type: 'line',
|
||||
data: this.format(sum(this.stats.activeUsers.local.count, this.stats.activeUsers.remote.count))
|
||||
}, {
|
||||
name: 'Local',
|
||||
type: 'area',
|
||||
data: this.format(this.stats.activeUsers.local.count)
|
||||
}, {
|
||||
name: 'Remote',
|
||||
type: 'area',
|
||||
data: this.format(this.stats.activeUsers.remote.count)
|
||||
}]
|
||||
};
|
||||
},
|
||||
|
||||
driveChart(): any {
|
||||
return {
|
||||
bytes: true,
|
||||
|
@ -148,7 +148,7 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
updateStats() {
|
||||
this.$root.api('stats', {}, false, true).then(stats => {
|
||||
this.$root.api('stats', {}, true).then(stats => {
|
||||
this.stats = stats;
|
||||
});
|
||||
}
|
||||
@ -161,7 +161,7 @@ export default Vue.extend({
|
||||
padding 16px
|
||||
|
||||
@media (min-width 500px)
|
||||
padding 32px
|
||||
padding 16px
|
||||
|
||||
> header
|
||||
display flex
|
||||
|
@ -1,5 +1,21 @@
|
||||
<template>
|
||||
<div class="pwnqwyet">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="faTerminal"/> {{ $t('operation') }}</div>
|
||||
<section class="fit-top">
|
||||
<ui-input v-model="target" type="text">
|
||||
<span>{{ $t('fileid-or-url') }}</span>
|
||||
</ui-input>
|
||||
<ui-horizon-group>
|
||||
<ui-button @click="findAndToggleSensitive(true)"><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button>
|
||||
<ui-button @click="findAndToggleSensitive(false)"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button>
|
||||
</ui-horizon-group>
|
||||
<ui-button @click="findAndDel()"><fa :icon="faTrashAlt"/> {{ $t('delete') }}</ui-button>
|
||||
<ui-button @click="show()"><fa :icon="faSearch"/> {{ $t('lookup') }}</ui-button>
|
||||
<ui-textarea v-if="file" :value="file | json5" readonly tall style="margin-top:16px;"></ui-textarea>
|
||||
</section>
|
||||
</ui-card>
|
||||
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="faCloud"/> {{ $t('@.drive') }}</div>
|
||||
<section class="fit-top">
|
||||
@ -57,7 +73,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../i18n';
|
||||
import { faCloud } from '@fortawesome/free-solid-svg-icons';
|
||||
import { faCloud, faTerminal, faSearch } from '@fortawesome/free-solid-svg-icons';
|
||||
import { faTrashAlt, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
|
||||
|
||||
export default Vue.extend({
|
||||
@ -65,13 +81,15 @@ export default Vue.extend({
|
||||
|
||||
data() {
|
||||
return {
|
||||
file: null,
|
||||
target: null,
|
||||
sort: '+createdAt',
|
||||
origin: 'combined',
|
||||
limit: 10,
|
||||
offset: 0,
|
||||
files: [],
|
||||
existMore: false,
|
||||
faCloud, faTrashAlt, faEye, faEyeSlash
|
||||
faCloud, faTrashAlt, faEye, faEyeSlash, faTerminal, faSearch
|
||||
};
|
||||
},
|
||||
|
||||
@ -94,6 +112,24 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
methods: {
|
||||
async fetchFile() {
|
||||
try {
|
||||
return await this.$root.api('drive/files/show', this.target.startsWith('http') ? { url: this.target } : { fileId: this.target });
|
||||
} catch (e) {
|
||||
if (e == 'file-not-found') {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('file-not-found')
|
||||
});
|
||||
} else {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
fetch() {
|
||||
this.$root.api('admin/drive/files', {
|
||||
origin: this.origin,
|
||||
@ -147,43 +183,85 @@ export default Vue.extend({
|
||||
|
||||
file.isSensitive = !file.isSensitive;
|
||||
},
|
||||
|
||||
async show() {
|
||||
const file = await this.fetchFile();
|
||||
this.$root.api('admin/drive/show-file', { fileId: file.id }).then(info => {
|
||||
this.file = info;
|
||||
});
|
||||
},
|
||||
|
||||
async findAndToggleSensitive(sensitive) {
|
||||
const process = async () => {
|
||||
const file = await this.fetchFile();
|
||||
await this.$root.api('drive/files/update', {
|
||||
fileId: file.id,
|
||||
isSensitive: sensitive
|
||||
});
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
text: sensitive ? this.$t('marked-as-sensitive') : this.$t('unmarked-as-sensitive')
|
||||
});
|
||||
};
|
||||
|
||||
await process().catch(e => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e.toString()
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
async findAndDel() {
|
||||
const process = async () => {
|
||||
const file = await this.fetchFile();
|
||||
await this.$root.api('drive/files/delete', { fileId: file.id });
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('deleted')
|
||||
});
|
||||
};
|
||||
|
||||
await process().catch(e => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e.toString()
|
||||
});
|
||||
});
|
||||
},
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.pwnqwyet
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
.kidvdlkg
|
||||
padding 16px 0
|
||||
border-top solid 1px var(--faceDivider)
|
||||
|
||||
.kidvdlkg
|
||||
padding 16px 0
|
||||
border-top solid 1px var(--faceDivider)
|
||||
> div:first-child
|
||||
display flex
|
||||
cursor pointer
|
||||
|
||||
> div:first-child
|
||||
display flex
|
||||
cursor pointer
|
||||
> div:nth-child(1)
|
||||
> .thumbnail
|
||||
display block
|
||||
width 64px
|
||||
height 64px
|
||||
background-size cover
|
||||
background-position center center
|
||||
|
||||
> div:nth-child(1)
|
||||
> .thumbnail
|
||||
display block
|
||||
width 64px
|
||||
height 64px
|
||||
background-size cover
|
||||
background-position center center
|
||||
> div:nth-child(2)
|
||||
flex 1
|
||||
padding-left 16px
|
||||
|
||||
> div:nth-child(2)
|
||||
flex 1
|
||||
padding-left 16px
|
||||
@media (max-width 500px)
|
||||
font-size 14px
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 14px
|
||||
> header
|
||||
word-break break-word
|
||||
|
||||
> header
|
||||
word-break break-word
|
||||
|
||||
> .username
|
||||
margin-left 8px
|
||||
opacity 0.7
|
||||
> .username
|
||||
margin-left 8px
|
||||
opacity 0.7
|
||||
|
||||
</style>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="tumhkfkmgtvzljezfvmgkeurkfncshbe">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="plus"/> {{ $t('add-emoji.title') }}</div>
|
||||
<section class="fit-top">
|
||||
@ -150,25 +150,21 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.tumhkfkmgtvzljezfvmgkeurkfncshbe
|
||||
.oryfrbft
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
display flex
|
||||
|
||||
> div:first-child
|
||||
@media (max-width 500px)
|
||||
padding-bottom 16px
|
||||
|
||||
> img
|
||||
vertical-align bottom
|
||||
|
||||
> div:last-child
|
||||
flex 1
|
||||
|
||||
.oryfrbft
|
||||
@media (min-width 500px)
|
||||
display flex
|
||||
|
||||
> div:first-child
|
||||
@media (max-width 500px)
|
||||
padding-bottom 16px
|
||||
|
||||
> img
|
||||
vertical-align bottom
|
||||
|
||||
> div:last-child
|
||||
flex 1
|
||||
|
||||
@media (min-width 500px)
|
||||
padding-left 16px
|
||||
padding-left 16px
|
||||
|
||||
</style>
|
||||
|
@ -39,10 +39,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.jdnqwkzlnxcfftthoybjxrebyolvoucw
|
||||
width 100%
|
||||
min-height 300px
|
||||
|
||||
</style>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<li @click="nav('emoji')" :class="{ active: page == 'emoji' }"><fa :icon="faGrin" fixed-width/>{{ $t('emoji') }}</li>
|
||||
<li @click="nav('announcements')" :class="{ active: page == 'announcements' }"><fa icon="broadcast-tower" fixed-width/>{{ $t('announcements') }}</li>
|
||||
<li @click="nav('hashtags')" :class="{ active: page == 'hashtags' }"><fa icon="hashtag" fixed-width/>{{ $t('hashtags') }}</li>
|
||||
<li @click="nav('abuse')" :class="{ active: page == 'abuse' }"><fa :icon="faExclamationCircle" fixed-width/>{{ $t('abuse') }}</li>
|
||||
</ul>
|
||||
<div class="back-to-misskey">
|
||||
<a href="/"><fa :icon="faArrowLeft"/> {{ $t('back-to-misskey') }}</a>
|
||||
@ -45,7 +46,7 @@
|
||||
<div v-if="page == 'announcements'"><x-announcements/></div>
|
||||
<div v-if="page == 'hashtags'"><x-hashtags/></div>
|
||||
<div v-if="page == 'drive'"><x-drive/></div>
|
||||
<div v-if="page == 'update'"></div>
|
||||
<div v-if="page == 'abuse'"><x-abuse/></div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
@ -63,7 +64,8 @@ import XAnnouncements from "./announcements.vue";
|
||||
import XHashtags from "./hashtags.vue";
|
||||
import XUsers from "./users.vue";
|
||||
import XDrive from "./drive.vue";
|
||||
import { faHeadset, faArrowLeft, faShareAlt } from '@fortawesome/free-solid-svg-icons';
|
||||
import XAbuse from "./abuse.vue";
|
||||
import { faHeadset, faArrowLeft, faShareAlt, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
import { faGrin } from '@fortawesome/free-regular-svg-icons';
|
||||
|
||||
// Detect the user agent
|
||||
@ -81,6 +83,7 @@ export default Vue.extend({
|
||||
XHashtags,
|
||||
XUsers,
|
||||
XDrive,
|
||||
XAbuse,
|
||||
},
|
||||
provide: {
|
||||
isMobile
|
||||
@ -94,7 +97,8 @@ export default Vue.extend({
|
||||
faGrin,
|
||||
faArrowLeft,
|
||||
faHeadset,
|
||||
faShareAlt
|
||||
faShareAlt,
|
||||
faExclamationCircle
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
@ -270,6 +274,9 @@ export default Vue.extend({
|
||||
> .page
|
||||
max-width 1150px
|
||||
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
|
||||
&.isMobile
|
||||
> main
|
||||
padding $headerHeight 0 0 0
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="axbwjelsbymowqjyywpirzhdlszoncqs">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="cog"/> {{ $t('instance') }}</div>
|
||||
<section class="fit-top fit-bottom">
|
||||
@ -22,6 +22,8 @@
|
||||
<section>
|
||||
<ui-switch v-model="disableRegistration">{{ $t('disable-registration') }}</ui-switch>
|
||||
<ui-switch v-model="disableLocalTimeline">{{ $t('disable-local-timeline') }}</ui-switch>
|
||||
<ui-switch v-model="disableGlobalTimeline">{{ $t('disable-global-timeline') }}</ui-switch>
|
||||
<ui-info>{{ $t('disabling-timelines-info') }}</ui-info>
|
||||
</section>
|
||||
<section class="fit-bottom">
|
||||
<header><fa icon="cloud"/> {{ $t('drive-config') }}</header>
|
||||
@ -150,6 +152,7 @@ export default Vue.extend({
|
||||
maintainerEmail: null,
|
||||
disableRegistration: false,
|
||||
disableLocalTimeline: false,
|
||||
disableGlobalTimeline: false,
|
||||
mascotImageUrl: null,
|
||||
bannerUrl: null,
|
||||
errorImageUrl: null,
|
||||
@ -198,6 +201,7 @@ export default Vue.extend({
|
||||
this.maintainerEmail = meta.maintainer.email;
|
||||
this.disableRegistration = meta.disableRegistration;
|
||||
this.disableLocalTimeline = meta.disableLocalTimeline;
|
||||
this.disableGlobalTimeline = meta.disableGlobalTimeline;
|
||||
this.mascotImageUrl = meta.mascotImageUrl;
|
||||
this.bannerUrl = meta.bannerUrl;
|
||||
this.errorImageUrl = meta.errorImageUrl;
|
||||
@ -256,6 +260,7 @@ export default Vue.extend({
|
||||
maintainerEmail: this.maintainerEmail,
|
||||
disableRegistration: this.disableRegistration,
|
||||
disableLocalTimeline: this.disableLocalTimeline,
|
||||
disableGlobalTimeline: this.disableGlobalTimeline,
|
||||
mascotImageUrl: this.mascotImageUrl,
|
||||
bannerUrl: this.bannerUrl,
|
||||
errorImageUrl: this.errorImageUrl,
|
||||
@ -308,10 +313,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.axbwjelsbymowqjyywpirzhdlszoncqs
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
|
||||
</style>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="jnhmugbb">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa icon="plus"/> {{ $t('add-moderator.title') }}</div>
|
||||
<section class="fit-top">
|
||||
@ -75,10 +75,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.jnhmugbb
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
|
||||
</style>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="ucnffhbtogqgscfmqcymwmmupoknpfsw">
|
||||
<div>
|
||||
<ui-card>
|
||||
<div slot="title"><fa :icon="faTerminal"/> {{ $t('operation') }}</div>
|
||||
<section class="fit-top">
|
||||
@ -277,46 +277,42 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.ucnffhbtogqgscfmqcymwmmupoknpfsw
|
||||
@media (min-width 500px)
|
||||
padding 16px
|
||||
.kofvwchc
|
||||
display flex
|
||||
padding 16px 0
|
||||
border-top solid 1px var(--faceDivider)
|
||||
|
||||
.kofvwchc
|
||||
display flex
|
||||
padding 16px 0
|
||||
border-top solid 1px var(--faceDivider)
|
||||
> div:first-child
|
||||
> a
|
||||
> .avatar
|
||||
width 64px
|
||||
height 64px
|
||||
|
||||
> div:first-child
|
||||
> a
|
||||
> .avatar
|
||||
width 64px
|
||||
height 64px
|
||||
> div:last-child
|
||||
flex 1
|
||||
padding-left 16px
|
||||
|
||||
> div:last-child
|
||||
flex 1
|
||||
padding-left 16px
|
||||
@media (max-width 500px)
|
||||
font-size 14px
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 14px
|
||||
> header
|
||||
> .username
|
||||
margin-left 8px
|
||||
opacity 0.7
|
||||
|
||||
> header
|
||||
> .username
|
||||
margin-left 8px
|
||||
opacity 0.7
|
||||
> .is-admin
|
||||
> .is-moderator
|
||||
flex-shrink 0
|
||||
align-self center
|
||||
margin 0 0 0 .5em
|
||||
padding 1px 6px
|
||||
font-size 80%
|
||||
border-radius 3px
|
||||
background var(--noteHeaderAdminBg)
|
||||
color var(--noteHeaderAdminFg)
|
||||
|
||||
> .is-admin
|
||||
> .is-moderator
|
||||
flex-shrink 0
|
||||
align-self center
|
||||
margin 0 0 0 .5em
|
||||
padding 1px 6px
|
||||
font-size 80%
|
||||
border-radius 3px
|
||||
background var(--noteHeaderAdminBg)
|
||||
color var(--noteHeaderAdminFg)
|
||||
|
||||
> .is-verified
|
||||
> .is-suspended
|
||||
margin 0 0 0 .5em
|
||||
color #4dabf7
|
||||
> .is-verified
|
||||
> .is-suspended
|
||||
margin 0 0 0 .5em
|
||||
color #4dabf7
|
||||
</style>
|
||||
|
@ -76,7 +76,7 @@ export default (opts: Opts = {}) => ({
|
||||
},
|
||||
|
||||
title(): string {
|
||||
return new Date(this.appearNote.createdAt).toLocaleString();
|
||||
return '';
|
||||
},
|
||||
|
||||
urls(): string[] {
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
|
||||
import parseAcct from "../../../../../misc/acct/parse";
|
||||
|
||||
@ -93,7 +93,7 @@ export default Vue.extend({
|
||||
opacity: 1,
|
||||
scale: [1.2, 1],
|
||||
duration: 300,
|
||||
easing: [0, 0.5, 0.5, 1]
|
||||
easing: 'cubicBezier(0, 0.5, 0.5, 1)'
|
||||
});
|
||||
|
||||
if (this.splash) {
|
||||
@ -142,7 +142,7 @@ export default Vue.extend({
|
||||
opacity: 0,
|
||||
scale: 0.8,
|
||||
duration: 300,
|
||||
easing: [0, 0.5, 0.5, 1],
|
||||
easing: 'cubicBezier(0, 0.5, 0.5, 1)',
|
||||
complete: () => this.destroyDom()
|
||||
});
|
||||
},
|
||||
|
@ -93,8 +93,7 @@ export default Vue.extend({
|
||||
},
|
||||
plotOptions: {
|
||||
bar: {
|
||||
columnWidth: '90%',
|
||||
endingShape: 'rounded'
|
||||
columnWidth: '90%'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
|
@ -4,13 +4,18 @@
|
||||
<header><b><router-link :to="blackUser | userPage"><mk-user-name :user="blackUser"/></router-link></b>({{ $t('@.reversi.black') }}) vs <b><router-link :to="whiteUser | userPage"><mk-user-name :user="whiteUser"/></router-link></b>({{ $t('@.reversi.white') }})</header>
|
||||
|
||||
<div style="overflow: hidden; line-height: 28px;">
|
||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ $t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) }) }}<mk-ellipsis/></p>
|
||||
<p class="turn" v-if="logPos != logs.length">{{ $t('@.reversi.past-turn-of', { name: $options.filters.userName(turnUser) }) }}</p>
|
||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">
|
||||
<mfm :text="$t('@.reversi.turn-of', { name: $options.filters.userName(turnUser) })" :should-break="false" :plain-text="true" :custom-emojis="turnUser.emojis"/>
|
||||
<mk-ellipsis/>
|
||||
</p>
|
||||
<p class="turn" v-if="logPos != logs.length">
|
||||
<mfm :text="$t('@.reversi.past-turn-of', { name: $options.filters.userName(turnUser) })" :should-break="false" :plain-text="true" :custom-emojis="turnUser.emojis"/>
|
||||
</p>
|
||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">{{ $t('@.reversi.opponent-turn') }}<mk-ellipsis/></p>
|
||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">{{ $t('@.reversi.my-turn') }}</p>
|
||||
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
||||
<template v-if="game.winner">
|
||||
<misskey-flavored-markdown :text="$t('@.reversi.won', { name: $options.filters.userName(game.winner) })" :shouldBreak="false" :plainText="true" :custom-emojis="game.winner.emojis"/>
|
||||
<mfm :text="$t('@.reversi.won', { name: $options.filters.userName(game.winner) })" :should-break="false" :plain-text="true" :custom-emojis="game.winner.emojis"/>
|
||||
<span v-if="game.surrendered != null"> ({{ $t('surrendered') }})</span>
|
||||
</template>
|
||||
<template v-else>{{ $t('@.reversi.drawn') }}</template>
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['image'],
|
||||
|
@ -45,6 +45,7 @@ import uiInfo from './ui/info.vue';
|
||||
import formButton from './ui/form/button.vue';
|
||||
import formRadio from './ui/form/radio.vue';
|
||||
|
||||
Vue.component('mfm', misskeyFlavoredMarkdown);
|
||||
Vue.component('mk-user-name', userName);
|
||||
Vue.component('mk-follow-button', followButton);
|
||||
Vue.component('mk-error', error);
|
||||
@ -63,7 +64,6 @@ Vue.component('mk-forkit', forkit);
|
||||
Vue.component('mk-acct', acct);
|
||||
Vue.component('mk-avatar', avatar);
|
||||
Vue.component('mk-nav', nav);
|
||||
Vue.component('misskey-flavored-markdown', misskeyFlavoredMarkdown);
|
||||
Vue.component('mk-poll', poll);
|
||||
Vue.component('mk-poll-editor', pollEditor);
|
||||
Vue.component('mk-reaction-icon', reactionIcon);
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
|
@ -7,7 +7,7 @@
|
||||
<img src="/assets/desktop/remove.png" alt="Delete"/>
|
||||
</button>
|
||||
<div class="content" v-if="!message.isDeleted">
|
||||
<misskey-flavored-markdown class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||
<mfm class="text" v-if="message.text" ref="text" :text="message.text" :i="$store.state.i"/>
|
||||
<div class="file" v-if="message.file">
|
||||
<a :href="message.file.url" target="_blank" :title="message.file.name">
|
||||
<img v-if="message.file.type.split('/')[0] == 'image'" :src="message.file.url" :alt="message.file.name"
|
||||
|
@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<mfm v-bind="$attrs" class="havbbuyv"/>
|
||||
<mfm-core v-bind="$attrs" class="havbbuyv"/>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import Mfm from './mfm';
|
||||
import MfmCore from './mfm';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
Mfm
|
||||
MfmCore
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('common/views/components/reaction-picker.vue'),
|
||||
|
@ -18,7 +18,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import Icon from './reaction-icon.vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
|
@ -10,7 +10,10 @@
|
||||
<span>{{ $t('password') }}</span>
|
||||
<span slot="prefix"><fa icon="lock"/></span>
|
||||
</ui-input>
|
||||
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill"/>
|
||||
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required styl="fill">
|
||||
<span>{{ $t('@.2fa') }}</span>
|
||||
<span slot="prefix"><fa icon="gavel"/></span>
|
||||
</ui-input>
|
||||
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button>
|
||||
<p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
|
||||
<p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
|
||||
@ -72,7 +75,7 @@ export default Vue.extend({
|
||||
username: this.username,
|
||||
password: this.password,
|
||||
token: this.user && this.user.twoFactorEnabled ? this.token : undefined
|
||||
}, true).then(res => {
|
||||
}).then(res => {
|
||||
localStorage.setItem('i', res.i);
|
||||
location.reload();
|
||||
}).catch(() => {
|
||||
|
@ -142,11 +142,11 @@ export default Vue.extend({
|
||||
password: this.password,
|
||||
invitationCode: this.invitationCode,
|
||||
'g-recaptcha-response': this.meta.enableRecaptcha ? (window as any).grecaptcha.getResponse() : null
|
||||
}, true).then(() => {
|
||||
}).then(() => {
|
||||
this.$root.api('signin', {
|
||||
username: this.username,
|
||||
password: this.password
|
||||
}, true).then(res => {
|
||||
}).then(res => {
|
||||
localStorage.setItem('i', res.i);
|
||||
location.reload();
|
||||
});
|
||||
|
@ -18,7 +18,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('common/views/components/stream-indicator.vue'),
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<time class="mk-time">
|
||||
<time class="mk-time" :title="absolute">
|
||||
<span v-if=" mode == 'relative' ">{{ relative }}</span>
|
||||
<span v-if=" mode == 'absolute' ">{{ absolute }}</span>
|
||||
<span v-if=" mode == 'detail' ">{{ absolute }} ({{ relative }})</span>
|
||||
|
157
src/client/app/common/views/components/user-menu.vue
Normal file
157
src/client/app/common/views/components/user-menu.vue
Normal file
@ -0,0 +1,157 @@
|
||||
<template>
|
||||
<div style="position:initial">
|
||||
<mk-menu :source="source" :items="items" @closed="closed"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
||||
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('common/views/components/user-menu.vue'),
|
||||
|
||||
props: ['user', 'source'],
|
||||
|
||||
data() {
|
||||
let menu = [{
|
||||
icon: ['fas', 'at'],
|
||||
text: this.$t('mention'),
|
||||
action: () => {
|
||||
this.$post({ mention: this.user });
|
||||
}
|
||||
}, null, {
|
||||
icon: ['fas', 'list'],
|
||||
text: this.$t('push-to-list'),
|
||||
action: this.pushList
|
||||
}, null, {
|
||||
icon: this.user.isMuted ? ['fas', 'eye'] : ['far', 'eye-slash'],
|
||||
text: this.user.isMuted ? this.$t('unmute') : this.$t('mute'),
|
||||
action: this.toggleMute
|
||||
}, {
|
||||
icon: 'ban',
|
||||
text: this.user.isBlocking ? this.$t('unblock') : this.$t('block'),
|
||||
action: this.toggleBlock
|
||||
}, null, {
|
||||
icon: faExclamationCircle,
|
||||
text: this.$t('report-abuse'),
|
||||
action: this.reportAbuse
|
||||
}];
|
||||
|
||||
return {
|
||||
items: menu
|
||||
};
|
||||
},
|
||||
|
||||
methods: {
|
||||
closed() {
|
||||
this.$nextTick(() => {
|
||||
this.destroyDom();
|
||||
});
|
||||
},
|
||||
|
||||
async pushList() {
|
||||
const lists = await this.$root.api('users/lists/list');
|
||||
const { canceled, result: listId } = await this.$root.dialog({
|
||||
type: null,
|
||||
title: this.$t('select-list'),
|
||||
select: {
|
||||
items: lists.map(list => ({
|
||||
value: list.id, text: list.title
|
||||
}))
|
||||
},
|
||||
showCancelButton: true
|
||||
});
|
||||
if (canceled) return;
|
||||
await this.$root.api('users/lists/push', {
|
||||
listId: listId,
|
||||
userId: this.user.id
|
||||
});
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('list-pushed', {
|
||||
user: this.user.name,
|
||||
list: lists.find(l => l.id === listId).title
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
toggleMute() {
|
||||
if (this.user.isMuted) {
|
||||
this.$root.api('mute/delete', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isMuted = false;
|
||||
}, () => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e
|
||||
});
|
||||
});
|
||||
} else {
|
||||
this.$root.api('mute/create', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isMuted = true;
|
||||
}, () => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
toggleBlock() {
|
||||
if (this.user.isBlocking) {
|
||||
this.$root.api('blocking/delete', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isBlocking = false;
|
||||
}, () => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e
|
||||
});
|
||||
});
|
||||
} else {
|
||||
this.$root.api('blocking/create', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isBlocking = true;
|
||||
}, () => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
async reportAbuse() {
|
||||
const reported = this.$t('report-abuse-reported'); // なぜか後で参照すると null になるので最初にメモリに確保しておく
|
||||
const { canceled, result: comment } = await this.$root.dialog({
|
||||
title: this.$t('report-abuse-detail'),
|
||||
input: true
|
||||
});
|
||||
if (canceled) return;
|
||||
this.$root.api('users/report-abuse', {
|
||||
userId: this.user.id,
|
||||
comment: comment
|
||||
}).then(() => {
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
text: reported
|
||||
});
|
||||
}, e => {
|
||||
this.$root.dialog({
|
||||
type: 'error',
|
||||
text: e
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<misskey-flavored-markdown :text="user.name || user.username" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
<mfm :text="user.name || user.username" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
|
@ -55,7 +55,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('common/views/components/visibility-chooser.vue'),
|
||||
|
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
</header>
|
||||
<div class="text">
|
||||
<misskey-flavored-markdown v-if="note.text" :text="note.cw != null ? note.cw : note.text" :author="note.user" :custom-emojis="note.emojis"/>
|
||||
<mfm v-if="note.text" :text="note.cw != null ? note.cw : note.text" :author="note.user" :custom-emojis="note.emojis"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="syxhndwprovvuqhmyvveewmbqayniwkv" v-if="!fetching">
|
||||
<div class="signed-in-as" v-html="this.$t('signed-in-as').replace('{}', `<b>${myName}`)"></div>
|
||||
|
||||
<div class="signed-in-as">
|
||||
<mfm :text="$t('signed-in-as').replace('{}', myName)" :should-break="false" :plain-text="true" :custom-emojis="$store.state.i.emojis"/>
|
||||
</div>
|
||||
<main>
|
||||
<div class="banner" :style="bannerStyle"></div>
|
||||
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
|
||||
@ -11,7 +12,7 @@
|
||||
</router-link>
|
||||
<span class="username">@{{ user | acct }}</span>
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
@ -127,6 +128,7 @@ export default Vue.extend({
|
||||
> .signed-in-as
|
||||
margin-bottom 16px
|
||||
font-size 14px
|
||||
font-weight bold
|
||||
|
||||
> main
|
||||
margin-bottom 16px
|
||||
|
@ -13,7 +13,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import define from '../../../common/define-widget';
|
||||
import i18n from '../../../i18n';
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import define from '../../../common/define-widget';
|
||||
import i18n from '../../../i18n';
|
||||
|
||||
|
@ -147,7 +147,7 @@ init(async (launch) => {
|
||||
{ path: '/search', component: MkSearch },
|
||||
{ path: '/tags/:tag', name: 'tag', component: MkTag },
|
||||
{ path: '/share', component: MkShare },
|
||||
{ path: '/reversi/:game?', component: MkReversi },
|
||||
{ path: '/games/reversi/:game?', component: MkReversi },
|
||||
{ path: '/@:user', name: 'user', component: MkUser },
|
||||
{ path: '/@:user/following', name: 'userFollowing', component: MkUserFollowingOrFollowers },
|
||||
{ path: '/@:user/followers', name: 'userFollowers', component: MkUserFollowingOrFollowers },
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import contains from '../../../common/scripts/contains';
|
||||
import XMenu from './context-menu.menu.vue';
|
||||
|
||||
|
@ -34,8 +34,10 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
|
||||
import updateAvatar from '../../api/update-avatar';
|
||||
import updateBanner from '../../api/update-banner';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('desktop/views/components/drive.file.vue'),
|
||||
@ -180,11 +182,11 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
setAsAvatar() {
|
||||
this.$updateAvatar(this.file);
|
||||
updateAvatar(this.$root)(this.file);
|
||||
},
|
||||
|
||||
setAsBanner() {
|
||||
this.$updateBanner(this.file);
|
||||
updateBanner(this.$root)(this.file);
|
||||
},
|
||||
|
||||
addApp() {
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['video', 'start'],
|
||||
|
@ -40,14 +40,14 @@
|
||||
</header>
|
||||
<div class="body">
|
||||
<p v-if="appearNote.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mfm v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="appearNote"/>
|
||||
</p>
|
||||
<div class="content" v-show="appearNote.cw == null || showContent">
|
||||
<div class="text">
|
||||
<span v-if="appearNote.isHidden" style="opacity: 0.5">{{ $t('private') }}</span>
|
||||
<span v-if="appearNote.deletedAt" style="opacity: 0.5">{{ $t('deleted') }}</span>
|
||||
<misskey-flavored-markdown v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
</div>
|
||||
<div class="files" v-if="appearNote.files.length > 0">
|
||||
<mk-media-list :media-list="appearNote.files" :raw="true"/>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<mk-note-header class="header" :note="note" :mini="true"/>
|
||||
<div class="body">
|
||||
<p v-if="note.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mfm v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="note"/>
|
||||
</p>
|
||||
<div class="content" v-show="note.cw == null || showContent">
|
||||
|
@ -5,7 +5,7 @@
|
||||
<mk-note-header class="header" :note="note"/>
|
||||
<div class="body">
|
||||
<p v-if="note.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mfm v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="note"/>
|
||||
</p>
|
||||
<div class="content" v-show="note.cw == null || showContent">
|
||||
|
@ -20,14 +20,14 @@
|
||||
<mk-note-header class="header" :note="appearNote" :mini="mini"/>
|
||||
<div class="body" v-if="appearNote.deletedAt == null">
|
||||
<p v-if="appearNote.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mfm v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="appearNote"/>
|
||||
</p>
|
||||
<div class="content" v-show="appearNote.cw == null || showContent">
|
||||
<div class="text">
|
||||
<span v-if="appearNote.isHidden" style="opacity: 0.5">{{ $t('private') }}</span>
|
||||
<a class="reply" v-if="appearNote.reply"><fa icon="reply"/></a>
|
||||
<misskey-flavored-markdown v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
<mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
<a class="rp" v-if="appearNote.renote">RN:</a>
|
||||
</div>
|
||||
<div class="files" v-if="appearNote.files.length > 0">
|
||||
|
@ -24,7 +24,7 @@
|
||||
</p>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -40,7 +40,7 @@
|
||||
</p>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note.renote)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -55,7 +55,7 @@
|
||||
</router-link>
|
||||
</p>
|
||||
<router-link class="note-preview" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
@ -91,7 +91,7 @@
|
||||
</router-link>
|
||||
</p>
|
||||
<router-link class="note-preview" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
@ -105,7 +105,7 @@
|
||||
</router-link>
|
||||
</p>
|
||||
<a class="note-preview" :href="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
@ -118,7 +118,7 @@
|
||||
</a></p>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
|
@ -222,12 +222,6 @@ export default Vue.extend({
|
||||
});
|
||||
}
|
||||
|
||||
// keep cw when reply
|
||||
if (this.reply && this.reply.cw != null) {
|
||||
this.useCw = true;
|
||||
this.cw = this.reply.cw;
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
// 書きかけの投稿を復元
|
||||
if (!this.instant && !this.mention) {
|
||||
|
@ -32,13 +32,6 @@
|
||||
<span slot="desc">{{ $t('auto-popout-desc') }}</span>
|
||||
</ui-switch>
|
||||
<ui-switch v-model="deckNav">{{ $t('deck-nav') }}<span slot="desc">{{ $t('deck-nav-desc') }}</span></ui-switch>
|
||||
|
||||
<details>
|
||||
<summary>{{ $t('advanced') }}</summary>
|
||||
<ui-switch v-model="apiViaStream">{{ $t('api-via-stream') }}
|
||||
<span slot="desc">{{ $t('api-via-stream-desc') }}</span>
|
||||
</ui-switch>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
@ -203,7 +196,7 @@
|
||||
</ui-card>
|
||||
|
||||
<ui-card class="2fa" v-show="page == 'security'">
|
||||
<div slot="title"><fa icon="mobile-alt"/> {{ $t('2fa') }}</div>
|
||||
<div slot="title"><fa icon="mobile-alt"/> {{ $t('@.2fa') }}</div>
|
||||
<section>
|
||||
<x-2fa/>
|
||||
</section>
|
||||
@ -333,11 +326,6 @@ export default Vue.extend({
|
||||
set(value) { this.$store.commit('device/set', { key: 'reduceMotion', value }); }
|
||||
},
|
||||
|
||||
apiViaStream: {
|
||||
get() { return this.$store.state.device.apiViaStream; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'apiViaStream', value }); }
|
||||
},
|
||||
|
||||
autoPopout: {
|
||||
get() { return this.$store.state.device.autoPopout; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||
|
@ -4,7 +4,7 @@
|
||||
<span v-if="note.isHidden" style="opacity: 0.5">{{ $t('private') }}</span>
|
||||
<span v-if="note.deletedAt" style="opacity: 0.5">{{ $t('deleted') }}</span>
|
||||
<a class="reply" v-if="note.replyId"><fa icon="reply"/></a>
|
||||
<misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis"/>
|
||||
<mfm v-if="note.text" :text="note.text" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis"/>
|
||||
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RN: ...</a>
|
||||
</div>
|
||||
<details v-if="note.files.length > 0">
|
||||
|
@ -4,7 +4,7 @@
|
||||
<span :data-active="src == 'home'" @click="src = 'home'"><fa icon="home"/> {{ $t('home') }}</span>
|
||||
<span :data-active="src == 'local'" @click="src = 'local'" v-if="enableLocalTimeline"><fa :icon="['far', 'comments']"/> {{ $t('local') }}</span>
|
||||
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'" v-if="enableLocalTimeline"><fa icon="share-alt"/> {{ $t('hybrid') }}</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'"><fa icon="globe"/> {{ $t('global') }}</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'" v-if="enableGlobalTimeline"><fa icon="globe"/> {{ $t('global') }}</span>
|
||||
<span :data-active="src == 'tag'" @click="src = 'tag'" v-if="tagTl"><fa icon="hashtag"/> {{ tagTl.title }}</span>
|
||||
<span :data-active="src == 'list'" @click="src = 'list'" v-if="list"><fa icon="list"/> {{ list.title }}</span>
|
||||
<div class="buttons">
|
||||
@ -43,7 +43,8 @@ export default Vue.extend({
|
||||
src: 'home',
|
||||
list: null,
|
||||
tagTl: null,
|
||||
enableLocalTimeline: false
|
||||
enableLocalTimeline: false,
|
||||
enableGlobalTimeline: false,
|
||||
};
|
||||
},
|
||||
|
||||
@ -65,7 +66,8 @@ export default Vue.extend({
|
||||
|
||||
created() {
|
||||
this.$root.getMeta().then(meta => {
|
||||
this.enableLocalTimeline = !meta.disableLocalTimeline;
|
||||
this.enableLocalTimeline = !meta.disableLocalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin;
|
||||
this.enableGlobalTimeline = !meta.disableGlobalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin;
|
||||
});
|
||||
|
||||
if (this.$store.state.device.tl) {
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['message'],
|
||||
|
@ -29,7 +29,6 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import { env } from '../../../config';
|
||||
|
||||
import XNav from './ui.header.nav.vue';
|
||||
|
@ -8,9 +8,9 @@
|
||||
<mk-user-name :user="user"/>
|
||||
</router-link>
|
||||
<span class="username">@{{ user | acct }} <fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/></span>
|
||||
|
||||
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<p class="username"><mk-acct :user="u"/></p>
|
||||
</div>
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="u.description" :text="u.description" :author="u" :i="$store.state.i" :custom-emojis="u.emojis"/>
|
||||
<mfm v-if="u.description" :text="u.description" :author="u" :i="$store.state.i" :custom-emojis="u.emojis"/>
|
||||
</div>
|
||||
<div class="status">
|
||||
<div>
|
||||
@ -29,7 +29,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import parseAcct from '../../../../../misc/acct/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
|
@ -37,7 +37,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
import contains from '../../../common/scripts/contains';
|
||||
|
||||
const minHeight = 40;
|
||||
@ -196,7 +196,7 @@ export default Vue.extend({
|
||||
opacity: 0,
|
||||
scale: 0.8,
|
||||
duration: this.animation ? 300 : 0,
|
||||
easing: [0.5, -0.5, 1, 0.5]
|
||||
easing: 'cubicBezier(0.5, -0.5, 1, 0.5)'
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<x-column>
|
||||
<span slot="header">
|
||||
<fa :icon="['far', 'comment-alt']"/><span>{{ title }}</span>
|
||||
<fa :icon="['far', 'comment-alt']"/><mk-user-name :user="note.user" v-if="note"/>
|
||||
</span>
|
||||
|
||||
<div class="rvtscbadixhhbsczoorqoaygovdeecsx" v-if="note">
|
||||
@ -45,12 +45,6 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
title(): string {
|
||||
return this.note ? Vue.filter('userName')(this.note.user) : '';
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.$root.api('notes/show', { noteId: this.noteId }).then(note => {
|
||||
this.note = note;
|
||||
|
@ -12,7 +12,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -30,7 +30,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note.renote)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -74,7 +74,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<x-column>
|
||||
<span slot="header">
|
||||
<fa icon="user"/><span>{{ title }}</span>
|
||||
<fa icon="user"/><mk-user-name :user="user" v-if="user"/>
|
||||
</span>
|
||||
|
||||
<div class="zubukjlciycdsyynicqrnlsmdwmymzqu" v-if="user">
|
||||
@ -24,15 +24,15 @@
|
||||
</header>
|
||||
<div class="info">
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</div>
|
||||
<div class="fields" v-if="user.fields">
|
||||
<dl class="field" v-for="(field, i) in user.fields" :key="i">
|
||||
<dt class="name">
|
||||
<misskey-flavored-markdown :text="field.name" :shouldBreak="false" :plainText="true" :custom-emojis="user.emojis"/>
|
||||
<mfm :text="field.name" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
</dt>
|
||||
<dd class="value">
|
||||
<misskey-flavored-markdown :text="field.value" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm :text="field.value" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@ -49,9 +49,6 @@
|
||||
<b>{{ user.followersCount | number }}</b>
|
||||
<span>{{ $t('followers') }}</span>
|
||||
</div>
|
||||
<div class="mention">
|
||||
<button @click="mention" :title="$t('mention')"><fa icon="at"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pinned" v-if="user.pinnedNotes && user.pinnedNotes.length > 0">
|
||||
@ -100,8 +97,7 @@ import parseAcct from '../../../../../../misc/acct/parse';
|
||||
import XColumn from './deck.column.vue';
|
||||
import XNotes from './deck.notes.vue';
|
||||
import XNote from '../../components/note.vue';
|
||||
import Menu from '../../../../common/views/components/menu.vue';
|
||||
import MkUserListsWindow from '../../components/user-lists-window.vue';
|
||||
import XUserMenu from '../../../../common/views/components/user-menu.vue';
|
||||
import { concat } from '../../../../../../prelude/array';
|
||||
import * as ApexCharts from 'apexcharts';
|
||||
|
||||
@ -137,10 +133,6 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
computed: {
|
||||
title(): string {
|
||||
return this.user ? Vue.filter('userName')(this.user) : '';
|
||||
},
|
||||
|
||||
bannerStyle(): any {
|
||||
if (this.user == null) return {};
|
||||
if (this.user.bannerUrl == null) return {};
|
||||
@ -223,8 +215,7 @@ export default Vue.extend({
|
||||
},
|
||||
plotOptions: {
|
||||
bar: {
|
||||
columnWidth: '90%',
|
||||
endingShape: 'rounded'
|
||||
columnWidth: '90%'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
@ -311,33 +302,10 @@ export default Vue.extend({
|
||||
return promise;
|
||||
},
|
||||
|
||||
mention() {
|
||||
this.$post({ mention: this.user });
|
||||
},
|
||||
|
||||
menu() {
|
||||
let menu = [{
|
||||
icon: 'list',
|
||||
text: this.$t('push-to-a-list'),
|
||||
action: () => {
|
||||
const w = this.$root.new(MkUserListsWindow);
|
||||
w.$once('choosen', async list => {
|
||||
w.close();
|
||||
await this.$root.api('users/lists/push', {
|
||||
listId: list.id,
|
||||
userId: this.user.id
|
||||
});
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
splash: true
|
||||
});
|
||||
});
|
||||
}
|
||||
}];
|
||||
|
||||
this.$root.new(Menu, {
|
||||
this.$root.new(XUserMenu, {
|
||||
source: this.$refs.menu,
|
||||
items: menu
|
||||
user: this.user
|
||||
});
|
||||
},
|
||||
|
||||
@ -464,7 +432,7 @@ export default Vue.extend({
|
||||
|
||||
> .counts
|
||||
display grid
|
||||
grid-template-columns 2fr 2fr 2fr 1fr
|
||||
grid-template-columns 2fr 2fr 2fr
|
||||
margin-top 8px
|
||||
border-top solid var(--lineWidth) var(--faceDivider)
|
||||
|
||||
@ -481,9 +449,6 @@ export default Vue.extend({
|
||||
font-size 80%
|
||||
opacity 0.7
|
||||
|
||||
> .mention
|
||||
display flex
|
||||
|
||||
> *
|
||||
> p.caption
|
||||
margin 0
|
||||
|
@ -16,15 +16,15 @@
|
||||
<mk-avatar class="avatar" :user="user" :disable-preview="true"/>
|
||||
<div class="body">
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</div>
|
||||
<div class="fields" v-if="user.fields">
|
||||
<dl class="field" v-for="(field, i) in user.fields" :key="i">
|
||||
<dt class="name">
|
||||
<misskey-flavored-markdown :text="field.name" :shouldBreak="false" :plainText="true" :custom-emojis="user.emojis"/>
|
||||
<mfm :text="field.name" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
</dt>
|
||||
<dd class="value">
|
||||
<misskey-flavored-markdown :text="field.value" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm :text="field.value" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
@ -36,7 +36,6 @@
|
||||
<span class="notes-count"><b>{{ user.notesCount | number }}</b>{{ $t('posts') }}</span>
|
||||
<router-link :to="user | userPage('following')" class="following clickable"><b>{{ user.followingCount | number }}</b>{{ $t('following') }}</router-link>
|
||||
<router-link :to="user | userPage('followers')" class="followers clickable"><b>{{ user.followersCount | number }}</b>{{ $t('followers') }}</router-link>
|
||||
<button @click="mention" :title="$t('mention')"><fa icon="at"/></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,21 +3,9 @@
|
||||
<div class="friend-form" v-if="$store.state.i.id != user.id">
|
||||
<mk-follow-button :user="user" block/>
|
||||
<p class="followed" v-if="user.isFollowed">{{ $t('follows-you') }}</p>
|
||||
<p class="stalk" v-if="user.isFollowing">
|
||||
<span v-if="user.isStalking">{{ $t('stalking') }} <a @click="unstalk"><fa icon="meh"/> {{ $t('unstalk') }}</a></span>
|
||||
<span v-if="!user.isStalking"><a @click="stalk"><fa icon="user-secret"/> {{ $t('stalk') }}</a></span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="action-form">
|
||||
<ui-button @click="user.isMuted ? unmute() : mute()" v-if="$store.state.i.id != user.id">
|
||||
<span v-if="user.isMuted"><fa icon="eye"/> {{ $t('unmute') }}</span>
|
||||
<span v-else><fa :icon="['far', 'eye-slash']"/> {{ $t('mute') }}</span>
|
||||
</ui-button>
|
||||
<ui-button @click="user.isBlocking ? unblock() : block()" v-if="$store.state.i.id != user.id">
|
||||
<span v-if="user.isBlocking"><fa icon="ban"/> {{ $t('unblock') }}</span>
|
||||
<span v-else><fa icon="ban"/> {{ $t('block') }}</span>
|
||||
</ui-button>
|
||||
<ui-button @click="list"><fa icon="list"/> {{ $t('push-to-a-list') }}</ui-button>
|
||||
<ui-button @click="menu" ref="menu">{{ $t('menu') }}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -25,99 +13,19 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../../i18n';
|
||||
import MkUserListsWindow from '../../components/user-lists-window.vue';
|
||||
import XUserMenu from '../../../../common/views/components/user-menu.vue';
|
||||
|
||||
export default Vue.extend({
|
||||
i18n: i18n('desktop/views/pages/user/user.profile.vue'),
|
||||
props: ['user'],
|
||||
|
||||
methods: {
|
||||
stalk() {
|
||||
this.$root.api('following/stalk', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isStalking = true;
|
||||
}, () => {
|
||||
alert('error');
|
||||
menu() {
|
||||
this.$root.new(XUserMenu, {
|
||||
source: this.$refs.menu.$el,
|
||||
user: this.user
|
||||
});
|
||||
},
|
||||
|
||||
unstalk() {
|
||||
this.$root.api('following/unstalk', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isStalking = false;
|
||||
}, () => {
|
||||
alert('error');
|
||||
});
|
||||
},
|
||||
|
||||
mute() {
|
||||
this.$root.api('mute/create', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isMuted = true;
|
||||
}, () => {
|
||||
alert('error');
|
||||
});
|
||||
},
|
||||
|
||||
unmute() {
|
||||
this.$root.api('mute/delete', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isMuted = false;
|
||||
}, () => {
|
||||
alert('error');
|
||||
});
|
||||
},
|
||||
|
||||
block() {
|
||||
this.$root.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('block-confirm'),
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) return;
|
||||
|
||||
this.$root.api('blocking/create', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isBlocking = true;
|
||||
}, () => {
|
||||
alert('error');
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
unblock() {
|
||||
this.$root.api('blocking/delete', {
|
||||
userId: this.user.id
|
||||
}).then(() => {
|
||||
this.user.isBlocking = false;
|
||||
}, () => {
|
||||
alert('error');
|
||||
});
|
||||
},
|
||||
|
||||
list() {
|
||||
const w = this.$root.new(MkUserListsWindow);
|
||||
w.$once('choosen', async list => {
|
||||
w.close();
|
||||
await this.$root.api('users/lists/push', {
|
||||
listId: list.id,
|
||||
userId: this.user.id
|
||||
});
|
||||
this.$root.dialog({
|
||||
type: 'success',
|
||||
title: 'Done!',
|
||||
text: this.$t('list-pushed', {
|
||||
user: this.user.name,
|
||||
list: list.title
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@ -146,9 +54,6 @@ export default Vue.extend({
|
||||
background #eefaff
|
||||
border-radius 4px
|
||||
|
||||
> .stalk
|
||||
margin 12px 0 0 0
|
||||
|
||||
> .action-form
|
||||
padding 16px
|
||||
text-align center
|
||||
|
@ -124,7 +124,8 @@ import {
|
||||
faMapMarker,
|
||||
faRobot,
|
||||
faHourglassHalf,
|
||||
faAlignLeft
|
||||
faAlignLeft,
|
||||
faGavel
|
||||
} from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
import {
|
||||
@ -257,6 +258,7 @@ library.add(
|
||||
faRobot,
|
||||
faHourglassHalf,
|
||||
faAlignLeft,
|
||||
faGavel,
|
||||
|
||||
farBell,
|
||||
farEnvelope,
|
||||
|
@ -385,7 +385,7 @@ export default class MiOS extends EventEmitter {
|
||||
* @param data パラメータ
|
||||
*/
|
||||
@autobind
|
||||
public api(endpoint: string, data: { [x: string]: any } = {}, forceFetch = false, silent = false): Promise<{ [x: string]: any }> {
|
||||
public api(endpoint: string, data: { [x: string]: any } = {}, silent = false): Promise<{ [x: string]: any }> {
|
||||
if (!silent) {
|
||||
if (++pending === 1) {
|
||||
spinner = document.createElement('div');
|
||||
@ -401,66 +401,44 @@ export default class MiOS extends EventEmitter {
|
||||
};
|
||||
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
const viaStream = this.stream && this.stream.state == 'connected' && this.store.state.device.apiViaStream && !forceFetch;
|
||||
// Append a credential
|
||||
if (this.store.getters.isSignedIn) (data as any).i = this.store.state.i.token;
|
||||
|
||||
if (viaStream) {
|
||||
const id = Math.random().toString().substr(2, 8);
|
||||
const req = {
|
||||
id: uuid(),
|
||||
date: new Date(),
|
||||
name: endpoint,
|
||||
data,
|
||||
res: null,
|
||||
status: null
|
||||
};
|
||||
|
||||
this.stream.once(`api:${id}`, res => {
|
||||
if (res == null || Object.keys(res).length == 0) {
|
||||
resolve(null);
|
||||
} else if (res.res) {
|
||||
resolve(res.res);
|
||||
} else {
|
||||
reject(res.e);
|
||||
}
|
||||
});
|
||||
if (this.debug) {
|
||||
this.requests.push(req);
|
||||
}
|
||||
|
||||
this.stream.send('api', {
|
||||
id: id,
|
||||
ep: endpoint,
|
||||
data: data
|
||||
});
|
||||
} else {
|
||||
// Append a credential
|
||||
if (this.store.getters.isSignedIn) (data as any).i = this.store.state.i.token;
|
||||
|
||||
const req = {
|
||||
id: uuid(),
|
||||
date: new Date(),
|
||||
name: endpoint,
|
||||
data,
|
||||
res: null,
|
||||
status: null
|
||||
};
|
||||
// Send request
|
||||
fetch(endpoint.indexOf('://') > -1 ? endpoint : `${apiUrl}/${endpoint}`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
credentials: endpoint === 'signin' ? 'include' : 'omit',
|
||||
cache: 'no-cache'
|
||||
}).then(async (res) => {
|
||||
const body = res.status === 204 ? null : await res.json();
|
||||
|
||||
if (this.debug) {
|
||||
this.requests.push(req);
|
||||
req.status = res.status;
|
||||
req.res = body;
|
||||
}
|
||||
|
||||
// Send request
|
||||
fetch(endpoint.indexOf('://') > -1 ? endpoint : `${apiUrl}/${endpoint}`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
credentials: endpoint === 'signin' ? 'include' : 'omit',
|
||||
cache: 'no-cache'
|
||||
}).then(async (res) => {
|
||||
const body = res.status === 204 ? null : await res.json();
|
||||
|
||||
if (this.debug) {
|
||||
req.status = res.status;
|
||||
req.res = body;
|
||||
}
|
||||
|
||||
if (res.status === 200) {
|
||||
resolve(body);
|
||||
} else if (res.status === 204) {
|
||||
resolve();
|
||||
} else {
|
||||
reject(body.error);
|
||||
}
|
||||
}).catch(reject);
|
||||
}
|
||||
if (res.status === 200) {
|
||||
resolve(body);
|
||||
} else if (res.status === 204) {
|
||||
resolve();
|
||||
} else {
|
||||
reject(body.error);
|
||||
}
|
||||
}).catch(reject);
|
||||
});
|
||||
|
||||
promise.then(onFinally, onFinally);
|
||||
|
@ -135,7 +135,7 @@ init((launch) => {
|
||||
{ path: '/search', component: MkSearch },
|
||||
{ path: '/tags/:tag', component: MkTag },
|
||||
{ path: '/share', component: MkShare },
|
||||
{ path: '/reversi/:game?', name: 'reversi', component: MkReversi },
|
||||
{ path: '/games/reversi/:game?', name: 'reversi', component: MkReversi },
|
||||
{ path: '/@:user', component: () => import('./views/pages/user.vue').then(m => m.default) },
|
||||
{ path: '/@:user/followers', component: MkFollowers },
|
||||
{ path: '/@:user/following', component: MkFollowing },
|
||||
|
@ -59,8 +59,7 @@ export default Vue.extend({
|
||||
},
|
||||
plotOptions: {
|
||||
bar: {
|
||||
columnWidth: '90%',
|
||||
endingShape: 'rounded'
|
||||
columnWidth: '90%'
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
|
@ -26,14 +26,14 @@
|
||||
</header>
|
||||
<div class="body">
|
||||
<p v-if="appearNote.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mfm v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="appearNote"/>
|
||||
</p>
|
||||
<div class="content" v-show="appearNote.cw == null || showContent">
|
||||
<div class="text">
|
||||
<span v-if="appearNote.isHidden" style="opacity: 0.5">({{ $t('private') }})</span>
|
||||
<span v-if="appearNote.deletedAt" style="opacity: 0.5">({{ $t('deleted') }})</span>
|
||||
<misskey-flavored-markdown v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
<mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
</div>
|
||||
<div class="files" v-if="appearNote.files.length > 0">
|
||||
<mk-media-list :media-list="appearNote.files" :raw="true"/>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<mk-note-header class="header" :note="note" :mini="true"/>
|
||||
<div class="body">
|
||||
<p v-if="note.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mfm v-if="note.cw != ''" class="text" :text="note.cw" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="note"/>
|
||||
</p>
|
||||
<div class="content" v-show="note.cw == null || showContent">
|
||||
|
@ -16,14 +16,14 @@
|
||||
<mk-note-header class="header" :note="appearNote" :mini="true"/>
|
||||
<div class="body" v-if="appearNote.deletedAt == null">
|
||||
<p v-if="appearNote.cw != null" class="cw">
|
||||
<misskey-flavored-markdown v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mfm v-if="appearNote.cw != ''" class="text" :text="appearNote.cw" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis" />
|
||||
<mk-cw-button v-model="showContent" :note="appearNote"/>
|
||||
</p>
|
||||
<div class="content" v-show="appearNote.cw == null || showContent">
|
||||
<div class="text">
|
||||
<span v-if="appearNote.isHidden" style="opacity: 0.5">({{ $t('private') }})</span>
|
||||
<a class="reply" v-if="appearNote.reply"><fa icon="reply"/></a>
|
||||
<misskey-flavored-markdown v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
<mfm v-if="appearNote.text" :text="appearNote.text" :author="appearNote.user" :i="$store.state.i" :custom-emojis="appearNote.emojis"/>
|
||||
<a class="rp" v-if="appearNote.renote != null">RN:</a>
|
||||
</div>
|
||||
<div class="files" v-if="appearNote.files.length > 0">
|
||||
|
@ -10,7 +10,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -26,7 +26,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note.renote)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note.renote)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.renote.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
@ -64,7 +64,7 @@
|
||||
</header>
|
||||
<router-link class="note-ref" :to="notification.note | notePage" :title="getNoteSummary(notification.note)">
|
||||
<fa icon="quote-left"/>
|
||||
<misskey-flavored-markdown :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<mfm :text="getNoteSummary(notification.note)" :should-break="false" :plain-text="true" :custom-emojis="notification.note.emojis"/>
|
||||
<fa icon="quote-right"/>
|
||||
</router-link>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['notification'],
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import * as anime from 'animejs';
|
||||
import anime from 'animejs';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
|
@ -211,12 +211,6 @@ export default Vue.extend({
|
||||
});
|
||||
}
|
||||
|
||||
// keep cw when reply
|
||||
if (this.reply && this.reply.cw != null) {
|
||||
this.useCw = true;
|
||||
this.cw = this.reply.cw;
|
||||
}
|
||||
|
||||
this.focus();
|
||||
|
||||
this.$nextTick(() => {
|
||||
|
@ -4,7 +4,7 @@
|
||||
<span v-if="note.isHidden" style="opacity: 0.5">({{ $t('private') }})</span>
|
||||
<span v-if="note.deletedAt" style="opacity: 0.5">({{ $t('deleted') }})</span>
|
||||
<a class="reply" v-if="note.replyId"><fa icon="reply"/></a>
|
||||
<misskey-flavored-markdown v-if="note.text" :text="note.text" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis"/>
|
||||
<mfm v-if="note.text" :text="note.text" :author="note.user" :i="$store.state.i" :custom-emojis="note.emojis"/>
|
||||
<a class="rp" v-if="note.renoteId">RN: ...</a>
|
||||
</div>
|
||||
<details v-if="note.files.length > 0">
|
||||
|
@ -19,7 +19,6 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import i18n from '../../../i18n';
|
||||
import * as anime from 'animejs';
|
||||
import { env } from '../../../config';
|
||||
|
||||
export default Vue.extend({
|
||||
|
@ -10,7 +10,7 @@
|
||||
</header>
|
||||
<div class="body">
|
||||
<div class="description">
|
||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
<mfm v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching">
|
||||
<img :src="user.avatarUrl" alt="">{{ $t('followers-of', { name }) }}
|
||||
<img :src="user.avatarUrl" alt="">
|
||||
<mfm :text="$t('followers-of', { name })" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
</template>
|
||||
<mk-users-list
|
||||
v-if="!fetching"
|
||||
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching">
|
||||
<img :src="user.avatarUrl" alt="">{{ $t('following-of', { name }) }}
|
||||
<img :src="user.avatarUrl" alt="">
|
||||
<mfm :text="$t('following-of', { name })" :should-break="false" :plain-text="true" :custom-emojis="user.emojis"/>
|
||||
</template>
|
||||
<mk-users-list
|
||||
v-if="!fetching"
|
||||
|
@ -31,7 +31,7 @@
|
||||
<span :data-active="src == 'home'" @click="src = 'home'"><fa icon="home"/> {{ $t('home') }}</span>
|
||||
<span :data-active="src == 'local'" @click="src = 'local'" v-if="enableLocalTimeline"><fa :icon="['far', 'comments']"/> {{ $t('local') }}</span>
|
||||
<span :data-active="src == 'hybrid'" @click="src = 'hybrid'" v-if="enableLocalTimeline"><fa icon="share-alt"/> {{ $t('hybrid') }}</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'"><fa icon="globe"/> {{ $t('global') }}</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'" v-if="enableGlobalTimeline"><fa icon="globe"/> {{ $t('global') }}</span>
|
||||
<div class="hr"></div>
|
||||
<span :data-active="src == 'mentions'" @click="src = 'mentions'"><fa icon="at"/> {{ $t('mentions') }}<i class="badge" v-if="$store.state.i.hasUnreadMentions"><fa icon="circle"/></i></span>
|
||||
<span :data-active="src == 'messages'" @click="src = 'messages'"><fa :icon="['far', 'envelope']"/> {{ $t('messages') }}<i class="badge" v-if="$store.state.i.hasUnreadSpecifiedNotes"><fa icon="circle"/></i></span>
|
||||
@ -79,7 +79,8 @@ export default Vue.extend({
|
||||
lists: null,
|
||||
tagTl: null,
|
||||
showNav: false,
|
||||
enableLocalTimeline: false
|
||||
enableLocalTimeline: false,
|
||||
enableGlobalTimeline: false,
|
||||
};
|
||||
},
|
||||
|
||||
@ -112,7 +113,8 @@ export default Vue.extend({
|
||||
|
||||
created() {
|
||||
this.$root.getMeta().then(meta => {
|
||||
this.enableLocalTimeline = !meta.disableLocalTimeline;
|
||||
this.enableLocalTimeline = !meta.disableLocalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin;
|
||||
this.enableGlobalTimeline = !meta.disableGlobalTimeline || this.$store.state.i.isModerator || this.$store.state.i.isAdmin;
|
||||
});
|
||||
|
||||
if (this.$store.state.device.tl) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user