Compare commits
192 Commits
Author | SHA1 | Date | |
---|---|---|---|
3d62bd8007 | |||
7ad9560f53 | |||
c135d02895 | |||
0757f67bde | |||
c5dc25cb9e | |||
0fcf422dec | |||
21e801a325 | |||
183faf3b2a | |||
9fc66a2d1e | |||
12cf598e6b | |||
dd6cd6332c | |||
20ee2118ee | |||
1546160f6a | |||
dd77a6194e | |||
203fba0216 | |||
826a2466b7 | |||
273bc6507a | |||
2b13969b26 | |||
2f10ff1a2e | |||
1f52aea193 | |||
0a0e76679e | |||
845f3436cc | |||
f6a8c8cf76 | |||
af61a7a17f | |||
667ad8fe96 | |||
e1cc2394fa | |||
04e1e48f17 | |||
c417e2f4a1 | |||
02a27a8b12 | |||
d775e19059 | |||
35e7dca2bb | |||
6c4ea5e087 | |||
54a1e500e2 | |||
450ed2c471 | |||
bf97fcb2fd | |||
4edeae07a0 | |||
8e19e4d33b | |||
2a774c9414 | |||
6f50ed327d | |||
a51d384f19 | |||
e2b2e4633a | |||
46ec773128 | |||
1827a65874 | |||
1b4dd64cbe | |||
95b7d84025 | |||
137b081b8a | |||
76af9bbda7 | |||
17ab07ae9c | |||
4c4d06e49b | |||
5d9ef68f14 | |||
4689cf5591 | |||
58e7edf08a | |||
9c6c281ac3 | |||
2326d6208b | |||
cd4be4116b | |||
6697ca243c | |||
15ce89a88d | |||
4b13278a41 | |||
e01167fcab | |||
719ff26e79 | |||
2657328ac1 | |||
4b7cef239e | |||
49d9e51f72 | |||
40a5f79d76 | |||
9cfd0b7351 | |||
2223ecf890 | |||
06bad9c501 | |||
a479e65f3e | |||
a2e99e46b9 | |||
07a27cfb9a | |||
77f3a0d3a9 | |||
f9065943c5 | |||
d0aff4409d | |||
84ea1fbd4d | |||
d1d92be09a | |||
52b23af97e | |||
b76cd18dea | |||
cd3b30bf5c | |||
b87ebc6f9d | |||
4d7d119524 | |||
b4b6e9548d | |||
ebf9cd18c8 | |||
b1ccbb2deb | |||
562cd6ad0b | |||
a832672b59 | |||
309058f209 | |||
2a344dfbd8 | |||
866d4cd59a | |||
165350cca6 | |||
8c21b8a9a6 | |||
41e3a9a004 | |||
4dc6ec5387 | |||
96515c4544 | |||
b3637b5e8a | |||
43bcdf397e | |||
22c5db7121 | |||
1c6a8f8691 | |||
31b5175bb0 | |||
9add59aca9 | |||
16c65173c1 | |||
4f6ae4633f | |||
8aa1577713 | |||
5bd41704ae | |||
4d0b335748 | |||
5692ae59a1 | |||
84f1ce866b | |||
e68c6175ce | |||
0de11c3636 | |||
1f70657d4a | |||
73646aac9b | |||
e72c590c6b | |||
06e026b346 | |||
5621d5725c | |||
14d0a07b29 | |||
105fefd114 | |||
f81c10fe62 | |||
86a2aa42a4 | |||
42f5c3fe22 | |||
975740464c | |||
c57bffb142 | |||
d92a2cdb55 | |||
5b91463233 | |||
39eed3378f | |||
cf98d40a44 | |||
7d6436c90e | |||
0acf3a8f6d | |||
8b7324c8d3 | |||
a0b0d5dff7 | |||
bef0e36665 | |||
766e721ff3 | |||
93ad4b359e | |||
b3032ad84d | |||
4f76acd249 | |||
fcc4b2c704 | |||
12286f4915 | |||
193abfdbac | |||
0e13481eb4 | |||
b713cac4f1 | |||
2137c894ef | |||
f0d2ce4f19 | |||
e3a89d302f | |||
d01d2ef65e | |||
23c550acba | |||
b9db88f616 | |||
dee4a18d48 | |||
fa5073b042 | |||
9dda698dc8 | |||
99d0930fba | |||
a599524b5f | |||
5f34758e87 | |||
cdb8e41176 | |||
d8f3e9d4a3 | |||
da900439a3 | |||
ad0273ab99 | |||
8bbff90aca | |||
fcb3ba9947 | |||
23b3e33df6 | |||
9edac2cd74 | |||
fbe0d70661 | |||
8782a64b18 | |||
d3b81c3e00 | |||
fd816afcd0 | |||
ac423f1ef4 | |||
f11ebafe47 | |||
7947036af9 | |||
b722431720 | |||
295563caad | |||
26735815f1 | |||
c06a52c237 | |||
5678adf3b5 | |||
ac772dd389 | |||
2c4de8475f | |||
46facaf176 | |||
eea1b7fc63 | |||
f0e9386cd0 | |||
e4a4238b57 | |||
55e126998a | |||
608a30d37b | |||
7d22d6255d | |||
4e55436339 | |||
3adadc8a52 | |||
b525af822c | |||
bee8a5b065 | |||
f4d80122b3 | |||
2e8ea34413 | |||
7341d97a00 | |||
964b34bd3b | |||
64bb6daa43 | |||
0a1951f24c | |||
3985fe6b09 | |||
db71a5da62 | |||
d76e3e4853 |
@ -35,7 +35,7 @@ while :
|
|||||||
cat patreon.cache | \
|
cat patreon.cache | \
|
||||||
awk -F'\t' '{print $2,$1}' | \
|
awk -F'\t' '{print $2,$1}' | \
|
||||||
sed -e 's/ /\\" alt=\\"/' | \
|
sed -e 's/ /\\" alt=\\"/' | \
|
||||||
xargs -I% echo '<td><img src="%"></td>' >> patreon.md.cache && \
|
xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \
|
||||||
echo '</tr><tr>' >> patreon.md.cache && \
|
echo '</tr><tr>' >> patreon.md.cache && \
|
||||||
cat patreon.cache | \
|
cat patreon.cache | \
|
||||||
awk -F'\t' '{print $3,$1}' | \
|
awk -F'\t' '{print $3,$1}' | \
|
||||||
|
46
CHANGELOG.md
46
CHANGELOG.md
@ -1,6 +1,52 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
10.75.0
|
||||||
|
----------
|
||||||
|
* ダイレクトを非公開のように使えるように
|
||||||
|
* モデレーターを凍結できないように
|
||||||
|
* モデレーター登録を解除できるように
|
||||||
|
* NSFWなメディアをユーザーページなどで表示しないように
|
||||||
|
* 管理画面でユーザーを状態でフィルタできるように
|
||||||
|
* 管理者がサインイン履歴を参照できるツール
|
||||||
|
* Renote数を再度表示するように
|
||||||
|
* インスタンス情報ページの追加
|
||||||
|
* テーマの調整
|
||||||
|
* UIの改善
|
||||||
|
|
||||||
|
10.74.0
|
||||||
|
----------
|
||||||
|
* Pleromaとのフェデレーションを修正
|
||||||
|
* インスタンスのキャラクター画像を設定できるように
|
||||||
|
* Catモードの朝鮮語対応
|
||||||
|
* CWが付いた投稿に返信する際、そのCWを引き継ぐように
|
||||||
|
* 投稿のソースをクリップボードにコピーできるように
|
||||||
|
* i/notifications API で取得する通知の種別を配列で指定できるように
|
||||||
|
* パフォーマンスの改善
|
||||||
|
* バグ修正
|
||||||
|
|
||||||
|
10.73.0
|
||||||
|
-------
|
||||||
|
* テーマの強化
|
||||||
|
* line thiknessの設定はデバイスに保存するように
|
||||||
|
|
||||||
|
10.72.0
|
||||||
|
-------
|
||||||
|
* いくつかのテーマの追加
|
||||||
|
* デザインの調整
|
||||||
|
* バグ修正
|
||||||
|
* など
|
||||||
|
|
||||||
|
10.71.0
|
||||||
|
-------
|
||||||
|
* いくつかのテーマの追加
|
||||||
|
|
||||||
|
10.70.1
|
||||||
|
-------
|
||||||
|
* notes/mentions にミュートを適用するように
|
||||||
|
* Add id to return of users/relation
|
||||||
|
* デザインの調整
|
||||||
|
|
||||||
10.70.0
|
10.70.0
|
||||||
-------
|
-------
|
||||||
* フォローしているユーザーからのフォローを自動承認するオプション
|
* フォローしているユーザーからのフォローを自動承認するオプション
|
||||||
|
40
README.md
40
README.md
@ -73,16 +73,14 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
<!-- PATREON_START -->
|
<!-- PATREON_START -->
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/1?token-time=2145916800&token-hash=Zeh1u6l_Vmgoy8A1eT1Sltea-_SZSq8t8uOWDRZRh94%3D" alt="weep"></td>
|
<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://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13376668/71f3cf87ec6c4393a44b1b9df5ee3d12/1?token-time=2145916800&token-hash=7pSmWqgMfMSJHVIEcNsuuQoKeU3TRluew5p0EGTzWA4%3D" alt="Arctic"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12731202/0995c46cdcb54153ab5f073f5869b70a/1?token-time=2145916800&token-hash=Yd60FK_SWfQO56SeiJpy1tDHOnCV4xdEywQe8gn5_Wo%3D" alt="negao"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/2?token-time=2145916800&token-hash=mgPdX9TqZxEg4TTPuc477dxhIgYk9246qafjWZEqZ7g%3D" alt="Melilot"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12999811/5f349fafcce44dd1824a8b1ebbec4564/3?token-time=2145916800&token-hash=ybYtxfpte1b-rGg6Zecpys2ZdZDtwR_UNJHQjt-3eoU%3D" alt="Xeltica"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/3384329/8b713330cb27404ea6e9fac50ff96efe/1?token-time=2145916800&token-hash=0eu4-m1gTWA9PhptVZt6rdKcusqcD7RB87rJT23VVFI%3D" alt="べすれい"></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>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1?token-time=2145916800&token-hash=GgJ_NmUB6_nnRNLVGUWjV-WX91On7BOu59LKncYV9fE%3D" alt="gutfuckllc"></td>
|
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
|
<td><a href="https://www.patreon.com/weepjp">weep</a></td>
|
||||||
<td><a href="https://www.patreon.com/user?u=13376668">Arctic</a></td>
|
|
||||||
<td><a href="https://www.patreon.com/negao">negao</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/user?u=12913507">Melilot</a></td>
|
||||||
<td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
|
<td><a href="https://www.patreon.com/Xeltica">Xeltica</a></td>
|
||||||
@ -90,13 +88,13 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
<td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1?token-time=2145916800&token-hash=I8lJVM8LeW6TSo5W6uIIRZ42cw83zp1wK_FsbzY0mcQ%3D" alt="mydarkstar"></td>
|
<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/100/12718187" alt="Peter G."></td>
|
<td><img src="https://c8.patreon.com/2/200/12718187" alt="Peter G." width="100"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1?token-time=2145916800&token-hash=zwSu01tOtn5xTUucDZHuPsCxF2HBEMVs9ROJKTlEV_o%3D" alt="nemu"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3?token-time=2145916800&token-hash=qsdn0-e6yLaLI6hUX9JAkyTR6a5UdnSp7T1foniBvGQ%3D" alt="YUKIMOCHI"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/8241184/39e18850e87a449e9c9a71acb3310ebd/2?token-time=2145916800&token-hash=iUXOQzRyJDv3PJxwS7Mjwg1459dzh2trOq6NFtXu_OM%3D" alt="Acid Chicken"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1?token-time=2145916800&token-hash=UERBN4OyP7Nh5XwwdDg0N0IE5cD6_qUQMO81Z5Wizso%3D" alt="Hiratake"></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/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1?token-time=2145916800&token-hash=P4BIzCX2I1CkEP66ottfhsC8Wr6BUSamjA-vq3pLqFI%3D" alt="Naoki Hirayama"></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>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td>
|
<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=12718187">Peter G.</a></td>
|
||||||
@ -107,10 +105,10 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
<td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<table><tr>
|
<table><tr>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=S1zP0QyLU52Dqq6dtc9qNYyWfW86XrYHiR4NMbeOrnA%3D" alt="dansup"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1?token-time=2145916800&token-hash=Ksk_2l3gjPDbnzMUOCSW1E-hdPJsNs2tSR4_RAakRK8%3D" alt="dansup" width="100"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=tB1e_r8RlZ5sFL0KV_e8dugapxatNBRK1Z3h67TO1g8%3D" alt="Gargron"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1?token-time=2145916800&token-hash=CXe9AqlZy9AsYfiWd3OBYVOzvODoN47Litz0Tu4BFpU%3D" alt="Gargron" width="100"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=VZUtwrjQa8Jml4twCjHYQQZ64wHEY4oIlGl7Kc-VYUQ%3D" alt="Nokotaro Takeda"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1?token-time=2145916800&token-hash=xhR1n6NAAyEb-IUXLD6_dshkFa3mefU5ZZuk1L8qKTs%3D" alt="Nokotaro Takeda" width="100"></td>
|
||||||
<td><img src="https://c10.patreonusercontent.com/3/eyJoIjoxMDAsInciOjEwMH0%3D/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=tMosUojzUYJCH_3t--tvYA-SMCyrS__hzSndyaRSnbo%3D" alt="Takashi Shibuya"></td>
|
<td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1?token-time=2145916800&token-hash=uR-48MQ0A4j0irQSrCAQZJ-sJUSs_Fkihlg3-l59b7c%3D" alt="Takashi Shibuya" width="100"></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
<td><a href="https://www.patreon.com/dansup">dansup</a></td>
|
||||||
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
<td><a href="https://www.patreon.com/mastodon">Gargron</a></td>
|
||||||
@ -118,12 +116,12 @@ Please see [Contribution guide](./CONTRIBUTING.md).
|
|||||||
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
<td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
|
|
||||||
**Last updated:** Tue, 25 Dec 2018 04:58:06 UTC
|
**Last updated:** Sun, 06 Jan 2019 21:53:06 UTC
|
||||||
<!-- PATREON_END -->
|
<!-- PATREON_END -->
|
||||||
|
|
||||||
:four_leaf_clover: Copyright
|
:four_leaf_clover: Copyright
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
> Copyright (c) 2014-2018 syuilo
|
> Copyright (c) 2014-2019 syuilo
|
||||||
|
|
||||||
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
Misskey is an open-source software licensed under the [GNU AGPLv3](LICENSE).
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ This guide describes how to install and setup Misskey with Docker.
|
|||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
|
2. `cp .config/mongo_initdb_example.js .config/mongo_initdb.js` Copy the `.config/mongo_initdb_example.js` and rename it to `mongo_initdb.js`.
|
||||||
2. Edit `default.yml` and `mongo_initdb.js`.
|
3. Edit `default.yml` and `mongo_initdb.js`.
|
||||||
|
|
||||||
*3.* Configure Docker
|
*3.* Configure Docker
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
67
docs/docker.fr.md
Normal file
67
docs/docker.fr.md
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
Guide Docker
|
||||||
|
================================================================
|
||||||
|
|
||||||
|
Ce guide explique comment installer et configurer Misskey avec Docker.
|
||||||
|
|
||||||
|
[Version japonaise également disponible - Japanese version also available - 日本語版もあります](./docker.ja.md)
|
||||||
|
[Version anglaise également disponible - English version also available - 英語版もあります](./docker.en.md)
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
*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.
|
||||||
|
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`.
|
||||||
|
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.* Configurer Docker
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Editez `docker-compose.yml`.
|
||||||
|
|
||||||
|
*4.* Contruire Misskey
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Contruire l'image Docker avec:
|
||||||
|
|
||||||
|
`docker-compose build`
|
||||||
|
|
||||||
|
*5.* C'est tout !
|
||||||
|
----------------------------------------------------------------
|
||||||
|
Parfait, Vous avez un environnement prêt pour démarrer Misskey.
|
||||||
|
|
||||||
|
### Lancer normalement
|
||||||
|
Utilisez la commande `docker-compose up -d`. GLHF!
|
||||||
|
|
||||||
|
### How to update your Misskey server to the latest version
|
||||||
|
1. `git fetch`
|
||||||
|
2. `git stash`
|
||||||
|
3. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
|
||||||
|
4. `git stash pop`
|
||||||
|
5. `docker-compose build`
|
||||||
|
6. Consultez le [ChangeLog](../CHANGELOG.md) pour avoir les éventuelles informations de migration
|
||||||
|
7. `docker-compose stop && docker-compose up -d`
|
||||||
|
|
||||||
|
### Comment exécuter des [commandes](manage.fr.md)
|
||||||
|
`docker-compose run --rm web node cli/mark-admin @example`
|
||||||
|
|
||||||
|
### Configuration d'ElasticSearch (pour la fonction de recherche)
|
||||||
|
*1.* Préparation de l'environnement
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `mkdir elasticsearch && chown 1000:1000 elasticsearch` Permet de créer le dossier d'accueil de la base ElasticSearch aves les bons droits
|
||||||
|
2. `sysctl -w vm.max_map_count=262144` Augmente la valeur max du paramètre map_count du système (valeur minimum pour pouvoir lancer ES)
|
||||||
|
|
||||||
|
*2.* Après lancement du docker-compose, initialisation de la base ElasticSearch
|
||||||
|
----------------------------------------------------------------
|
||||||
|
1. `docker-compose -it web /bin/sh` Connexion dans le conteneur web
|
||||||
|
2. `apk add curl` Ajout du paquet curl
|
||||||
|
3. `curl -X PUT "es:9200/misskey" -H 'Content-Type: application/json' -d'{ "settings" : { "index" : { } }}'` Création de la base ES
|
||||||
|
4. `exit`
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Si vous avez des questions ou des problèmes, n'hésitez pas à nous contacter !
|
18
docs/manage.fr.md
Normal file
18
docs/manage.fr.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Guide d'administration
|
||||||
|
|
||||||
|
## Vérifier le status de la file d'attente des taches
|
||||||
|
coming soon
|
||||||
|
|
||||||
|
## Marquer un utilisateur en tant que 'admin'
|
||||||
|
``` shell
|
||||||
|
node cli/mark-admin (ID utilisateur ou nom d'utilisateur)
|
||||||
|
```
|
||||||
|
|
||||||
|
Exemple :
|
||||||
|
``` shell
|
||||||
|
# Par id
|
||||||
|
node cli/mark-admin 57d01a501fdf2d07be417afe
|
||||||
|
|
||||||
|
# Par nom d'utilisateur
|
||||||
|
node cli/suspend @syuilo
|
||||||
|
```
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
my-token-regenerated: "Dein Token wurde generiert. Du wirst jetzt abgemeldet."
|
||||||
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
|
i-like-sushi: "Ich bevorzuge Sushi anstelle von Pudding"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "Verifizierter Benutzer"
|
verified-user: "Verifizierter Benutzer"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "Animationen der Benutzeroberfläche reduzieren"
|
reduce-motion: "Animationen der Benutzeroberfläche reduzieren"
|
||||||
this-setting-is-this-device-only: "Nur auf diesem Gerät"
|
this-setting-is-this-device-only: "Nur auf diesem Gerät"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden."
|
do-not-use-in-production: "Dies ist eine Entwicklungsversion. Nicht in einer Produktionsumgebung verwenden."
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "Dieser Inhalt ist NSFW"
|
sensitive: "Dieser Inhalt ist NSFW"
|
||||||
click-to-show: "Klicke zum den Inhalt anzusehen"
|
click-to-show: "Klicke zum den Inhalt anzusehen"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "Thema"
|
light-theme: "Thema"
|
||||||
dark-theme: "Thema während des Nachtmodus"
|
dark-theme: "Thema während des Nachtmodus"
|
||||||
light-themes: "Helles Thema"
|
light-themes: "Helles Thema"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "Basisthema"
|
base-theme: "Basisthema"
|
||||||
base-theme-light: "Hell"
|
base-theme-light: "Hell"
|
||||||
base-theme-dark: "Dunkel"
|
base-theme-dark: "Dunkel"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "Name des Themas"
|
theme-name: "Name des Themas"
|
||||||
preview-created-theme: "Vorschau"
|
preview-created-theme: "Vorschau"
|
||||||
invalid-theme: "Thema ist ungültig"
|
invalid-theme: "Thema ist ungültig"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Diese Notiz favorisieren"
|
favorite: "Diese Notiz favorisieren"
|
||||||
unfavorite: "Aus Favoriten entfernen"
|
unfavorite: "Aus Favoriten entfernen"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Bitte Passwort eingeben"
|
enter-password: "Bitte Passwort eingeben"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -18,7 +18,7 @@ common:
|
|||||||
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
|
ui-desc: "No UI fits for everyone. Therefore, Misskey has a highly customizable UI for your taste. Make your original home by editing, adjusting layouts of timeline and placing selectable widgets you can easily customize."
|
||||||
drive: "Drive"
|
drive: "Drive"
|
||||||
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
|
drive-desc: "Wanna post a picture you have already uploaded? Wish to organize, name and create a folder for your uploaded files? Misskey Drive is the best solution for you. Very easy to share your files online."
|
||||||
outro: "Check further Misskey-unique features on your eyes! Feeling like this is not for you, try other instances as Misskey is a decentralized SNS so that you can easily find your mates. Then, GLHF!"
|
outro: "Check Misskey-unique features by seeing them with your own eyes! If you feel like this instance is not for you, try other instances, as Misskey is a decentralized SNS, so that you can easily find your mates. Then, GLHF!"
|
||||||
adblock:
|
adblock:
|
||||||
detected: "Please disable ad blocker."
|
detected: "Please disable ad blocker."
|
||||||
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
warning: "Some features may be unavailable or cause malfunctions if ad blocking features are enabled. <strong>Misskey is not running ads</strong>."
|
||||||
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
my-token-regenerated: "Your token has been regenerated, so you will be signed out."
|
||||||
i-like-sushi: "I prefer sushi rather than pudding"
|
i-like-sushi: "I prefer sushi rather than pudding"
|
||||||
show-reversi-board-labels: "Show row and column labels in Reversi"
|
show-reversi-board-labels: "Show row and column labels in Reversi"
|
||||||
use-white-black-reversi-stones: "Use white-black stone in reversi"
|
use-avatar-reversi-stones: "Use avatar as a stone in reversi"
|
||||||
verified-user: "Verified account"
|
verified-user: "Verified account"
|
||||||
disable-animated-mfm: "Disable animated texts in a post"
|
disable-animated-mfm: "Disable animated texts in a post"
|
||||||
suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area"
|
suggest-recent-hashtags: "Suggest recently used hashtags within the post composition area"
|
||||||
@ -120,11 +120,15 @@ common:
|
|||||||
reduce-motion: "Reduce motion in UI"
|
reduce-motion: "Reduce motion in UI"
|
||||||
this-setting-is-this-device-only: "Only for this device"
|
this-setting-is-this-device-only: "Only for this device"
|
||||||
use-os-default-emojis: "Use the OS default Emojis"
|
use-os-default-emojis: "Use the OS default Emojis"
|
||||||
|
line-width: "Line thickness"
|
||||||
|
line-width-thin: "Thin"
|
||||||
|
line-width-normal: "Regular"
|
||||||
|
line-width-thick: "Thick"
|
||||||
do-not-use-in-production: "This is a development build. Do not use in production."
|
do-not-use-in-production: "This is a development build. Do not use in production."
|
||||||
user-suspended: "This user has been suspended."
|
user-suspended: "This user has been suspended."
|
||||||
is-remote-user: "This user information is copied."
|
is-remote-user: "This user's information is mirrored."
|
||||||
is-remote-post: "This post information is a copy."
|
is-remote-post: "These post contents are mirrored."
|
||||||
view-on-remote: "View it on remote"
|
view-on-remote: "For completion, view it remotely."
|
||||||
renoted-by: "Renoted by {user}"
|
renoted-by: "Renoted by {user}"
|
||||||
error:
|
error:
|
||||||
title: "Something happened :("
|
title: "Something happened :("
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "NSFW"
|
sensitive: "NSFW"
|
||||||
click-to-show: "Click to show"
|
click-to-show: "Click to show"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "Theme"
|
||||||
light-theme: "Theme"
|
light-theme: "Theme"
|
||||||
dark-theme: "Theme during dark mode"
|
dark-theme: "Theme during dark mode"
|
||||||
light-themes: "Light theme"
|
light-themes: "Light theme"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "Base theme"
|
base-theme: "Base theme"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "Find more themes"
|
||||||
theme-name: "Theme name"
|
theme-name: "Theme name"
|
||||||
preview-created-theme: "Preview"
|
preview-created-theme: "Preview"
|
||||||
invalid-theme: "Not valid theme"
|
invalid-theme: "Not valid theme"
|
||||||
@ -329,8 +335,9 @@ common/views/components/nav.vue:
|
|||||||
develop: "Developers"
|
develop: "Developers"
|
||||||
feedback: "Feedback"
|
feedback: "Feedback"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "Mentions"
|
mention: "Mention"
|
||||||
detail: "Details"
|
detail: "Details"
|
||||||
|
copy-content: "Copy the contents"
|
||||||
copy-link: "Copy link"
|
copy-link: "Copy link"
|
||||||
favorite: "Favorite this note"
|
favorite: "Favorite this note"
|
||||||
unfavorite: "Unfavorite"
|
unfavorite: "Unfavorite"
|
||||||
@ -497,8 +504,8 @@ common/views/widgets/calendar.vue:
|
|||||||
month: "{},"
|
month: "{},"
|
||||||
day: "{}"
|
day: "{}"
|
||||||
today: "Today: "
|
today: "Today: "
|
||||||
this-month: "This month: "
|
this-month: "Month:"
|
||||||
this-year: "This year: "
|
this-year: "Year:"
|
||||||
common/views/widgets/photo-stream.vue:
|
common/views/widgets/photo-stream.vue:
|
||||||
title: "Photo stream"
|
title: "Photo stream"
|
||||||
no-photos: "No photos"
|
no-photos: "No photos"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Enter the password"
|
enter-password: "Enter the password"
|
||||||
authenticator: "First, you need to install Google Authenticator on your device:"
|
authenticator: "First, you need to install Google Authenticator on your device:"
|
||||||
howtoinstall: "How to install"
|
howtoinstall: "How to install"
|
||||||
|
token: "Token"
|
||||||
scan: "And then, scan the QR code:"
|
scan: "And then, scan the QR code:"
|
||||||
done: "Please enter the token displayed on your device:"
|
done: "Please enter the token displayed on your device:"
|
||||||
submit: "Submit"
|
submit: "Submit"
|
||||||
@ -985,6 +993,7 @@ admin/views/instance.vue:
|
|||||||
instance-name: "Instance name"
|
instance-name: "Instance name"
|
||||||
instance-description: "Instance description"
|
instance-description: "Instance description"
|
||||||
host: "Host"
|
host: "Host"
|
||||||
|
logo-url: "Logo image URL"
|
||||||
banner-url: "Banner image URL"
|
banner-url: "Banner image URL"
|
||||||
error-image-url: "Error image URL"
|
error-image-url: "Error image URL"
|
||||||
languages: "Language of this instance"
|
languages: "Language of this instance"
|
||||||
@ -1058,7 +1067,7 @@ admin/views/charts.vue:
|
|||||||
federation: "Federation"
|
federation: "Federation"
|
||||||
notes: "Posts"
|
notes: "Posts"
|
||||||
users: "Users"
|
users: "Users"
|
||||||
drive: "Drive"
|
drive: "Media storage"
|
||||||
network: "Network"
|
network: "Network"
|
||||||
charts:
|
charts:
|
||||||
federation-instances: "The number of instances: increase/decrease"
|
federation-instances: "The number of instances: increase/decrease"
|
||||||
@ -1432,7 +1441,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "Notification style"
|
notification-position: "Notification style"
|
||||||
notification-position-bottom: "Bottom"
|
notification-position-bottom: "Bottom"
|
||||||
notification-position-top: "Top"
|
notification-position-top: "Top"
|
||||||
theme: "Theme"
|
|
||||||
behavior: "Behavior"
|
behavior: "Behavior"
|
||||||
fetch-on-scroll: "Endless loading on scroll"
|
fetch-on-scroll: "Endless loading on scroll"
|
||||||
note-visibility: "Post visibility"
|
note-visibility: "Post visibility"
|
||||||
@ -1525,7 +1533,7 @@ deck/deck.user-column.vue:
|
|||||||
pinned-notes: "Pinned posts"
|
pinned-notes: "Pinned posts"
|
||||||
push-to-a-list: "Add to list"
|
push-to-a-list: "Add to list"
|
||||||
docs:
|
docs:
|
||||||
edit-this-page-on-github: "Found a mistake or want to contribute for the documentation?"
|
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!"
|
edit-this-page-on-github-link: "Edit this page at GitHub!"
|
||||||
api:
|
api:
|
||||||
entities:
|
entities:
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
my-token-regenerated: "Tu token se ha regenerado vas a ser desconectado."
|
||||||
i-like-sushi: "Prefiero sushi a pudín"
|
i-like-sushi: "Prefiero sushi a pudín"
|
||||||
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "Cuenta verificada"
|
verified-user: "Cuenta verificada"
|
||||||
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
disable-animated-mfm: "Desactivar texto animado en una publicación"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción."
|
do-not-use-in-production: "Esto está en desarrollo, no usarlo para producción."
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "Detalles"
|
detail: "Detalles"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "Copiar enlace"
|
copy-link: "Copiar enlace"
|
||||||
favorite: "Me gusta esta nota"
|
favorite: "Me gusta esta nota"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Escribe una contraseña"
|
enter-password: "Escribe una contraseña"
|
||||||
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
|
authenticator: "Primero, necesitas instalar Google Authenticator en tu dispositivo:"
|
||||||
howtoinstall: "Cómo instalar"
|
howtoinstall: "Cómo instalar"
|
||||||
|
token: "トークン"
|
||||||
scan: "Luego, escanea el código QR:"
|
scan: "Luego, escanea el código QR:"
|
||||||
done: "Por favor ingresa el token mostrado en tu dispositivo:"
|
done: "Por favor ingresa el token mostrado en tu dispositivo:"
|
||||||
submit: "Enviar"
|
submit: "Enviar"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,10 +109,10 @@ common:
|
|||||||
my-token-regenerated: "Votre jeton vient d’être généré, vous allez maintenant être déconnecté."
|
my-token-regenerated: "Votre jeton vient d’être généré, vous allez maintenant être déconnecté."
|
||||||
i-like-sushi: "Je préfère les sushis plutôt que le pudding"
|
i-like-sushi: "Je préfère les sushis plutôt que le pudding"
|
||||||
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
show-reversi-board-labels: "Afficher les étiquettes des lignes et colonnes dans Reversi"
|
||||||
use-white-black-reversi-stones: "Jouer avec des pions noirs et blancs sur Reversi"
|
use-avatar-reversi-stones: "Utiliser l’avatar comme pion dans Reversi"
|
||||||
verified-user: "Compte vérifié"
|
verified-user: "Compte vérifié"
|
||||||
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
disable-animated-mfm: "Désactiver les textes animés dans les publications"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "Suggérer les hashtags récemment utilisés dans le champs de saisie"
|
||||||
always-show-nsfw: "Toujours afficher les contenus sensibles"
|
always-show-nsfw: "Toujours afficher les contenus sensibles"
|
||||||
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
|
always-mark-nsfw: "Toujours marquer les notes ayant des attachements comme sensibles"
|
||||||
show-full-acct: "Afficher l’adresse complète de l’utilisateur"
|
show-full-acct: "Afficher l’adresse complète de l’utilisateur"
|
||||||
@ -120,8 +120,12 @@ common:
|
|||||||
reduce-motion: "Réduire les animations dans l’interface utilisateur"
|
reduce-motion: "Réduire les animations dans l’interface utilisateur"
|
||||||
this-setting-is-this-device-only: "Uniquement sur cet appareil"
|
this-setting-is-this-device-only: "Uniquement sur cet appareil"
|
||||||
use-os-default-emojis: "Utiliser les émojis standards du système"
|
use-os-default-emojis: "Utiliser les émojis standards du système"
|
||||||
|
line-width: "Epaisseur du trait"
|
||||||
|
line-width-thin: "Fine"
|
||||||
|
line-width-normal: "Normale"
|
||||||
|
line-width-thick: "Épaisse"
|
||||||
do-not-use-in-production: "Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production."
|
do-not-use-in-production: "Il s’agit d’une version de développement. Ne pas utiliser dans un environnement de production."
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "Cet·te utilisateur·trice a été suspendu·e"
|
||||||
is-remote-user: "Ces informations appartiennent à un utilisateur distant."
|
is-remote-user: "Ces informations appartiennent à un utilisateur distant."
|
||||||
is-remote-post: "Ceci est une publication distante."
|
is-remote-post: "Ceci est une publication distante."
|
||||||
view-on-remote: " Consulter le profil complet"
|
view-on-remote: " Consulter le profil complet"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "Contenu sensible"
|
sensitive: "Contenu sensible"
|
||||||
click-to-show: "Cliquer pour afficher"
|
click-to-show: "Cliquer pour afficher"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "Thème"
|
||||||
light-theme: "Thème en mode jour"
|
light-theme: "Thème en mode jour"
|
||||||
dark-theme: "Thème en mode nuit"
|
dark-theme: "Thème en mode nuit"
|
||||||
light-themes: "Thème clair"
|
light-themes: "Thème clair"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "Thème de base"
|
base-theme: "Thème de base"
|
||||||
base-theme-light: "Clair"
|
base-theme-light: "Clair"
|
||||||
base-theme-dark: "Sombre"
|
base-theme-dark: "Sombre"
|
||||||
|
find-more-theme: "Obtenir d’autres thèmes"
|
||||||
theme-name: "Nom du Thème"
|
theme-name: "Nom du Thème"
|
||||||
preview-created-theme: "Prévisualisation"
|
preview-created-theme: "Prévisualisation"
|
||||||
invalid-theme: "Thème n’est pas valide."
|
invalid-theme: "Thème n’est pas valide."
|
||||||
@ -299,7 +305,7 @@ common/views/components/cw-button.vue:
|
|||||||
show: "Voir plus"
|
show: "Voir plus"
|
||||||
chars: "{count} caractères"
|
chars: "{count} caractères"
|
||||||
files: "{count} fichiers"
|
files: "{count} fichiers"
|
||||||
poll: "アンケート"
|
poll: "Sondage"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Trouver un utilisateur"
|
search-user: "Trouver un utilisateur"
|
||||||
you: "Vous"
|
you: "Vous"
|
||||||
@ -329,8 +335,9 @@ common/views/components/nav.vue:
|
|||||||
develop: "Développeurs"
|
develop: "Développeurs"
|
||||||
feedback: "Suggestions"
|
feedback: "Suggestions"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "Mention"
|
||||||
detail: "Détails"
|
detail: "Détails"
|
||||||
|
copy-content: "Copier le contenu"
|
||||||
copy-link: "Copier le lien"
|
copy-link: "Copier le lien"
|
||||||
favorite: "Mettre cette note en favoris"
|
favorite: "Mettre cette note en favoris"
|
||||||
unfavorite: "Retirer des favoris"
|
unfavorite: "Retirer des favoris"
|
||||||
@ -406,10 +413,10 @@ common/views/components/stream-indicator.vue:
|
|||||||
reconnecting: "Reconnexion en cours"
|
reconnecting: "Reconnexion en cours"
|
||||||
connected: "Connecté"
|
connected: "Connecté"
|
||||||
common/views/components/notification-settings.vue:
|
common/views/components/notification-settings.vue:
|
||||||
title: "通知"
|
title: "Notifications"
|
||||||
mark-as-read-all-notifications: "すべての通知を既読にする"
|
mark-as-read-all-notifications: "Marquer toutes les notifications comme lues"
|
||||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
mark-as-read-all-unread-notes: "Marquer toutes les notes comme lues"
|
||||||
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
|
mark-as-read-all-talk-messages: "Marquer toutes les conversations comme lues"
|
||||||
auto-watch: "投稿の自動ウォッチ"
|
auto-watch: "投稿の自動ウォッチ"
|
||||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||||
common/views/components/integration-settings.vue:
|
common/views/components/integration-settings.vue:
|
||||||
@ -436,7 +443,7 @@ common/views/components/uploader.vue:
|
|||||||
common/views/components/visibility-chooser.vue:
|
common/views/components/visibility-chooser.vue:
|
||||||
public: "Public"
|
public: "Public"
|
||||||
home: "Accueil"
|
home: "Accueil"
|
||||||
home-desc: "Publier sur le fil d'Accueil uniquement"
|
home-desc: "Publier sur le fil d’Accueil uniquement"
|
||||||
followers: "Abonnés"
|
followers: "Abonnés"
|
||||||
followers-desc: "Publier à vos abonnés uniquement"
|
followers-desc: "Publier à vos abonnés uniquement"
|
||||||
specified: "Direct"
|
specified: "Direct"
|
||||||
@ -474,7 +481,7 @@ common/views/components/profile-editor.vue:
|
|||||||
privacy: "Vie privée"
|
privacy: "Vie privée"
|
||||||
save: "Mettre à jour le profil"
|
save: "Mettre à jour le profil"
|
||||||
saved: "Profil mis à jour avec succès"
|
saved: "Profil mis à jour avec succès"
|
||||||
uploading: "En cours d'envoi…"
|
uploading: "En cours d’envoi …"
|
||||||
upload-failed: "Échec de l'envoi"
|
upload-failed: "Échec de l'envoi"
|
||||||
email: "Paramètres de messagerie"
|
email: "Paramètres de messagerie"
|
||||||
email-address: "Adresse de courrier électronique"
|
email-address: "Adresse de courrier électronique"
|
||||||
@ -540,7 +547,7 @@ common/views/widgets/tips.vue:
|
|||||||
tips-line24: "Misskey est fonctionnel depuis 2014"
|
tips-line24: "Misskey est fonctionnel depuis 2014"
|
||||||
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
|
tips-line25: "Vous pouvez recevoir les notifications de Misskey dans un navigateur web compatible"
|
||||||
common/views/pages/not-found.vue:
|
common/views/pages/not-found.vue:
|
||||||
page-not-found: "ページが見つかりませんでした"
|
page-not-found: "La page demandée est introuvable !"
|
||||||
common/views/pages/follow.vue:
|
common/views/pages/follow.vue:
|
||||||
signed-in-as: "Connecté en tant que {}"
|
signed-in-as: "Connecté en tant que {}"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
@ -676,12 +683,12 @@ desktop/views/components/note-detail.vue:
|
|||||||
location: "Géolocalisation"
|
location: "Géolocalisation"
|
||||||
renote: "Republier"
|
renote: "Republier"
|
||||||
add-reaction: "Ajouter votre reaction"
|
add-reaction: "Ajouter votre reaction"
|
||||||
undo-reaction: "リアクション解除"
|
undo-reaction: "Inverser la réaction"
|
||||||
desktop/views/components/note.vue:
|
desktop/views/components/note.vue:
|
||||||
reply: "Répondre"
|
reply: "Répondre"
|
||||||
renote: "Partager"
|
renote: "Partager"
|
||||||
add-reaction: "Ajouter votre réaction"
|
add-reaction: "Ajouter votre réaction"
|
||||||
undo-reaction: "リアクション解除"
|
undo-reaction: "Inverser la réaction"
|
||||||
detail: "Détails"
|
detail: "Détails"
|
||||||
private: "Cette publication est privée"
|
private: "Cette publication est privée"
|
||||||
deleted: "Cette publication a été supprimée"
|
deleted: "Cette publication a été supprimée"
|
||||||
@ -731,7 +738,7 @@ desktop/views/components/renote-form.vue:
|
|||||||
quote: "Citer..."
|
quote: "Citer..."
|
||||||
cancel: "Annuler"
|
cancel: "Annuler"
|
||||||
renote: "Republier"
|
renote: "Republier"
|
||||||
renote-home: "Renote (Home)"
|
renote-home: "Renote (accueil)"
|
||||||
reposting: "Republication en cours…"
|
reposting: "Republication en cours…"
|
||||||
success: "Republié !"
|
success: "Republié !"
|
||||||
failure: "La renote a échoué"
|
failure: "La renote a échoué"
|
||||||
@ -769,8 +776,8 @@ desktop/views/components/settings.vue:
|
|||||||
advanced: "Paramètres avancés"
|
advanced: "Paramètres avancés"
|
||||||
api-via-stream: "Requête API via le flux"
|
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."
|
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-nav: "Deck sans tansitions"
|
||||||
deck-nav-desc: "デッキを使用しているとき、ナビゲーションが発生する際にページ遷移を行わずに一時的なカラムで受けるようにします。"
|
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"
|
deck-default: "Utiliser le Deck comme IU par défaut"
|
||||||
display: "Affichage et design"
|
display: "Affichage et design"
|
||||||
customize: "Personnaliser l'Accueil"
|
customize: "Personnaliser l'Accueil"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Entrez un mot de passe"
|
enter-password: "Entrez un mot de passe"
|
||||||
authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil :"
|
authenticator: "Vous devez au préalable installer Google Authenticator sur votre appareil :"
|
||||||
howtoinstall: "Comment installer"
|
howtoinstall: "Comment installer"
|
||||||
|
token: "Jeton"
|
||||||
scan: "Ensuite, scannez le code QR affiché sur votre écran :"
|
scan: "Ensuite, scannez le code QR affiché sur votre écran :"
|
||||||
done: "Veuillez entrer le token qui s'affiche sur votre appareil :"
|
done: "Veuillez entrer le token qui s'affiche sur votre appareil :"
|
||||||
submit: "Envoyer"
|
submit: "Envoyer"
|
||||||
@ -1050,7 +1058,7 @@ admin/views/instance.vue:
|
|||||||
serviceworker-info: "Devrait être activé pour les notifications push."
|
serviceworker-info: "Devrait être activé pour les notifications push."
|
||||||
vapid-publickey: "Clé Publique VAPID"
|
vapid-publickey: "Clé Publique VAPID"
|
||||||
vapid-privatekey: "Clé privée VAPID"
|
vapid-privatekey: "Clé privée VAPID"
|
||||||
vapid-info: "ServiceWorkerを有効にする場合、VAPIDキーペアを生成する必要があります。シェルで次のようにします:"
|
vapid-info: "Vous devez activer ServiceWorker pour pouvoir générer les clés VAPID. Vous devez lancer ceci en mode root :"
|
||||||
admin/views/charts.vue:
|
admin/views/charts.vue:
|
||||||
title: "Graphe"
|
title: "Graphe"
|
||||||
per-day: "par jour"
|
per-day: "par jour"
|
||||||
@ -1066,7 +1074,7 @@ admin/views/charts.vue:
|
|||||||
notes: "Nombre de publications : augmentation/diminution (combinés)"
|
notes: "Nombre de publications : augmentation/diminution (combinés)"
|
||||||
local-notes: "Nombre des publications : augmentation/diminution (Local)"
|
local-notes: "Nombre des publications : augmentation/diminution (Local)"
|
||||||
remote-notes: "Nombre de publications : augmentation/diminution (distants)"
|
remote-notes: "Nombre de publications : augmentation/diminution (distants)"
|
||||||
notes-total: "Total des publications"
|
notes-total: "Total des notes"
|
||||||
users: "Nombre d’utilisateurs : augmentation/diminution"
|
users: "Nombre d’utilisateurs : augmentation/diminution"
|
||||||
users-total: "Nombre total des utilisateurs"
|
users-total: "Nombre total des utilisateurs"
|
||||||
drive: "Capacité utilisée comme stockage : augmentation/diminution"
|
drive: "Capacité utilisée comme stockage : augmentation/diminution"
|
||||||
@ -1166,7 +1174,7 @@ desktop/views/pages/welcome.vue:
|
|||||||
signup: "S'enregistrer"
|
signup: "S'enregistrer"
|
||||||
signin-button: "Se connecter"
|
signin-button: "Se connecter"
|
||||||
signup-button: "S'inscrire"
|
signup-button: "S'inscrire"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d’actualité"
|
||||||
announcements: "Notices"
|
announcements: "Notices"
|
||||||
photos: "Images récentes"
|
photos: "Images récentes"
|
||||||
powered-by-misskey: "Propulsé par <b>Misskey</b>."
|
powered-by-misskey: "Propulsé par <b>Misskey</b>."
|
||||||
@ -1223,7 +1231,7 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
followers: "Abonnés"
|
followers: "Abonnés"
|
||||||
mention: "メンション"
|
mention: "Mentions"
|
||||||
is-bot: "Ce compte est un Bot"
|
is-bot: "Ce compte est un Bot"
|
||||||
years-old: "{age} ans"
|
years-old: "{age} ans"
|
||||||
year: "/"
|
year: "/"
|
||||||
@ -1347,7 +1355,7 @@ mobile/views/components/ui.header.vue:
|
|||||||
welcome-back: "Content de vous revoir ! "
|
welcome-back: "Content de vous revoir ! "
|
||||||
adjective: "M."
|
adjective: "M."
|
||||||
mobile/views/components/ui.nav.vue:
|
mobile/views/components/ui.nav.vue:
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d’actualité"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
follow-requests: "Demandes d’abonnement"
|
follow-requests: "Demandes d’abonnement"
|
||||||
search: "Rechercher"
|
search: "Rechercher"
|
||||||
@ -1361,7 +1369,7 @@ mobile/views/components/ui.nav.vue:
|
|||||||
about: "À propos de Misskey"
|
about: "À propos de Misskey"
|
||||||
mobile/views/components/user-timeline.vue:
|
mobile/views/components/user-timeline.vue:
|
||||||
no-notes: "Il semble que cet utilisateur n’a rien publié pour le moment."
|
no-notes: "Il semble que cet utilisateur n’a rien publié pour le moment."
|
||||||
no-notes-with-media: "Aucune notes avec des médias"
|
no-notes-with-media: "Aucune note comprenant des médias"
|
||||||
mobile/views/components/users-list.vue:
|
mobile/views/components/users-list.vue:
|
||||||
all: "Tout"
|
all: "Tout"
|
||||||
known: "Vous connaissez"
|
known: "Vous connaissez"
|
||||||
@ -1421,18 +1429,17 @@ mobile/views/pages/settings.vue:
|
|||||||
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
i-am-under-limited-internet: "J'ai un accès Internet limité"
|
||||||
circle-icons: "Utiliser des icônes circulaires"
|
circle-icons: "Utiliser des icônes circulaires"
|
||||||
contrasted-acct: "Nom d’utilisateur contrasté"
|
contrasted-acct: "Nom d’utilisateur contrasté"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d’actualité"
|
||||||
show-reply-target: "Afficher les réponses"
|
show-reply-target: "Afficher les réponses"
|
||||||
show-my-renotes: "Afficher mes partages"
|
show-my-renotes: "Afficher mes partages"
|
||||||
show-renoted-my-notes: "Afficher mes publications partagées"
|
show-renoted-my-notes: "Afficher mes notes partagées"
|
||||||
show-local-renotes: "Afficher les publications partagées localement"
|
show-local-renotes: "Afficher les notes partagées localement"
|
||||||
post-style: "Style de la publication"
|
post-style: "Style de la publication"
|
||||||
post-style-standard: "Standard"
|
post-style-standard: "Standard"
|
||||||
post-style-smart: "Intelligent"
|
post-style-smart: "Intelligent"
|
||||||
notification-position: "Style de notification"
|
notification-position: "Style de notification"
|
||||||
notification-position-bottom: "en bas"
|
notification-position-bottom: "en bas"
|
||||||
notification-position-top: "en haut"
|
notification-position-top: "en haut"
|
||||||
theme: "Thème"
|
|
||||||
behavior: "Comportement"
|
behavior: "Comportement"
|
||||||
fetch-on-scroll: "Chargement lors du défilement"
|
fetch-on-scroll: "Chargement lors du défilement"
|
||||||
note-visibility: "Visibilité de la publication"
|
note-visibility: "Visibilité de la publication"
|
||||||
@ -1463,7 +1470,7 @@ mobile/views/pages/user.vue:
|
|||||||
followers: "Abonnés"
|
followers: "Abonnés"
|
||||||
notes: "Notes"
|
notes: "Notes"
|
||||||
overview: "Aperçu"
|
overview: "Aperçu"
|
||||||
timeline: "Fil d'actualité"
|
timeline: "Fil d’actualité"
|
||||||
media: "Média"
|
media: "Média"
|
||||||
mute: "Mettre en sourdine"
|
mute: "Mettre en sourdine"
|
||||||
unmute: "Enlever la sourdine"
|
unmute: "Enlever la sourdine"
|
||||||
@ -1518,7 +1525,7 @@ deck/deck.user-column.vue:
|
|||||||
posts: "Notes"
|
posts: "Notes"
|
||||||
following: "Suit"
|
following: "Suit"
|
||||||
followers: "Abonnés"
|
followers: "Abonnés"
|
||||||
mention: "メンション"
|
mention: "Mentions"
|
||||||
images: "Images"
|
images: "Images"
|
||||||
activity: "Activité"
|
activity: "Activité"
|
||||||
timeline: "Fil d’actualité"
|
timeline: "Fil d’actualité"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -117,7 +117,7 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -128,6 +128,12 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
|
hide-password: "パスワードを隠す"
|
||||||
|
show-password: "パスワードを表示する"
|
||||||
|
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
@ -283,6 +289,7 @@ common/views/components/media-banner.vue:
|
|||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
|
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -299,6 +306,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -361,6 +369,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -952,6 +961,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1245,6 +1255,14 @@ admin/views/users.vue:
|
|||||||
createdAtDesc: "登録日時が新しい順"
|
createdAtDesc: "登録日時が新しい順"
|
||||||
updatedAtAsc: "更新日時が古い順"
|
updatedAtAsc: "更新日時が古い順"
|
||||||
updatedAtDesc: "更新日時が新しい順"
|
updatedAtDesc: "更新日時が新しい順"
|
||||||
|
state:
|
||||||
|
title: "状態"
|
||||||
|
all: "すべて"
|
||||||
|
admin: "管理者"
|
||||||
|
moderator: "モデレーター"
|
||||||
|
adminOrModerator: "管理者+モデレーター"
|
||||||
|
verified: "公式アカウント"
|
||||||
|
suspended: "凍結済み"
|
||||||
origin:
|
origin:
|
||||||
title: "オリジン"
|
title: "オリジン"
|
||||||
combined: "ローカル+リモート"
|
combined: "ローカル+リモート"
|
||||||
@ -1258,6 +1276,8 @@ admin/views/moderators.vue:
|
|||||||
title: "モデレーターの登録"
|
title: "モデレーターの登録"
|
||||||
add: "登録"
|
add: "登録"
|
||||||
added: "モデレーターを登録しました"
|
added: "モデレーターを登録しました"
|
||||||
|
remove: "解除"
|
||||||
|
removed: "モデレーター登録を解除しました"
|
||||||
|
|
||||||
admin/views/emoji.vue:
|
admin/views/emoji.vue:
|
||||||
add-emoji:
|
add-emoji:
|
||||||
@ -1627,7 +1647,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
|
my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
|
||||||
i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
|
i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "アメちゃん付きアカウント"
|
verified-user: "アメちゃん付きアカウント"
|
||||||
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UI、動き過ぎや、静かにしてや"
|
reduce-motion: "UI、動き過ぎや、静かにしてや"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OSにもとから入っとる絵文字使う"
|
use-os-default-emojis: "OSにもとから入っとる絵文字使う"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!"
|
do-not-use-in-production: "開発ビルドや。本番環境で使わんといて!知らんで!"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "見せたらあかん"
|
sensitive: "見せたらあかん"
|
||||||
click-to-show: "押してみ、見せたるわ"
|
click-to-show: "押してみ、見せたるわ"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "ナイトゲームちゃう時のテーマどないする?"
|
light-theme: "ナイトゲームちゃう時のテーマどないする?"
|
||||||
dark-theme: "ナイトゲームの時のテーマどないする?"
|
dark-theme: "ナイトゲームの時のテーマどないする?"
|
||||||
light-themes: "デイゲーム"
|
light-themes: "デイゲーム"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "この色が背景や!"
|
base-theme: "この色が背景や!"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "試してみる"
|
preview-created-theme: "試してみる"
|
||||||
invalid-theme: "このテーマあかんわ、なんか間違うとる"
|
invalid-theme: "このテーマあかんわ、なんか間違うとる"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "もっと"
|
detail: "もっと"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入りやめる"
|
unfavorite: "お気に入りやめる"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入れてや"
|
enter-password: "パスワードを入れてや"
|
||||||
authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:"
|
authenticator: "まず、Google Authenticatorとかのをつこてるデバイスにインストールしてや:"
|
||||||
howtoinstall: "インストール方法はここやで"
|
howtoinstall: "インストール方法はここやで"
|
||||||
|
token: "トークン"
|
||||||
scan: "んで、ここに出とるQRコードをスキャンしてな:"
|
scan: "んで、ここに出とるQRコードをスキャンしてな:"
|
||||||
done: "最後にデバイスに表示されとるトークンを入力してな:"
|
done: "最後にデバイスに表示されとるトークンを入力してな:"
|
||||||
submit: "送信"
|
submit: "送信"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知どこ見せる?"
|
notification-position: "通知どこ見せる?"
|
||||||
notification-position-bottom: "ミナミの方"
|
notification-position-bottom: "ミナミの方"
|
||||||
notification-position-top: "キタの方"
|
notification-position-top: "キタの方"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動き"
|
behavior: "動き"
|
||||||
fetch-on-scroll: "スクロールしたらもっと見せてや"
|
fetch-on-scroll: "スクロールしたらもっと見せてや"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다."
|
my-token-regenerated: "당신의 토큰이 업데이트되었으므로 로그아웃합니다."
|
||||||
i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요"
|
i-like-sushi: "저는 (푸딩보다 차라리) 초밥이 좋아요"
|
||||||
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
show-reversi-board-labels: "리버시 보드의 행과 열 레이블을 표시"
|
||||||
use-white-black-reversi-stones: "리버시에 흑백 돌을 사용"
|
use-avatar-reversi-stones: "리버시의 돌로 아바타를 사용"
|
||||||
verified-user: "공식 계정"
|
verified-user: "공식 계정"
|
||||||
disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
|
disable-animated-mfm: "글의 문자 애니메이션을 비활성화"
|
||||||
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
|
suggest-recent-hashtags: "최근 해시태그를 글 작성란에 표시"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UI의 애니메이션 줄이기"
|
reduce-motion: "UI의 애니메이션 줄이기"
|
||||||
this-setting-is-this-device-only: "이 장치만"
|
this-setting-is-this-device-only: "이 장치만"
|
||||||
use-os-default-emojis: "운영체제의 기본 이모지 사용"
|
use-os-default-emojis: "운영체제의 기본 이모지 사용"
|
||||||
|
line-width: "선 두께"
|
||||||
|
line-width-thin: "얇음"
|
||||||
|
line-width-normal: "보통"
|
||||||
|
line-width-thick: "두꺼움"
|
||||||
do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오."
|
do-not-use-in-production: "이것은 개발 빌드입니다. 프로덕션 환경에서 사용하지 마십시오."
|
||||||
user-suspended: "이 사용자는 정지된 상태입니다."
|
user-suspended: "이 사용자는 정지된 상태입니다."
|
||||||
is-remote-user: "이 유저 정보는 복사본입니다."
|
is-remote-user: "이 유저 정보는 복사본입니다."
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "열람주의"
|
sensitive: "열람주의"
|
||||||
click-to-show: "클릭하여 표시"
|
click-to-show: "클릭하여 표시"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "테마"
|
||||||
light-theme: "다크 모드가 아닐 때 사용하는 테마"
|
light-theme: "다크 모드가 아닐 때 사용하는 테마"
|
||||||
dark-theme: "다크 모드일 때 사용하는 테마"
|
dark-theme: "다크 모드일 때 사용하는 테마"
|
||||||
light-themes: "밝은 테마"
|
light-themes: "밝은 테마"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "기본 테마"
|
base-theme: "기본 테마"
|
||||||
base-theme-light: "밝음"
|
base-theme-light: "밝음"
|
||||||
base-theme-dark: "어두움"
|
base-theme-dark: "어두움"
|
||||||
|
find-more-theme: "그 외 테마 찾아보기"
|
||||||
theme-name: "테마명"
|
theme-name: "테마명"
|
||||||
preview-created-theme: "미리보기"
|
preview-created-theme: "미리보기"
|
||||||
invalid-theme: "테마가 올바르지 않습니다."
|
invalid-theme: "테마가 올바르지 않습니다."
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "멘션"
|
mention: "멘션"
|
||||||
detail: "상세"
|
detail: "상세"
|
||||||
|
copy-content: "내용 복사"
|
||||||
copy-link: "링크 복사"
|
copy-link: "링크 복사"
|
||||||
favorite: "이 노트 즐겨찾기"
|
favorite: "이 노트 즐겨찾기"
|
||||||
unfavorite: "즐겨찾기에서 제거"
|
unfavorite: "즐겨찾기에서 제거"
|
||||||
@ -469,7 +476,7 @@ common/views/components/profile-editor.vue:
|
|||||||
is-bot: "이 계정은 Bot입니다"
|
is-bot: "이 계정은 Bot입니다"
|
||||||
is-locked: "팔로우를 수동으로 승인"
|
is-locked: "팔로우를 수동으로 승인"
|
||||||
careful-bot: "Bot의 팔로우만 수동으로 승인"
|
careful-bot: "Bot의 팔로우만 수동으로 승인"
|
||||||
auto-accept-followed: "フォローしているユーザーからのフォローを自動承認する"
|
auto-accept-followed: "팔로우중인 사용자로부터의 팔로우를 자동으로 승인"
|
||||||
advanced: "기타"
|
advanced: "기타"
|
||||||
privacy: "프라이버시"
|
privacy: "프라이버시"
|
||||||
save: "저장"
|
save: "저장"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "비밀번호를 입력하여 주십시오"
|
enter-password: "비밀번호를 입력하여 주십시오"
|
||||||
authenticator: "먼저, 가지고 계신 장치에 Google Authenticator를 설치해야 합니다:"
|
authenticator: "먼저, 가지고 계신 장치에 Google Authenticator를 설치해야 합니다:"
|
||||||
howtoinstall: "설치 방법은 여기에 있습니다"
|
howtoinstall: "설치 방법은 여기에 있습니다"
|
||||||
|
token: "토큰"
|
||||||
scan: "다음으로 표시되어 있는 QR 코드를 스캔합니다:"
|
scan: "다음으로 표시되어 있는 QR 코드를 스캔합니다:"
|
||||||
done: "사용중이신 장치에 표시된 토큰을 입력해주시면 마무리됩니다:"
|
done: "사용중이신 장치에 표시된 토큰을 입력해주시면 마무리됩니다:"
|
||||||
submit: "완료"
|
submit: "완료"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "알림 표시"
|
notification-position: "알림 표시"
|
||||||
notification-position-bottom: "아래"
|
notification-position-bottom: "아래"
|
||||||
notification-position-top: "위"
|
notification-position-top: "위"
|
||||||
theme: "테마"
|
|
||||||
behavior: "동작"
|
behavior: "동작"
|
||||||
fetch-on-scroll: "스크롤하여 자동으로 불러오기"
|
fetch-on-scroll: "스크롤하여 자동으로 불러오기"
|
||||||
note-visibility: "게시물의 공개 범위"
|
note-visibility: "게시물의 공개 범위"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd."
|
my-token-regenerated: "Je sleutel is gegenereerd; je wordt nu uitgelogd."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Deze notitie toevoegen aan favorieten"
|
favorite: "Deze notitie toevoegen aan favorieten"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Voer het wachtwoord in"
|
enter-password: "Voer het wachtwoord in"
|
||||||
authenticator: "Installeer eerst Google Authenticator op je apparaat:"
|
authenticator: "Installeer eerst Google Authenticator op je apparaat:"
|
||||||
howtoinstall: "Hoe installeer ik dit?"
|
howtoinstall: "Hoe installeer ik dit?"
|
||||||
|
token: "トークン"
|
||||||
scan: "Scan daarna de QR-code:"
|
scan: "Scan daarna de QR-code:"
|
||||||
done: "Voer de op je apparaat getoonde sleutel in:"
|
done: "Voer de op je apparaat getoonde sleutel in:"
|
||||||
submit: "Versturen"
|
submit: "Versturen"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "Gedrag"
|
behavior: "Gedrag"
|
||||||
fetch-on-scroll: "Ophalen bij scrollen"
|
fetch-on-scroll: "Ophalen bij scrollen"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
|
my-token-regenerated: "Ditt synbol har blitt generert. Du vil nå bli utlogget."
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "Sensitivt innhold"
|
sensitive: "Sensitivt innhold"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Mørk"
|
base-theme-dark: "Mørk"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "Tema navn"
|
theme-name: "Tema navn"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "Detaljer"
|
detail: "Detaljer"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "Merket som favoritt"
|
favorite: "Merket som favoritt"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "Send"
|
submit: "Send"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "Bunn"
|
notification-position-bottom: "Bunn"
|
||||||
notification-position-top: "Topp"
|
notification-position-top: "Topp"
|
||||||
theme: "Utseende"
|
|
||||||
behavior: "Oppførsel"
|
behavior: "Oppførsel"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
my-token-regenerated: "Twój token został wygenerowany. Zostaniesz wylogowany."
|
||||||
i-like-sushi: "Wolę sushi od puddingu"
|
i-like-sushi: "Wolę sushi od puddingu"
|
||||||
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
show-reversi-board-labels: "Pokazuj podpisy wierszy i kolumn w Reversi"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "Zweryfikowane konto"
|
verified-user: "Zweryfikowane konto"
|
||||||
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,11 +120,15 @@ common:
|
|||||||
reduce-motion: "Zredukuj ruch w UI"
|
reduce-motion: "Zredukuj ruch w UI"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "Użyj domyślnych Emoji systemowych"
|
use-os-default-emojis: "Użyj domyślnych Emoji systemowych"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "Informacje o użytkowniku są kopiowane."
|
is-remote-user: "Informacje o użytkowniku są kopiowane."
|
||||||
is-remote-post: "この投稿情報はコピーです。"
|
is-remote-post: "この投稿情報はコピーです。"
|
||||||
view-on-remote: "正確な情報を見る"
|
view-on-remote: "Dla dopełnienia, zobacz to zdalnie."
|
||||||
renoted-by: "{user} udostępnił(a)"
|
renoted-by: "{user} udostępnił(a)"
|
||||||
error:
|
error:
|
||||||
title: "Coś poszło nie tak"
|
title: "Coś poszło nie tak"
|
||||||
@ -257,10 +261,11 @@ common/views/components/connect-failed.troubleshooter.vue:
|
|||||||
flush: "Wyczyść pamięć podręczną"
|
flush: "Wyczyść pamięć podręczną"
|
||||||
set-version: "Określ wersję"
|
set-version: "Określ wersję"
|
||||||
common/views/components/media-banner.vue:
|
common/views/components/media-banner.vue:
|
||||||
sensitive: "閲覧注意"
|
sensitive: "NSFW"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "Naciśnij aby wyświetlić"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
theme: "Motyw"
|
||||||
|
light-theme: "Motyw"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "Jasny Motyw"
|
light-themes: "Jasny Motyw"
|
||||||
dark-themes: "Ciemny motyw"
|
dark-themes: "Ciemny motyw"
|
||||||
@ -276,21 +281,22 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "Podstawowy motyw"
|
base-theme: "Podstawowy motyw"
|
||||||
base-theme-light: "Jasny"
|
base-theme-light: "Jasny"
|
||||||
base-theme-dark: "Ciemny"
|
base-theme-dark: "Ciemny"
|
||||||
|
find-more-theme: "Odkryj więcej motywów"
|
||||||
theme-name: "Nazwa motywu"
|
theme-name: "Nazwa motywu"
|
||||||
preview-created-theme: "Pokaż podgląd"
|
preview-created-theme: "Pokaż podgląd"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "Nieprawidłowy motyw"
|
||||||
already-installed: "Ten motyw jest już zainstalowany"
|
already-installed: "Ten motyw jest już zainstalowany"
|
||||||
saved: "Zapisano"
|
saved: "Zapisano"
|
||||||
manage-themes: "Zarządzanie motywami"
|
manage-themes: "Zarządzanie motywami"
|
||||||
builtin-themes: "Standardowe motywy"
|
builtin-themes: "Standardowe motywy"
|
||||||
my-themes: "Moje motywy"
|
my-themes: "Moje motywy"
|
||||||
installed-themes: "Zainstalowane motywy"
|
installed-themes: "Zainstalowane motywy"
|
||||||
select-theme: "テーマを選択してください"
|
select-theme: "Wybierz motyw"
|
||||||
uninstall: "Odinstaluj"
|
uninstall: "Odinstaluj"
|
||||||
uninstalled: "\"{}\" został odinstalowany"
|
uninstalled: "\"{}\" został odinstalowany"
|
||||||
author: "Author"
|
author: "Author"
|
||||||
desc: "Opis"
|
desc: "Opis"
|
||||||
export: "エクスポート"
|
export: "Eksportuj"
|
||||||
import: "Importuj"
|
import: "Importuj"
|
||||||
import-by-code: "lub wklej kod"
|
import-by-code: "lub wklej kod"
|
||||||
theme-name-required: "Nazwa motywu jest obowiązkowa."
|
theme-name-required: "Nazwa motywu jest obowiązkowa."
|
||||||
@ -299,7 +305,7 @@ common/views/components/cw-button.vue:
|
|||||||
show: "Pokaż więcej"
|
show: "Pokaż więcej"
|
||||||
chars: "{count} znaków"
|
chars: "{count} znaków"
|
||||||
files: "{count} plików"
|
files: "{count} plików"
|
||||||
poll: "アンケート"
|
poll: "Ankieta"
|
||||||
common/views/components/messaging.vue:
|
common/views/components/messaging.vue:
|
||||||
search-user: "Znajdź użytkownika"
|
search-user: "Znajdź użytkownika"
|
||||||
you: "Ty"
|
you: "Ty"
|
||||||
@ -329,8 +335,9 @@ common/views/components/nav.vue:
|
|||||||
develop: "Autorzy"
|
develop: "Autorzy"
|
||||||
feedback: "Podziel się opinią"
|
feedback: "Podziel się opinią"
|
||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "Wspomnij"
|
||||||
detail: "Szczegóły"
|
detail: "Szczegóły"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "Skopiuj adres"
|
copy-link: "Skopiuj adres"
|
||||||
favorite: "Dodaj do ulubionych"
|
favorite: "Dodaj do ulubionych"
|
||||||
unfavorite: "Usuń z ulubionych"
|
unfavorite: "Usuń z ulubionych"
|
||||||
@ -406,7 +413,7 @@ common/views/components/stream-indicator.vue:
|
|||||||
reconnecting: "Ponowne łączenie"
|
reconnecting: "Ponowne łączenie"
|
||||||
connected: "Połączono"
|
connected: "Połączono"
|
||||||
common/views/components/notification-settings.vue:
|
common/views/components/notification-settings.vue:
|
||||||
title: "通知"
|
title: "Powiadomienia"
|
||||||
mark-as-read-all-notifications: "すべての通知を既読にする"
|
mark-as-read-all-notifications: "すべての通知を既読にする"
|
||||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
||||||
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
|
mark-as-read-all-talk-messages: "すべてのトークを既読にする"
|
||||||
@ -415,7 +422,7 @@ common/views/components/notification-settings.vue:
|
|||||||
common/views/components/integration-settings.vue:
|
common/views/components/integration-settings.vue:
|
||||||
title: "サービス連携"
|
title: "サービス連携"
|
||||||
connect: "Połącz"
|
connect: "Połącz"
|
||||||
disconnect: "切断する"
|
disconnect: "Rozłącz"
|
||||||
connected-to: "次のアカウントに接続されています"
|
connected-to: "次のアカウントに接続されています"
|
||||||
common/views/components/github-setting.vue:
|
common/views/components/github-setting.vue:
|
||||||
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
|
||||||
@ -546,7 +553,7 @@ common/views/pages/follow.vue:
|
|||||||
following: "Śledzisz"
|
following: "Śledzisz"
|
||||||
follow: "Śledź"
|
follow: "Śledź"
|
||||||
request-pending: "Oczekiwanie na pozwolenie"
|
request-pending: "Oczekiwanie na pozwolenie"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "Przetwarzanie śledzenia"
|
||||||
follow-request: "Poproś o śledzenie"
|
follow-request: "Poproś o śledzenie"
|
||||||
desktop:
|
desktop:
|
||||||
banner-crop-title: "バナーとして表示する部分を選択"
|
banner-crop-title: "バナーとして表示する部分を選択"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "Wprowadź hasło"
|
enter-password: "Wprowadź hasło"
|
||||||
authenticator: "Na początek musisz zainstalować Google Authenticator na swoim urządzeniu:"
|
authenticator: "Na początek musisz zainstalować Google Authenticator na swoim urządzeniu:"
|
||||||
howtoinstall: "Jak zainstalować"
|
howtoinstall: "Jak zainstalować"
|
||||||
|
token: "トークン"
|
||||||
scan: "Później, zeskanuje ten kod QR:"
|
scan: "Później, zeskanuje ten kod QR:"
|
||||||
done: "Wprowadź token wyświetlony na Twoim urządzeniu:"
|
done: "Wprowadź token wyświetlony na Twoim urządzeniu:"
|
||||||
submit: "Wyślij"
|
submit: "Wyślij"
|
||||||
@ -901,7 +909,7 @@ desktop/views/components/sub-note-content.vue:
|
|||||||
poll: "Ankieta"
|
poll: "Ankieta"
|
||||||
desktop/views/components/settings.tags.vue:
|
desktop/views/components/settings.tags.vue:
|
||||||
title: "Tagi"
|
title: "Tagi"
|
||||||
query: "クエリ (省略可)"
|
query: "Zapytanie (opcjonalne)"
|
||||||
add: "Dodaj"
|
add: "Dodaj"
|
||||||
save: "Zapisz"
|
save: "Zapisz"
|
||||||
desktop/views/components/taskmanager.vue:
|
desktop/views/components/taskmanager.vue:
|
||||||
@ -1223,7 +1231,7 @@ desktop/views/pages/user/user.header.vue:
|
|||||||
posts: "Wpisy"
|
posts: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
mention: "メンション"
|
mention: "Wspomnij"
|
||||||
is-bot: "To konto jest botem"
|
is-bot: "To konto jest botem"
|
||||||
years-old: "{age} lat"
|
years-old: "{age} lat"
|
||||||
year: "/"
|
year: "/"
|
||||||
@ -1233,7 +1241,7 @@ desktop/views/pages/user/user.timeline.vue:
|
|||||||
default: "Wpisy"
|
default: "Wpisy"
|
||||||
with-replies: "Wpisy i odpowiedzi"
|
with-replies: "Wpisy i odpowiedzi"
|
||||||
with-media: "Multimedia"
|
with-media: "Multimedia"
|
||||||
my-posts: "私の投稿"
|
my-posts: "Moje wpisy"
|
||||||
empty: "Ten użytkownik nie umieścił jeszcze niczego."
|
empty: "Ten użytkownik nie umieścił jeszcze niczego."
|
||||||
desktop/views/widgets/messaging.vue:
|
desktop/views/widgets/messaging.vue:
|
||||||
title: "Wiadomości"
|
title: "Wiadomości"
|
||||||
@ -1297,7 +1305,7 @@ common/views/components/follow-button.vue:
|
|||||||
following: "フォロー中"
|
following: "フォロー中"
|
||||||
follow: "Śledź"
|
follow: "Śledź"
|
||||||
request-pending: "フォロー許可待ち"
|
request-pending: "フォロー許可待ち"
|
||||||
follow-processing: "フォロー処理中"
|
follow-processing: "Przetwarzanie"
|
||||||
follow-request: "Poproś o śledzenie"
|
follow-request: "Poproś o śledzenie"
|
||||||
mobile/views/components/friends-maker.vue:
|
mobile/views/components/friends-maker.vue:
|
||||||
title: "Zacznij śledzić ludzi takich jak Ty"
|
title: "Zacznij śledzić ludzi takich jak Ty"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "Dół"
|
notification-position-bottom: "Dół"
|
||||||
notification-position-top: "Góra"
|
notification-position-top: "Góra"
|
||||||
theme: "Motyw"
|
|
||||||
behavior: "Zachowanie"
|
behavior: "Zachowanie"
|
||||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||||
note-visibility: "Widoczność wpisów"
|
note-visibility: "Widoczność wpisów"
|
||||||
@ -1518,7 +1525,7 @@ deck/deck.user-column.vue:
|
|||||||
posts: "Wpisy"
|
posts: "Wpisy"
|
||||||
following: "Śledzeni"
|
following: "Śledzeni"
|
||||||
followers: "Śledzący"
|
followers: "Śledzący"
|
||||||
mention: "メンション"
|
mention: "Wspomnij"
|
||||||
images: "Zdjęcia"
|
images: "Zdjęcia"
|
||||||
activity: "Aktywność"
|
activity: "Aktywność"
|
||||||
timeline: "Oś czasu"
|
timeline: "Oś czasu"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
|
my-token-regenerated: "Seu token foi recriado, portanto você foi deslogado."
|
||||||
i-like-sushi: "Eu prefiro sushi a pudim"
|
i-like-sushi: "Eu prefiro sushi a pudim"
|
||||||
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
|
show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "Conta verificada"
|
verified-user: "Conta verificada"
|
||||||
disable-animated-mfm: "Desativar texto animado nas publicações"
|
disable-animated-mfm: "Desativar texto animado nas publicações"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "UIの動きを減らす"
|
reduce-motion: "UIの動きを減らす"
|
||||||
this-setting-is-this-device-only: "このデバイスのみ"
|
this-setting-is-this-device-only: "このデバイスのみ"
|
||||||
use-os-default-emojis: "OS標準の絵文字を使用"
|
use-os-default-emojis: "OS標準の絵文字を使用"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
do-not-use-in-production: "これは開発ビルドです。本番環境で使用しないでください。"
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
|
||||||
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
|
||||||
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "公式アカウント"
|
verified-user: "公式アカウント"
|
||||||
disable-animated-mfm: "Отключить анимированный текст в постах"
|
disable-animated-mfm: "Отключить анимированный текст в постах"
|
||||||
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "Уменьшить движение в интерфейсе"
|
reduce-motion: "Уменьшить движение в интерфейсе"
|
||||||
this-setting-is-this-device-only: "Только для этого устройства"
|
this-setting-is-this-device-only: "Только для этого устройства"
|
||||||
use-os-default-emojis: "Использовать стандартные Emoji из ОС"
|
use-os-default-emojis: "Использовать стандартные Emoji из ОС"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне."
|
do-not-use-in-production: "Эта сборка для разработчиков. Не используйте в продакшне."
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "このユーザー情報はコピーです。"
|
is-remote-user: "このユーザー情報はコピーです。"
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "閲覧注意"
|
sensitive: "閲覧注意"
|
||||||
click-to-show: "クリックして表示"
|
click-to-show: "クリックして表示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "非ダークモード時に使用するテーマ"
|
light-theme: "非ダークモード時に使用するテーマ"
|
||||||
dark-theme: "ダークモード時に使用するテーマ"
|
dark-theme: "ダークモード時に使用するテーマ"
|
||||||
light-themes: "明るいテーマ"
|
light-themes: "明るいテーマ"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "ベーステーマ"
|
base-theme: "ベーステーマ"
|
||||||
base-theme-light: "Light"
|
base-theme-light: "Light"
|
||||||
base-theme-dark: "Dark"
|
base-theme-dark: "Dark"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "テーマ名"
|
theme-name: "テーマ名"
|
||||||
preview-created-theme: "プレビュー"
|
preview-created-theme: "プレビュー"
|
||||||
invalid-theme: "テーマが正しくありません。"
|
invalid-theme: "テーマが正しくありません。"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "詳細"
|
detail: "詳細"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "リンクをコピー"
|
copy-link: "リンクをコピー"
|
||||||
favorite: "お気に入り"
|
favorite: "お気に入り"
|
||||||
unfavorite: "お気に入り解除"
|
unfavorite: "お気に入り解除"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
|
||||||
howtoinstall: "インストール方法はこちら"
|
howtoinstall: "インストール方法はこちら"
|
||||||
|
token: "トークン"
|
||||||
scan: "次に、表示されているQRコードをスキャンします:"
|
scan: "次に、表示されているQRコードをスキャンします:"
|
||||||
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
done: "お使いのデバイスに表示されているトークンを入力して完了します:"
|
||||||
submit: "完了"
|
submit: "完了"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知の表示"
|
notification-position: "通知の表示"
|
||||||
notification-position-bottom: "下"
|
notification-position-bottom: "下"
|
||||||
notification-position-top: "上"
|
notification-position-top: "上"
|
||||||
theme: "テーマ"
|
|
||||||
behavior: "動作"
|
behavior: "動作"
|
||||||
fetch-on-scroll: "スクロールで自動読み込み"
|
fetch-on-scroll: "スクロールで自動読み込み"
|
||||||
note-visibility: "投稿の公開範囲"
|
note-visibility: "投稿の公開範囲"
|
||||||
|
@ -109,7 +109,7 @@ common:
|
|||||||
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
|
my-token-regenerated: "您的 Token 已被重置, 您将自动登出。"
|
||||||
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
|
i-like-sushi: "相比于布丁来说, 我更喜欢寿司。"
|
||||||
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
|
show-reversi-board-labels: "在 Reversi 中显示行和列表签"
|
||||||
use-white-black-reversi-stones: "リバーシに白黒の石を使う"
|
use-avatar-reversi-stones: "リバーシの石にアバターを使う"
|
||||||
verified-user: "认证用户"
|
verified-user: "认证用户"
|
||||||
disable-animated-mfm: "在帖子中禁用动画文本"
|
disable-animated-mfm: "在帖子中禁用动画文本"
|
||||||
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
|
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
|
||||||
@ -120,6 +120,10 @@ common:
|
|||||||
reduce-motion: "减弱UI中的动画效果"
|
reduce-motion: "减弱UI中的动画效果"
|
||||||
this-setting-is-this-device-only: "设置仅在本设备中生效"
|
this-setting-is-this-device-only: "设置仅在本设备中生效"
|
||||||
use-os-default-emojis: "使用设备系统默认的 emojis"
|
use-os-default-emojis: "使用设备系统默认的 emojis"
|
||||||
|
line-width: "線の太さ"
|
||||||
|
line-width-thin: "細い"
|
||||||
|
line-width-normal: "普通"
|
||||||
|
line-width-thick: "太い"
|
||||||
do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用."
|
do-not-use-in-production: "这是一个开发者测试版. 请勿在生产环境中使用."
|
||||||
user-suspended: "このユーザーは凍結されています。"
|
user-suspended: "このユーザーは凍結されています。"
|
||||||
is-remote-user: "该用户的信息已被复制."
|
is-remote-user: "该用户的信息已被复制."
|
||||||
@ -260,6 +264,7 @@ common/views/components/media-banner.vue:
|
|||||||
sensitive: "阅读注意"
|
sensitive: "阅读注意"
|
||||||
click-to-show: "点击以显示"
|
click-to-show: "点击以显示"
|
||||||
common/views/components/theme.vue:
|
common/views/components/theme.vue:
|
||||||
|
theme: "テーマ"
|
||||||
light-theme: "主题"
|
light-theme: "主题"
|
||||||
dark-theme: "黑暗模式主题"
|
dark-theme: "黑暗模式主题"
|
||||||
light-themes: "明亮主题"
|
light-themes: "明亮主题"
|
||||||
@ -276,6 +281,7 @@ common/views/components/theme.vue:
|
|||||||
base-theme: "基础主题"
|
base-theme: "基础主题"
|
||||||
base-theme-light: "亮"
|
base-theme-light: "亮"
|
||||||
base-theme-dark: "暗"
|
base-theme-dark: "暗"
|
||||||
|
find-more-theme: "その他のテーマを入手"
|
||||||
theme-name: "主题名称"
|
theme-name: "主题名称"
|
||||||
preview-created-theme: "预览"
|
preview-created-theme: "预览"
|
||||||
invalid-theme: "无效主题"
|
invalid-theme: "无效主题"
|
||||||
@ -331,6 +337,7 @@ common/views/components/nav.vue:
|
|||||||
common/views/components/note-menu.vue:
|
common/views/components/note-menu.vue:
|
||||||
mention: "メンション"
|
mention: "メンション"
|
||||||
detail: "详细信息"
|
detail: "详细信息"
|
||||||
|
copy-content: "内容をコピー"
|
||||||
copy-link: "复制链接"
|
copy-link: "复制链接"
|
||||||
favorite: "收藏这个投稿"
|
favorite: "收藏这个投稿"
|
||||||
unfavorite: "取消收藏"
|
unfavorite: "取消收藏"
|
||||||
@ -849,6 +856,7 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
enter-password: "请输入您的密码"
|
enter-password: "请输入您的密码"
|
||||||
authenticator: "首先,您需要在设备上安装 Google Authenticator:"
|
authenticator: "首先,您需要在设备上安装 Google Authenticator:"
|
||||||
howtoinstall: "怎样安装"
|
howtoinstall: "怎样安装"
|
||||||
|
token: "トークン"
|
||||||
scan: "然后,扫描二维码:"
|
scan: "然后,扫描二维码:"
|
||||||
done: "请输入显示在您设备上的密钥:"
|
done: "请输入显示在您设备上的密钥:"
|
||||||
submit: "提交"
|
submit: "提交"
|
||||||
@ -1432,7 +1440,6 @@ mobile/views/pages/settings.vue:
|
|||||||
notification-position: "通知形式"
|
notification-position: "通知形式"
|
||||||
notification-position-bottom: "底部"
|
notification-position-bottom: "底部"
|
||||||
notification-position-top: "顶部"
|
notification-position-top: "顶部"
|
||||||
theme: "主题"
|
|
||||||
behavior: "动作"
|
behavior: "动作"
|
||||||
fetch-on-scroll: "滚动无限加载"
|
fetch-on-scroll: "滚动无限加载"
|
||||||
note-visibility: "帖子可见性"
|
note-visibility: "帖子可见性"
|
||||||
|
46
package.json
46
package.json
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "10.70.0",
|
"version": "10.75.0",
|
||||||
"clientVersion": "2.0.13176",
|
"clientVersion": "2.0.13368",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@ -20,21 +20,21 @@
|
|||||||
"format": "gulp format"
|
"format": "gulp format"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-svg-core": "1.2.8",
|
"@fortawesome/fontawesome-svg-core": "1.2.12",
|
||||||
"@fortawesome/free-brands-svg-icons": "5.6.0",
|
"@fortawesome/free-brands-svg-icons": "5.6.3",
|
||||||
"@fortawesome/free-regular-svg-icons": "5.5.0",
|
"@fortawesome/free-regular-svg-icons": "5.5.0",
|
||||||
"@fortawesome/free-solid-svg-icons": "5.6.3",
|
"@fortawesome/free-solid-svg-icons": "5.6.3",
|
||||||
"@fortawesome/vue-fontawesome": "0.1.2",
|
"@fortawesome/vue-fontawesome": "0.1.2",
|
||||||
"@koa/cors": "2.2.2",
|
"@koa/cors": "2.2.3",
|
||||||
"@prezzemolo/rap": "0.1.2",
|
"@prezzemolo/rap": "0.1.2",
|
||||||
"@prezzemolo/zip": "0.0.3",
|
"@prezzemolo/zip": "0.0.3",
|
||||||
"@types/bcryptjs": "2.4.2",
|
"@types/bcryptjs": "2.4.2",
|
||||||
"@types/chai-http": "3.0.5",
|
"@types/chai-http": "3.0.5",
|
||||||
"@types/dateformat": "1.0.1",
|
"@types/dateformat": "3.0.0",
|
||||||
"@types/debug": "0.0.31",
|
"@types/debug": "0.0.31",
|
||||||
"@types/deep-equal": "1.0.1",
|
"@types/deep-equal": "1.0.1",
|
||||||
"@types/double-ended-queue": "2.1.0",
|
"@types/double-ended-queue": "2.1.0",
|
||||||
"@types/elasticsearch": "5.0.29",
|
"@types/elasticsearch": "5.0.30",
|
||||||
"@types/file-type": "10.6.0",
|
"@types/file-type": "10.6.0",
|
||||||
"@types/gulp": "3.8.36",
|
"@types/gulp": "3.8.36",
|
||||||
"@types/gulp-mocha": "0.0.32",
|
"@types/gulp-mocha": "0.0.32",
|
||||||
@ -46,7 +46,7 @@
|
|||||||
"@types/is-url": "1.2.28",
|
"@types/is-url": "1.2.28",
|
||||||
"@types/js-yaml": "3.11.4",
|
"@types/js-yaml": "3.11.4",
|
||||||
"@types/katex": "0.5.0",
|
"@types/katex": "0.5.0",
|
||||||
"@types/koa": "2.0.47",
|
"@types/koa": "2.0.48",
|
||||||
"@types/koa-bodyparser": "5.0.2",
|
"@types/koa-bodyparser": "5.0.2",
|
||||||
"@types/koa-compress": "2.0.8",
|
"@types/koa-compress": "2.0.8",
|
||||||
"@types/koa-favicon": "2.0.19",
|
"@types/koa-favicon": "2.0.19",
|
||||||
@ -62,7 +62,7 @@
|
|||||||
"@types/mocha": "5.2.5",
|
"@types/mocha": "5.2.5",
|
||||||
"@types/mongodb": "3.1.14",
|
"@types/mongodb": "3.1.14",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.12.10",
|
"@types/node": "10.12.18",
|
||||||
"@types/nodemailer": "4.6.5",
|
"@types/nodemailer": "4.6.5",
|
||||||
"@types/oauth": "0.9.1",
|
"@types/oauth": "0.9.1",
|
||||||
"@types/parsimmon": "1.10.0",
|
"@types/parsimmon": "1.10.0",
|
||||||
@ -70,13 +70,13 @@
|
|||||||
"@types/pug": "2.0.4",
|
"@types/pug": "2.0.4",
|
||||||
"@types/qrcode": "1.3.0",
|
"@types/qrcode": "1.3.0",
|
||||||
"@types/ratelimiter": "2.1.28",
|
"@types/ratelimiter": "2.1.28",
|
||||||
"@types/redis": "2.8.8",
|
"@types/redis": "2.8.10",
|
||||||
"@types/request": "2.48.1",
|
"@types/request": "2.48.1",
|
||||||
"@types/request-promise-native": "1.0.15",
|
"@types/request-promise-native": "1.0.15",
|
||||||
"@types/rimraf": "2.0.2",
|
"@types/rimraf": "2.0.2",
|
||||||
"@types/seedrandom": "2.4.27",
|
"@types/seedrandom": "2.4.27",
|
||||||
"@types/sharp": "0.21.0",
|
"@types/sharp": "0.21.0",
|
||||||
"@types/showdown": "1.7.5",
|
"@types/showdown": "1.9.0",
|
||||||
"@types/speakeasy": "2.0.3",
|
"@types/speakeasy": "2.0.3",
|
||||||
"@types/systeminformation": "3.23.1",
|
"@types/systeminformation": "3.23.1",
|
||||||
"@types/tinycolor2": "1.4.1",
|
"@types/tinycolor2": "1.4.1",
|
||||||
@ -87,7 +87,7 @@
|
|||||||
"@types/websocket": "0.0.40",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.1",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"apexcharts": "2.4.2",
|
"apexcharts": "2.5.1",
|
||||||
"autobind-decorator": "2.4.0",
|
"autobind-decorator": "2.4.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
@ -111,12 +111,12 @@
|
|||||||
"elasticsearch": "15.2.0",
|
"elasticsearch": "15.2.0",
|
||||||
"emojilib": "2.4.0",
|
"emojilib": "2.4.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eslint": "5.8.0",
|
"eslint": "5.11.1",
|
||||||
"eslint-plugin-vue": "4.7.1",
|
"eslint-plugin-vue": "5.0.0",
|
||||||
"eventemitter3": "3.1.0",
|
"eventemitter3": "3.1.0",
|
||||||
"feed": "2.0.2",
|
"feed": "2.0.2",
|
||||||
"file-loader": "2.0.0",
|
"file-loader": "2.0.0",
|
||||||
"file-type": "10.6.0",
|
"file-type": "10.7.0",
|
||||||
"fuckadblock": "3.2.1",
|
"fuckadblock": "3.2.1",
|
||||||
"gulp": "3.9.1",
|
"gulp": "3.9.1",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
@ -155,18 +155,19 @@
|
|||||||
"koa-slow": "2.1.0",
|
"koa-slow": "2.1.0",
|
||||||
"koa-views": "6.1.4",
|
"koa-views": "6.1.4",
|
||||||
"langmap": "0.0.16",
|
"langmap": "0.0.16",
|
||||||
"loader-utils": "1.1.0",
|
"loader-utils": "1.2.3",
|
||||||
|
"lookup-dns-cache": "2.1.0",
|
||||||
"minio": "7.0.2",
|
"minio": "7.0.2",
|
||||||
"mkdirp": "0.5.1",
|
"mkdirp": "0.5.1",
|
||||||
"mocha": "5.2.0",
|
"mocha": "5.2.0",
|
||||||
"moji": "0.5.1",
|
"moji": "0.5.1",
|
||||||
"moment": "2.22.2",
|
"moment": "2.23.0",
|
||||||
"mongodb": "3.1.10",
|
"mongodb": "3.1.10",
|
||||||
"monk": "6.0.6",
|
"monk": "6.0.6",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"nan": "2.12.1",
|
"nan": "2.12.1",
|
||||||
"nested-property": "0.0.7",
|
"nested-property": "0.0.7",
|
||||||
"nodemailer": "4.7.0",
|
"nodemailer": "5.0.0",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"object-assign-deep": "0.4.0",
|
"object-assign-deep": "0.4.0",
|
||||||
"on-build-webpack": "0.1.0",
|
"on-build-webpack": "0.1.0",
|
||||||
@ -176,6 +177,7 @@
|
|||||||
"portscanner": "2.2.0",
|
"portscanner": "2.2.0",
|
||||||
"postcss-loader": "3.0.0",
|
"postcss-loader": "3.0.0",
|
||||||
"progress-bar-webpack-plugin": "1.11.0",
|
"progress-bar-webpack-plugin": "1.11.0",
|
||||||
|
"promise-any": "0.2.0",
|
||||||
"promise-limit": "2.7.0",
|
"promise-limit": "2.7.0",
|
||||||
"promise-sequential": "1.1.1",
|
"promise-sequential": "1.1.1",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
@ -204,7 +206,7 @@
|
|||||||
"summaly": "2.2.0",
|
"summaly": "2.2.0",
|
||||||
"systeminformation": "3.52.2",
|
"systeminformation": "3.52.2",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"terser-webpack-plugin": "1.1.0",
|
"terser-webpack-plugin": "1.2.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"tinycolor2": "1.4.1",
|
"tinycolor2": "1.4.1",
|
||||||
"tmp": "0.0.33",
|
"tmp": "0.0.33",
|
||||||
@ -222,10 +224,10 @@
|
|||||||
"vue-color": "2.7.0",
|
"vue-color": "2.7.0",
|
||||||
"vue-content-loading": "1.5.3",
|
"vue-content-loading": "1.5.3",
|
||||||
"vue-cropperjs": "3.0.0",
|
"vue-cropperjs": "3.0.0",
|
||||||
"vue-i18n": "8.3.2",
|
"vue-i18n": "8.6.0",
|
||||||
"vue-js-modal": "1.3.28",
|
"vue-js-modal": "1.3.28",
|
||||||
"vue-loader": "15.4.2",
|
"vue-loader": "15.4.2",
|
||||||
"vue-marquee-text-component": "1.1.0",
|
"vue-marquee-text-component": "1.1.1",
|
||||||
"vue-router": "3.0.2",
|
"vue-router": "3.0.2",
|
||||||
"vue-sequential-entrance": "1.1.3",
|
"vue-sequential-entrance": "1.1.3",
|
||||||
"vue-style-loader": "4.1.2",
|
"vue-style-loader": "4.1.2",
|
||||||
@ -237,7 +239,7 @@
|
|||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.3",
|
"web-push": "3.3.3",
|
||||||
"webfinger.js": "2.7.0",
|
"webfinger.js": "2.7.0",
|
||||||
"webpack": "4.26.1",
|
"webpack": "4.28.3",
|
||||||
"webpack-cli": "3.1.2",
|
"webpack-cli": "3.1.2",
|
||||||
"websocket": "1.0.28",
|
"websocket": "1.0.28",
|
||||||
"ws": "6.1.2",
|
"ws": "6.1.2",
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-show="file._open">
|
<div v-show="file._open">
|
||||||
|
<ui-input readonly :value="file.url"></ui-input>
|
||||||
<ui-horizon-group>
|
<ui-horizon-group>
|
||||||
<ui-button @click="toggleSensitive(file)" v-if="file.isSensitive"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button>
|
<ui-button @click="toggleSensitive(file)" v-if="file.isSensitive"><fa :icon="faEye"/> {{ $t('unmark-as-sensitive') }}</ui-button>
|
||||||
<ui-button @click="toggleSensitive(file)" v-else><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button>
|
<ui-button @click="toggleSensitive(file)" v-else><fa :icon="faEyeSlash"/> {{ $t('mark-as-sensitive') }}</ui-button>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<ui-input :value="host" readonly>{{ $t('host') }}</ui-input>
|
<ui-input :value="host" readonly>{{ $t('host') }}</ui-input>
|
||||||
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
<ui-input v-model="name">{{ $t('instance-name') }}</ui-input>
|
||||||
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
<ui-textarea v-model="description">{{ $t('instance-description') }}</ui-textarea>
|
||||||
|
<ui-input v-model="mascotImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('logo-url') }}</ui-input>
|
||||||
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
<ui-input v-model="bannerUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('banner-url') }}</ui-input>
|
||||||
<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input>
|
<ui-input v-model="errorImageUrl"><i slot="icon"><fa icon="link"/></i>{{ $t('error-image-url') }}</ui-input>
|
||||||
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
<ui-input v-model="languages"><i slot="icon"><fa icon="language"/></i>{{ $t('languages') }}<span slot="desc">{{ $t('languages-desc') }}</span></ui-input>
|
||||||
@ -53,7 +54,7 @@
|
|||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
<ui-horizon-group inputs>
|
<ui-horizon-group inputs>
|
||||||
<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input>
|
<ui-input v-model="smtpUser" :disabled="!enableEmail">{{ $t('smtp-user') }}</ui-input>
|
||||||
<ui-input v-model="smtpPass" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input>
|
<ui-input v-model="smtpPass" type="password" :withPasswordToggle="true" :disabled="!enableEmail">{{ $t('smtp-pass') }}</ui-input>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
|
<ui-switch v-model="smtpSecure" :disabled="!enableEmail">{{ $t('smtp-secure') }}<span slot="desc">{{ $t('smtp-secure-info') }}</span></ui-switch>
|
||||||
</section>
|
</section>
|
||||||
@ -149,6 +150,7 @@ export default Vue.extend({
|
|||||||
maintainerEmail: null,
|
maintainerEmail: null,
|
||||||
disableRegistration: false,
|
disableRegistration: false,
|
||||||
disableLocalTimeline: false,
|
disableLocalTimeline: false,
|
||||||
|
mascotImageUrl: null,
|
||||||
bannerUrl: null,
|
bannerUrl: null,
|
||||||
errorImageUrl: null,
|
errorImageUrl: null,
|
||||||
name: null,
|
name: null,
|
||||||
@ -196,6 +198,7 @@ export default Vue.extend({
|
|||||||
this.maintainerEmail = meta.maintainer.email;
|
this.maintainerEmail = meta.maintainer.email;
|
||||||
this.disableRegistration = meta.disableRegistration;
|
this.disableRegistration = meta.disableRegistration;
|
||||||
this.disableLocalTimeline = meta.disableLocalTimeline;
|
this.disableLocalTimeline = meta.disableLocalTimeline;
|
||||||
|
this.mascotImageUrl = meta.mascotImageUrl;
|
||||||
this.bannerUrl = meta.bannerUrl;
|
this.bannerUrl = meta.bannerUrl;
|
||||||
this.errorImageUrl = meta.errorImageUrl;
|
this.errorImageUrl = meta.errorImageUrl;
|
||||||
this.name = meta.name;
|
this.name = meta.name;
|
||||||
@ -253,6 +256,7 @@ export default Vue.extend({
|
|||||||
maintainerEmail: this.maintainerEmail,
|
maintainerEmail: this.maintainerEmail,
|
||||||
disableRegistration: this.disableRegistration,
|
disableRegistration: this.disableRegistration,
|
||||||
disableLocalTimeline: this.disableLocalTimeline,
|
disableLocalTimeline: this.disableLocalTimeline,
|
||||||
|
mascotImageUrl: this.mascotImageUrl,
|
||||||
bannerUrl: this.bannerUrl,
|
bannerUrl: this.bannerUrl,
|
||||||
errorImageUrl: this.errorImageUrl,
|
errorImageUrl: this.errorImageUrl,
|
||||||
name: this.name,
|
name: this.name,
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
<ui-input v-model="username" type="text">
|
<ui-input v-model="username" type="text">
|
||||||
<span slot="prefix">@</span>
|
<span slot="prefix">@</span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-button @click="add" :disabled="adding">{{ $t('add-moderator.add') }}</ui-button>
|
<ui-button @click="add" :disabled="changing">{{ $t('add-moderator.add') }}</ui-button>
|
||||||
|
<ui-button @click="remove" :disabled="changing">{{ $t('add-moderator.remove') }}</ui-button>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
</div>
|
</div>
|
||||||
@ -23,13 +24,13 @@ export default Vue.extend({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
username: '',
|
username: '',
|
||||||
adding: false
|
changing: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
async add() {
|
async add() {
|
||||||
this.adding = true;
|
this.changing = true;
|
||||||
|
|
||||||
const process = async () => {
|
const process = async () => {
|
||||||
const user = await this.$root.api('users/show', parseAcct(this.username));
|
const user = await this.$root.api('users/show', parseAcct(this.username));
|
||||||
@ -47,7 +48,29 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.adding = false;
|
this.changing = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
async remove() {
|
||||||
|
this.changing = true;
|
||||||
|
|
||||||
|
const process = async () => {
|
||||||
|
const user = await this.$root.api('users/show', parseAcct(this.username));
|
||||||
|
await this.$root.api('admin/moderators/remove', { userId: user.id });
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'success',
|
||||||
|
text: this.$t('add-moderator.removed')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
await process().catch(e => {
|
||||||
|
this.$root.dialog({
|
||||||
|
type: 'error',
|
||||||
|
text: e.toString()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.changing = false;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -31,6 +31,14 @@
|
|||||||
<option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option>
|
<option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option>
|
||||||
<option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option>
|
<option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option>
|
||||||
</ui-select>
|
</ui-select>
|
||||||
|
<ui-select v-model="state">
|
||||||
|
<span slot="label">{{ $t('users.state.title') }}</span>
|
||||||
|
<option value="all">{{ $t('users.state.all') }}</option>
|
||||||
|
<option value="admin">{{ $t('users.state.admin') }}</option>
|
||||||
|
<option value="moderator">{{ $t('users.state.moderator') }}</option>
|
||||||
|
<option value="verified">{{ $t('users.state.verified') }}</option>
|
||||||
|
<option value="suspended">{{ $t('users.state.suspended') }}</option>
|
||||||
|
</ui-select>
|
||||||
<ui-select v-model="origin">
|
<ui-select v-model="origin">
|
||||||
<span slot="label">{{ $t('users.origin.title') }}</span>
|
<span slot="label">{{ $t('users.origin.title') }}</span>
|
||||||
<option value="combined">{{ $t('users.origin.combined') }}</option>
|
<option value="combined">{{ $t('users.origin.combined') }}</option>
|
||||||
@ -39,7 +47,7 @@
|
|||||||
</ui-select>
|
</ui-select>
|
||||||
</ui-horizon-group>
|
</ui-horizon-group>
|
||||||
<sequential-entrance animation="entranceFromTop" delay="25">
|
<sequential-entrance animation="entranceFromTop" delay="25">
|
||||||
<div class="kofvwchc" v-for="user in users">
|
<div class="kofvwchc" v-for="user in users" :key="user.id">
|
||||||
<div>
|
<div>
|
||||||
<a :href="user | userPage(null, true)">
|
<a :href="user | userPage(null, true)">
|
||||||
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
|
<mk-avatar class="avatar" :user="user" :disable-link="true"/>
|
||||||
@ -49,6 +57,10 @@
|
|||||||
<header>
|
<header>
|
||||||
<b><mk-user-name :user="user"/></b>
|
<b><mk-user-name :user="user"/></b>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }}</span>
|
||||||
|
<span class="is-admin" v-if="user.isAdmin">admin</span>
|
||||||
|
<span class="is-moderator" v-if="user.isModerator">moderator</span>
|
||||||
|
<span class="is-verified" v-if="user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
|
||||||
|
<span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span>
|
||||||
</header>
|
</header>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
|
<span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span>
|
||||||
@ -84,6 +96,7 @@ export default Vue.extend({
|
|||||||
suspending: false,
|
suspending: false,
|
||||||
unsuspending: false,
|
unsuspending: false,
|
||||||
sort: '+createdAt',
|
sort: '+createdAt',
|
||||||
|
state: 'all',
|
||||||
origin: 'combined',
|
origin: 'combined',
|
||||||
limit: 10,
|
limit: 10,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
@ -100,6 +113,12 @@ export default Vue.extend({
|
|||||||
this.fetchUsers();
|
this.fetchUsers();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
state() {
|
||||||
|
this.users = [];
|
||||||
|
this.offset = 0;
|
||||||
|
this.fetchUsers();
|
||||||
|
},
|
||||||
|
|
||||||
origin() {
|
origin() {
|
||||||
this.users = [];
|
this.users = [];
|
||||||
this.offset = 0;
|
this.offset = 0;
|
||||||
@ -236,7 +255,8 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
fetchUsers() {
|
fetchUsers() {
|
||||||
this.$root.api('users', {
|
this.$root.api('admin/show-users', {
|
||||||
|
state: this.state,
|
||||||
origin: this.origin,
|
origin: this.origin,
|
||||||
sort: this.sort,
|
sort: this.sort,
|
||||||
offset: this.offset,
|
offset: this.offset,
|
||||||
@ -284,4 +304,19 @@ export default Vue.extend({
|
|||||||
margin-left 8px
|
margin-left 8px
|
||||||
opacity 0.7
|
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-verified
|
||||||
|
> .is-suspended
|
||||||
|
margin 0 0 0 .5em
|
||||||
|
color #4dabf7
|
||||||
</style>
|
</style>
|
||||||
|
@ -129,9 +129,7 @@ export default (opts: Opts = {}) => ({
|
|||||||
source: this.$refs.reactButton,
|
source: this.$refs.reactButton,
|
||||||
note: this.appearNote,
|
note: this.appearNote,
|
||||||
showFocus: viaKeyboard,
|
showFocus: viaKeyboard,
|
||||||
animation: !viaKeyboard,
|
animation: !viaKeyboard
|
||||||
compact: opts.mobile,
|
|
||||||
big: opts.mobile
|
|
||||||
}).$once('closed', this.focus);
|
}).$once('closed', this.focus);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -171,8 +169,7 @@ export default (opts: Opts = {}) => ({
|
|||||||
this.$root.new(MkNoteMenu, {
|
this.$root.new(MkNoteMenu, {
|
||||||
source: this.$refs.menuButton,
|
source: this.$refs.menuButton,
|
||||||
note: this.appearNote,
|
note: this.appearNote,
|
||||||
animation: !viaKeyboard,
|
animation: !viaKeyboard
|
||||||
compact: opts.mobile,
|
|
||||||
}).$once('closed', this.focus);
|
}).$once('closed', this.focus);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<span class="mk-acct">
|
<span class="mk-acct">
|
||||||
<span class="name">@{{ user.username }}</span>
|
<span class="name">@{{ user.username }}</span>
|
||||||
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span>
|
<span class="host" :class="{ fade: $store.state.settings.contrastedAcct }" v-if="user.host || detail || $store.state.settings.showFullAcct">@{{ user.host || host }}</span>
|
||||||
|
<fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -23,4 +24,8 @@ export default Vue.extend({
|
|||||||
.mk-acct
|
.mk-acct
|
||||||
> .host.fade
|
> .host.fade
|
||||||
opacity 0.5
|
opacity 0.5
|
||||||
|
|
||||||
|
> .locked
|
||||||
|
opacity 0.8
|
||||||
|
margin-left 0.5em
|
||||||
</style>
|
</style>
|
||||||
|
@ -30,11 +30,11 @@
|
|||||||
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
:class="{ empty: stone == null, none: o.map[i] == 'null', isEnded: game.isEnded, myTurn: !game.isEnded && isMyTurn, can: turnUser ? o.canPut(turnUser.id == blackUser.id, i) : null, prev: o.prevPos == i }"
|
||||||
@click="set(i)"
|
@click="set(i)"
|
||||||
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
:title="`${String.fromCharCode(65 + o.transformPosToXy(i)[0])}${o.transformPosToXy(i)[1] + 1}`">
|
||||||
<template v-if="!$store.state.settings.games.reversi.useWhiteBlackStones">
|
<template v-if="$store.state.settings.games.reversi.useAvatarStones">
|
||||||
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black">
|
<img v-if="stone === true" :src="blackUser.avatarUrl" alt="black">
|
||||||
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white">
|
<img v-if="stone === false" :src="whiteUser.avatarUrl" alt="white">
|
||||||
</template>
|
</template>
|
||||||
<template v-if="$store.state.settings.games.reversi.useWhiteBlackStones">
|
<template v-else>
|
||||||
<fa v-if="stone === true" :icon="fasCircle"/>
|
<fa v-if="stone === true" :icon="fasCircle"/>
|
||||||
<fa v-if="stone === false" :icon="farCircle"/>
|
<fa v-if="stone === false" :icon="farCircle"/>
|
||||||
</template>
|
</template>
|
||||||
|
@ -53,14 +53,14 @@ export default Vue.extend({
|
|||||||
pointer-events none
|
pointer-events none
|
||||||
user-select none
|
user-select none
|
||||||
padding 0 4px
|
padding 0 4px
|
||||||
background var(--primary)
|
background var(--mfmMention)
|
||||||
border solid 1px var(--primary)
|
border solid var(--lineWidth) var(--mfmMention)
|
||||||
border-radius 4px 0 0 4px
|
border-radius 4px 0 0 4px
|
||||||
color var(--primaryForeground)
|
color var(--mfmMentionForeground)
|
||||||
|
|
||||||
& + .main
|
& + .main
|
||||||
padding 0 4px
|
padding 0 4px
|
||||||
border solid 1px var(--primary)
|
border solid var(--lineWidth) var(--mfmMention)
|
||||||
border-radius 0 4px 4px 0
|
border-radius 0 4px 4px 0
|
||||||
|
|
||||||
> .main
|
> .main
|
||||||
|
@ -24,16 +24,11 @@ export default Vue.extend({
|
|||||||
items: {
|
items: {
|
||||||
type: Array,
|
type: Array,
|
||||||
required: true
|
required: true
|
||||||
},
|
|
||||||
compact: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false,
|
|
||||||
default: false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
hukidasi: !this.compact
|
hukidasi: !this.$root.isMobile
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -47,7 +42,7 @@ export default Vue.extend({
|
|||||||
let left;
|
let left;
|
||||||
let top;
|
let top;
|
||||||
|
|
||||||
if (this.compact) {
|
if (this.$root.isMobile) {
|
||||||
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
||||||
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
||||||
left = (x - (width / 2));
|
left = (x - (width / 2));
|
||||||
@ -121,14 +116,11 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.onchrpzrvnoruiaenfcqvccjfuupzzwv
|
.onchrpzrvnoruiaenfcqvccjfuupzzwv
|
||||||
$bg-color = var(--popupBg)
|
$bg-color = var(--popupBg)
|
||||||
$border-color = rgba(27, 31, 35, 0.15)
|
|
||||||
|
|
||||||
position initial
|
position initial
|
||||||
|
|
||||||
&.isMobile
|
&.isMobile
|
||||||
> .popover
|
> .popover
|
||||||
border none
|
|
||||||
|
|
||||||
> button
|
> button
|
||||||
font-size 15px
|
font-size 15px
|
||||||
|
|
||||||
@ -147,7 +139,6 @@ export default Vue.extend({
|
|||||||
z-index 10001
|
z-index 10001
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
background $bg-color
|
background $bg-color
|
||||||
border 1px solid $border-color
|
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||||
transform scale(0.5)
|
transform scale(0.5)
|
||||||
@ -172,14 +163,6 @@ export default Vue.extend({
|
|||||||
border-top solid $balloon-size transparent
|
border-top solid $balloon-size transparent
|
||||||
border-left solid $balloon-size transparent
|
border-left solid $balloon-size transparent
|
||||||
border-right solid $balloon-size transparent
|
border-right solid $balloon-size transparent
|
||||||
border-bottom solid $balloon-size $border-color
|
|
||||||
|
|
||||||
&:after
|
|
||||||
top -($balloon-size * 2) + 1.5px
|
|
||||||
left s('calc(50% - %s)', $balloon-size)
|
|
||||||
border-top solid $balloon-size transparent
|
|
||||||
border-left solid $balloon-size transparent
|
|
||||||
border-right solid $balloon-size transparent
|
|
||||||
border-bottom solid $balloon-size $bg-color
|
border-bottom solid $balloon-size $bg-color
|
||||||
|
|
||||||
> button
|
> button
|
||||||
@ -203,7 +186,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> div
|
> div
|
||||||
margin 8px 0
|
margin 8px 0
|
||||||
height 1px
|
height var(--lineWidth)
|
||||||
background var(--faceDivider)
|
background var(--faceDivider)
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -129,8 +129,10 @@ export default Vue.component('misskey-flavored-markdown', {
|
|||||||
key: Math.random(),
|
key: Math.random(),
|
||||||
props: {
|
props: {
|
||||||
url: token.node.props.url,
|
url: token.node.props.url,
|
||||||
target: '_blank',
|
target: '_blank'
|
||||||
style: 'color:var(--mfmLink);'
|
},
|
||||||
|
attrs: {
|
||||||
|
style: 'color:var(--mfmUrl);'
|
||||||
}
|
}
|
||||||
})];
|
})];
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<span class="visibility" v-if="note.visibility != 'public'">
|
<span class="visibility" v-if="note.visibility != 'public'">
|
||||||
<fa v-if="note.visibility == 'home'" icon="home"/>
|
<fa v-if="note.visibility == 'home'" icon="home"/>
|
||||||
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
||||||
<fa v-if="note.visibility == 'specified'" icon="lock"/>
|
<fa v-if="note.visibility == 'specified'" icon="envelope"/>
|
||||||
</span>
|
</span>
|
||||||
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="position:initial">
|
<div style="position:initial">
|
||||||
<mk-menu :source="source" :compact="compact" :items="items" @closed="closed"/>
|
<mk-menu :source="source" :items="items" @closed="closed"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ import { concat, intersperse } from '../../../../../prelude/array';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/note-menu.vue'),
|
i18n: i18n('common/views/components/note-menu.vue'),
|
||||||
props: ['note', 'source', 'compact'],
|
props: ['note', 'source'],
|
||||||
computed: {
|
computed: {
|
||||||
items(): any[] {
|
items(): any[] {
|
||||||
return concat(intersperse([null], [
|
return concat(intersperse([null], [
|
||||||
@ -29,6 +29,10 @@ export default Vue.extend({
|
|||||||
icon: 'info-circle',
|
icon: 'info-circle',
|
||||||
text: this.$t('detail'),
|
text: this.$t('detail'),
|
||||||
action: this.detail
|
action: this.detail
|
||||||
|
}], [{
|
||||||
|
icon: 'align-left',
|
||||||
|
text: this.$t('copy-content'),
|
||||||
|
action: this.copyContent
|
||||||
}], [{
|
}], [{
|
||||||
icon: 'link',
|
icon: 'link',
|
||||||
text: this.$t('copy-link'),
|
text: this.$t('copy-link'),
|
||||||
@ -81,6 +85,10 @@ export default Vue.extend({
|
|||||||
this.$router.push(`/notes/${this.note.id}`);
|
this.$router.push(`/notes/${this.note.id}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
copyContent() {
|
||||||
|
copyToClipboard(this.note.text);
|
||||||
|
},
|
||||||
|
|
||||||
copyLink() {
|
copyLink() {
|
||||||
copyToClipboard(`${url}/notes/${this.note.id}`);
|
copyToClipboard(`${url}/notes/${this.note.id}`);
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title"><fa :icon="['far', 'bell']"/> {{ $t('notification') }}</div>
|
<div slot="title"><fa :icon="['far', 'bell']"/> {{ $t('title') }}</div>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="$store.state.i.settings.autoWatch" @change="onChangeAutoWatch">
|
<ui-switch v-model="$store.state.i.settings.autoWatch" @change="onChangeAutoWatch">
|
||||||
{{ $t('auto-watch') }}<span slot="desc">{{ $t('auto-watch-desc') }}</span>
|
{{ $t('auto-watch') }}<span slot="desc">{{ $t('auto-watch-desc') }}</span>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-reaction-picker" v-hotkey.global="keymap">
|
<div class="rdfaahpb" v-hotkey.global="keymap">
|
||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ compact, big }" ref="popover">
|
<div class="popover" :class="{ isMobile: $root.isMobile }" ref="popover">
|
||||||
<p v-if="!compact">{{ title }}</p>
|
<p v-if="!$root.isMobile">{{ title }}</p>
|
||||||
<div ref="buttons" :class="{ showFocus }">
|
<div ref="buttons" :class="{ showFocus }">
|
||||||
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')" v-particle><mk-reaction-icon reaction="like"/></button>
|
<button @click="react('like')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="1" :title="$t('@.reactions.like')" v-particle><mk-reaction-icon reaction="like"/></button>
|
||||||
<button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')" v-particle><mk-reaction-icon reaction="love"/></button>
|
<button @click="react('love')" @mouseover="onMouseover" @mouseout="onMouseout" tabindex="2" :title="$t('@.reactions.love')" v-particle><mk-reaction-icon reaction="love"/></button>
|
||||||
@ -36,22 +36,10 @@ export default Vue.extend({
|
|||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
|
|
||||||
compact: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
|
|
||||||
cb: {
|
cb: {
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
|
|
||||||
big: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
|
|
||||||
showFocus: {
|
showFocus: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
@ -115,7 +103,7 @@ export default Vue.extend({
|
|||||||
const width = popover.offsetWidth;
|
const width = popover.offsetWidth;
|
||||||
const height = popover.offsetHeight;
|
const height = popover.offsetHeight;
|
||||||
|
|
||||||
if (this.compact) {
|
if (this.$root.isMobile) {
|
||||||
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
||||||
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
||||||
popover.style.left = (x - (width / 2)) + 'px';
|
popover.style.left = (x - (width / 2)) + 'px';
|
||||||
@ -210,9 +198,7 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
$border-color = rgba(27, 31, 35, 0.15)
|
.rdfaahpb
|
||||||
|
|
||||||
.mk-reaction-picker
|
|
||||||
position initial
|
position initial
|
||||||
|
|
||||||
> .backdrop
|
> .backdrop
|
||||||
@ -230,41 +216,12 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
position absolute
|
position absolute
|
||||||
z-index 10001
|
z-index 10001
|
||||||
background $bgcolor
|
background $bgcolor
|
||||||
border 1px solid $border-color
|
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||||
transform scale(0.5)
|
transform scale(0.5)
|
||||||
opacity 0
|
opacity 0
|
||||||
|
|
||||||
$balloon-size = 16px
|
&.isMobile
|
||||||
|
|
||||||
&:not(.compact)
|
|
||||||
margin-top $balloon-size
|
|
||||||
transform-origin center -($balloon-size)
|
|
||||||
|
|
||||||
&:before
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top -($balloon-size * 2)
|
|
||||||
left s('calc(50% - %s)', $balloon-size)
|
|
||||||
border-top solid $balloon-size transparent
|
|
||||||
border-left solid $balloon-size transparent
|
|
||||||
border-right solid $balloon-size transparent
|
|
||||||
border-bottom solid $balloon-size $border-color
|
|
||||||
|
|
||||||
&:after
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top -($balloon-size * 2) + 1.5px
|
|
||||||
left s('calc(50% - %s)', $balloon-size)
|
|
||||||
border-top solid $balloon-size transparent
|
|
||||||
border-left solid $balloon-size transparent
|
|
||||||
border-right solid $balloon-size transparent
|
|
||||||
border-bottom solid $balloon-size $bgcolor
|
|
||||||
|
|
||||||
&.big
|
|
||||||
> div
|
> div
|
||||||
width 280px
|
width 280px
|
||||||
|
|
||||||
@ -274,13 +231,30 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
font-size 28px
|
font-size 28px
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
|
|
||||||
|
&:not(.isMobile)
|
||||||
|
$arrow-size = 16px
|
||||||
|
|
||||||
|
margin-top $arrow-size
|
||||||
|
transform-origin center -($arrow-size)
|
||||||
|
|
||||||
|
&:before
|
||||||
|
content ""
|
||||||
|
display block
|
||||||
|
position absolute
|
||||||
|
top -($arrow-size * 2)
|
||||||
|
left s('calc(50% - %s)', $arrow-size)
|
||||||
|
border-top solid $arrow-size transparent
|
||||||
|
border-left solid $arrow-size transparent
|
||||||
|
border-right solid $arrow-size transparent
|
||||||
|
border-bottom solid $arrow-size $bgcolor
|
||||||
|
|
||||||
> p
|
> p
|
||||||
display block
|
display block
|
||||||
margin 0
|
margin 0
|
||||||
padding 8px 10px
|
padding 8px 10px
|
||||||
font-size 14px
|
font-size 14px
|
||||||
color var(--popupFg)
|
color var(--popupFg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> div
|
> div
|
||||||
padding 4px
|
padding 4px
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<span class="visibility" v-if="note.visibility != 'public'">
|
<span class="visibility" v-if="note.visibility != 'public'">
|
||||||
<fa v-if="note.visibility == 'home'" icon="home"/>
|
<fa v-if="note.visibility == 'home'" icon="home"/>
|
||||||
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
<fa v-if="note.visibility == 'followers'" icon="unlock"/>
|
||||||
<fa v-if="note.visibility == 'specified'" icon="lock"/>
|
<fa v-if="note.visibility == 'specified'" icon="envelope"/>
|
||||||
</span>
|
</span>
|
||||||
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
<span class="localOnly" v-if="note.localOnly == true"><fa icon="heart"/></span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<span slot="prefix">@</span>
|
<span slot="prefix">@</span>
|
||||||
<span slot="suffix">@{{ host }}</span>
|
<span slot="suffix">@{{ host }}</span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
<ui-input v-model="password" type="password" required styl="fill">
|
<ui-input v-model="password" type="password" :with-password-toggle="true" required styl="fill">
|
||||||
<span>{{ $t('password') }}</span>
|
<span>{{ $t('password') }}</span>
|
||||||
<span slot="prefix"><fa icon="lock"/></span>
|
<span slot="prefix"><fa icon="lock"/></span>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
|
@ -1,99 +1,104 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="nicnklzforebnpfgasiypmpdaaglujqm">
|
<ui-card>
|
||||||
<label>
|
<div slot="title"><fa icon="palette"/> {{ $t('theme') }}</div>
|
||||||
<span><fa :icon="faSun"/> {{ $t('light-theme') }}</span>
|
<section class="nicnklzforebnpfgasiypmpdaaglujqm fit-top">
|
||||||
<ui-select v-model="light" :placeholder="$t('light-theme')">
|
<label>
|
||||||
<optgroup :label="$t('light-themes')">
|
<ui-select v-model="light" :placeholder="$t('light-theme')">
|
||||||
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<span slot="label"><fa :icon="faSun"/> {{ $t('light-theme') }}</span>
|
||||||
</optgroup>
|
<optgroup :label="$t('light-themes')">
|
||||||
<optgroup :label="$t('dark-themes')">
|
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
</optgroup>
|
||||||
</optgroup>
|
<optgroup :label="$t('dark-themes')">
|
||||||
</ui-select>
|
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
</label>
|
</optgroup>
|
||||||
|
</ui-select>
|
||||||
|
</label>
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
<span><fa :icon="faMoon"/> {{ $t('dark-theme') }}</span>
|
<ui-select v-model="dark" :placeholder="$t('dark-theme')">
|
||||||
<ui-select v-model="dark" :placeholder="$t('dark-theme')">
|
<span slot="label"><fa :icon="faMoon"/> {{ $t('dark-theme') }}</span>
|
||||||
<optgroup :label="$t('dark-themes')">
|
<optgroup :label="$t('dark-themes')">
|
||||||
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<option v-for="x in darkThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
<optgroup :label="$t('light-themes')">
|
<optgroup :label="$t('light-themes')">
|
||||||
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<option v-for="x in lightThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
</ui-select>
|
</ui-select>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<details class="creator">
|
<a href="https://assets.msky.cafe/theme/list" target="_blank">{{ $t('find-more-theme') }}</a>
|
||||||
<summary><fa icon="palette"/> {{ $t('create-a-theme') }}</summary>
|
|
||||||
<div>
|
|
||||||
<span>{{ $t('base-theme') }}:</span>
|
|
||||||
<ui-radio v-model="myThemeBase" value="light">{{ $t('base-theme-light') }}</ui-radio>
|
|
||||||
<ui-radio v-model="myThemeBase" value="dark">{{ $t('base-theme-dark') }}</ui-radio>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<ui-input v-model="myThemeName">
|
|
||||||
<span>{{ $t('theme-name') }}</span>
|
|
||||||
</ui-input>
|
|
||||||
<ui-textarea v-model="myThemeDesc">
|
|
||||||
<span>{{ $t('desc') }}</span>
|
|
||||||
</ui-textarea>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div style="padding-bottom:8px;">{{ $t('primary-color') }}:</div>
|
|
||||||
<color-picker v-model="myThemePrimary"/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div style="padding-bottom:8px;">{{ $t('secondary-color') }}:</div>
|
|
||||||
<color-picker v-model="myThemeSecondary"/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div style="padding-bottom:8px;">{{ $t('text-color') }}:</div>
|
|
||||||
<color-picker v-model="myThemeText"/>
|
|
||||||
</div>
|
|
||||||
<ui-button @click="preview()"><fa icon="eye"/> {{ $t('preview-created-theme') }}</ui-button>
|
|
||||||
<ui-button primary @click="gen()"><fa :icon="['far', 'save']"/> {{ $t('save-created-theme') }}</ui-button>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
<details class="creator">
|
||||||
<summary><fa icon="download"/> {{ $t('install-a-theme') }}</summary>
|
<summary><fa icon="palette"/> {{ $t('create-a-theme') }}</summary>
|
||||||
<ui-button @click="import_()"><fa icon="file-import"/> {{ $t('import') }}</ui-button>
|
<div>
|
||||||
<input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/>
|
<span>{{ $t('base-theme') }}:</span>
|
||||||
<p>{{ $t('import-by-code') }}:</p>
|
<ui-radio v-model="myThemeBase" value="light">{{ $t('base-theme-light') }}</ui-radio>
|
||||||
<ui-textarea v-model="installThemeCode">
|
<ui-radio v-model="myThemeBase" value="dark">{{ $t('base-theme-dark') }}</ui-radio>
|
||||||
<span>{{ $t('theme-code') }}</span>
|
</div>
|
||||||
</ui-textarea>
|
<div>
|
||||||
<ui-button @click="() => install(this.installThemeCode)"><fa icon="check"/> {{ $t('install') }}</ui-button>
|
<ui-input v-model="myThemeName">
|
||||||
</details>
|
<span>{{ $t('theme-name') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-textarea v-model="myThemeDesc">
|
||||||
|
<span>{{ $t('desc') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="padding-bottom:8px;">{{ $t('primary-color') }}:</div>
|
||||||
|
<color-picker v-model="myThemePrimary"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="padding-bottom:8px;">{{ $t('secondary-color') }}:</div>
|
||||||
|
<color-picker v-model="myThemeSecondary"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div style="padding-bottom:8px;">{{ $t('text-color') }}:</div>
|
||||||
|
<color-picker v-model="myThemeText"/>
|
||||||
|
</div>
|
||||||
|
<ui-button @click="preview()"><fa icon="eye"/> {{ $t('preview-created-theme') }}</ui-button>
|
||||||
|
<ui-button primary @click="gen()"><fa :icon="['far', 'save']"/> {{ $t('save-created-theme') }}</ui-button>
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><fa icon="folder-open"/> {{ $t('manage-themes') }}</summary>
|
<summary><fa icon="download"/> {{ $t('install-a-theme') }}</summary>
|
||||||
<ui-select v-model="selectedThemeId" :placeholder="$t('select-theme')">
|
<ui-button @click="import_()"><fa icon="file-import"/> {{ $t('import') }}</ui-button>
|
||||||
<optgroup :label="$t('builtin-themes')">
|
<input ref="file" type="file" accept=".misskeytheme" style="display:none;" @change="onUpdateImportFile"/>
|
||||||
<option v-for="x in builtinThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
<p>{{ $t('import-by-code') }}:</p>
|
||||||
</optgroup>
|
<ui-textarea v-model="installThemeCode">
|
||||||
<optgroup :label="$t('my-themes')">
|
|
||||||
<option v-for="x in installedThemes.filter(t => t.author == this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
|
|
||||||
</optgroup>
|
|
||||||
<optgroup :label="$t('installed-themes')">
|
|
||||||
<option v-for="x in installedThemes.filter(t => t.author != this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
|
|
||||||
</optgroup>
|
|
||||||
</ui-select>
|
|
||||||
<template v-if="selectedTheme">
|
|
||||||
<ui-input readonly :value="selectedTheme.author">
|
|
||||||
<span>{{ $t('author') }}</span>
|
|
||||||
</ui-input>
|
|
||||||
<ui-textarea v-if="selectedTheme.desc" readonly :value="selectedTheme.desc">
|
|
||||||
<span>{{ $t('desc') }}</span>
|
|
||||||
</ui-textarea>
|
|
||||||
<ui-textarea readonly :value="selectedThemeCode">
|
|
||||||
<span>{{ $t('theme-code') }}</span>
|
<span>{{ $t('theme-code') }}</span>
|
||||||
</ui-textarea>
|
</ui-textarea>
|
||||||
<ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export"><fa icon="box"/> {{ $t('export') }}</ui-button>
|
<ui-button @click="() => install(this.installThemeCode)"><fa icon="check"/> {{ $t('install') }}</ui-button>
|
||||||
<ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="['far', 'trash-alt']"/> {{ $t('uninstall') }}</ui-button>
|
</details>
|
||||||
</template>
|
|
||||||
</details>
|
<details>
|
||||||
</div>
|
<summary><fa icon="folder-open"/> {{ $t('manage-themes') }}</summary>
|
||||||
|
<ui-select v-model="selectedThemeId" :placeholder="$t('select-theme')">
|
||||||
|
<optgroup :label="$t('builtin-themes')">
|
||||||
|
<option v-for="x in builtinThemes" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('my-themes')">
|
||||||
|
<option v-for="x in installedThemes.filter(t => t.author == this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
|
</optgroup>
|
||||||
|
<optgroup :label="$t('installed-themes')">
|
||||||
|
<option v-for="x in installedThemes.filter(t => t.author != this.$store.state.i.username)" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||||
|
</optgroup>
|
||||||
|
</ui-select>
|
||||||
|
<template v-if="selectedTheme">
|
||||||
|
<ui-input readonly :value="selectedTheme.author">
|
||||||
|
<span>{{ $t('author') }}</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-textarea v-if="selectedTheme.desc" readonly :value="selectedTheme.desc">
|
||||||
|
<span>{{ $t('desc') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
<ui-textarea readonly tall :value="selectedThemeCode">
|
||||||
|
<span>{{ $t('theme-code') }}</span>
|
||||||
|
</ui-textarea>
|
||||||
|
<ui-button @click="export_()" link :download="`${selectedTheme.name}.misskeytheme`" ref="export"><fa icon="box"/> {{ $t('export') }}</ui-button>
|
||||||
|
<ui-button @click="uninstall()" v-if="!builtinThemes.some(t => t.id == selectedTheme.id)"><fa :icon="['far', 'trash-alt']"/> {{ $t('uninstall') }}</ui-button>
|
||||||
|
</template>
|
||||||
|
</details>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@ -331,8 +336,13 @@ export default Vue.extend({
|
|||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.nicnklzforebnpfgasiypmpdaaglujqm
|
.nicnklzforebnpfgasiypmpdaaglujqm
|
||||||
|
> a
|
||||||
|
display block
|
||||||
|
margin-top -16px
|
||||||
|
margin-bottom 16px
|
||||||
|
|
||||||
> details
|
> details
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> summary
|
> summary
|
||||||
padding 16px 0
|
padding 16px 0
|
||||||
@ -343,5 +353,5 @@ export default Vue.extend({
|
|||||||
> .creator
|
> .creator
|
||||||
> div
|
> div
|
||||||
padding 16px 0
|
padding 16px 0
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
</style>
|
</style>
|
||||||
|
@ -41,7 +41,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> section
|
> section
|
||||||
padding 20px 16px
|
padding 20px 16px
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
@media (min-width 500px)
|
@media (min-width 500px)
|
||||||
padding 32px
|
padding 32px
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="vnxwkwuf" :class="{ inputs, noGrow }">
|
<div class="vnxwkwuf" :class="{ inputs, noGrow }" :data-children-count="children">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -21,6 +21,16 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
children: 0
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.children = this.$slots.default.length;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@ -48,4 +58,19 @@ export default Vue.extend({
|
|||||||
> *:not(:last-child)
|
> *:not(:last-child)
|
||||||
margin-right 16px !important
|
margin-right 16px !important
|
||||||
|
|
||||||
|
&[data-children-count="3"]
|
||||||
|
@media (max-width 600px)
|
||||||
|
display block
|
||||||
|
|
||||||
|
> *
|
||||||
|
display block
|
||||||
|
width 100% !important
|
||||||
|
margin 16px 0 !important
|
||||||
|
|
||||||
|
&:first-child
|
||||||
|
margin-top 0 !important
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-bottom 0 !important
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -39,6 +39,12 @@
|
|||||||
</template>
|
</template>
|
||||||
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
|
<div class="suffix" ref="suffix"><slot name="suffix"></slot></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="toggle" v-if="withPasswordToggle">
|
||||||
|
<a @click='togglePassword'>
|
||||||
|
<span v-if="type == 'password'"><fa :icon="['fa', 'eye']"/> {{ $t('@.show-password') }}</span>
|
||||||
|
<span v-if="type != 'password'"><fa :icon="['far', 'eye-slash']"/> {{ $t('@.hide-password') }}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
<div class="desc"><slot name="desc"></slot></div>
|
<div class="desc"><slot name="desc"></slot></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -97,6 +103,11 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
withPasswordToggle: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
inline: {
|
inline: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
@ -178,6 +189,13 @@ export default Vue.extend({
|
|||||||
focus() {
|
focus() {
|
||||||
this.$refs.input.focus();
|
this.$refs.input.focus();
|
||||||
},
|
},
|
||||||
|
togglePassword() {
|
||||||
|
if (this.type == 'password') {
|
||||||
|
this.type = 'text'
|
||||||
|
} else {
|
||||||
|
this.type = 'password'
|
||||||
|
}
|
||||||
|
},
|
||||||
chooseFile() {
|
chooseFile() {
|
||||||
this.$refs.file.click();
|
this.$refs.file.click();
|
||||||
},
|
},
|
||||||
@ -356,6 +374,17 @@ root(fill)
|
|||||||
if fill
|
if fill
|
||||||
padding-right 12px
|
padding-right 12px
|
||||||
|
|
||||||
|
> .toggle
|
||||||
|
cursor pointer
|
||||||
|
padding-left 0.5em
|
||||||
|
font-size 0.7em
|
||||||
|
opacity 0.7
|
||||||
|
text-align left
|
||||||
|
|
||||||
|
> a
|
||||||
|
color var(--inputLabel)
|
||||||
|
text-decoration none
|
||||||
|
|
||||||
> .desc
|
> .desc
|
||||||
margin 6px 0
|
margin 6px 0
|
||||||
font-size 13px
|
font-size 13px
|
||||||
|
@ -25,11 +25,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
model: {
|
model: {
|
||||||
type: String,
|
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
value: {
|
value: {
|
||||||
type: String,
|
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
disabled: {
|
disabled: {
|
||||||
@ -66,10 +64,10 @@ export default Vue.extend({
|
|||||||
|
|
||||||
&.checked
|
&.checked
|
||||||
> .button
|
> .button
|
||||||
border-color var(--primary)
|
border-color var(--radioActive)
|
||||||
|
|
||||||
&:after
|
&:after
|
||||||
background-color var(--primary)
|
background-color var(--radioActive)
|
||||||
transform scale(1)
|
transform scale(1)
|
||||||
opacity 1
|
opacity 1
|
||||||
|
|
||||||
|
@ -77,11 +77,11 @@ export default Vue.extend({
|
|||||||
|
|
||||||
&.checked
|
&.checked
|
||||||
> .button
|
> .button
|
||||||
background-color var(--primaryAlpha04)
|
background-color var(--switchActiveTrack)
|
||||||
border-color var(--primaryAlpha04)
|
border-color var(--switchActiveTrack)
|
||||||
|
|
||||||
> *
|
> *
|
||||||
background-color var(--primary)
|
background-color var(--switchActive)
|
||||||
transform translateX(14px)
|
transform translateX(14px)
|
||||||
|
|
||||||
> input
|
> input
|
||||||
|
@ -8,16 +8,16 @@
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="mk-url-preview">
|
<div v-else class="mk-url-preview">
|
||||||
<a :class="{ mini }" :href="url" target="_blank" :title="url" v-if="!fetching">
|
<a :class="{ mini, compact }" :href="url" target="_blank" :title="url" v-if="!fetching">
|
||||||
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
<div class="thumbnail" v-if="thumbnail" :style="`background-image: url(${thumbnail})`"></div>
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>{{ title }}</h1>
|
<h1 :title="title">{{ title }}</h1>
|
||||||
</header>
|
</header>
|
||||||
<p v-if="description">{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p>
|
<p v-if="description" :title="description">{{ description.length > 85 ? description.slice(0, 85) + '…' : description }}</p>
|
||||||
<footer>
|
<footer>
|
||||||
<img class="icon" v-if="icon" :src="icon"/>
|
<img class="icon" v-if="icon" :src="icon"/>
|
||||||
<p>{{ sitename }}</p>
|
<p :title="sitename">{{ sitename }}</p>
|
||||||
</footer>
|
</footer>
|
||||||
</article>
|
</article>
|
||||||
</a>
|
</a>
|
||||||
@ -120,6 +120,12 @@ export default Vue.extend({
|
|||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
compact: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
|
||||||
mini: {
|
mini: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
@ -207,7 +213,7 @@ export default Vue.extend({
|
|||||||
> a
|
> a
|
||||||
display block
|
display block
|
||||||
font-size 14px
|
font-size 14px
|
||||||
border solid 1px var(--urlPreviewBorder)
|
border solid var(--lineWidth) var(--urlPreviewBorder)
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
overflow hidden
|
overflow hidden
|
||||||
|
|
||||||
@ -302,6 +308,23 @@ export default Vue.extend({
|
|||||||
width 12px
|
width 12px
|
||||||
height 12px
|
height 12px
|
||||||
|
|
||||||
|
&.compact
|
||||||
|
> .thumbnail
|
||||||
|
position: absolute
|
||||||
|
width 56px
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
> article
|
||||||
|
left 56px
|
||||||
|
width calc(100% - 56px)
|
||||||
|
padding 4px
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 2px
|
||||||
|
|
||||||
|
> footer
|
||||||
|
margin-top 2px
|
||||||
|
|
||||||
&.mini
|
&.mini
|
||||||
font-size 10px
|
font-size 10px
|
||||||
|
|
||||||
@ -325,4 +348,27 @@ export default Vue.extend({
|
|||||||
width 12px
|
width 12px
|
||||||
height 12px
|
height 12px
|
||||||
|
|
||||||
|
&.compact
|
||||||
|
> .thumbnail
|
||||||
|
position: absolute
|
||||||
|
width 56px
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
> article
|
||||||
|
left 56px
|
||||||
|
width calc(100% - 56px)
|
||||||
|
padding 4px
|
||||||
|
|
||||||
|
> header
|
||||||
|
margin-bottom 2px
|
||||||
|
|
||||||
|
> footer
|
||||||
|
margin-top 2px
|
||||||
|
|
||||||
|
&.compact
|
||||||
|
> article
|
||||||
|
> header h1, p, footer
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-visibility-chooser">
|
<div class="gqyayizv">
|
||||||
<div class="backdrop" ref="backdrop" @click="close"></div>
|
<div class="backdrop" ref="backdrop" @click="close"></div>
|
||||||
<div class="popover" :class="{ compact }" ref="popover">
|
<div class="popover" :class="{ isMobile: $root.isMobile }" ref="popover">
|
||||||
<div @click="choose('public')" :class="{ active: v == 'public' }">
|
<div @click="choose('public')" :class="{ active: v == 'public' }">
|
||||||
<div><fa icon="globe"/></div>
|
<div><fa icon="globe"/></div>
|
||||||
<div>
|
<div>
|
||||||
@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div @click="choose('specified')" :class="{ active: v == 'specified' }">
|
<div @click="choose('specified')" :class="{ active: v == 'specified' }">
|
||||||
<div><fa icon="lock"/></div>
|
<div><fa icon="envelope"/></div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ $t('specified') }}</span>
|
<span>{{ $t('specified') }}</span>
|
||||||
<span>{{ $t('specified-desc') }}</span>
|
<span>{{ $t('specified-desc') }}</span>
|
||||||
@ -59,10 +59,18 @@ import * as anime from 'animejs';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('common/views/components/visibility-chooser.vue'),
|
i18n: i18n('common/views/components/visibility-chooser.vue'),
|
||||||
props: ['source', 'compact'],
|
props: {
|
||||||
|
source: {
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
currentVisibility: {
|
||||||
|
type: String,
|
||||||
|
required: false
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : this.$store.state.settings.defaultNoteVisibility
|
v: this.$store.state.settings.rememberNoteVisibility ? (this.$store.state.device.visibility || this.$store.state.settings.defaultNoteVisibility) : (this.currentVisibility || this.$store.state.settings.defaultNoteVisibility)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -76,7 +84,7 @@ export default Vue.extend({
|
|||||||
let left;
|
let left;
|
||||||
let top;
|
let top;
|
||||||
|
|
||||||
if (this.compact) {
|
if (this.$root.isMobile) {
|
||||||
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
const x = rect.left + window.pageXOffset + (this.source.offsetWidth / 2);
|
||||||
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
const y = rect.top + window.pageYOffset + (this.source.offsetHeight / 2);
|
||||||
left = (x - (width / 2));
|
left = (x - (width / 2));
|
||||||
@ -142,9 +150,7 @@ export default Vue.extend({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
$border-color = rgba(27, 31, 35, 0.15)
|
.gqyayizv
|
||||||
|
|
||||||
.mk-visibility-chooser
|
|
||||||
position initial
|
position initial
|
||||||
|
|
||||||
> .backdrop
|
> .backdrop
|
||||||
@ -164,39 +170,27 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
width 240px
|
width 240px
|
||||||
padding 8px 0
|
padding 8px 0
|
||||||
background $bgcolor
|
background $bgcolor
|
||||||
border 1px solid $border-color
|
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
box-shadow 0 3px 12px rgba(27, 31, 35, 0.15)
|
||||||
transform scale(0.5)
|
transform scale(0.5)
|
||||||
opacity 0
|
opacity 0
|
||||||
|
|
||||||
$balloon-size = 10px
|
&:not(.isMobile)
|
||||||
|
$arrow-size = 10px
|
||||||
|
|
||||||
&:not(.compact)
|
margin-top $arrow-size
|
||||||
margin-top $balloon-size
|
transform-origin center -($arrow-size)
|
||||||
transform-origin center -($balloon-size)
|
|
||||||
|
|
||||||
&:before
|
&:before
|
||||||
content ""
|
content ""
|
||||||
display block
|
display block
|
||||||
position absolute
|
position absolute
|
||||||
top -($balloon-size * 2)
|
top -($arrow-size * 2)
|
||||||
left s('calc(50% - %s)', $balloon-size)
|
left s('calc(50% - %s)', $arrow-size)
|
||||||
border-top solid $balloon-size transparent
|
border-top solid $arrow-size transparent
|
||||||
border-left solid $balloon-size transparent
|
border-left solid $arrow-size transparent
|
||||||
border-right solid $balloon-size transparent
|
border-right solid $arrow-size transparent
|
||||||
border-bottom solid $balloon-size $border-color
|
border-bottom solid $arrow-size $bgcolor
|
||||||
|
|
||||||
&:after
|
|
||||||
content ""
|
|
||||||
display block
|
|
||||||
position absolute
|
|
||||||
top -($balloon-size * 2) + 1.5px
|
|
||||||
left s('calc(50% - %s)', $balloon-size)
|
|
||||||
border-top solid $balloon-size transparent
|
|
||||||
border-left solid $balloon-size transparent
|
|
||||||
border-right solid $balloon-size transparent
|
|
||||||
border-bottom solid $balloon-size $bgcolor
|
|
||||||
|
|
||||||
> div
|
> div
|
||||||
display flex
|
display flex
|
||||||
@ -235,4 +229,5 @@ $border-color = rgba(27, 31, 35, 0.15)
|
|||||||
|
|
||||||
> span:last-child:not(:first-child)
|
> span:last-child:not(:first-child)
|
||||||
opacity 0.6
|
opacity 0.6
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -72,7 +72,7 @@ export default define({
|
|||||||
color var(--inputText)
|
color var(--inputText)
|
||||||
background var(--face)
|
background var(--face)
|
||||||
border none
|
border none
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
border-radius 0
|
border-radius 0
|
||||||
|
|
||||||
> button
|
> button
|
||||||
|
@ -77,7 +77,7 @@ export default define({
|
|||||||
display block
|
display block
|
||||||
padding 4px 0
|
padding 4px 0
|
||||||
color var(--text)
|
color var(--text)
|
||||||
border-bottom dashed 1px var(--faceDivider)
|
border-bottom dashed var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&:last-child
|
&:last-child
|
||||||
border-bottom none
|
border-bottom none
|
||||||
|
@ -84,6 +84,7 @@ export default define({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mkw-tips
|
.mkw-tips
|
||||||
overflow visible !important
|
overflow visible !important
|
||||||
|
opacity 0.8
|
||||||
|
|
||||||
> p
|
> p
|
||||||
display block
|
display block
|
||||||
@ -91,7 +92,7 @@ export default define({
|
|||||||
padding 0 12px
|
padding 0 12px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
color #999
|
color var(--text)
|
||||||
|
|
||||||
> [data-icon]
|
> [data-icon]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -102,7 +103,7 @@ export default define({
|
|||||||
margin 0 2px
|
margin 0 2px
|
||||||
font-size 1em
|
font-size 1em
|
||||||
font-family inherit
|
font-family inherit
|
||||||
border solid 1px #999
|
border solid 1px var(--text)
|
||||||
border-radius 2px
|
border-radius 2px
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -24,6 +24,7 @@ p
|
|||||||
padding 0 12px
|
padding 0 12px
|
||||||
text-align center
|
text-align center
|
||||||
font-size 0.7em
|
font-size 0.7em
|
||||||
color #aaa
|
color var(--text)
|
||||||
|
opacity 0.8
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -151,7 +151,7 @@ export default Vue.extend({
|
|||||||
font-weight bold
|
font-weight bold
|
||||||
color var(--faceHeaderText)
|
color var(--faceHeaderText)
|
||||||
background var(--faceHeader)
|
background var(--faceHeader)
|
||||||
box-shadow 0 1px rgba(#000, 0.07)
|
box-shadow 0 var(--lineWidth) rgba(#000, 0.07)
|
||||||
|
|
||||||
> [data-icon]
|
> [data-icon]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
@ -199,11 +199,11 @@ export default Vue.extend({
|
|||||||
color var(--calendarSaturdayOrSunday)
|
color var(--calendarSaturdayOrSunday)
|
||||||
|
|
||||||
&[data-today]
|
&[data-today]
|
||||||
box-shadow 0 0 0 1px var(--calendarWeek) inset
|
box-shadow 0 0 0 var(--lineWidth) var(--calendarWeek) inset
|
||||||
border-radius 6px
|
border-radius 6px
|
||||||
|
|
||||||
&[data-is-donichi]
|
&[data-is-donichi]
|
||||||
box-shadow 0 0 0 1px var(--calendarSaturdayOrSunday) inset
|
box-shadow 0 0 0 var(--lineWidth) var(--calendarSaturdayOrSunday) inset
|
||||||
|
|
||||||
&.day
|
&.day
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
@ -46,7 +46,7 @@ export default Vue.extend({
|
|||||||
&.divider
|
&.divider
|
||||||
margin-top $padding
|
margin-top $padding
|
||||||
padding-top $padding
|
padding-top $padding
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&.nest
|
&.nest
|
||||||
> p
|
> p
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<span class="visibility" v-if="appearNote.visibility != 'public'">
|
<span class="visibility" v-if="appearNote.visibility != 'public'">
|
||||||
<fa v-if="appearNote.visibility == 'home'" icon="home"/>
|
<fa v-if="appearNote.visibility == 'home'" icon="home"/>
|
||||||
<fa v-if="appearNote.visibility == 'followers'" icon="unlock"/>
|
<fa v-if="appearNote.visibility == 'followers'" icon="unlock"/>
|
||||||
<fa v-if="appearNote.visibility == 'specified'" icon="lock"/>
|
<fa v-if="appearNote.visibility == 'specified'" icon="envelope"/>
|
||||||
</span>
|
</span>
|
||||||
<span class="localOnly" v-if="appearNote.localOnly == true"><fa icon="heart"/></span>
|
<span class="localOnly" v-if="appearNote.localOnly == true"><fa icon="heart"/></span>
|
||||||
</div>
|
</div>
|
||||||
@ -70,7 +70,7 @@
|
|||||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton" @click="renote()" :title="$t('renote')">
|
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton" @click="renote()" :title="$t('renote')">
|
||||||
<fa icon="retweet"/>
|
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-else class="inhibitedButton">
|
<button v-else class="inhibitedButton">
|
||||||
<fa icon="ban"/>
|
<fa icon="ban"/>
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/>
|
<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/>
|
||||||
<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> 位置情報</a>
|
<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> 位置情報</a>
|
||||||
<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote" :mini="mini"/></div>
|
<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote" :mini="mini"/></div>
|
||||||
<mk-url-preview v-for="url in urls" :url="url" :key="url" :mini="mini"/>
|
<mk-url-preview v-for="url in urls" :url="url" :key="url" :mini="mini" :compact="compact"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer v-if="appearNote.deletedAt == null">
|
<footer v-if="appearNote.deletedAt == null">
|
||||||
@ -48,7 +48,7 @@
|
|||||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton" @click="renote()" :title="$t('renote')">
|
<button v-if="['public', 'home'].includes(appearNote.visibility)" class="renoteButton" @click="renote()" :title="$t('renote')">
|
||||||
<fa icon="retweet"/>
|
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-else class="inhibitedButton">
|
<button v-else class="inhibitedButton">
|
||||||
<fa icon="ban"/>
|
<fa icon="ban"/>
|
||||||
@ -102,6 +102,11 @@ export default Vue.extend({
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
compact: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
mini: {
|
mini: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
@ -140,7 +145,7 @@ export default Vue.extend({
|
|||||||
margin 0
|
margin 0
|
||||||
padding 0
|
padding 0
|
||||||
background var(--face)
|
background var(--face)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&.mini
|
&.mini
|
||||||
font-size 13px
|
font-size 13px
|
||||||
@ -261,7 +266,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> *
|
> *
|
||||||
padding 16px
|
padding 16px
|
||||||
border dashed 1px var(--quoteBorder)
|
border dashed var(--lineWidth) var(--quoteBorder)
|
||||||
border-radius 8px
|
border-radius 8px
|
||||||
|
|
||||||
> footer
|
> footer
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
<component :is="!$store.state.device.reduceMotion ? 'transition-group' : 'div'" name="mk-notes" class="notes transition" tag="div" ref="notes">
|
<component :is="!$store.state.device.reduceMotion ? 'transition-group' : 'div'" name="mk-notes" class="notes transition" tag="div" ref="notes">
|
||||||
<template v-for="(note, i) in _notes">
|
<template v-for="(note, i) in _notes">
|
||||||
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)" ref="note"/>
|
<x-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)" :compact="true" ref="note"/>
|
||||||
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
||||||
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
||||||
<span><fa icon="angle-down"/>{{ _notes[i + 1]._datetext }}</span>
|
<span><fa icon="angle-down"/>{{ _notes[i + 1]._datetext }}</span>
|
||||||
@ -209,7 +209,7 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -233,7 +233,7 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
color #ccc
|
color #ccc
|
||||||
background var(--face)
|
background var(--face)
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
border-bottom-left-radius 6px
|
border-bottom-left-radius 6px
|
||||||
border-bottom-right-radius 6px
|
border-bottom-right-radius 6px
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ export default Vue.extend({
|
|||||||
padding 16px
|
padding 16px
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
font-size 12px
|
font-size 12px
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&:last-child
|
&:last-child
|
||||||
border-bottom none
|
border-bottom none
|
||||||
@ -332,7 +332,7 @@ export default Vue.extend({
|
|||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -345,7 +345,7 @@ export default Vue.extend({
|
|||||||
width 100%
|
width 100%
|
||||||
padding 16px
|
padding 16px
|
||||||
color var(--text)
|
color var(--text)
|
||||||
border-top solid 1px rgba(#000, 0.05)
|
border-top solid var(--lineWidth) rgba(#000, 0.05)
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
background rgba(#000, 0.025)
|
background rgba(#000, 0.025)
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
<span v-if="visibility === 'public'"><fa icon="globe"/></span>
|
<span v-if="visibility === 'public'"><fa icon="globe"/></span>
|
||||||
<span v-if="visibility === 'home'"><fa icon="home"/></span>
|
<span v-if="visibility === 'home'"><fa icon="home"/></span>
|
||||||
<span v-if="visibility === 'followers'"><fa icon="unlock"/></span>
|
<span v-if="visibility === 'followers'"><fa icon="unlock"/></span>
|
||||||
<span v-if="visibility === 'specified'"><fa icon="lock"/></span>
|
<span v-if="visibility === 'specified'"><fa icon="envelope"/></span>
|
||||||
</button>
|
</button>
|
||||||
<p class="text-count" :class="{ over: trimmedLength(text) > maxNoteTextLength }">{{ maxNoteTextLength - trimmedLength(text) }}</p>
|
<p class="text-count" :class="{ over: trimmedLength(text) > maxNoteTextLength }">{{ maxNoteTextLength - trimmedLength(text) }}</p>
|
||||||
<ui-button primary :wait="posting" class="submit" :disabled="!canPost" @click="post">
|
<ui-button primary :wait="posting" class="submit" :disabled="!canPost" @click="post">
|
||||||
@ -77,6 +77,7 @@ import extractMentions from '../../../../../misc/extract-mentions';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('desktop/views/components/post-form.vue'),
|
i18n: i18n('desktop/views/components/post-form.vue'),
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
XDraggable,
|
XDraggable,
|
||||||
MkVisibilityChooser
|
MkVisibilityChooser
|
||||||
@ -197,11 +198,11 @@ export default Vue.extend({
|
|||||||
const mention = x.host ? `@${x.username}@${toASCII(x.host)}` : `@${x.username}`;
|
const mention = x.host ? `@${x.username}@${toASCII(x.host)}` : `@${x.username}`;
|
||||||
|
|
||||||
// 自分は除外
|
// 自分は除外
|
||||||
if (this.$store.state.i.username == x.username && x.host == null) return;
|
if (this.$store.state.i.username == x.username && x.host == null) continue;
|
||||||
if (this.$store.state.i.username == x.username && x.host == host) return;
|
if (this.$store.state.i.username == x.username && x.host == host) continue;
|
||||||
|
|
||||||
// 重複は除外
|
// 重複は除外
|
||||||
if (this.text.indexOf(`${mention} `) != -1) return;
|
if (this.text.indexOf(`${mention} `) != -1) continue;
|
||||||
|
|
||||||
this.text += `${mention} `;
|
this.text += `${mention} `;
|
||||||
}
|
}
|
||||||
@ -221,6 +222,12 @@ 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(() => {
|
this.$nextTick(() => {
|
||||||
// 書きかけの投稿を復元
|
// 書きかけの投稿を復元
|
||||||
if (!this.instant && !this.mention) {
|
if (!this.instant && !this.mention) {
|
||||||
@ -381,7 +388,8 @@ export default Vue.extend({
|
|||||||
|
|
||||||
setVisibility() {
|
setVisibility() {
|
||||||
const w = this.$root.new(MkVisibilityChooser, {
|
const w = this.$root.new(MkVisibilityChooser, {
|
||||||
source: this.$refs.visibilityButton
|
source: this.$refs.visibilityButton,
|
||||||
|
currentVisibility: this.visibility
|
||||||
});
|
});
|
||||||
w.$once('chosen', v => {
|
w.$once('chosen', v => {
|
||||||
this.applyVisibility(v);
|
this.applyVisibility(v);
|
||||||
|
@ -21,7 +21,14 @@ import i18n from '../../../i18n';
|
|||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('desktop/views/components/renote-form.vue'),
|
i18n: i18n('desktop/views/components/renote-form.vue'),
|
||||||
props: ['note'],
|
|
||||||
|
props: {
|
||||||
|
note: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
wait: false,
|
wait: false,
|
||||||
@ -29,6 +36,7 @@ export default Vue.extend({
|
|||||||
visibility: this.$store.state.settings.defaultNoteVisibility
|
visibility: this.$store.state.settings.defaultNoteVisibility
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
ok(v: string) {
|
ok(v: string) {
|
||||||
this.wait = true;
|
this.wait = true;
|
||||||
@ -44,9 +52,11 @@ export default Vue.extend({
|
|||||||
this.wait = false;
|
this.wait = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel() {
|
cancel() {
|
||||||
this.$emit('canceled');
|
this.$emit('canceled');
|
||||||
},
|
},
|
||||||
|
|
||||||
onQuote() {
|
onQuote() {
|
||||||
this.quote = true;
|
this.quote = true;
|
||||||
|
|
||||||
@ -54,6 +64,7 @@ export default Vue.extend({
|
|||||||
(this.$refs.form as any).focus();
|
(this.$refs.form as any).focus();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
onChildFormPosted() {
|
onChildFormPosted() {
|
||||||
this.$emit('posted');
|
this.$emit('posted');
|
||||||
}
|
}
|
||||||
|
@ -7,16 +7,16 @@
|
|||||||
<p>{{ $t('already-registered') }}</p>
|
<p>{{ $t('already-registered') }}</p>
|
||||||
<ui-button @click="unregister">{{ $t('unregister') }}</ui-button>
|
<ui-button @click="unregister">{{ $t('unregister') }}</ui-button>
|
||||||
</template>
|
</template>
|
||||||
<div v-if="data">
|
<div v-if="data && !$store.state.i.twoFactorEnabled">
|
||||||
<ol>
|
<ol>
|
||||||
<li>{{ $t('authenticator') }}<a href="https://support.google.com/accounts/answer/1066447" target="_blank">{{ $t('howtoinstall') }}</a></li>
|
<li>{{ $t('authenticator') }}<a href="https://support.google.com/accounts/answer/1066447" target="_blank">{{ $t('howtoinstall') }}</a></li>
|
||||||
<li>{{ $t('scan') }}<br><img :src="data.qr"></li>
|
<li>{{ $t('scan') }}<br><img :src="data.qr"></li>
|
||||||
<li>{{ $t('done') }}<br>
|
<li>{{ $t('done') }}<br>
|
||||||
<input type="number" v-model="token" class="ui">
|
<ui-input v-model="token">{{ $t('token') }}</ui-input>
|
||||||
<ui-button primary @click="submit">{{ $t('submit') }}</ui-button>
|
<ui-button primary @click="submit">{{ $t('submit') }}</ui-button>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="ui info"><p><fa icon="info-circle"/>{{ $t('info') }}</p></div>
|
<ui-info>{{ $t('info') }}</ui-info>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -19,13 +19,7 @@
|
|||||||
<x-integration-settings/>
|
<x-integration-settings/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ui-card class="theme" v-show="page == 'theme'">
|
<x-theme class="theme" v-show="page == 'theme'"/>
|
||||||
<div slot="title"><fa icon="palette"/> {{ $t('theme') }}</div>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<x-theme/>
|
|
||||||
</section>
|
|
||||||
</ui-card>
|
|
||||||
|
|
||||||
<ui-card class="web" v-show="page == 'web'">
|
<ui-card class="web" v-show="page == 'web'">
|
||||||
<div slot="title"><fa icon="sliders-h"/> {{ $t('behaviour') }}</div>
|
<div slot="title"><fa icon="sliders-h"/> {{ $t('behaviour') }}</div>
|
||||||
@ -86,8 +80,10 @@
|
|||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header>{{ $t('wallpaper') }}</header>
|
<header>{{ $t('wallpaper') }}</header>
|
||||||
<ui-button @click="updateWallpaper">{{ $t('choose-wallpaper') }}</ui-button>
|
<ui-horizon-group class="fit-bottom">
|
||||||
<ui-button @click="deleteWallpaper">{{ $t('delete-wallpaper') }}</ui-button>
|
<ui-button @click="updateWallpaper">{{ $t('choose-wallpaper') }}</ui-button>
|
||||||
|
<ui-button @click="deleteWallpaper">{{ $t('delete-wallpaper') }}</ui-button>
|
||||||
|
</ui-horizon-group>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<header>{{ $t('navbar-position') }}</header>
|
<header>{{ $t('navbar-position') }}</header>
|
||||||
@ -103,6 +99,12 @@
|
|||||||
<ui-switch v-model="useShadow">{{ $t('use-shadow') }}</ui-switch>
|
<ui-switch v-model="useShadow">{{ $t('use-shadow') }}</ui-switch>
|
||||||
<ui-switch v-model="roundedCorners">{{ $t('rounded-corners') }}</ui-switch>
|
<ui-switch v-model="roundedCorners">{{ $t('rounded-corners') }}</ui-switch>
|
||||||
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
||||||
|
<section>
|
||||||
|
<header>{{ $t('@.line-width') }}</header>
|
||||||
|
<ui-radio v-model="lineWidth" :value="0.5">{{ $t('@.line-width-thin') }}</ui-radio>
|
||||||
|
<ui-radio v-model="lineWidth" :value="1">{{ $t('@.line-width-normal') }}</ui-radio>
|
||||||
|
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
|
||||||
|
</section>
|
||||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }}</ui-switch>
|
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }}</ui-switch>
|
||||||
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
||||||
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
||||||
@ -135,7 +137,7 @@
|
|||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="games_reversi_showBoardLabels">{{ $t('@.show-reversi-board-labels') }}</ui-switch>
|
<ui-switch v-model="games_reversi_showBoardLabels">{{ $t('@.show-reversi-board-labels') }}</ui-switch>
|
||||||
<ui-switch v-model="games_reversi_useWhiteBlackStones">{{ $t('@.use-white-black-reversi-stones') }}</ui-switch>
|
<ui-switch v-model="games_reversi_useAvatarStones">{{ $t('@.use-avatar-reversi-stones') }}</ui-switch>
|
||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
|
|
||||||
@ -411,6 +413,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.dispatch('settings/set', { key: 'roundedCorners', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'roundedCorners', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
lineWidth: {
|
||||||
|
get() { return this.$store.state.device.lineWidth; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'lineWidth', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
fetchOnScroll: {
|
fetchOnScroll: {
|
||||||
get() { return this.$store.state.settings.fetchOnScroll; },
|
get() { return this.$store.state.settings.fetchOnScroll; },
|
||||||
set(value) { this.$store.dispatch('settings/set', { key: 'fetchOnScroll', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'fetchOnScroll', value }); }
|
||||||
@ -501,9 +508,9 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
games_reversi_useWhiteBlackStones: {
|
games_reversi_useAvatarStones: {
|
||||||
get() { return this.$store.state.settings.games.reversi.useWhiteBlackStones; },
|
get() { return this.$store.state.settings.games.reversi.useAvatarStones; },
|
||||||
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useWhiteBlackStones', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useAvatarStones', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
disableAnimatedMfm: {
|
disableAnimatedMfm: {
|
||||||
|
@ -173,7 +173,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.mk-timeline-core
|
.mk-timeline-core
|
||||||
> .mk-friends-maker
|
> .mk-friends-maker
|
||||||
border-bottom solid 1px #eee
|
border-bottom solid var(--lineWidth) #eee
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
@ -139,7 +139,6 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.listButton,
|
source: this.$refs.listButton,
|
||||||
compact: false,
|
|
||||||
items: menu
|
items: menu
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -170,7 +169,6 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.tagButton,
|
source: this.$refs.tagButton,
|
||||||
compact: false,
|
|
||||||
items: menu
|
items: menu
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -189,7 +187,7 @@ export default Vue.extend({
|
|||||||
padding 0 8px
|
padding 0 8px
|
||||||
z-index 10
|
z-index 10
|
||||||
background var(--faceHeader)
|
background var(--faceHeader)
|
||||||
box-shadow 0 1px var(--desktopTimelineHeaderShadow)
|
box-shadow 0 var(--lineWidth) var(--desktopTimelineHeaderShadow)
|
||||||
|
|
||||||
> .buttons
|
> .buttons
|
||||||
position absolute
|
position absolute
|
||||||
@ -209,7 +207,7 @@ export default Vue.extend({
|
|||||||
top -4px
|
top -4px
|
||||||
right 4px
|
right 4px
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color var(--faceTextButtonHover)
|
color var(--faceTextButtonHover)
|
||||||
|
@ -227,7 +227,7 @@ export default Vue.extend({
|
|||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
background $bgcolor
|
background $bgcolor
|
||||||
border-radius 4px
|
border-radius 4px
|
||||||
box-shadow 0 1px 4px rgba(#000, 0.25)
|
box-shadow 0 var(--lineWidth) 4px rgba(#000, 0.25)
|
||||||
|
|
||||||
&:before
|
&:before
|
||||||
content ""
|
content ""
|
||||||
@ -261,7 +261,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
& + ul
|
& + ul
|
||||||
padding-top 10px
|
padding-top 10px
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> li
|
> li
|
||||||
display block
|
display block
|
||||||
|
@ -147,7 +147,7 @@ export default Vue.extend({
|
|||||||
> [data-icon]:last-child
|
> [data-icon]:last-child
|
||||||
margin-left 5px
|
margin-left 5px
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
@media (max-width 1100px)
|
@media (max-width 1100px)
|
||||||
margin-left -5px
|
margin-left -5px
|
||||||
|
@ -90,7 +90,7 @@ export default Vue.extend({
|
|||||||
margin-left -5px
|
margin-left -5px
|
||||||
vertical-align super
|
vertical-align super
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
> .pop
|
> .pop
|
||||||
$bgcolor = var(--face)
|
$bgcolor = var(--face)
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
<router-link :to="user | userPage" class="name">
|
<router-link :to="user | userPage" class="name">
|
||||||
<mk-user-name :user="user"/>
|
<mk-user-name :user="user"/>
|
||||||
</router-link>
|
</router-link>
|
||||||
<span class="username">@{{ user | acct }}</span>
|
<span class="username">@{{ user | acct }} <fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/></span>
|
||||||
|
|
||||||
<div class="description">
|
<div class="description">
|
||||||
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
<misskey-flavored-markdown v-if="user.description" :text="user.description" :author="user" :i="$store.state.i" :custom-emojis="user.emojis"/>
|
||||||
</div>
|
</div>
|
||||||
@ -75,6 +76,9 @@ export default Vue.extend({
|
|||||||
display block
|
display block
|
||||||
opacity 0.7
|
opacity 0.7
|
||||||
|
|
||||||
|
> .locked
|
||||||
|
opacity 0.8
|
||||||
|
|
||||||
> .description
|
> .description
|
||||||
margin 8px 0 16px 0
|
margin 8px 0 16px 0
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ export default Vue.extend({
|
|||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
font-weight bold
|
font-weight bold
|
||||||
color var(--faceHeaderText)
|
color var(--faceHeaderText)
|
||||||
box-shadow 0 1px rgba(#000, 0.07)
|
box-shadow 0 var(--lineWidth) rgba(#000, 0.07)
|
||||||
|
|
||||||
> [data-icon]
|
> [data-icon]
|
||||||
margin-right 6px
|
margin-right 6px
|
||||||
|
@ -240,7 +240,6 @@ export default Vue.extend({
|
|||||||
showMenu() {
|
showMenu() {
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.menu,
|
source: this.$refs.menu,
|
||||||
compact: false,
|
|
||||||
items: this.getMenu()
|
items: this.getMenu()
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -374,7 +373,7 @@ export default Vue.extend({
|
|||||||
font-size 14px
|
font-size 14px
|
||||||
color var(--faceHeaderText)
|
color var(--faceHeaderText)
|
||||||
background var(--faceHeader)
|
background var(--faceHeader)
|
||||||
box-shadow 0 1px rgba(#000, 0.15)
|
box-shadow 0 var(--lineWidth) rgba(#000, 0.15)
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&, *
|
&, *
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
:key="note.id"
|
:key="note.id"
|
||||||
@update:note="onNoteUpdated(i, $event)"
|
@update:note="onNoteUpdated(i, $event)"
|
||||||
:media-view="mediaView"
|
:media-view="mediaView"
|
||||||
|
:compact="true"
|
||||||
:mini="true"/>
|
:mini="true"/>
|
||||||
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
||||||
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
||||||
@ -214,7 +215,7 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -231,7 +232,7 @@ export default Vue.extend({
|
|||||||
text-align center
|
text-align center
|
||||||
color #ccc
|
color #ccc
|
||||||
background var(--face)
|
background var(--face)
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
border-bottom-left-radius 6px
|
border-bottom-left-radius 6px
|
||||||
border-bottom-right-radius 6px
|
border-bottom-right-radius 6px
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ export default Vue.extend({
|
|||||||
> .notifications
|
> .notifications
|
||||||
|
|
||||||
> .notification:not(:last-child)
|
> .notification:not(:last-child)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> .date
|
> .date
|
||||||
display block
|
display block
|
||||||
@ -187,7 +187,7 @@ export default Vue.extend({
|
|||||||
font-size 12px
|
font-size 12px
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -200,7 +200,7 @@ export default Vue.extend({
|
|||||||
width 100%
|
width 100%
|
||||||
padding 16px
|
padding 16px
|
||||||
color #555
|
color #555
|
||||||
border-top solid 1px rgba(#000, 0.05)
|
border-top solid var(--lineWidth) rgba(#000, 0.05)
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
background rgba(#000, 0.025)
|
background rgba(#000, 0.025)
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<span class="name">
|
<span class="name">
|
||||||
<mk-user-name :user="user"/>
|
<mk-user-name :user="user"/>
|
||||||
</span>
|
</span>
|
||||||
<span class="acct">@{{ user | acct }}</span>
|
<span class="acct">@{{ user | acct }} <fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/></span>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
@ -169,6 +169,7 @@ export default Vue.extend({
|
|||||||
this.$root.api('users/notes', {
|
this.$root.api('users/notes', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
fileType: image,
|
fileType: image,
|
||||||
|
excludeNsfw: !this.$store.state.device.alwaysShowNsfw,
|
||||||
limit: 9,
|
limit: 9,
|
||||||
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
@ -336,7 +337,6 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.menu,
|
source: this.$refs.menu,
|
||||||
compact: false,
|
|
||||||
items: menu
|
items: menu
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -412,6 +412,9 @@ export default Vue.extend({
|
|||||||
opacity 0.7
|
opacity 0.7
|
||||||
text-shadow 0 0 8px #000
|
text-shadow 0 0 8px #000
|
||||||
|
|
||||||
|
> .locked
|
||||||
|
opacity 0.8
|
||||||
|
|
||||||
> .info
|
> .info
|
||||||
padding 16px
|
padding 16px
|
||||||
font-size 12px
|
font-size 12px
|
||||||
@ -463,7 +466,7 @@ export default Vue.extend({
|
|||||||
display grid
|
display grid
|
||||||
grid-template-columns 2fr 2fr 2fr 1fr
|
grid-template-columns 2fr 2fr 2fr 1fr
|
||||||
margin-top 8px
|
margin-top 8px
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> div
|
> div
|
||||||
padding 8px 8px 0 8px
|
padding 8px 8px 0 8px
|
||||||
|
@ -179,7 +179,6 @@ export default Vue.extend({
|
|||||||
add() {
|
add() {
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.add,
|
source: this.$refs.add,
|
||||||
compact: true,
|
|
||||||
items: [{
|
items: [{
|
||||||
icon: 'home',
|
icon: 'home',
|
||||||
text: this.$t('@deck.home'),
|
text: this.$t('@deck.home'),
|
||||||
|
@ -29,9 +29,11 @@ export default Vue.extend({
|
|||||||
'image/png',
|
'image/png',
|
||||||
'image/gif'
|
'image/gif'
|
||||||
];
|
];
|
||||||
|
|
||||||
this.$root.api('users/notes', {
|
this.$root.api('users/notes', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
fileType: image,
|
fileType: image,
|
||||||
|
excludeNsfw: !this.$store.state.device.alwaysShowNsfw,
|
||||||
limit: 9,
|
limit: 9,
|
||||||
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
<span class="signin" @click="signin">{{ $t('signin') }}</span>
|
<span class="signin" @click="signin">{{ $t('signin') }}</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<img src="/assets/ai.png" alt="" title="藍" class="char">
|
<img :src="meta.mascotImageUrl" alt="" title="藍" class="char">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -124,6 +124,7 @@ import {
|
|||||||
faMapMarker,
|
faMapMarker,
|
||||||
faRobot,
|
faRobot,
|
||||||
faHourglassHalf,
|
faHourglassHalf,
|
||||||
|
faAlignLeft
|
||||||
} from '@fortawesome/free-solid-svg-icons';
|
} from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -255,6 +256,7 @@ library.add(
|
|||||||
faMapMarker,
|
faMapMarker,
|
||||||
faRobot,
|
faRobot,
|
||||||
faHourglassHalf,
|
faHourglassHalf,
|
||||||
|
faAlignLeft,
|
||||||
|
|
||||||
farBell,
|
farBell,
|
||||||
farEnvelope,
|
farEnvelope,
|
||||||
@ -413,6 +415,15 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS]) => void,
|
|||||||
});
|
});
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
//#region line width
|
||||||
|
document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
|
||||||
|
os.store.watch(s => {
|
||||||
|
return s.device.lineWidth;
|
||||||
|
}, v => {
|
||||||
|
document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
|
||||||
|
});
|
||||||
|
//#endregion
|
||||||
|
|
||||||
// Navigation hook
|
// Navigation hook
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
next(os.store.state.navHook && os.store.state.navHook(to) ? false : undefined);
|
next(os.store.state.navHook && os.store.state.navHook(to) ? false : undefined);
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<div>
|
<div>
|
||||||
|
<ui-input readonly :value="file.url">URL</ui-input>
|
||||||
<ui-button link :href="`${file.url}?download`" :download="file.name"><fa icon="download"/> {{ $t('download') }}</ui-button>
|
<ui-button link :href="`${file.url}?download`" :download="file.name"><fa icon="download"/> {{ $t('download') }}</ui-button>
|
||||||
<ui-button @click="rename"><fa icon="pencil-alt"/> {{ $t('rename') }}</ui-button>
|
<ui-button @click="rename"><fa icon="pencil-alt"/> {{ $t('rename') }}</ui-button>
|
||||||
<ui-button @click="move"><fa :icon="['far', 'folder-open']"/> {{ $t('move') }}</ui-button>
|
<ui-button @click="move"><fa :icon="['far', 'folder-open']"/> {{ $t('move') }}</ui-button>
|
||||||
@ -200,7 +201,7 @@ export default Vue.extend({
|
|||||||
color #bf4633
|
color #bf4633
|
||||||
|
|
||||||
> .menu
|
> .menu
|
||||||
padding 14px
|
padding 0 14px 14px 14px
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid 1px var(--faceDivider)
|
||||||
|
|
||||||
> div
|
> div
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
<span class="visibility" v-if="appearNote.visibility != 'public'">
|
<span class="visibility" v-if="appearNote.visibility != 'public'">
|
||||||
<fa v-if="appearNote.visibility == 'home'" icon="home"/>
|
<fa v-if="appearNote.visibility == 'home'" icon="home"/>
|
||||||
<fa v-if="appearNote.visibility == 'followers'" icon="unlock"/>
|
<fa v-if="appearNote.visibility == 'followers'" icon="unlock"/>
|
||||||
<fa v-if="appearNote.visibility == 'specified'" icon="lock"/>
|
<fa v-if="appearNote.visibility == 'specified'" icon="envelope"/>
|
||||||
</span>
|
</span>
|
||||||
<span class="localOnly" v-if="appearNote.localOnly == true"><fa icon="heart"/></span>
|
<span class="localOnly" v-if="appearNote.localOnly == true"><fa icon="heart"/></span>
|
||||||
</div>
|
</div>
|
||||||
@ -66,7 +66,7 @@
|
|||||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote">
|
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote">
|
||||||
<fa icon="retweet"/>
|
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-else>
|
<button v-else>
|
||||||
<fa icon="ban"/>
|
<fa icon="ban"/>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<mk-media-list :media-list="appearNote.files"/>
|
<mk-media-list :media-list="appearNote.files"/>
|
||||||
</div>
|
</div>
|
||||||
<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/>
|
<mk-poll v-if="appearNote.poll" :note="appearNote" ref="pollViewer"/>
|
||||||
<mk-url-preview v-for="url in urls" :url="url" :key="url"/>
|
<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="compact"/>
|
||||||
<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a>
|
<a class="location" v-if="appearNote.geo" :href="`https://maps.google.com/maps?q=${appearNote.geo.coordinates[1]},${appearNote.geo.coordinates[0]}`" target="_blank"><fa icon="map-marker-alt"/> {{ $t('location') }}</a>
|
||||||
<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote"/></div>
|
<div class="renote" v-if="appearNote.renote"><mk-note-preview :note="appearNote.renote"/></div>
|
||||||
</div>
|
</div>
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
<p class="count" v-if="appearNote.repliesCount > 0">{{ appearNote.repliesCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote">
|
<button v-if="['public', 'home'].includes(appearNote.visibility)" @click="renote()" title="Renote">
|
||||||
<fa icon="retweet"/>
|
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
|
||||||
</button>
|
</button>
|
||||||
<button v-else>
|
<button v-else>
|
||||||
<fa icon="ban"/>
|
<fa icon="ban"/>
|
||||||
@ -90,6 +90,11 @@ export default Vue.extend({
|
|||||||
note: {
|
note: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
compact: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -98,7 +103,7 @@ export default Vue.extend({
|
|||||||
<style lang="stylus" scoped>
|
<style lang="stylus" scoped>
|
||||||
.note
|
.note
|
||||||
font-size 12px
|
font-size 12px
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&:focus
|
&:focus
|
||||||
z-index 1
|
z-index 1
|
||||||
@ -231,7 +236,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> *
|
> *
|
||||||
padding 16px
|
padding 16px
|
||||||
border dashed 1px var(--quoteBorder)
|
border dashed var(--lineWidth) var(--quoteBorder)
|
||||||
border-radius 8px
|
border-radius 8px
|
||||||
|
|
||||||
> .app
|
> .app
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
<!-- トランジションを有効にするとなぜかメモリリークする -->
|
||||||
<component :is="!$store.state.device.reduceMotion ? 'transition-group' : 'div'" name="mk-notes" class="transition" tag="div">
|
<component :is="!$store.state.device.reduceMotion ? 'transition-group' : 'div'" name="mk-notes" class="transition" tag="div">
|
||||||
<template v-for="(note, i) in _notes">
|
<template v-for="(note, i) in _notes">
|
||||||
<mk-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)"/>
|
<mk-note :note="note" :key="note.id" @update:note="onNoteUpdated(i, $event)" :compact="true"/>
|
||||||
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
<p class="date" :key="note.id + '_date'" v-if="i != notes.length - 1 && note._date != _notes[i + 1]._date">
|
||||||
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
<span><fa icon="angle-up"/>{{ note._datetext }}</span>
|
||||||
<span><fa icon="angle-down"/>{{ _notes[i + 1]._datetext }}</span>
|
<span><fa icon="angle-down"/>{{ _notes[i + 1]._datetext }}</span>
|
||||||
@ -210,7 +210,7 @@ export default Vue.extend({
|
|||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -240,7 +240,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> footer
|
> footer
|
||||||
text-align center
|
text-align center
|
||||||
border-top solid 1px var(--faceDivider)
|
border-top solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
&:empty
|
&:empty
|
||||||
display none
|
display none
|
||||||
|
@ -152,7 +152,7 @@ export default Vue.extend({
|
|||||||
> .notifications
|
> .notifications
|
||||||
|
|
||||||
> .mk-notification:not(:last-child)
|
> .mk-notification:not(:last-child)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
> .date
|
> .date
|
||||||
display block
|
display block
|
||||||
@ -162,7 +162,7 @@ export default Vue.extend({
|
|||||||
font-size 0.8em
|
font-size 0.8em
|
||||||
color var(--dateDividerFg)
|
color var(--dateDividerFg)
|
||||||
background var(--dateDividerBg)
|
background var(--dateDividerBg)
|
||||||
border-bottom solid 1px var(--faceDivider)
|
border-bottom solid var(--lineWidth) var(--faceDivider)
|
||||||
|
|
||||||
span
|
span
|
||||||
margin 0 16px
|
margin 0 16px
|
||||||
@ -175,7 +175,7 @@ export default Vue.extend({
|
|||||||
width 100%
|
width 100%
|
||||||
padding 16px
|
padding 16px
|
||||||
color var(--text)
|
color var(--text)
|
||||||
border-top solid 1px rgba(#000, 0.05)
|
border-top solid var(--lineWidth) rgba(#000, 0.05)
|
||||||
|
|
||||||
> [data-icon]
|
> [data-icon]
|
||||||
margin-right 4px
|
margin-right 4px
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
<span v-if="visibility === 'public'"><fa icon="globe"/></span>
|
<span v-if="visibility === 'public'"><fa icon="globe"/></span>
|
||||||
<span v-if="visibility === 'home'"><fa icon="home"/></span>
|
<span v-if="visibility === 'home'"><fa icon="home"/></span>
|
||||||
<span v-if="visibility === 'followers'"><fa icon="unlock"/></span>
|
<span v-if="visibility === 'followers'"><fa icon="unlock"/></span>
|
||||||
<span v-if="visibility === 'specified'"><fa icon="lock"/></span>
|
<span v-if="visibility === 'specified'"><fa icon="envelope"/></span>
|
||||||
</button>
|
</button>
|
||||||
</footer>
|
</footer>
|
||||||
<input ref="file" class="file" type="file" multiple="multiple" @change="onChangeFile"/>
|
<input ref="file" class="file" type="file" multiple="multiple" @change="onChangeFile"/>
|
||||||
@ -187,11 +187,11 @@ export default Vue.extend({
|
|||||||
const mention = x.host ? `@${x.username}@${toASCII(x.host)}` : `@${x.username}`;
|
const mention = x.host ? `@${x.username}@${toASCII(x.host)}` : `@${x.username}`;
|
||||||
|
|
||||||
// 自分は除外
|
// 自分は除外
|
||||||
if (this.$store.state.i.username == x.username && x.host == null) return;
|
if (this.$store.state.i.username == x.username && x.host == null) continue;
|
||||||
if (this.$store.state.i.username == x.username && x.host == host) return;
|
if (this.$store.state.i.username == x.username && x.host == host) continue;
|
||||||
|
|
||||||
// 重複は除外
|
// 重複は除外
|
||||||
if (this.text.indexOf(`${mention} `) != -1) return;
|
if (this.text.indexOf(`${mention} `) != -1) continue;
|
||||||
|
|
||||||
this.text += `${mention} `;
|
this.text += `${mention} `;
|
||||||
}
|
}
|
||||||
@ -211,6 +211,12 @@ 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.focus();
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -301,7 +307,7 @@ export default Vue.extend({
|
|||||||
setVisibility() {
|
setVisibility() {
|
||||||
const w = this.$root.new(MkVisibilityChooser, {
|
const w = this.$root.new(MkVisibilityChooser, {
|
||||||
source: this.$refs.visibilityButton,
|
source: this.$refs.visibilityButton,
|
||||||
compact: true
|
currentVisibility: this.visibility
|
||||||
});
|
});
|
||||||
w.$once('chosen', v => {
|
w.$once('chosen', v => {
|
||||||
this.applyVisibility(v);
|
this.applyVisibility(v);
|
||||||
|
@ -159,7 +159,7 @@ export default Vue.extend({
|
|||||||
left 8px
|
left 8px
|
||||||
pointer-events none
|
pointer-events none
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
> button:last-child
|
> button:last-child
|
||||||
display block
|
display block
|
||||||
|
@ -238,7 +238,7 @@ export default Vue.extend({
|
|||||||
> i.circle
|
> i.circle
|
||||||
margin-left 6px
|
margin-left 6px
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
> i:last-child
|
> i:last-child
|
||||||
position absolute
|
position absolute
|
||||||
|
@ -225,7 +225,7 @@ main
|
|||||||
> .badge
|
> .badge
|
||||||
margin-left 6px
|
margin-left 6px
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
|
|
||||||
> .tl
|
> .tl
|
||||||
max-width 680px
|
max-width 680px
|
||||||
@ -248,7 +248,7 @@ main
|
|||||||
.badge
|
.badge
|
||||||
margin-left 6px
|
margin-left 6px
|
||||||
font-size 10px
|
font-size 10px
|
||||||
color var(--primary)
|
color var(--notificationIndicator)
|
||||||
vertical-align middle
|
vertical-align middle
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -7,12 +7,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<x-profile-editor/>
|
<x-profile-editor/>
|
||||||
|
|
||||||
<ui-card>
|
<x-theme/>
|
||||||
<div slot="title"><fa icon="palette"/> {{ $t('theme') }}</div>
|
|
||||||
<section>
|
|
||||||
<x-theme/>
|
|
||||||
</section>
|
|
||||||
</ui-card>
|
|
||||||
|
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title"><fa icon="poll-h"/> {{ $t('design') }}</div>
|
<div slot="title"><fa icon="poll-h"/> {{ $t('design') }}</div>
|
||||||
@ -20,6 +15,12 @@
|
|||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="darkmode">{{ $t('dark-mode') }}</ui-switch>
|
<ui-switch v-model="darkmode">{{ $t('dark-mode') }}</ui-switch>
|
||||||
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
<ui-switch v-model="circleIcons">{{ $t('circle-icons') }}</ui-switch>
|
||||||
|
<section>
|
||||||
|
<header>{{ $t('@.line-width') }}</header>
|
||||||
|
<ui-radio v-model="lineWidth" :value="0.5">{{ $t('@.line-width-thin') }}</ui-radio>
|
||||||
|
<ui-radio v-model="lineWidth" :value="1">{{ $t('@.line-width-normal') }}</ui-radio>
|
||||||
|
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
|
||||||
|
</section>
|
||||||
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }} ({{ $t('@.this-setting-is-this-device-only') }})</ui-switch>
|
<ui-switch v-model="reduceMotion">{{ $t('@.reduce-motion') }} ({{ $t('@.this-setting-is-this-device-only') }})</ui-switch>
|
||||||
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
<ui-switch v-model="contrastedAcct">{{ $t('contrasted-acct') }}</ui-switch>
|
||||||
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
<ui-switch v-model="showFullAcct">{{ $t('@.show-full-acct') }}</ui-switch>
|
||||||
@ -33,7 +34,7 @@
|
|||||||
|
|
||||||
<section>
|
<section>
|
||||||
<ui-switch v-model="games_reversi_showBoardLabels">{{ $t('@.show-reversi-board-labels') }}</ui-switch>
|
<ui-switch v-model="games_reversi_showBoardLabels">{{ $t('@.show-reversi-board-labels') }}</ui-switch>
|
||||||
<ui-switch v-model="games_reversi_useWhiteBlackStones">{{ $t('@.use-white-black-reversi-stones') }}</ui-switch>
|
<ui-switch v-model="games_reversi_useAvatarStones">{{ $t('@.use-avatar-reversi-stones') }}</ui-switch>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
@ -265,6 +266,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
lineWidth: {
|
||||||
|
get() { return this.$store.state.device.lineWidth; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'lineWidth', value }); }
|
||||||
|
},
|
||||||
|
|
||||||
contrastedAcct: {
|
contrastedAcct: {
|
||||||
get() { return this.$store.state.settings.contrastedAcct; },
|
get() { return this.$store.state.settings.contrastedAcct; },
|
||||||
set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'contrastedAcct', value }); }
|
||||||
@ -290,9 +296,9 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.showBoardLabels', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
games_reversi_useWhiteBlackStones: {
|
games_reversi_useAvatarStones: {
|
||||||
get() { return this.$store.state.settings.games.reversi.useWhiteBlackStones; },
|
get() { return this.$store.state.settings.games.reversi.useAvatarStones; },
|
||||||
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useWhiteBlackStones', value }); }
|
set(value) { this.$store.dispatch('settings/set', { key: 'games.reversi.useAvatarStones', value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
disableAnimatedMfm: {
|
disableAnimatedMfm: {
|
||||||
|
@ -208,7 +208,6 @@ export default Vue.extend({
|
|||||||
|
|
||||||
this.$root.new(Menu, {
|
this.$root.new(Menu, {
|
||||||
source: this.$refs.menu,
|
source: this.$refs.menu,
|
||||||
compact: true,
|
|
||||||
items: menu
|
items: menu
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -34,6 +34,7 @@ export default Vue.extend({
|
|||||||
this.$root.api('users/notes', {
|
this.$root.api('users/notes', {
|
||||||
userId: this.user.id,
|
userId: this.user.id,
|
||||||
fileType: image,
|
fileType: image,
|
||||||
|
excludeNsfw: !this.$store.state.device.alwaysShowNsfw,
|
||||||
limit: 9,
|
limit: 9,
|
||||||
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
untilDate: new Date().getTime() + 1000 * 86400 * 365
|
||||||
}).then(notes => {
|
}).then(notes => {
|
||||||
|
@ -40,7 +40,7 @@ const defaultSettings = {
|
|||||||
games: {
|
games: {
|
||||||
reversi: {
|
reversi: {
|
||||||
showBoardLabels: false,
|
showBoardLabels: false,
|
||||||
useWhiteBlackStones: false,
|
useAvatarStones: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -52,6 +52,7 @@ const defaultDeviceSettings = {
|
|||||||
darkmode: false,
|
darkmode: false,
|
||||||
darkTheme: 'dark',
|
darkTheme: 'dark',
|
||||||
lightTheme: 'light',
|
lightTheme: 'light',
|
||||||
|
lineWidth: 1,
|
||||||
themes: [],
|
themes: [],
|
||||||
enableSounds: true,
|
enableSounds: true,
|
||||||
soundVolume: 0.5,
|
soundVolume: 0.5,
|
||||||
|
@ -15,13 +15,29 @@ export const darkTheme: Theme = require('../theme/dark.json5');
|
|||||||
export const pinkTheme: Theme = require('../theme/pink.json5');
|
export const pinkTheme: Theme = require('../theme/pink.json5');
|
||||||
export const blackTheme: Theme = require('../theme/black.json5');
|
export const blackTheme: Theme = require('../theme/black.json5');
|
||||||
export const halloweenTheme: Theme = require('../theme/halloween.json5');
|
export const halloweenTheme: Theme = require('../theme/halloween.json5');
|
||||||
|
export const cafeTheme: Theme = require('../theme/cafe.json5');
|
||||||
|
export const japaneseSushiSetTheme: Theme = require('../theme/japanese-sushi-set.json5');
|
||||||
|
export const gruvboxDarkTheme: Theme = require('../theme/gruvbox-dark.json5');
|
||||||
|
export const monokaiTheme: Theme = require('../theme/monokai.json5');
|
||||||
|
export const colorfulTheme: Theme = require('../theme/colorful.json5');
|
||||||
|
export const rainyTheme: Theme = require('../theme/rainy.json5');
|
||||||
|
export const mauveTheme: Theme = require('../theme/mauve.json5');
|
||||||
|
export const grayTheme: Theme = require('../theme/gray.json5');
|
||||||
|
|
||||||
export const builtinThemes = [
|
export const builtinThemes = [
|
||||||
lightTheme,
|
lightTheme,
|
||||||
darkTheme,
|
darkTheme,
|
||||||
pinkTheme,
|
pinkTheme,
|
||||||
blackTheme,
|
blackTheme,
|
||||||
halloweenTheme
|
halloweenTheme,
|
||||||
|
cafeTheme,
|
||||||
|
japaneseSushiSetTheme,
|
||||||
|
gruvboxDarkTheme,
|
||||||
|
monokaiTheme,
|
||||||
|
colorfulTheme,
|
||||||
|
rainyTheme,
|
||||||
|
mauveTheme,
|
||||||
|
grayTheme,
|
||||||
];
|
];
|
||||||
|
|
||||||
export function applyTheme(theme: Theme, persisted = true) {
|
export function applyTheme(theme: Theme, persisted = true) {
|
||||||
@ -85,12 +101,12 @@ function compile(theme: Theme): { [key: string]: string } {
|
|||||||
props['primaryAlpha0' + i] = genValue(color);
|
props['primaryAlpha0' + i] = genValue(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 1; i < 100; i++) {
|
for (let i = 5; i < 100; i += 5) {
|
||||||
const color = primary.clone().lighten(i);
|
const color = primary.clone().lighten(i);
|
||||||
props['primaryLighten' + i] = genValue(color);
|
props['primaryLighten' + i] = genValue(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 1; i < 100; i++) {
|
for (let i = 5; i < 100; i += 5) {
|
||||||
const color = primary.clone().darken(i);
|
const color = primary.clone().darken(i);
|
||||||
props['primaryDarken' + i] = genValue(color);
|
props['primaryDarken' + i] = genValue(color);
|
||||||
}
|
}
|
||||||
|
BIN
src/client/assets/misskey-php-like-logo.png
Normal file
BIN
src/client/assets/misskey-php-like-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
@ -22,7 +22,7 @@ html, body
|
|||||||
|
|
||||||
a
|
a
|
||||||
text-decoration none
|
text-decoration none
|
||||||
color var(--primary)
|
color var(--link)
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
@ -33,7 +33,7 @@ a
|
|||||||
|
|
||||||
@css {
|
@css {
|
||||||
a {
|
a {
|
||||||
tap-highlight-color: var(--primaryAlpha07) !important;
|
tap-highlight-color: var(--linkTapHighlight) !important;
|
||||||
-webkit-tap-highlight-color: var(--primaryAlpha07) !important;
|
-webkit-tap-highlight-color: var(--linkTapHighlight) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
src/client/theme/cafe.json5
Normal file
21
src/client/theme/cafe.json5
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
id: '0ff48d43-aab3-46e7-ab12-8492110d2e2b',
|
||||||
|
|
||||||
|
name: 'Cafe',
|
||||||
|
author: 'syuilo',
|
||||||
|
|
||||||
|
base: 'light',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: 'rgb(234, 154, 82)',
|
||||||
|
secondary: 'rgb(238, 236, 232)',
|
||||||
|
text: 'rgb(149, 143, 139)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#ffe1c7',
|
||||||
|
renoteText: '$primary',
|
||||||
|
quoteBorder: '$primary',
|
||||||
|
mfmMention: '#56907b',
|
||||||
|
},
|
||||||
|
}
|
23
src/client/theme/colorful.json5
Normal file
23
src/client/theme/colorful.json5
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
id: '2d066d6e-bd39-4f23-bd48-686d5c1c6ae8',
|
||||||
|
|
||||||
|
name: 'Colorful',
|
||||||
|
author: 'syuilo',
|
||||||
|
|
||||||
|
base: 'light',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: 'rgb(255, 153, 64)',
|
||||||
|
secondary: 'rgb(255, 255, 255)',
|
||||||
|
text: 'rgb(108, 118, 128)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
bg: 'rgb(250, 250, 250)',
|
||||||
|
mfmMention: '#f07171',
|
||||||
|
mfmMentionForeground: '#fff',
|
||||||
|
mfmUrl: '#86b300',
|
||||||
|
mfmLink: '#399ee6',
|
||||||
|
mfmHashtag: '#fa8d3e'
|
||||||
|
},
|
||||||
|
}
|
@ -24,6 +24,15 @@
|
|||||||
scrollbarHandle: ':lighten<5<$secondary',
|
scrollbarHandle: ':lighten<5<$secondary',
|
||||||
scrollbarHandleHover: ':lighten<10<$secondary',
|
scrollbarHandleHover: ':lighten<10<$secondary',
|
||||||
|
|
||||||
|
link: '$primary',
|
||||||
|
linkTapHighlight: ':alpha<0.7<@link',
|
||||||
|
|
||||||
|
notificationIndicator: '$primary',
|
||||||
|
|
||||||
|
switchActive: '$primary',
|
||||||
|
switchActiveTrack: ':alpha<0.4<@switchActive',
|
||||||
|
radioActive: '$primary',
|
||||||
|
|
||||||
face: '$secondary',
|
face: '$secondary',
|
||||||
faceText: '#fff',
|
faceText: '#fff',
|
||||||
faceHeader: ':lighten<5<$secondary',
|
faceHeader: ':lighten<5<$secondary',
|
||||||
@ -120,8 +129,10 @@
|
|||||||
mfmTitleBg: 'rgba(0, 0, 0, 0.2)',
|
mfmTitleBg: 'rgba(0, 0, 0, 0.2)',
|
||||||
mfmQuote: ':alpha<0.7<$text',
|
mfmQuote: ':alpha<0.7<$text',
|
||||||
mfmQuoteLine: ':alpha<0.6<$text',
|
mfmQuoteLine: ':alpha<0.6<$text',
|
||||||
mfmLink: '$primary',
|
mfmUrl: '$primary',
|
||||||
|
mfmLink: '@mfmUrl',
|
||||||
mfmMention: '$primary',
|
mfmMention: '$primary',
|
||||||
|
mfmMentionForeground: '@primaryForeground',
|
||||||
mfmHashtag: '$primary',
|
mfmHashtag: '$primary',
|
||||||
|
|
||||||
suspendedInfoBg: '#611d1d',
|
suspendedInfoBg: '#611d1d',
|
||||||
|
21
src/client/theme/gray.json5
Normal file
21
src/client/theme/gray.json5
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
id: '56ff14eb-1e6d-4c0c-9e84-71eb156234e5',
|
||||||
|
|
||||||
|
name: 'Gray',
|
||||||
|
author: 'syuilo',
|
||||||
|
|
||||||
|
base: 'light',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: '#C03233',
|
||||||
|
secondary: 'rgb(213, 213, 213)',
|
||||||
|
text: 'rgb(102, 102, 102)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#bdbdbd',
|
||||||
|
renoteText: '$primary',
|
||||||
|
quoteBorder: '$primary',
|
||||||
|
desktopPostFormBg: '#ececec',
|
||||||
|
},
|
||||||
|
}
|
29
src/client/theme/gruvbox-dark.json5
Normal file
29
src/client/theme/gruvbox-dark.json5
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
id: '0c6e70e2-a1ec-4053-9b1a-b6082fe016cb',
|
||||||
|
|
||||||
|
name: 'Gruvbox Dark',
|
||||||
|
author: 'syuilo',
|
||||||
|
|
||||||
|
base: 'dark',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: 'rgb(215, 153, 33)',
|
||||||
|
secondary: 'rgb(40, 40, 40)',
|
||||||
|
text: 'rgb(235, 219, 178)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#58581e',
|
||||||
|
renoteText: 'rgb(169, 174, 36)',
|
||||||
|
quoteBorder: 'rgb(169, 174, 36)',
|
||||||
|
mfmMention: 'rgb(177, 98, 134)',
|
||||||
|
mfmMentionForeground: '#fff',
|
||||||
|
mfmUrl: 'rgb(69, 133, 136)',
|
||||||
|
mfmLink: 'rgb(104, 157, 106)',
|
||||||
|
mfmHashtag: 'rgb(251, 73, 52)',
|
||||||
|
notificationIndicator: 'rgb(184, 187, 38)',
|
||||||
|
switchActive: 'rgb(254, 128, 25)',
|
||||||
|
radioActive: 'rgb(131, 165, 152)',
|
||||||
|
link: 'rgb(104, 157, 106)',
|
||||||
|
},
|
||||||
|
}
|
20
src/client/theme/japanese-sushi-set.json5
Normal file
20
src/client/theme/japanese-sushi-set.json5
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
id: '2b0a0654-cdb4-4c9a-8244-736b647d3c2a',
|
||||||
|
|
||||||
|
name: 'Japanese Sushi Set',
|
||||||
|
author: 'noizenecio & syuilo',
|
||||||
|
|
||||||
|
base: 'dark',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: 'rgb(234, 136, 50)',
|
||||||
|
secondary: 'rgb(34, 36, 42)',
|
||||||
|
text: 'rgb(221, 209, 203)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#6d3d14',
|
||||||
|
renoteText: '$primary',
|
||||||
|
quoteBorder: '$primary',
|
||||||
|
},
|
||||||
|
}
|
@ -24,6 +24,15 @@
|
|||||||
scrollbarHandle: '#00000033',
|
scrollbarHandle: '#00000033',
|
||||||
scrollbarHandleHover: '#00000066',
|
scrollbarHandleHover: '#00000066',
|
||||||
|
|
||||||
|
link: '$primary',
|
||||||
|
linkTapHighlight: ':alpha<0.7<@link',
|
||||||
|
|
||||||
|
notificationIndicator: '$primary',
|
||||||
|
|
||||||
|
switchActive: '$primary',
|
||||||
|
switchActiveTrack: ':alpha<0.4<@switchActive',
|
||||||
|
radioActive: '$primary',
|
||||||
|
|
||||||
face: '$secondary',
|
face: '$secondary',
|
||||||
faceText: '$text',
|
faceText: '$text',
|
||||||
faceHeader: ':lighten<5<$secondary',
|
faceHeader: ':lighten<5<$secondary',
|
||||||
@ -120,8 +129,10 @@
|
|||||||
mfmTitleBg: 'rgba(0, 0, 0, 0.07)',
|
mfmTitleBg: 'rgba(0, 0, 0, 0.07)',
|
||||||
mfmQuote: ':alpha<0.6<$text',
|
mfmQuote: ':alpha<0.6<$text',
|
||||||
mfmQuoteLine: ':alpha<0.5<$text',
|
mfmQuoteLine: ':alpha<0.5<$text',
|
||||||
mfmLink: '$primary',
|
mfmUrl: '$primary',
|
||||||
|
mfmLink: '@mfmUrl',
|
||||||
mfmMention: '$primary',
|
mfmMention: '$primary',
|
||||||
|
mfmMentionForeground: '@primaryForeground',
|
||||||
mfmHashtag: '$primary',
|
mfmHashtag: '$primary',
|
||||||
|
|
||||||
suspendedInfoBg: '#ffdbdb',
|
suspendedInfoBg: '#ffdbdb',
|
||||||
|
20
src/client/theme/mauve.json5
Normal file
20
src/client/theme/mauve.json5
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
id: '252b2caf-86c2-4c3f-a73f-e1fc1cfa5298',
|
||||||
|
|
||||||
|
name: 'Mauve',
|
||||||
|
author: 'とわこ & syuilo',
|
||||||
|
|
||||||
|
base: 'dark',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: 'rgb(133, 88, 150)',
|
||||||
|
secondary: 'rgb(54, 43, 59)',
|
||||||
|
text: 'rgb(229, 223, 231)',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#54415d',
|
||||||
|
renoteText: '$primary',
|
||||||
|
quoteBorder: '$primary',
|
||||||
|
},
|
||||||
|
}
|
29
src/client/theme/monokai.json5
Normal file
29
src/client/theme/monokai.json5
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
id: 'fef11dc4-6b17-436e-b374-73282c44ddc0',
|
||||||
|
|
||||||
|
name: 'Monokai',
|
||||||
|
author: 'syuilo',
|
||||||
|
|
||||||
|
base: 'dark',
|
||||||
|
|
||||||
|
vars: {
|
||||||
|
primary: '#f92672',
|
||||||
|
secondary: '#272822',
|
||||||
|
text: '#f8f8f2',
|
||||||
|
},
|
||||||
|
|
||||||
|
props: {
|
||||||
|
renoteGradient: '#3f500f',
|
||||||
|
renoteText: '#a6e22e',
|
||||||
|
quoteBorder: '#a6e22e',
|
||||||
|
mfmMention: '#ae81ff',
|
||||||
|
mfmMentionForeground: '#fff',
|
||||||
|
mfmUrl: '#66d9ef',
|
||||||
|
mfmLink: '#e6db74',
|
||||||
|
mfmHashtag: '#fd971f',
|
||||||
|
notificationIndicator: '#66d9ef',
|
||||||
|
switchActive: 'rgb(166, 226, 46)',
|
||||||
|
radioActive: '#fd971f',
|
||||||
|
link: '#e6db74',
|
||||||
|
},
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user