Compare commits

...

43 Commits

Author SHA1 Message Date
syuilo
b6dc6c6984 10.90.4 2019-02-28 15:57:02 +09:00
syuilo
517084b1fc Fix error 2019-02-28 14:17:39 +09:00
syuilo
27763e6898 🎨 2019-02-28 14:14:05 +09:00
syuilo
57dde1da38 Fix error 2019-02-28 14:13:18 +09:00
syuilo
0bb961767c Fix i18n 2019-02-28 14:10:56 +09:00
syuilo
88515ce677 Use internal dialog 2019-02-28 14:07:03 +09:00
syuilo
00562e840c Improve usability 2019-02-28 12:53:31 +09:00
syuilo
b7927ba386 Refactor 2019-02-28 12:49:13 +09:00
syuilo
9c363ff045 Improve usability 2019-02-28 12:29:04 +09:00
syuilo
1dbce5e3e2 Improve performance 2019-02-28 12:14:24 +09:00
syuilo
361a9ca1be url-previewでembedプレイヤー展開をオプトインにする (#4382)
* url-previewでembedプレイヤー展開をオプトインにする

* remove tabs
2019-02-28 12:05:47 +09:00
syuilo
cde6514839 Add log 2019-02-28 12:00:57 +09:00
syuilo
507e2f727e 読み込む通知数を増やした 2019-02-28 11:44:16 +09:00
syuilo
8028499d2b 🎨 2019-02-28 11:42:41 +09:00
syuilo
c2c79c4a87 [Client] Use class selector to improve performance 2019-02-28 11:39:34 +09:00
mei23
d56f7f3390 remove tabs 2019-02-28 03:57:35 +09:00
mei23
ef70d17194 url-previewでembedプレイヤー展開をオプトインにする 2019-02-28 03:46:37 +09:00
syuilo
9789b9a083 🎨 2019-02-27 16:47:13 +09:00
syuilo
e6311fdb13 🎨 2019-02-27 09:27:19 +09:00
syuilo
2231c54dee 10.90.3 2019-02-27 05:33:05 +09:00
syuilo
20de9a5e35 Resolve #4374 2019-02-27 05:31:16 +09:00
syuilo
ec3a6d7097 🎨 2019-02-27 05:20:29 +09:00
syuilo
9d99bf5af8 🎨 2019-02-27 05:16:32 +09:00
syuilo
52911cc9fd 🎨 2019-02-27 05:13:11 +09:00
syuilo
6f71ba376d Improve doc 2019-02-27 05:08:42 +09:00
syuilo
9f439aabba Fix schema 2019-02-27 05:02:46 +09:00
syuilo
33ad60b1f3 Improve doc 2019-02-27 05:02:36 +09:00
Big Buddha
010d3f8281 Update translations of CONTRIBUTING.md (#4371)
* Update translationa about Nyaize

* Update translation about description of source code

* Fix translation
2019-02-26 18:00:47 +09:00
syuilo
e27c4bf1b9 10.90.2 2019-02-26 15:27:34 +09:00
syuilo
11cfc58ffc New Crowdin translations (#4370)
* New translations ja-JP.yml (Catalan)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Catalan)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (French)

* New translations ja-JP.yml (German)

* New translations ja-JP.yml (Italian)

* New translations ja-JP.yml (Korean)

* New translations ja-JP.yml (Polish)

* New translations ja-JP.yml (Portuguese)

* New translations ja-JP.yml (Russian)

* New translations ja-JP.yml (Spanish)

* New translations ja-JP.yml (Japanese, Kansai)

* New translations ja-JP.yml (Dutch)

* New translations ja-JP.yml (Norwegian)

* New translations ja-JP.yml (Chinese Simplified)

* New translations ja-JP.yml (English)

* New translations ja-JP.yml (Korean)
2019-02-26 15:25:34 +09:00
syuilo
91f38a8ddd 🎨 2019-02-26 14:44:26 +09:00
syuilo
b56fed8ed5 Update notes/featured 2019-02-26 14:42:24 +09:00
syuilo
4a93dadc1c 🎨 2019-02-26 14:37:17 +09:00
syuilo
3a5f55c471 Chage default settings 2019-02-26 14:28:38 +09:00
syuilo
2919e37586 Fix 2019-02-26 14:25:09 +09:00
syuilo
077bdbfdef Improve doc 2019-02-26 14:21:28 +09:00
syuilo
61ac024127 i18n整理 2019-02-26 14:13:02 +09:00
syuilo
8db8d3f39e 🎨 2019-02-26 14:02:23 +09:00
syuilo
e7032363d7 🎨 2019-02-26 12:14:24 +09:00
syuilo
8a9dc26419 アカウントが削除できない問題を修正 2019-02-26 11:42:21 +09:00
syuilo
022f5a18c8 10.90.1 2019-02-26 07:01:04 +09:00
syuilo
eae4b2f2e9 Improve usability 2019-02-26 06:56:15 +09:00
syuilo
d285452dec Fix bug 2019-02-26 06:54:49 +09:00
77 changed files with 665 additions and 821 deletions

View File

@@ -1,6 +1,30 @@
ChangeLog ChangeLog
========= =========
10.90.4
----------
* url-previewでembedプレイヤー展開をオプトインにするように
* デザインの調整
* ユーザビリティの強化
10.90.3
----------
* モバイルのデッキで投稿フォームウィジェットが設置できなかった問題を修正
* ドキュメントの強化
* デザインの調整
* ユーザビリティの強化
10.90.2
----------
* アカウントが削除できない問題を修正
* ドキュメントの強化
* デザインの調整
10.90.1
----------
* アカウントを作成したときに自動でホームに遷移しない問題を修正
* ユーザビリティの強化
10.90.0 10.90.0
---------- ----------
* モバイル版でもデッキを使えるように * モバイル版でもデッキを使えるように

View File

@@ -40,10 +40,10 @@ Stands for _**M**iss**k**ey_.
Stands for _**S**ervice**W**orker_. Stands for _**S**ervice**W**orker_.
### Nyaize ### Nyaize
な を にゃ にすること Convert な(na) to にゃ(nya)
#### Denyaize #### Denyaize
Nyaizeを解除すること Revert Nyaize
## Code style ## Code style
### Don't use `export default` ### Don't use `export default`
@@ -59,16 +59,16 @@ export function something(foo: string): string {
## Directory structure ## Directory structure
``` ```
src ... ソースコード src ... Source code
@types ... 外部ライブラリなどの型定義 @types ... Type definitions
prelude ... Misskeyに関係ないかつ副作用なし prelude ... Independence utils for coding JavaScript without side effects
misc ... 副作用なしのユーティリティ処理 misc ... Independence utils for Misskey without side effects
service ... 副作用ありの共通処理 service ... Common functions with side effects
queue ... ジョブキューとジョブ queue ... Job queues and Jobs
server ... Webサーバー server ... Web Server
client ... クライアント client ... Client
mfm ... MFM mfm ... MFM
test ... テスト test ... Test code
``` ```

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "やってます..." signing-in: "やってます..."
signin: "サインイン"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "Zwei-Faktor-Authentifizierung" 2fa: "Zwei-Faktor-Authentifizierung"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "Verstanden!" got-it: "Verstanden!"
customization-tips: customization-tips:
title: "Anpassung-Tipps" title: "Anpassung-Tipps"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Passwort" password: "Passwort"
token: "Token" token: "Token"
signing-in: "Melde an..." signing-in: "Melde an..."
signin: "Anmelden"
or: "Oder" or: "Oder"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Sicherheit" security: "Sicherheit"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "Passwort" password: "Passwort"
other: "Anderes" other: "Anderes"
license: "Lizenz" license: "Lizenz"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "Nacht Modus"
use-shadow: "UIに影を使用"
rounded-corners: "Abgerundete Ecken"
circle-icons: "Kreisförmige Icons"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Zeige Antworten" show-reply-target: "Zeige Antworten"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "Einstellungen" settings: "Einstellungen"
signout: "Ausloggen"
dark: "Verdunkeln"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Spielen" game: "Spielen"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "Two-factor authentication" 2fa: "Two-factor authentication"
customize-home: "Customize home layout" customize-home: "Customize home layout"
featured-notes: "Featured notes" featured-notes: "Featured notes"
dark-mode: "Dark Mode"
use-shadow: "Use shadows in the UI"
rounded-corners: "Round corners of UI"
circle-icons: "Use circle icons"
contrasted-acct: "Add contrast to username"
signin: "Log In"
signup: "Sign up"
signout: "Logout"
got-it: "Got it!" got-it: "Got it!"
customization-tips: customization-tips:
title: "Customization tips" title: "Customization tips"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Password" password: "Password"
token: "Token" token: "Token"
signing-in: "Signing in..." signing-in: "Signing in..."
signin: "Sign in"
or: "Or" or: "Or"
signin-with-twitter: "Log in with Twitter" signin-with-twitter: "Log in with Twitter"
signin-with-github: "Sign in with GitHub" signin-with-github: "Sign in with GitHub"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "Mute / Block" mute-and-block: "Mute / Block"
blocking: "Blocking" blocking: "Blocking"
security: "Security" security: "Security"
signin: "Sign in history" signin: "Login History"
password: "Password" password: "Password"
other: "Other" other: "Other"
license: "License" license: "License"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "Wallpaper" wallpaper: "Wallpaper"
choose-wallpaper: "Choose a background" choose-wallpaper: "Choose a background"
delete-wallpaper: "Remove background" delete-wallpaper: "Remove background"
dark-mode: "Dark Mode"
use-shadow: "Use shadows in the UI"
rounded-corners: "Round corners of UI"
circle-icons: "Use circle icons"
contrasted-acct: "Add contrast to username"
post-form-on-timeline: "Display post form at the top of the timeline" post-form-on-timeline: "Display post form at the top of the timeline"
show-clock-on-header: "Show clock on upper-right" show-clock-on-header: "Show clock on upper-right"
show-reply-target: "Display reply target" show-reply-target: "Display reply target"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "Follow requests" follow-requests: "Follow requests"
admin: "Admin" admin: "Admin"
settings: "Settings" settings: "Settings"
signout: "Sign out"
dark: "Toggle dark mode"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Games" game: "Games"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "Daily" day: "Daily"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "More details..." about: "More details..."
gotit: "Got it!"
signin: "Log In"
signup: "Sign up"
signin-button: "Logging in..."
signup-button: "Sign up"
timeline: "Timeline" timeline: "Timeline"
announcements: "Announcements" announcements: "Announcements"
photos: "Recent Images" photos: "Recent Images"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "Messages" messages: "Messages"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "No posts contains \"{q}\" found." no-posts-found: "No posts contains \"{q}\" found."
mobile/views/pages/welcome.vue:
signup: "Sign up"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "Dashboard" dashboard: "Dashboard"
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping." widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Signed in as {}" signed-in-as: "Signed in as {}"
design: "Design and display" design: "Design and display"
dark-mode: "Dark Mode"
i-am-under-limited-internet: "I'm in limited bandwidth" i-am-under-limited-internet: "I'm in limited bandwidth"
circle-icons: "Use circle icons"
contrasted-acct: "Add contrast to username"
timeline: "Timeline" timeline: "Timeline"
show-reply-target: "Show reply target" show-reply-target: "Show reply target"
show-my-renotes: "Show my reposts" show-my-renotes: "Show my reposts"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "A new version is available" update-available: "A new version is available"
update-available-desc: "Updates will be applied after reloading the page" update-available-desc: "Updates will be applied after reloading the page"
settings: "Settings" settings: "Settings"
signout: "Sign out"
sound: "Sounds" sound: "Sounds"
enable-sounds: "Enable sounds" enable-sounds: "Enable sounds"
password: "Password" password: "Password"

View File

@@ -30,6 +30,14 @@ common:
2fa: "Autenticación de dos factores" 2fa: "Autenticación de dos factores"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "¡Listo!" got-it: "¡Listo!"
customization-tips: customization-tips:
title: "Consejos de personalización" title: "Consejos de personalización"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Contraseña" password: "Contraseña"
token: "Identificador" token: "Identificador"
signing-in: "Entrando..." signing-in: "Entrando..."
signin: "Entra"
or: "O" or: "O"
signin-with-twitter: "Ingresar con Twitter" signin-with-twitter: "Ingresar con Twitter"
signin-with-github: "Ingresar con Github" signin-with-github: "Ingresar con Github"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "Silenciar/Bloquear" mute-and-block: "Silenciar/Bloquear"
blocking: "Bloquear" blocking: "Bloquear"
security: "Seguridad" security: "Seguridad"
signin: "Historial de inicios de sesión" signin: "ログイン履歴"
password: "Contraseña" password: "Contraseña"
other: "Otros" other: "Otros"
license: "Licencia" license: "Licencia"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "Elije un fondo" choose-wallpaper: "Elije un fondo"
delete-wallpaper: "Suprimir fondo" delete-wallpaper: "Suprimir fondo"
dark-mode: "Modo Nocturno"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "Usar iconos circulares"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo" post-form-on-timeline: "Mostrar el formulario de las entradas encima de la línea de tiempo"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "Solicitudes de seguimiento" follow-requests: "Solicitudes de seguimiento"
admin: "Admin" admin: "Admin"
settings: "Configuraciones" settings: "Configuraciones"
signout: "Desconectarse"
dark: "Sumergirse en la oscuridad"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Juegos" game: "Juegos"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "Authentification à deux facteurs" 2fa: "Authentification à deux facteurs"
customize-home: "Personnaliser la disposition de votre accueil" customize-home: "Personnaliser la disposition de votre accueil"
featured-notes: "Les notes mises en avant" featured-notes: "Les notes mises en avant"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "Jai compris !" got-it: "Jai compris !"
customization-tips: customization-tips:
title: "Conseils de personnalisation" title: "Conseils de personnalisation"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Mot de passe" password: "Mot de passe"
token: "Jeton" token: "Jeton"
signing-in: "Connexion…" signing-in: "Connexion…"
signin: "Se connecter"
or: "Ou" or: "Ou"
signin-with-twitter: "Se connecter via Twitter" signin-with-twitter: "Se connecter via Twitter"
signin-with-github: "Se connecter avec GitHub" signin-with-github: "Se connecter avec GitHub"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "Silencé·e·s / Bloqué·e·s" mute-and-block: "Silencé·e·s / Bloqué·e·s"
blocking: "En cours de blocage" blocking: "En cours de blocage"
security: "Sécurité" security: "Sécurité"
signin: "Historique de connexion" signin: "ログイン履歴"
password: "Mot de Passe" password: "Mot de Passe"
other: "Autres" other: "Autres"
license: "Licence" license: "Licence"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "Arrière plan" wallpaper: "Arrière plan"
choose-wallpaper: "Sélectionner un fond d'écran" choose-wallpaper: "Sélectionner un fond d'écran"
delete-wallpaper: "Supprimer le fond d'écran" delete-wallpaper: "Supprimer le fond d'écran"
dark-mode: "Mode nuit"
use-shadow: "Utiliser les ombres dans l'interface utilisateur"
rounded-corners: "Coins arrondis"
circle-icons: "Utiliser des icônes circulaires"
contrasted-acct: "Nom dutilisateur contrasté"
post-form-on-timeline: "Afficher le formulaire en haut du fil" post-form-on-timeline: "Afficher le formulaire en haut du fil"
show-clock-on-header: "Afficher l'horloge à droite sur le coté supérieur" show-clock-on-header: "Afficher l'horloge à droite sur le coté supérieur"
show-reply-target: "Afficher les réponses" show-reply-target: "Afficher les réponses"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "Demandes dabonnement" follow-requests: "Demandes dabonnement"
admin: "Admin" admin: "Admin"
settings: "Réglages" settings: "Réglages"
signout: "Déconnexion"
dark: "Fall in dark"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Jeux" game: "Jeux"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "Par jour" day: "Par jour"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "à propos" about: "à propos"
gotit: "J'ai compris !"
signin: "Connexion"
signup: "S'enregistrer"
signin-button: "Se connecter"
signup-button: "S'inscrire"
timeline: "Fil dactualité" timeline: "Fil dactualité"
announcements: "Notices" announcements: "Notices"
photos: "Images récentes" photos: "Images récentes"
@@ -1503,13 +1498,11 @@ mobile/views/pages/home.vue:
messages: "Messages" messages: "Messages"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "Aucune publication ayant pour hashtag « {q} » na été trouvée." no-posts-found: "Aucune publication ayant pour hashtag « {q} » na été trouvée."
mobile/views/pages/welcome.vue:
signup: "S'enregistrer"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "Tableau de bord" dashboard: "ダッシュボード"
widgets-hints: "Vous pouvez ajouter, supprimer et réarranger les widgets. Faites glisser « 三 » pour déplacer le widget. Appuyez sur « x » pour supprimer le widget. Certains widgets peuvent changer dapparence en cliquant dessus." widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "Ajouter" add-widget: "追加"
customization-tips: "Conseils de personnalisation" customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
activity: "Activité" activity: "Activité"
mobile/views/pages/share.vue: mobile/views/pages/share.vue:
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Connecté·e en tant que {}" signed-in-as: "Connecté·e en tant que {}"
design: "Affichage et design" design: "Affichage et design"
dark-mode: "Mode nuit"
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"
contrasted-acct: "Nom dutilisateur contrasté"
timeline: "Fil dactualité" timeline: "Fil dactualité"
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"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "Nouvelle version disponible !" update-available: "Nouvelle version disponible !"
update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée." update-available-desc: "Les mises à jour seront appliquées une fois la page est rechargée."
settings: "Réglages" settings: "Réglages"
signout: "Déconnexion"
sound: "Sons" sound: "Sons"
enable-sounds: "Activer les sons" enable-sounds: "Activer les sons"
password: "Mot de Passe" password: "Mot de Passe"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "やってます..." signing-in: "やってます..."
signin: "サインイン"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,15 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
reload-to-apply-the-setting: "この設定を反映するにはページをリロードする必要があります。今すぐリロードしますか?"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
@@ -249,6 +258,9 @@ common/views/pages/explore.vue:
explore: "{host}を探索" explore: "{host}を探索"
users-info: "現在{users}ユーザーが登録されています" users-info: "現在{users}ユーザーが登録されています"
common/views/components/url-preview.vue:
enable-player: "プレイヤーを開く"
common/views/components/user-list.vue: common/views/components/user-list.vue:
no-users: "ユーザーがいません" no-users: "ユーザーがいません"
@@ -472,7 +484,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "やってます..." signing-in: "やってます..."
signin: "サインイン"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -913,7 +924,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -936,11 +947,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -1100,8 +1106,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
@@ -1453,11 +1457,6 @@ admin/views/federation.vue:
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1687,9 +1686,6 @@ mobile/views/pages/home.vue:
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1725,10 +1721,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1761,7 +1754,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "ほい" got-it: "ほい"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "サインイン中や..." signing-in: "サインイン中や..."
signin: "サインイン"
or: "それか" or: "それか"
signin-with-twitter: "Twitterでサインイン" signin-with-twitter: "Twitterでサインイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "こんな感じでサインインしたらしいで" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙選ぶ" choose-wallpaper: "壁紙選ぶ"
delete-wallpaper: "壁紙ほかす" delete-wallpaper: "壁紙ほかす"
dark-mode: "夜にすんで"
use-shadow: "UIに影付けたる"
rounded-corners: "みんなまぁるくUI変更"
circle-icons: "アイコンもタコ焼きも丸いやんな?"
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?" post-form-on-timeline: "タイムラインの上の方で投稿できるようにせえへん?"
show-clock-on-header: "右上をカリヨン広場にする(時計表示)" show-clock-on-header: "右上をカリヨン広場にする(時計表示)"
show-reply-target: "どこにリプライするんや見せて" show-reply-target: "どこにリプライするんや見せて"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー許してくれや!言うてみる" follow-requests: "フォロー許してくれや!言うてみる"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "さいなら"
dark: "ナイトゲームじゃ!"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "もうちょい……" about: "もうちょい……"
gotit: "ほい"
signin: "サインイン"
signup: "サインアップ"
signin-button: "やっとる"
signup-button: "サインアップ"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "知っときや" announcements: "知っときや"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿はあらへんかった。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿はあらへんかった。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできんで。ウィジェットを移動するんやったら「三」をドラッグしてや。ウィジェットを削除するんやったら「x」をタップしてや。いくつかのウィジェットはタップしたったら表示を変更できるかも分からん、知らんけど。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "増やす" add-widget: "追加"
customization-tips: "カスタマイズのヒント" customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
activity: "やっとること" activity: "やっとること"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "あんたは橋の下で拾った{}や!" signed-in-as: "あんたは橋の下で拾った{}や!"
design: "見た感じ" design: "見た感じ"
dark-mode: "ナイトゲームや!"
i-am-under-limited-internet: "電波と阪神がザコいんや" i-am-under-limited-internet: "電波と阪神がザコいんや"
circle-icons: "アイコンもタコ焼きも丸いやんな?"
contrasted-acct: "ユーザー名ようわからんし見やすしといて"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "どこにリプライするんや見せて" show-reply-target: "どこにリプライするんや見せて"
show-my-renotes: "あんたのしたRenoteも出すで" show-my-renotes: "あんたのしたRenoteも出すで"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "もっとええバージョンがあるで" update-available: "もっとええバージョンがあるで"
update-available-desc: "もっぺんページ読み込んだら新しなるで" update-available-desc: "もっぺんページ読み込んだら新しなるで"
settings: "設定" settings: "設定"
signout: "さいなら"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンド鳴らす" enable-sounds: "サウンド鳴らす"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "2단계 인증" 2fa: "2단계 인증"
customize-home: "홈 커스터마이징" customize-home: "홈 커스터마이징"
featured-notes: "하이라이트" featured-notes: "하이라이트"
dark-mode: "다크 모드"
use-shadow: "UI에 그림자 효과 적용"
rounded-corners: "UI의 모서리를 둥글게 설정"
circle-icons: "원형 아이콘 사용"
contrasted-acct: "사용자명에 대비 추가"
signin: "로그인"
signup: "신규 등록"
signout: "로그아웃"
got-it: "알겠습니다" got-it: "알겠습니다"
customization-tips: customization-tips:
title: "커스터마이징 도움말" title: "커스터마이징 도움말"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "비밀번호" password: "비밀번호"
token: "토큰" token: "토큰"
signing-in: "로그인 중입니다..." signing-in: "로그인 중입니다..."
signin: "로그인"
or: "또는" or: "또는"
signin-with-twitter: "Twitter로 로그인" signin-with-twitter: "Twitter로 로그인"
signin-with-github: "GitHub으로 로그인" signin-with-github: "GitHub으로 로그인"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "배경" wallpaper: "배경"
choose-wallpaper: "배경 설정" choose-wallpaper: "배경 설정"
delete-wallpaper: "배경 제거" delete-wallpaper: "배경 제거"
dark-mode: "다크 모드"
use-shadow: "UI에 그림자 효과 적용"
rounded-corners: "UI의 모서리를 둥글게 설정"
circle-icons: "원형 아이콘 사용"
contrasted-acct: "사용자명에 대비 추가"
post-form-on-timeline: "타임라인 상단에 글 작성란을 표시" post-form-on-timeline: "타임라인 상단에 글 작성란을 표시"
show-clock-on-header: "오른쪽 상단에 시계 표시" show-clock-on-header: "오른쪽 상단에 시계 표시"
show-reply-target: "답글 대상 표시" show-reply-target: "답글 대상 표시"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "팔로우 요청" follow-requests: "팔로우 요청"
admin: "관리" admin: "관리"
settings: "설정" settings: "설정"
signout: "로그아웃"
dark: "어둠에 삼켜져라"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "게임" game: "게임"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1일마다" day: "1일마다"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "자세히..." about: "자세히..."
gotit: "알겠습니다"
signin: "로그인"
signup: "신규 등록"
signin-button: "로그인 중"
signup-button: "등록"
timeline: "타임라인" timeline: "타임라인"
announcements: "공지사항" announcements: "공지사항"
photos: "최근 이미지" photos: "최근 이미지"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "메시지" messages: "메시지"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "해시태그 \"{q}\"가 붙은 글을 찾을 수 없습니다." no-posts-found: "해시태그 \"{q}\"가 붙은 글을 찾을 수 없습니다."
mobile/views/pages/welcome.vue:
signup: "신규 등록"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "대시보드" dashboard: "대시보드"
widgets-hints: "위젯을 추가 / 제거하거나 정렬할 수 있습니다. 위젯을 이동하려면 창틀의 \"☰\" 아이콘을 드래그합니다. 위젯을 삭제하려면 \"X\" 아이콘을 탭 합니다. 몇몇 위젯은 탭하면 표시형식을 바꿀 수 있습니다." widgets-hints: "위젯을 추가 / 제거하거나 정렬할 수 있습니다. 위젯을 이동하려면 창틀의 \"☰\" 아이콘을 드래그합니다. 위젯을 삭제하려면 \"X\" 아이콘을 탭 합니다. 몇몇 위젯은 탭하면 표시형식을 바꿀 수 있습니다."
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}(으)로 로그인" signed-in-as: "{}(으)로 로그인"
design: "디자인 및 표시" design: "디자인 및 표시"
dark-mode: "다크 모드"
i-am-under-limited-internet: "저는 통신 대역폭이 제한되어 있습니다" i-am-under-limited-internet: "저는 통신 대역폭이 제한되어 있습니다"
circle-icons: "원형 아이콘 사용"
contrasted-acct: "사용자명에 대비 추가"
timeline: "타임라인" timeline: "타임라인"
show-reply-target: "답글 대상 표시" show-reply-target: "답글 대상 표시"
show-my-renotes: "자신이 한 리노트 표시" show-my-renotes: "자신이 한 리노트 표시"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "새 버전을 사용할 수 있습니다" update-available: "새 버전을 사용할 수 있습니다"
update-available-desc: "페이지를 다시 로드하면 업데이트가 적용됩니다." update-available-desc: "페이지를 다시 로드하면 업데이트가 적용됩니다."
settings: "설정" settings: "설정"
signout: "로그아웃"
sound: "소리" sound: "소리"
enable-sounds: "소리 사용" enable-sounds: "소리 사용"
password: "비밀번호" password: "비밀번호"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Wachtwoord" password: "Wachtwoord"
token: "Sleutel" token: "Sleutel"
signing-in: "Bezig met inloggen..." signing-in: "Bezig met inloggen..."
signin: "Inloggen"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "Beveiliging" security: "Beveiliging"
signin: "Inloggeschiedenis" signin: "ログイン履歴"
password: "Wachtwoord" password: "Wachtwoord"
other: "Overig" other: "Overig"
license: "Licentie" license: "Licentie"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "Donkere modus"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "Ronde pictogrammen gebruiken"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen" post-form-on-timeline: "Berichtformulier boven de tijdlijn tonen"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Antwoord-knop tonen" show-reply-target: "Antwoord-knop tonen"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "Instellingen" settings: "Instellingen"
signout: "Uitloggen"
dark: "Donkere modus"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Othello spelen" game: "Othello spelen"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "Inloggen"
signup: "Registreren"
signin-button: "Inloggen"
signup-button: "Registreren"
timeline: "Tijdlijn" timeline: "Tijdlijn"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Ingelogd als {}" signed-in-as: "Ingelogd als {}"
design: "Ontwerp en weergave" design: "Ontwerp en weergave"
dark-mode: "Donkere modus"
i-am-under-limited-internet: "Ik heb beperkt internet" i-am-under-limited-internet: "Ik heb beperkt internet"
circle-icons: "Ronde pictogrammen gebruiken"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "Tijdlijn" timeline: "Tijdlijn"
show-reply-target: "Antwoordknop tonen" show-reply-target: "Antwoordknop tonen"
show-my-renotes: "Mijn renotes tonen" show-my-renotes: "Mijn renotes tonen"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "Nieuwe versie beschikbaar!" update-available: "Nieuwe versie beschikbaar!"
update-available-desc: "Herlaad de pagina om de updates toe te passen." update-available-desc: "Herlaad de pagina om de updates toe te passen."
settings: "Instellingen" settings: "Instellingen"
signout: "Uitloggen"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "Skjønner!" got-it: "Skjønner!"
customization-tips: customization-tips:
title: "カスタマイズのヒント" title: "カスタマイズのヒント"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Passord" password: "Passord"
token: "Token" token: "Token"
signing-in: "やってます..." signing-in: "やってます..."
signin: "Logg inn"
or: "Eller" or: "Eller"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "Passord" password: "Passord"
other: "Annet" other: "Annet"
license: "Lisens" license: "Lisens"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "Admin" admin: "Admin"
settings: "Innstillinger" settings: "Innstillinger"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Spill" game: "Spill"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "Skjønner!"
signin: "Logg inn"
signup: "Bli med"
signin-button: "Logger inn..."
signup-button: "Registrer"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "Kunngjøringer" announcements: "Kunngjøringer"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "Bli med"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "Legg til" add-widget: "追加"
customization-tips: "カスタマイズのヒント" customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ" activity: "アクティビティ"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "Innstillinger" settings: "Innstillinger"
signout: "サインアウト"
sound: "Lyder" sound: "Lyder"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "Uwierzytelnienie dwuetapowe" 2fa: "Uwierzytelnienie dwuetapowe"
customize-home: "Dostosuj stronę główną" customize-home: "Dostosuj stronę główną"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "Rozumiem!" got-it: "Rozumiem!"
customization-tips: customization-tips:
title: "Wskazówki o dostosowywaniu" title: "Wskazówki o dostosowywaniu"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "Hasło" password: "Hasło"
token: "Token" token: "Token"
signing-in: "Logowanie…" signing-in: "Logowanie…"
signin: "Zaloguj"
or: "lub" or: "lub"
signin-with-twitter: "Zaloguj się za pomocą Twittera" signin-with-twitter: "Zaloguj się za pomocą Twittera"
signin-with-github: "Zaloguj się za pomocą GitHuba" signin-with-github: "Zaloguj się za pomocą GitHuba"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "Wycisz / Zablokuj" mute-and-block: "Wycisz / Zablokuj"
blocking: "ブロック" blocking: "ブロック"
security: "Bezpieczeństwo" security: "Bezpieczeństwo"
signin: "Historia logowań" signin: "ログイン履歴"
password: "Hasło" password: "Hasło"
other: "Inne" other: "Inne"
license: "Licencja" license: "Licencja"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "Tapeta" wallpaper: "Tapeta"
choose-wallpaper: "Wybierz tło" choose-wallpaper: "Wybierz tło"
delete-wallpaper: "Usuń tło" delete-wallpaper: "Usuń tło"
dark-mode: "Tryb ciemny"
use-shadow: "Użyj cieni w UI"
rounded-corners: "Zaokrąglaj rogi w UI"
circle-icons: "Używaj okrągłych ikon"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu" post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "Pokazuj cel odpowiedzi" show-reply-target: "Pokazuj cel odpowiedzi"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "Prośby o śledzenie" follow-requests: "Prośby o śledzenie"
admin: "Admin" admin: "Admin"
settings: "Ustawienia" settings: "Ustawienia"
signout: "Wyloguj się"
dark: "Sprowadź ciemność"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "Gra" game: "Gra"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "O Misskey" about: "O Misskey"
gotit: "Rozumiem!"
signin: "Zaloguj się"
signup: "Zarejestruj się"
signin-button: "Zaloguj się"
signup-button: "Zarejestruj się"
timeline: "Oś czasu" timeline: "Oś czasu"
announcements: "Ogłoszenia" announcements: "Ogłoszenia"
photos: "Ostatnie obrazy" photos: "Ostatnie obrazy"
@@ -1503,12 +1498,10 @@ mobile/views/pages/home.vue:
messages: "Wiadomości" messages: "Wiadomości"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "Zarejestruj się"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "Kokpit" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "Dodaj" add-widget: "追加"
customization-tips: "カスタマイズのヒント" customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue: mobile/views/pages/widgets/activity.vue:
activity: "Aktywność" activity: "Aktywność"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Zalogowany jako {}" signed-in-as: "Zalogowany jako {}"
design: "Wygląd i wyświetlanie" design: "Wygląd i wyświetlanie"
dark-mode: "Tryb ciemny"
i-am-under-limited-internet: "Ograniczaj zużycie transferu" i-am-under-limited-internet: "Ograniczaj zużycie transferu"
circle-icons: "Używaj okrągłych ikon"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "Oś czasu" timeline: "Oś czasu"
show-reply-target: "Pokazuj cel odpowiedzi" show-reply-target: "Pokazuj cel odpowiedzi"
show-my-renotes: "Pokazuj moje udostępnienia" show-my-renotes: "Pokazuj moje udostępnienia"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "Dostępna jest nowa wersja" update-available: "Dostępna jest nowa wersja"
update-available-desc: "Odśwież stronę, aby zastosować aktualizację." update-available-desc: "Odśwież stronę, aby zastosować aktualizację."
settings: "Ustawienia" settings: "Ustawienia"
signout: "Wyloguj"
sound: "Dźwięk" sound: "Dźwięk"
enable-sounds: "Włącz dźwięk" enable-sounds: "Włącz dźwięk"
password: "Hasło" password: "Hasło"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "Entendi!" got-it: "Entendi!"
customization-tips: customization-tips:
title: "Dicas de personalização" title: "Dicas de personalização"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "やってます..." signing-in: "やってます..."
signin: "サインイン"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "Timeline" timeline: "Timeline"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "Uma nova versão está disponível" update-available: "Uma nova versão está disponível"
update-available-desc: "Atualizações vão ser aplicadas depois de recarregar a página" update-available-desc: "Atualizações vão ser aplicadas depois de recarregar a página"
settings: "Configurações" settings: "Configurações"
signout: "Sair"
sound: "Sons" sound: "Sons"
enable-sounds: "Ativar sons" enable-sounds: "Ativar sons"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "二段階認証" 2fa: "二段階認証"
customize-home: "ホームをカスタマイズ" customize-home: "ホームをカスタマイズ"
featured-notes: "ハイライト" featured-notes: "ハイライト"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
signin: "ログイン"
signup: "新規登録"
signout: "ログアウト"
got-it: "わかった" got-it: "わかった"
customization-tips: customization-tips:
title: "Советы по настройке" title: "Советы по настройке"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "パスワード" password: "パスワード"
token: "トークン" token: "トークン"
signing-in: "やってます..." signing-in: "やってます..."
signin: "サインイン"
or: "または" or: "または"
signin-with-twitter: "Twitterでログイン" signin-with-twitter: "Twitterでログイン"
signin-with-github: "GitHubでログイン" signin-with-github: "GitHubでログイン"
@@ -817,7 +824,7 @@ desktop/views/components/settings.vue:
mute-and-block: "ミュート/ブロック" mute-and-block: "ミュート/ブロック"
blocking: "ブロック" blocking: "ブロック"
security: "セキュリティ" security: "セキュリティ"
signin: "サインイン履歴" signin: "ログイン履歴"
password: "パスワード" password: "パスワード"
other: "その他" other: "その他"
license: "ライセンス" license: "ライセンス"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁紙" wallpaper: "壁紙"
choose-wallpaper: "壁紙を選択" choose-wallpaper: "壁紙を選択"
delete-wallpaper: "壁紙を削除" delete-wallpaper: "壁紙を削除"
dark-mode: "ダークモード"
use-shadow: "UIに影を使用"
rounded-corners: "UIの角を丸める"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
post-form-on-timeline: "タイムライン上部に投稿フォームを表示する" post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
show-clock-on-header: "右上に時計を表示する" show-clock-on-header: "右上に時計を表示する"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "フォロー申請" follow-requests: "フォロー申請"
admin: "管理" admin: "管理"
settings: "設定" settings: "設定"
signout: "サインアウト"
dark: "闇に飲まれる"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "ゲーム" game: "ゲーム"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "1日ごと" day: "1日ごと"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "詳しく..." about: "詳しく..."
gotit: "わかった"
signin: "ログイン"
signup: "新規登録"
signin-button: "やってる"
signup-button: "やる"
timeline: "タイムライン" timeline: "タイムライン"
announcements: "お知らせ" announcements: "お知らせ"
photos: "最近の画像" photos: "最近の画像"
@@ -1503,8 +1498,6 @@ mobile/views/pages/home.vue:
messages: "メッセージ" messages: "メッセージ"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。" no-posts-found: "ハッシュタグ「{q}」が付けられた投稿は見つかりませんでした。"
mobile/views/pages/welcome.vue:
signup: "新規登録"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード" dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。" widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
circle-icons: "円形のアイコンを使用"
contrasted-acct: "ユーザー名にコントラストを付ける"
timeline: "タイムライン" timeline: "タイムライン"
show-reply-target: "リプライ先を表示する" show-reply-target: "リプライ先を表示する"
show-my-renotes: "自分の行ったRenoteを表示する" show-my-renotes: "自分の行ったRenoteを表示する"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "新しいバージョンが利用可能です" update-available: "新しいバージョンが利用可能です"
update-available-desc: "ページを再度読み込みすると更新が適用されます。" update-available-desc: "ページを再度読み込みすると更新が適用されます。"
settings: "設定" settings: "設定"
signout: "サインアウト"
sound: "サウンド" sound: "サウンド"
enable-sounds: "サウンドを有効にする" enable-sounds: "サウンドを有効にする"
password: "パスワード" password: "パスワード"

View File

@@ -30,6 +30,14 @@ common:
2fa: "双重身份验证" 2fa: "双重身份验证"
customize-home: "自定义主页" customize-home: "自定义主页"
featured-notes: "高亮" featured-notes: "高亮"
dark-mode: "黑暗模式"
use-shadow: "在UI中使用阴影效果"
rounded-corners: "UI界面圆角效果"
circle-icons: "使用圆形图标"
contrasted-acct: "增加用户名的对比度"
signin: "登录"
signup: "注册"
signout: "退出"
got-it: "没问题" got-it: "没问题"
customization-tips: customization-tips:
title: "自定义提示" title: "自定义提示"
@@ -433,7 +441,6 @@ common/views/components/signin.vue:
password: "密码" password: "密码"
token: "Token (令牌)" token: "Token (令牌)"
signing-in: "正在登录..." signing-in: "正在登录..."
signin: "登录"
or: "或者" or: "或者"
signin-with-twitter: "用 Twitter 登录" signin-with-twitter: "用 Twitter 登录"
signin-with-github: "用 GitHub 登录" signin-with-github: "用 GitHub 登录"
@@ -838,11 +845,6 @@ desktop/views/components/settings.vue:
wallpaper: "壁纸" wallpaper: "壁纸"
choose-wallpaper: "选择一个背景壁纸" choose-wallpaper: "选择一个背景壁纸"
delete-wallpaper: "移除背景壁纸" delete-wallpaper: "移除背景壁纸"
dark-mode: "黑暗模式"
use-shadow: "在UI中使用阴影效果"
rounded-corners: "UI界面圆角效果"
circle-icons: "使用圆形图标"
contrasted-acct: "增加用户名的对比度"
post-form-on-timeline: "在时间线顶部显示帖子表单" post-form-on-timeline: "在时间线顶部显示帖子表单"
show-clock-on-header: "在右上角显示时钟" show-clock-on-header: "在右上角显示时钟"
show-reply-target: "显示回复目标" show-reply-target: "显示回复目标"
@@ -983,8 +985,6 @@ desktop/views/components/ui.header.account.vue:
follow-requests: "关注申请" follow-requests: "关注申请"
admin: "管理" admin: "管理"
settings: "设置" settings: "设置"
signout: "登出"
dark: "切换到黑暗模式 (夜间使用请打开此选项哦~)"
desktop/views/components/ui.header.nav.vue: desktop/views/components/ui.header.nav.vue:
game: "游戏" game: "游戏"
desktop/views/components/ui.header.notifications.vue: desktop/views/components/ui.header.notifications.vue:
@@ -1312,11 +1312,6 @@ admin/views/federation.vue:
day: "每天" day: "每天"
desktop/views/pages/welcome.vue: desktop/views/pages/welcome.vue:
about: "更多信息..." about: "更多信息..."
gotit: "没问题! "
signin: "登录"
signup: "注册"
signin-button: "正在登录"
signup-button: "注册"
timeline: "时间线" timeline: "时间线"
announcements: "公告" announcements: "公告"
photos: "最近图片" photos: "最近图片"
@@ -1503,10 +1498,8 @@ mobile/views/pages/home.vue:
messages: "信息" messages: "信息"
mobile/views/pages/tag.vue: mobile/views/pages/tag.vue:
no-posts-found: "没有找到带有主题标签“{q}”的帖子" no-posts-found: "没有找到带有主题标签“{q}”的帖子"
mobile/views/pages/welcome.vue:
signup: "注册"
mobile/views/pages/widgets.vue: mobile/views/pages/widgets.vue:
dashboard: "Dashboard" dashboard: "仪表盘"
widgets-hints: "您可以添加/删除/重新排列小部件。 要移动小部件,请拖动“三”。 点击“×”删除小部件。 某些小部件可以通过点击来更改显示。" widgets-hints: "您可以添加/删除/重新排列小部件。 要移动小部件,请拖动“三”。 点击“×”删除小部件。 某些小部件可以通过点击来更改显示。"
add-widget: "添加" add-widget: "添加"
customization-tips: "定制提示" customization-tips: "定制提示"
@@ -1532,10 +1525,7 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "以{}登录" signed-in-as: "以{}登录"
design: "设计与展示" design: "设计与展示"
dark-mode: "夜间模式"
i-am-under-limited-internet: "我的带宽有限" i-am-under-limited-internet: "我的带宽有限"
circle-icons: "使用圆形图标"
contrasted-acct: "增加用户名的对比度"
timeline: "时间线" timeline: "时间线"
show-reply-target: "显示回复目标" show-reply-target: "显示回复目标"
show-my-renotes: "显示我的转发" show-my-renotes: "显示我的转发"
@@ -1568,7 +1558,6 @@ mobile/views/pages/settings.vue:
update-available: "有新版本可用!" update-available: "有新版本可用!"
update-available-desc: "重新加载页面以应用更新" update-available-desc: "重新加载页面以应用更新"
settings: "设置" settings: "设置"
signout: "注销"
sound: "声音" sound: "声音"
enable-sounds: "开启声音" enable-sounds: "开启声音"
password: "密码" password: "密码"

View File

@@ -1,7 +1,7 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "10.90.0", "version": "10.90.4",
"codename": "nighthike", "codename": "nighthike",
"repository": { "repository": {
"type": "git", "type": "git",

View File

@@ -1,5 +1,5 @@
export default function(me, settings, note) { export default function(me, settings, note) {
const isMyNote = note.userId == me.id; const isMyNote = me && (note.userId == me.id);
const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null; const isPureRenote = note.renoteId != null && note.text == null && note.fileIds.length == 0 && note.poll == null;
const includesMutedWords = (text: string) => const includesMutedWords = (text: string) =>

View File

@@ -1,5 +1,5 @@
<template> <template>
<span class="mk-acct"> <span class="mk-acct" v-once>
<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/> <fa v-if="user.isLocked == true" class="locked" icon="lock" fixed-width/>

View File

@@ -1,14 +1,14 @@
<template> <template>
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick"> <span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-if="disableLink && !disablePreview" v-user-preview="user.id" @click="onClick" v-once>
<span class="inner" :style="icon"></span> <span class="inner" :style="icon"></span>
</span> </span>
<span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick"> <span class="mk-avatar" :style="style" :class="{ cat }" :title="user | acct" v-else-if="disableLink && disablePreview" @click="onClick" v-once>
<span class="inner" :style="icon"></span> <span class="inner" :style="icon"></span>
</span> </span>
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id"> <router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && !disablePreview" v-user-preview="user.id" v-once>
<span class="inner" :style="icon"></span> <span class="inner" :style="icon"></span>
</router-link> </router-link>
<router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview"> <router-link class="mk-avatar" :style="style" :class="{ cat }" :to="user | userPage" :title="user | acct" :target="target" v-else-if="!disableLink && disablePreview" v-once>
<span class="inner" :style="icon"></span> <span class="inner" :style="icon"></span>
</router-link> </router-link>
</template> </template>

View File

@@ -80,7 +80,7 @@ export default Vue.extend({
> div > div
background-color var(--text) background-color var(--text)
border-radius var(--round) border-radius 6px
color var(--secondary) color var(--secondary)
display inline-block display inline-block
font-size 14px font-size 14px

View File

@@ -1,5 +1,5 @@
<template> <template>
<mfm-core v-bind="$attrs" class="havbbuyv"/> <mfm-core v-bind="$attrs" class="havbbuyv" v-once/>
</template> </template>
<script lang="ts"> <script lang="ts">

View File

@@ -14,7 +14,7 @@
<span>{{ $t('@.2fa') }}</span> <span>{{ $t('@.2fa') }}</span>
<template #prefix><fa icon="gavel"/></template> <template #prefix><fa icon="gavel"/></template>
</ui-input> </ui-input>
<ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('signin') }}</ui-button> <ui-button type="submit" :disabled="signing">{{ signing ? $t('signing-in') : $t('@.signin') }}</ui-button>
<p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p> <p v-if="meta && meta.enableTwitterIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/twitter`">{{ $t('signin-with-twitter') }}</a></p>
<p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p> <p v-if="meta && meta.enableGithubIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/github`">{{ $t('signin-with-github') }}</a></p>
<p v-if="meta && meta.enableDiscordIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/discord`">{{ $t('signin-with-discord') /* TODO: Make these layouts better */ }}</a></p> <p v-if="meta && meta.enableDiscordIntegration" style="margin: 8px 0;"><a :href="`${apiUrl}/signin/discord`">{{ $t('signin-with-discord') /* TODO: Make these layouts better */ }}</a></p>

View File

@@ -150,7 +150,7 @@ export default Vue.extend({
password: this.password password: this.password
}).then(res => { }).then(res => {
localStorage.setItem('i', res.i); localStorage.setItem('i', res.i);
location.reload(); location.href = '/';
}); });
}).catch(() => { }).catch(() => {
alert(this.$t('some-error')); alert(this.$t('some-error'));

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="ui-card" :class="{ shadow: $store.state.settings.useShadow }"> <div class="ui-card" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<header> <header>
<slot name="title"></slot> <slot name="title"></slot>
</header> </header>
@@ -25,7 +25,9 @@ export default Vue.extend({
max-width 850px max-width 850px
color var(--faceText) color var(--faceText)
background var(--face) background var(--face)
border-radius var(--round)
&.round
border-radius 6px
&.shadow &.shadow
box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12) box-shadow 0 3px 1px -2px rgba(#000, 0.2), 0 2px 2px 0 rgba(#000, 0.14), 0 1px 5px 0 rgba(#000, 0.12)

View File

@@ -1,6 +1,6 @@
<template> <template>
<div v-if="player.url" class="player" :style="`padding: ${(player.height || 0) / (player.width || 1) * 100}% 0 0`"> <div v-if="playerEnabled" class="player" :style="`padding: ${(player.height || 0) / (player.width || 1) * 100}% 0 0`">
<iframe :src="player.url" :width="player.width || '100%'" :heigth="player.height || 250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen /> <iframe :src="player.url + (player.url.match(/\?/) ? '&autoplay=1&auto_play=1' : '?autoplay=1&auto_play=1')" :width="player.width || '100%'" :heigth="player.height || 250" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
</div> </div>
<div v-else-if="tweetUrl && detail" class="twitter"> <div v-else-if="tweetUrl && detail" class="twitter">
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null"> <blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
@@ -9,7 +9,9 @@
</div> </div>
<div v-else class="mk-url-preview"> <div v-else class="mk-url-preview">
<a :class="{ mini: narrow, compact }" :href="url" target="_blank" :title="url" v-if="!fetching"> <a :class="{ mini: narrow, 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}')`">
<button v-if="!playerEnabled && player.url" @click.prevent="playerEnabled = true" :title="$t('enable-player')"><fa :icon="['far', 'play-circle']"/></button>
</div>
<article> <article>
<header> <header>
<h1 :title="title">{{ title }}</h1> <h1 :title="title">{{ title }}</h1>
@@ -26,88 +28,11 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../i18n';
import { url as misskeyUrl } from '../../../config'; import { url as misskeyUrl } from '../../../config';
// THIS IS THE WHITELIST FOR THE EMBED PLAYER
const whiteList = [
'afreecatv.com',
'aparat.com',
'applemusic.com',
'amazon.com',
'awa.fm',
'bandcamp.com',
'bbc.co.uk',
'beatport.com',
'bilibili.com',
'boomstream.com',
'breakers.tv',
'cam4.com',
'cavelis.net',
'chaturbate.com',
'cnn.com',
'cybergame.tv',
'dailymotion.com',
'deezer.com',
'djlive.pl',
'e-onkyo.com',
'eventials.com',
'facebook.com',
'fc2.com',
'gameplank.tv',
'goodgame.ru',
'google.com',
'hardtunes.com',
'instagram.com',
'johnnylooch.com',
'kexp.org',
'lahzenegar.com',
'liveedu.tv',
'livetube.cc',
'livestream.com',
'meridix.com',
'mixcloud.com',
'mixer.com',
'mobcrush.com',
'mylive.in.th',
'myspace.com',
'netflix.com',
'newretrowave.com',
'nhk.or.jp',
'nicovideo.jp',
'nico.ms',
'noisetrade.com',
'nood.tv',
'npr.org',
'openrec.tv',
'pandora.com',
'pandora.tv',
'picarto.tv',
'pscp.tv',
'restream.io',
'reverbnation.com',
'sermonaudio.com',
'smashcast.tv',
'songkick.com',
'soundcloud.com',
'spinninrecords.com',
'spotify.com',
'stitcher.com',
'stream.me',
'switchboard.live',
'tunein.com',
'twitcasting.tv',
'twitch.tv',
'twitter.com',
'vaughnlive.tv',
'veoh.com',
'vimeo.com',
'watchpeoplecode.com',
'web.tv',
'youtube.com',
'youtu.be'
];
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/url-preview.vue'),
props: { props: {
url: { url: {
type: String, type: String,
@@ -147,7 +72,8 @@ export default Vue.extend({
height: null height: null
}, },
tweetUrl: null, tweetUrl: null,
misskeyUrl playerEnabled: false,
misskeyUrl,
}; };
}, },
@@ -188,9 +114,7 @@ export default Vue.extend({
this.icon = info.icon; this.icon = info.icon;
this.sitename = info.sitename; this.sitename = info.sitename;
this.fetching = false; this.fetching = false;
if (whiteList.some(x => x == url.hostname || url.hostname.endsWith(`.${x}`))) {
this.player = info.player; this.player = info.player;
}
}) })
}); });
} }
@@ -230,6 +154,17 @@ export default Vue.extend({
height 100% height 100%
background-position center background-position center
background-size cover background-size cover
display flex
justify-content center
align-items center
> button
font-size 3.5em
opacity: 0.7
&:hover
font-size 4em
opacity 0.9
& + article & + article
left 100px left 100px

View File

@@ -1,6 +1,5 @@
<template> <template>
<div class="dnpfarvgbnfmyzbdquhhzyxcmstpdqzs" :class="{ naked, narrow, active, isStacked, draghover, dragging, dropready }" <div class="dnpfarvgbnfmyzbdquhhzyxcmstpdqzs" :class="{ naked, narrow, active, isStacked, draghover, dragging, dropready, isMobile: $root.isMobile, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }"
:data-mobile="$root.isMobile"
@dragover.prevent.stop="onDragover" @dragover.prevent.stop="onDragover"
@dragleave="onDragleave" @dragleave="onDragleave"
@drop.prevent.stop="onDrop" @drop.prevent.stop="onDrop"
@@ -323,16 +322,13 @@ export default Vue.extend({
height 100% height 100%
background var(--face) background var(--face)
border-radius var(--round)
box-shadow var(--shadow)
overflow hidden overflow hidden
&[data-mobile] &.round
border-radius 0 border-radius 6px
box-shadow none
> header &.shadow
box-shadow none box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
&.draghover &.draghover
box-shadow 0 0 0 2px var(--primaryAlpha08) box-shadow 0 0 0 2px var(--primaryAlpha08)
@@ -374,6 +370,10 @@ export default Vue.extend({
> button > button
color var(--text) color var(--text)
&.isMobile
> header
box-shadow none
> header > header
display flex display flex
z-index 2 z-index 2

View File

@@ -29,7 +29,7 @@ export default Vue.extend({
return { return {
faNewspaper, faNewspaper,
makePromise: cursor => this.$root.api('notes/featured', { makePromise: cursor => this.$root.api('notes/featured', {
limit: 20, limit: 30,
}).then(notes => { }).then(notes => {
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
return notes; return notes;

View File

@@ -1,6 +1,6 @@
<template> <template>
<mk-ui :class="$style.root"> <mk-ui :class="$style.root">
<div class="qlvquzbjribqcaozciifydkngcwtyzje" :data-mobile="$root.isMobile" ref="body" :style="style" :class="`${$store.state.device.deckColumnAlign} ${$store.state.device.deckColumnWidth}`" v-hotkey.global="keymap"> <div class="qlvquzbjribqcaozciifydkngcwtyzje" ref="body" :style="style" :class="`${$store.state.device.deckColumnAlign} ${$store.state.device.deckColumnWidth}`" v-hotkey.global="keymap">
<template v-for="ids in layout"> <template v-for="ids in layout">
<div v-if="ids.length > 1" class="folder"> <div v-if="ids.length > 1" class="folder">
<template v-for="id, i in ids"> <template v-for="id, i in ids">
@@ -332,15 +332,8 @@ export default Vue.extend({
overflow-y hidden overflow-y hidden
-webkit-overflow-scrolling touch -webkit-overflow-scrolling touch
&[data-mobile] @media (max-width 500px)
padding 0 padding 8px 0 8px 8px
> div
margin-right 0
&.folder
> *:not(:last-child)
margin-bottom 0
> div > div
margin-right 8px margin-right 8px

View File

@@ -14,6 +14,7 @@ import wTips from './tips.vue';
import wNav from './nav.vue'; import wNav from './nav.vue';
import wHashtags from './hashtags.vue'; import wHashtags from './hashtags.vue';
import wInstance from './instance.vue'; import wInstance from './instance.vue';
import wPostForm from './post-form.vue';
Vue.component('mkw-analog-clock', wAnalogClock); Vue.component('mkw-analog-clock', wAnalogClock);
Vue.component('mkw-nav', wNav); Vue.component('mkw-nav', wNav);
@@ -29,3 +30,4 @@ Vue.component('mkw-rss', wRss);
Vue.component('mkw-version', wVersion); Vue.component('mkw-version', wVersion);
Vue.component('mkw-hashtags', wHashtags); Vue.component('mkw-hashtags', wHashtags);
Vue.component('mkw-instance', wInstance); Vue.component('mkw-instance', wInstance);
Vue.component('mkw-post-form', wPostForm);

View File

@@ -17,7 +17,7 @@
ref="text" ref="text"
v-autocomplete="{ model: 'text' }" v-autocomplete="{ model: 'text' }"
></textarea> ></textarea>
<button class="emoji" @click="emoji" ref="emoji"> <button class="emoji" @click="emoji" ref="emoji" v-if="!$root.isMobile">
<fa :icon="['far', 'laugh']"/> <fa :icon="['far', 'laugh']"/>
</button> </button>
</div> </div>
@@ -161,7 +161,7 @@ export default define({
}, },
async emoji() { async emoji() {
const Picker = await import('../components/emoji-picker-dialog.vue').then(m => m.default); const Picker = await import('../../../desktop/views/components/emoji-picker-dialog.vue').then(m => m.default);
const button = this.$refs.emoji; const button = this.$refs.emoji;
const rect = button.getBoundingClientRect(); const rect = button.getBoundingClientRect();
const vm = this.$root.new(Picker, { const vm = this.$root.new(Picker, {
@@ -186,6 +186,9 @@ export default define({
alert('Something happened'); alert('Something happened');
}).then(() => { }).then(() => {
this.posting = false; this.posting = false;
this.$nextTick(() => {
this.$refs.text.focus();
});
}); });
}, },

View File

@@ -7,7 +7,7 @@
<div class="mkw-rss--body" :data-mobile="platform == 'mobile'"> <div class="mkw-rss--body" :data-mobile="platform == 'mobile'">
<p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p> <p class="fetching" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('@.loading') }}<mk-ellipsis/></p>
<div class="feed" v-else> <div class="feed" v-else>
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a> <a v-for="item in items" :href="item.link" target="_blank" :title="item.title">{{ item.title }}</a>
</div> </div>
</div> </div>
</ui-container> </ui-container>
@@ -55,12 +55,18 @@ export default define({
}); });
}, },
setting() { setting() {
const url = window.prompt('URL', this.props.url); this.$root.dialog({
if (url && url != '') { title: 'URL',
input: {
type: 'url',
default: this.props.url
}
}).then(({ canceled, result: url }) => {
if (canceled) return;
this.props.url = url; this.props.url = url;
this.save(); this.save();
this.fetch(); this.fetch();
} });
} }
} }
}); });

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="mk-calendar" :data-melt="design == 4 || design == 5"> <div class="mk-calendar" :data-melt="design == 4 || design == 5" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<template v-if="design == 0 || design == 1"> <template v-if="design == 0 || design == 1">
<button @click="prev" :title="$t('prev')"><fa icon="chevron-circle-left"/></button> <button @click="prev" :title="$t('prev')"><fa icon="chevron-circle-left"/></button>
<p class="title">{{ $t('title', { year, month }) }}</p> <p class="title">{{ $t('title', { year, month }) }}</p>
@@ -133,10 +133,14 @@ export default Vue.extend({
.mk-calendar .mk-calendar
color var(--calendarDay) color var(--calendarDay)
background var(--face) background var(--face)
box-shadow var(--shadow)
border-radius var(--round)
overflow hidden overflow hidden
&.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
&[data-melt] &[data-melt]
background transparent !important background transparent !important
border none !important border none !important

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="mk-note-detail" :title="title" tabindex="-1"> <div class="mk-note-detail" :title="title" tabindex="-1" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<button <button
class="read-more" class="read-more"
v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0" v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0"
@@ -159,8 +159,15 @@ export default Vue.extend({
overflow hidden overflow hidden
text-align left text-align left
background var(--face) background var(--face)
box-shadow var(--shadow)
border-radius var(--round) &.round
border-radius 6px
> .read-more
border-radius 6px 6px 0 0
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
> .read-more > .read-more
display block display block
@@ -175,7 +182,6 @@ export default Vue.extend({
outline none outline none
border none border none
border-bottom solid 1px var(--faceDivider) border-bottom solid 1px var(--faceDivider)
border-radius var(--round) var(--round) 0 0
&:hover &:hover
box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05) box-shadow 0 0 0 100px inset rgba(0, 0, 0, 0.05)

View File

@@ -39,30 +39,30 @@
<mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="compact"/> <mk-url-preview v-for="url in urls" :url="url" :key="url" :compact="compact"/>
</div> </div>
</div> </div>
<footer v-if="appearNote.deletedAt == null"> <footer v-if="appearNote.deletedAt == null" class="footer">
<span class="app" v-if="appearNote.app && narrow && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span> <span class="app" v-if="appearNote.app && narrow && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span>
<mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/> <mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/>
<button class="replyButton" @click="reply()" :title="$t('reply')"> <button class="replyButton button" @click="reply()" :title="$t('reply')">
<template v-if="appearNote.reply"><fa icon="reply-all"/></template> <template v-if="appearNote.reply"><fa icon="reply-all"/></template>
<template v-else><fa icon="reply"/></template> <template v-else><fa icon="reply"/></template>
<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 button" @click="renote()" :title="$t('renote')">
<fa icon="retweet"/> <fa icon="retweet"/>
<p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p> <p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
</button> </button>
<button v-else class="inhibitedButton"> <button v-else class="inhibitedButton button">
<fa icon="ban"/> <fa icon="ban"/>
</button> </button>
<button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton" @click="react()" ref="reactButton" :title="$t('add-reaction')"> <button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton button" @click="react()" ref="reactButton" :title="$t('add-reaction')">
<fa icon="plus"/> <fa icon="plus"/>
<p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p> <p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p>
</button> </button>
<button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted" @click="undoReact(appearNote)" ref="reactButton" :title="$t('undo-reaction')"> <button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted button" @click="undoReact(appearNote)" ref="reactButton" :title="$t('undo-reaction')">
<fa icon="minus"/> <fa icon="minus"/>
<p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p> <p class="count" v-if="Object.values(appearNote.reactionCounts).some(x => x)">{{ Object.values(appearNote.reactionCounts).reduce((a, c) => a + c, 0) }}</p>
</button> </button>
<button @click="menu()" ref="menuButton"> <button @click="menu()" ref="menuButton" class="button">
<fa icon="ellipsis-h"/> <fa icon="ellipsis-h"/>
</button> </button>
</footer> </footer>
@@ -274,7 +274,7 @@ export default Vue.extend({
border dashed var(--lineWidth) var(--quoteBorder) border dashed var(--lineWidth) var(--quoteBorder)
border-radius 8px border-radius 8px
> footer > .footer
> .app > .app
display block display block
margin-top 0.5em margin-top 0.5em
@@ -282,7 +282,7 @@ export default Vue.extend({
color var(--noteHeaderInfo) color var(--noteHeaderInfo)
font-size 0.8em font-size 0.8em
> button > .button
margin 0 28px 0 0 margin 0 28px 0 0
padding 0 8px padding 0 8px
line-height 32px line-height 32px

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="mk-notes"> <div class="mk-notes" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<slot name="header"></slot> <slot name="header"></slot>
<div class="newer-indicator" :style="{ top: $store.state.uiHeaderHeight + 'px' }" v-show="queue.length > 0"></div> <div class="newer-indicator" :style="{ top: $store.state.uiHeaderHeight + 'px' }" v-show="queue.length > 0"></div>
@@ -191,10 +191,14 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.mk-notes .mk-notes
background var(--face) background var(--face)
box-shadow var(--shadow)
border-radius var(--round)
overflow hidden overflow hidden
&.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
.transition .transition
.mk-notes-enter .mk-notes-enter
.mk-notes-leave-to .mk-notes-leave-to

View File

@@ -87,10 +87,10 @@
<ui-radio v-model="navbar" value="right">{{ $t('navbar-position-right') }}</ui-radio> <ui-radio v-model="navbar" value="right">{{ $t('navbar-position-right') }}</ui-radio>
</section> </section>
<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="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> <section>
<header>{{ $t('@.line-width') }}</header> <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="0.5">{{ $t('@.line-width-thin') }}</ui-radio>
@@ -98,7 +98,7 @@
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio> <ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
</section> </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>
<ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch> <ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch>
<ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch> <ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch>
@@ -387,13 +387,13 @@ export default Vue.extend({
}, },
useShadow: { useShadow: {
get() { return this.$store.state.settings.useShadow; }, get() { return this.$store.state.device.useShadow; },
set(value) { this.$store.dispatch('settings/set', { key: 'useShadow', value }); } set(value) { this.$store.commit('device/set', { key: 'useShadow', value }); }
}, },
roundedCorners: { roundedCorners: {
get() { return this.$store.state.settings.roundedCorners; }, get() { return this.$store.state.device.roundedCorners; },
set(value) { this.$store.dispatch('settings/set', { key: 'roundedCorners', value }); } set(value) { this.$store.commit('device/set', { key: 'roundedCorners', value }); }
}, },
lineWidth: { lineWidth: {
@@ -463,17 +463,26 @@ export default Vue.extend({
circleIcons: { circleIcons: {
get() { return this.$store.state.settings.circleIcons; }, get() { return this.$store.state.settings.circleIcons; },
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); } set(value) {
this.$store.dispatch('settings/set', { key: 'circleIcons', value });
this.reload();
}
}, },
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 });
this.reload();
}
}, },
showFullAcct: { showFullAcct: {
get() { return this.$store.state.settings.showFullAcct; }, get() { return this.$store.state.settings.showFullAcct; },
set(value) { this.$store.dispatch('settings/set', { key: 'showFullAcct', value }); } set(value) {
this.$store.dispatch('settings/set', { key: 'showFullAcct', value });
this.reload();
}
}, },
showVia: { showVia: {
@@ -517,6 +526,17 @@ export default Vue.extend({
}); });
}, },
methods: { methods: {
reload() {
this.$root.dialog({
type: 'warning',
text: this.$t('@.reload-to-apply-the-setting'),
showCancelButton: true
}).then(({ canceled }) => {
if (!canceled) {
location.reload();
}
});
},
customizeHome() { customizeHome() {
location.href = '/?customize'; location.href = '/?customize';
}, },
@@ -583,9 +603,6 @@ export default Vue.extend({
z-index 1 z-index 1
font-size 15px font-size 15px
&.inWindow
box-shadow var(--shadowRight)
> p > p
display block display block
padding 10px 16px padding 10px 16px

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="kedshtep" :class="{ naked, inNakedDeckColumn }"> <div class="kedshtep" :class="{ naked, inNakedDeckColumn, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<header v-if="showHeader"> <header v-if="showHeader">
<div class="title"><slot name="header"></slot></div> <div class="title"><slot name="header"></slot></div>
<slot name="func"></slot> <slot name="func"></slot>
@@ -60,8 +60,12 @@ export default Vue.extend({
&:not(.inNakedDeckColumn) &:not(.inNakedDeckColumn)
background var(--face) background var(--face)
box-shadow var(--shadow)
border-radius var(--round) &.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
& + .kedshtep & + .kedshtep
margin-top 16px margin-top 16px

View File

@@ -77,7 +77,7 @@
<li @click="signout"> <li @click="signout">
<p class="signout"> <p class="signout">
<i><fa icon="power-off"/></i> <i><fa icon="power-off"/></i>
<span>{{ $t('signout') }}</span> <span>{{ $t('@.signout') }}</span>
</p> </p>
</li> </li>
</ul> </ul>

View File

@@ -61,7 +61,7 @@ export default Vue.extend({
computed: { computed: {
style(): any { style(): any {
return { return {
'box-shadow': this.$store.state.settings.useShadow ? '0 0px 8px rgba(0, 0, 0, 0.2)' : 'none' 'box-shadow': this.$store.state.device.useShadow ? '0 0px 8px rgba(0, 0, 0, 0.2)' : 'none'
}; };
} }
}, },

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="header" :class="navbar"> <div class="header" :class="navbar" :data-shadow="$store.state.device.useShadow">
<div class="body"> <div class="body">
<div class="post"> <div class="post">
<button @click="post" :title="$t('title')"><fa icon="pencil-alt"/></button> <button @click="post" :title="$t('title')"><fa icon="pencil-alt"/></button>
@@ -62,7 +62,7 @@
</div> </div>
<transition :name="`slide-${navbar}`"> <transition :name="`slide-${navbar}`">
<div class="notifications" v-if="showNotifications" ref="notifications" :class="navbar"> <div class="notifications" v-if="showNotifications" ref="notifications" :class="navbar" :data-shadow="$store.state.device.useShadow">
<mk-notifications/> <mk-notifications/>
</div> </div>
</transition> </transition>
@@ -226,11 +226,15 @@ export default Vue.extend({
&.left &.left
left 0 left 0
box-shadow var(--shadowRight)
&[data-shadow]
box-shadow 4px 0 4px rgba(0, 0, 0, 0.1)
&.right &.right
right 0 right 0
box-shadow var(--shadowLeft)
&[data-shadow]
box-shadow -4px 0 4px rgba(0, 0, 0, 0.1)
> .body > .body
position fixed position fixed
@@ -302,11 +306,15 @@ export default Vue.extend({
&.left &.left
left $width left $width
box-shadow var(--shadowRight)
&[data-shadow]
box-shadow 4px 0 4px rgba(0, 0, 0, 0.1)
&.right &.right
right $width right $width
box-shadow var(--shadowLeft)
&[data-shadow]
box-shadow -4px 0 4px rgba(0, 0, 0, 0.1)
.nav .nav
> * > *

View File

@@ -28,7 +28,7 @@ export default Vue.extend({
this.fetching = true; this.fetching = true;
this.$root.api('notes/featured', { this.$root.api('notes/featured', {
limit: 20 limit: 30
}).then(notes => { }).then(notes => {
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
this.notes = notes; this.notes = notes;

View File

@@ -22,7 +22,7 @@
<option value="users">{{ $t('@.widgets.users') }}</option> <option value="users">{{ $t('@.widgets.users') }}</option>
<option value="polls">{{ $t('@.widgets.polls') }}</option> <option value="polls">{{ $t('@.widgets.polls') }}</option>
<option value="post-form">{{ $t('@.widgets.post-form') }}</option> <option value="post-form">{{ $t('@.widgets.post-form') }}</option>
<option value="messaging">{{ $t('@.widgets.messaging') }}</option> <option value="messaging">{{ $t('@.messaging') }}</option>
<option value="memo">{{ $t('@.widgets.memo') }}</option> <option value="memo">{{ $t('@.widgets.memo') }}</option>
<option value="hashtags">{{ $t('@.widgets.hashtags') }}</option> <option value="hashtags">{{ $t('@.widgets.hashtags') }}</option>
<option value="posts-monitor">{{ $t('@.widgets.posts-monitor') }}</option> <option value="posts-monitor">{{ $t('@.widgets.posts-monitor') }}</option>
@@ -109,6 +109,10 @@ export default Vue.extend({
name: 'broadcast', name: 'broadcast',
place: 'right', place: 'right',
data: {} data: {}
}, {
name: 'hashtags',
place: 'right',
data: {}
}]; }];
} }
}, },

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="pwbzawku"> <div class="pwbzawku">
<mk-post-form class="form" v-if="$store.state.settings.showPostFormOnTopOfTl"/> <mk-post-form class="form" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }" v-if="$store.state.settings.showPostFormOnTopOfTl"/>
<div class="main"> <div class="main">
<component :is="src == 'list' ? 'mk-user-list-timeline' : 'x-core'" ref="tl" v-bind="options"> <component :is="src == 'list' ? 'mk-user-list-timeline' : 'x-core'" ref="tl" v-bind="options">
<header class="zahtxcqi"> <header class="zahtxcqi">
@@ -193,8 +193,12 @@ export default Vue.extend({
.pwbzawku .pwbzawku
> .form > .form
margin-bottom 16px margin-bottom 16px
box-shadow var(--shadow)
border-radius var(--round) &.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
.zahtxcqi .zahtxcqi
padding 0 8px padding 0 8px

View File

@@ -1,7 +1,11 @@
<template> <template>
<div class="omechnps" v-if="!fetching"> <div class="omechnps" v-if="!fetching">
<div class="is-suspended" v-if="user.isSuspended"><fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }}</div> <div class="is-suspended" v-if="user.isSuspended" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<div class="is-remote" v-if="user.host != null"><fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url || user.uri" target="_blank">{{ $t('@.view-on-remote') }}</a></div> <fa icon="exclamation-triangle"/> {{ $t('@.user-suspended') }}
</div>
<div class="is-remote" v-if="user.host != null" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<fa icon="exclamation-triangle"/> {{ $t('@.is-remote-user') }}<a :href="user.url || user.uri" target="_blank">{{ $t('@.view-on-remote') }}</a>
</div>
<div class="main"> <div class="main">
<x-header class="header" :user="user"/> <x-header class="header" :user="user"/>
<router-view :user="user"></router-view> <router-view :user="user"></router-view>
@@ -61,8 +65,12 @@ export default Vue.extend({
margin-bottom 16px margin-bottom 16px
padding 14px 16px padding 14px 16px
font-size 14px font-size 14px
box-shadow var(--shadow)
border-radius var(--round) &.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
&.is-suspended &.is-suspended
color var(--suspendedInfoFg) color var(--suspendedInfoFg)

View File

@@ -1,84 +0,0 @@
<template>
<div class="vahgrswmbzfdlmomxnqftuueyvwaafth">
<p class="title"><fa icon="users"/>{{ $t('title') }}</p>
<p class="initializing" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('loading') }}<mk-ellipsis/></p>
<div v-if="!fetching && users.length > 0">
<router-link v-for="user in users" :to="user | userPage" :key="user.id">
<img :src="user.avatarUrl" :alt="user | userName" v-user-preview="user.id"/>
</router-link>
</div>
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../../i18n';
export default Vue.extend({
i18n: i18n('desktop/views/pages/user/user.followers-you-know.vue'),
props: ['user'],
data() {
return {
users: [],
fetching: true
};
},
mounted() {
this.$root.api('users/followers', {
userId: this.user.id,
iknow: true,
limit: 16
}).then(x => {
this.users = x.users;
this.fetching = false;
});
}
});
</script>
<style lang="stylus" scoped>
.vahgrswmbzfdlmomxnqftuueyvwaafth
background var(--face)
box-shadow var(--shadow)
border-radius var(--round)
> .title
z-index 1
margin 0
padding 0 16px
line-height 42px
font-size 0.9em
font-weight bold
color var(--faceHeaderText)
box-shadow 0 1px rgba(#000, 0.07)
> i
margin-right 4px
> div
padding 8px
> a
display inline-block
margin 4px
> img
display inline-block
text-align center
width 48px
height 48px
vertical-align bottom
border-radius 100%
> .initializing
> .empty
margin 0
padding 16px
text-align center
color var(--text)
> i
margin-right 4px
</style>

View File

@@ -1,112 +0,0 @@
<template>
<div class="hozptpaliadatkehcmcayizwzwwctpbc">
<p class="title"><fa icon="users"/>{{ $t('title') }}</p>
<p class="initializing" v-if="fetching"><fa icon="spinner" pulse fixed-width/>{{ $t('loading') }}<mk-ellipsis/></p>
<template v-if="!fetching && users.length != 0">
<div class="user" v-for="friend in users">
<mk-avatar class="avatar" :user="friend"/>
<div class="body">
<router-link class="name" :to="friend | userPage" v-user-preview="friend.id"><mk-user-name :user="friend"/></router-link>
<p class="username">@{{ friend | acct }}</p>
</div>
</div>
</template>
<p class="empty" v-if="!fetching && users.length == 0">{{ $t('no-users') }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../../i18n';
export default Vue.extend({
i18n: i18n('desktop/views/pages/user/user.friends.vue'),
props: ['user'],
data() {
return {
users: [],
fetching: true
};
},
mounted() {
this.$root.api('users/get_frequently_replied_users', {
userId: this.user.id,
limit: 4
}).then(docs => {
this.users = docs.map(doc => doc.user);
this.fetching = false;
});
}
});
</script>
<style lang="stylus" scoped>
.hozptpaliadatkehcmcayizwzwwctpbc
background var(--face)
box-shadow var(--shadow)
border-radius var(--round)
overflow hidden
> .title
z-index 1
margin 0
padding 0 16px
line-height 42px
font-size 0.9em
font-weight bold
background var(--faceHeader)
color var(--faceHeaderText)
box-shadow 0 1px rgba(#000, 0.07)
> i
margin-right 4px
> .initializing
> .empty
margin 0
padding 16px
text-align center
color var(--text)
> i
margin-right 4px
> .user
padding 16px
border-bottom solid 1px var(--faceDivider)
&:last-child
border-bottom none
&:after
content ""
display block
clear both
> .avatar
display block
float left
margin 0 12px 0 0
width 42px
height 42px
border-radius 8px
> .body
float left
width calc(100% - 54px)
> .name
margin 0
font-size 16px
line-height 24px
color var(--text)
> .username
display block
margin 0
font-size 15px
line-height 16px
color var(--text)
opacity 0.7
</style>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="header"> <div class="header" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<div class="banner-container" :style="style"> <div class="banner-container" :style="style">
<div class="banner" ref="banner" :style="style" @click="onBannerClick"></div> <div class="banner" ref="banner" :style="style" @click="onBannerClick"></div>
<div class="fade"></div> <div class="fade"></div>
@@ -126,10 +126,14 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.header .header
background var(--face) background var(--face)
box-shadow var(--shadow)
border-radius var(--round)
overflow hidden overflow hidden
&.round
border-radius 6px
&.shadow
box-shadow 0 3px 8px rgba(0, 0, 0, 0.2)
> .banner-container > .banner-container
height 250px height 250px
overflow hidden overflow hidden

View File

@@ -30,12 +30,12 @@
</div> </div>
<p class="sign"> <p class="sign">
<span class="signup" @click="signup">{{ $t('signup') }}</span> <span class="signup" @click="signup">{{ $t('@.signup') }}</span>
<span class="divider">|</span> <span class="divider">|</span>
<span class="signin" @click="signin">{{ $t('signin') }}</span> <span class="signin" @click="signin">{{ $t('@.signin') }}</span>
</p> </p>
<img :src="meta.mascotImageUrl" alt="" title="藍" class="char"> <img v-if="meta" :src="meta.mascotImageUrl" alt="" title="藍" class="char">
</div> </div>
</div> </div>
@@ -135,12 +135,12 @@
</modal> </modal>
<modal name="signup" class="modal" width="450px" height="auto" scrollable> <modal name="signup" class="modal" width="450px" height="auto" scrollable>
<header class="formHeader">{{ $t('signup') }}</header> <header class="formHeader">{{ $t('@.signup') }}</header>
<mk-signup class="form"/> <mk-signup class="form"/>
</modal> </modal>
<modal name="signin" class="modal" width="450px" height="auto" scrollable> <modal name="signin" class="modal" width="450px" height="auto" scrollable>
<header class="formHeader">{{ $t('signin') }}</header> <header class="formHeader">{{ $t('@.signin') }}</header>
<mk-signin class="form"/> <mk-signin class="form"/>
</modal> </modal>
</div> </div>
@@ -344,8 +344,6 @@ export default Vue.extend({
.block .block
color var(--text) color var(--text)
background var(--face) background var(--face)
box-shadow var(--shadow)
//border-radius 8px
overflow auto overflow auto
> header > header

View File

@@ -6,7 +6,6 @@ import wActivity from './activity.vue';
import wTrends from './trends.vue'; import wTrends from './trends.vue';
import wUsers from './users.vue'; import wUsers from './users.vue';
import wPolls from './polls.vue'; import wPolls from './polls.vue';
import wPostForm from './post-form.vue';
import wMessaging from './messaging.vue'; import wMessaging from './messaging.vue';
import wProfile from './profile.vue'; import wProfile from './profile.vue';
import wCustomize from './customize.vue'; import wCustomize from './customize.vue';
@@ -17,7 +16,6 @@ Vue.component('mkw-activity', wActivity);
Vue.component('mkw-trends', wTrends); Vue.component('mkw-trends', wTrends);
Vue.component('mkw-users', wUsers); Vue.component('mkw-users', wUsers);
Vue.component('mkw-polls', wPolls); Vue.component('mkw-polls', wPolls);
Vue.component('mkw-post-form', wPostForm);
Vue.component('mkw-messaging', wMessaging); Vue.component('mkw-messaging', wMessaging);
Vue.component('mkw-profile', wProfile); Vue.component('mkw-profile', wProfile);
Vue.component('mkw-customize', wCustomize); Vue.component('mkw-customize', wCustomize);

View File

@@ -401,34 +401,6 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS], os: MiOS)
console.log(`Cannot reapply theme. ${e}`); console.log(`Cannot reapply theme. ${e}`);
} }
//#region shadow
const shadow = '0 3px 8px rgba(0, 0, 0, 0.2)';
const shadowRight = '4px 0 4px rgba(0, 0, 0, 0.1)';
const shadowLeft = '-4px 0 4px rgba(0, 0, 0, 0.1)';
if (os.store.state.settings.useShadow) {
document.documentElement.style.setProperty('--shadow', shadow);
document.documentElement.style.setProperty('--shadowRight', shadowRight);
document.documentElement.style.setProperty('--shadowLeft', shadowLeft);
}
os.store.watch(s => {
return s.settings.useShadow;
}, v => {
document.documentElement.style.setProperty('--shadow', v ? shadow : 'none');
document.documentElement.style.setProperty('--shadowRight', v ? shadowRight : 'none');
document.documentElement.style.setProperty('--shadowLeft', v ? shadowLeft : 'none');
});
//#endregion
//#region rounded corners
const round = '6px';
if (os.store.state.settings.roundedCorners) document.documentElement.style.setProperty('--round', round);
os.store.watch(s => {
return s.settings.roundedCorners;
}, v => {
document.documentElement.style.setProperty('--round', v ? round : '0');
});
//#endregion
//#region line width //#region line width
document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`); document.documentElement.style.setProperty('--lineWidth', `${os.store.state.device.lineWidth}px`);
os.store.watch(s => { os.store.watch(s => {

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="mk-note-detail" tabindex="-1"> <div class="mk-note-detail" tabindex="-1" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<button <button
class="more" class="more"
v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0" v-if="appearNote.reply && appearNote.reply.replyId && conversation.length == 0"
@@ -164,7 +164,11 @@ export default Vue.extend({
width 100% width 100%
text-align left text-align left
background var(--face) background var(--face)
&.round
border-radius 8px border-radius 8px
&.shadow
box-shadow 0 4px 16px rgba(#000, 0.1) box-shadow 0 4px 16px rgba(#000, 0.1)
@media (min-width 500px) @media (min-width 500px)
@@ -180,7 +184,7 @@ export default Vue.extend({
width 100% width 100%
font-size 1em font-size 1em
text-align center text-align center
color #999 color var(--text)
cursor pointer cursor pointer
background var(--subNoteBg) background var(--subNoteBg)
outline none outline none
@@ -289,7 +293,7 @@ export default Vue.extend({
> .location > .location
margin 4px 0 margin 4px 0
font-size 12px font-size 12px
color #ccc color var(--text)
> .map > .map
width 100% width 100%

View File

@@ -36,26 +36,26 @@
</div> </div>
<span class="app" v-if="appearNote.app && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span> <span class="app" v-if="appearNote.app && $store.state.settings.showVia">via <b>{{ appearNote.app.name }}</b></span>
</div> </div>
<footer v-if="appearNote.deletedAt == null"> <footer v-if="appearNote.deletedAt == null" class="footer">
<mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/> <mk-reactions-viewer :note="appearNote" ref="reactionsViewer"/>
<button @click="reply()"> <button @click="reply()" class="button">
<template v-if="appearNote.reply"><fa icon="reply-all"/></template> <template v-if="appearNote.reply"><fa icon="reply-all"/></template>
<template v-else><fa icon="reply"/></template> <template v-else><fa icon="reply"/></template>
<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" class="button">
<fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p> <fa icon="retweet"/><p class="count" v-if="appearNote.renoteCount > 0">{{ appearNote.renoteCount }}</p>
</button> </button>
<button v-else> <button v-else class="button">
<fa icon="ban"/> <fa icon="ban"/>
</button> </button>
<button v-if="!isMyNote && appearNote.myReaction == null" class="reactionButton" @click="react()" ref="reactButton"> <button v-if="!isMyNote && appearNote.myReaction == null" class="button" @click="react()" ref="reactButton">
<fa icon="plus"/> <fa icon="plus"/>
</button> </button>
<button v-if="!isMyNote && appearNote.myReaction != null" class="reactionButton reacted" @click="undoReact(appearNote)" ref="reactButton"> <button v-if="!isMyNote && appearNote.myReaction != null" class="button reacted" @click="undoReact(appearNote)" ref="reactButton">
<fa icon="minus"/> <fa icon="minus"/>
</button> </button>
<button class="menu" @click="menu()" ref="menuButton"> <button class="button" @click="menu()" ref="menuButton">
<fa icon="ellipsis-h"/> <fa icon="ellipsis-h"/>
</button> </button>
</footer> </footer>
@@ -107,20 +107,6 @@ export default Vue.extend({
font-size 13px font-size 13px
border-bottom solid var(--lineWidth) var(--faceDivider) border-bottom solid var(--lineWidth) var(--faceDivider)
&:focus
z-index 1
&:after
content ""
pointer-events none
position absolute
top 2px
right 2px
bottom 2px
left 2px
border 2px solid var(--primaryAlpha03)
border-radius 4px
&:last-of-type &:last-of-type
border-bottom none border-bottom none
@@ -251,8 +237,8 @@ export default Vue.extend({
font-size 12px font-size 12px
color #ccc color #ccc
> footer > .footer
> button > .button
margin 0 margin 0
padding 8px padding 8px
background transparent background transparent

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="ivaojijs"> <div class="ivaojijs" :class="{ shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<div class="empty" v-if="notes.length == 0 && !fetching && inited">{{ $t('@.no-notes') }}</div> <div class="empty" v-if="notes.length == 0 && !fetching && inited">{{ $t('@.no-notes') }}</div>
<mk-error v-if="!fetching && !inited" @retry="init()"/> <mk-error v-if="!fetching && !inited" @retry="init()"/>
@@ -191,7 +191,11 @@ export default Vue.extend({
.ivaojijs .ivaojijs
overflow hidden overflow hidden
background var(--face) background var(--face)
&.round
border-radius 8px border-radius 8px
&.shadow
box-shadow 0 4px 16px rgba(#000, 0.1) box-shadow 0 4px 16px rgba(#000, 0.1)
@media (min-width 500px) @media (min-width 500px)
@@ -239,13 +243,7 @@ export default Vue.extend({
padding 32px padding 32px
max-width 400px max-width 400px
text-align center text-align center
color #999 color var(--text)
> [data-icon]
display block
margin-bottom 16px
font-size 3em
color #ccc
> footer > footer
text-align center text-align center
@@ -258,7 +256,7 @@ export default Vue.extend({
margin 0 margin 0
padding 16px padding 16px
width 100% width 100%
color #ccc color var(--text)
@media (min-width 500px) @media (min-width 500px)
padding 20px padding 20px

View File

@@ -61,7 +61,7 @@ export default Vue.extend({
this.connection.on('notification', this.onNotification); this.connection.on('notification', this.onNotification);
const max = 10; const max = 15;
this.$root.api('i/notifications', { this.$root.api('i/notifications', {
limit: max + 1 limit: max + 1

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="ukygtjoj" :class="{ naked, inDeck, inNakedDeckColumn, hideHeader: !showHeader }"> <div class="ukygtjoj" :class="{ naked, inNakedDeckColumn, hideHeader: !showHeader, shadow: $store.state.device.useShadow, round: $store.state.device.roundedCorners }">
<header v-if="showHeader"> <header v-if="showHeader">
<div class="title"><slot name="header"></slot></div> <div class="title"><slot name="header"></slot></div>
<slot name="func"></slot> <slot name="func"></slot>
@@ -36,9 +36,6 @@ export default Vue.extend({
}, },
}, },
inject: { inject: {
inDeck: {
default: false
},
inNakedDeckColumn: { inNakedDeckColumn: {
default: false default: false
} }
@@ -60,12 +57,13 @@ export default Vue.extend({
.ukygtjoj .ukygtjoj
overflow hidden overflow hidden
&.inDeck
box-shadow none !important
&:not(.inNakedDeckColumn) &:not(.inNakedDeckColumn)
background var(--face) background var(--face)
&.round
border-radius 8px border-radius 8px
&.shadow
box-shadow 0 4px 16px rgba(#000, 0.1) box-shadow 0 4px 16px rgba(#000, 0.1)
& + .ukygtjoj & + .ukygtjoj
@@ -86,7 +84,6 @@ export default Vue.extend({
font-weight normal font-weight normal
color var(--faceHeaderText) color var(--faceHeaderText)
background var(--faceHeader) background var(--faceHeader)
border-radius 8px 8px 0 0
> [data-icon] > [data-icon]
margin-right 6px margin-right 6px

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="header" ref="root"> <div class="header" ref="root" :class="{ shadow: $store.state.device.useShadow }">
<p class="warn" v-if="env != 'production'">{{ $t('@.do-not-use-in-production') }} <a href="/assets/flush.html?force">Flush</a></p> <p class="warn" v-if="env != 'production'">{{ $t('@.do-not-use-in-production') }} <a href="/assets/flush.html?force">Flush</a></p>
<div class="main" ref="main"> <div class="main" ref="main">
<div class="backdrop"></div> <div class="backdrop"></div>
@@ -47,6 +47,8 @@ export default Vue.extend({
z-index 1024 z-index 1024
width calc(100% + 16px) width calc(100% + 16px)
padding 0 8px padding 0 8px
&.shadow
box-shadow 0 0px 8px rgba(0, 0, 0, 0.25) box-shadow 0 0px 8px rgba(0, 0, 0, 0.25)
&, * &, *

View File

@@ -36,7 +36,7 @@
<li v-if="$store.getters.isSignedIn && ($store.state.i.isAdmin || $store.state.i.isModerator)"><a href="/admin"><i><fa icon="terminal" fixed-width/></i><span>{{ $t('admin') }}</span><i><fa icon="angle-right"/></i></a></li> <li v-if="$store.getters.isSignedIn && ($store.state.i.isAdmin || $store.state.i.isModerator)"><a href="/admin"><i><fa icon="terminal" fixed-width/></i><span>{{ $t('admin') }}</span><i><fa icon="angle-right"/></i></a></li>
</ul> </ul>
<ul> <ul>
<li @click="toggleDeckMode"><p><i><fa :icon="$store.state.device.inDeckMode ? faHome : faColumns"/></i><span>{{ $store.state.device.inDeckMode ? $t('@.home') : $t('@.deck') }}</span></p></li> <li @click="toggleDeckMode"><p><i><fa :icon="$store.state.device.inDeckMode ? faHome : faColumns" fixed-width/></i><span>{{ $store.state.device.inDeckMode ? $t('@.home') : $t('@.deck') }}</span></p></li>
<li @click="dark"><p><i><fa :icon="$store.state.device.darkmode ? faSun : faMoon" fixed-width/></i><span>{{ $store.state.device.darkmode ? $t('@.turn-off-darkmode') : $t('@.turn-on-darkmode') }}</span></p></li> <li @click="dark"><p><i><fa :icon="$store.state.device.darkmode ? faSun : faMoon" fixed-width/></i><span>{{ $store.state.device.darkmode ? $t('@.turn-off-darkmode') : $t('@.turn-on-darkmode') }}</span></p></li>
</ul> </ul>
</div> </div>
@@ -50,7 +50,8 @@
</div> </div>
<div class="notifications" v-if="showNotifications"> <div class="notifications" v-if="showNotifications">
<header> <header>
<button @click="$parent.isDrawerOpening = false"><fa icon="times"/></button> <button @click="showNotifications = false"><fa icon="times"/></button>
<i v-if="hasUnreadNotification" class="circle"><fa icon="circle"/></i>
</header> </header>
<mk-notifications/> <mk-notifications/>
</div> </div>
@@ -207,7 +208,7 @@ export default Vue.extend({
font-size 15px font-size 15px
&.notifications &.notifications
width 340px width 330px
> .notifications > .notifications
padding-top 42px padding-top 42px
@@ -217,7 +218,7 @@ export default Vue.extend({
top 0 top 0
left 0 left 0
z-index 1000 z-index 1000
width 340px width 330px
line-height 42px line-height 42px
background var(--secondary) background var(--secondary)
@@ -228,6 +229,13 @@ export default Vue.extend({
line-height 42px line-height 42px
color var(--text) color var(--text)
> i
position absolute
top 0
right 16px
font-size 12px
color var(--notificationIndicator)
> .nav > .nav
> .me > .me

View File

@@ -124,7 +124,7 @@ export default Vue.extend({
position absolute position absolute
top 0 top 0
left 0 left 0
color var(--primary) color var(--notificationIndicator)
font-size 16px font-size 16px
&.post &.post

View File

@@ -36,7 +36,7 @@ export default Vue.extend({
this.fetching = true; this.fetching = true;
this.$root.api('notes/featured', { this.$root.api('notes/featured', {
limit: 20 limit: 30
}).then(notes => { }).then(notes => {
notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); notes.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
this.notes = notes; this.notes = notes;

View File

@@ -14,16 +14,18 @@
<template #title><fa icon="poll-h"/> {{ $t('design') }}</template> <template #title><fa icon="poll-h"/> {{ $t('design') }}</template>
<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="useShadow">{{ $t('@.use-shadow') }}</ui-switch>
<ui-switch v-model="roundedCorners">{{ $t('@.rounded-corners') }}</ui-switch>
<ui-switch v-model="circleIcons">{{ $t('@.circle-icons') }}</ui-switch>
<section> <section>
<header>{{ $t('@.line-width') }}</header> <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="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="1">{{ $t('@.line-width-normal') }}</ui-radio>
<ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio> <ui-radio v-model="lineWidth" :value="2">{{ $t('@.line-width-thick') }}</ui-radio>
</section> </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') }}</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>
<ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch> <ui-switch v-model="showVia">{{ $t('@.show-via') }}</ui-switch>
<ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch> <ui-switch v-model="useOsDefaultEmojis">{{ $t('@.use-os-default-emojis') }}</ui-switch>
@@ -155,7 +157,7 @@
</ui-card> </ui-card>
</div> </div>
<div class="signout" @click="signout">{{ $t('signout') }}</div> <div class="signout" @click="signout">{{ $t('@.signout') }}</div>
<footer> <footer>
<small>ver {{ version }} ({{ codename }})</small> <small>ver {{ version }} ({{ codename }})</small>
@@ -214,6 +216,16 @@ export default Vue.extend({
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); } set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
}, },
useShadow: {
get() { return this.$store.state.device.useShadow; },
set(value) { this.$store.commit('device/set', { key: 'useShadow', value }); }
},
roundedCorners: {
get() { return this.$store.state.device.roundedCorners; },
set(value) { this.$store.commit('device/set', { key: 'roundedCorners', value }); }
},
useOsDefaultEmojis: { useOsDefaultEmojis: {
get() { return this.$store.state.device.useOsDefaultEmojis; }, get() { return this.$store.state.device.useOsDefaultEmojis; },
set(value) { this.$store.commit('device/set', { key: 'useOsDefaultEmojis', value }); } set(value) { this.$store.commit('device/set', { key: 'useOsDefaultEmojis', value }); }
@@ -296,7 +308,10 @@ export default Vue.extend({
circleIcons: { circleIcons: {
get() { return this.$store.state.settings.circleIcons; }, get() { return this.$store.state.settings.circleIcons; },
set(value) { this.$store.dispatch('settings/set', { key: 'circleIcons', value }); } set(value) {
this.$store.dispatch('settings/set', { key: 'circleIcons', value });
this.reload();
}
}, },
lineWidth: { lineWidth: {
@@ -306,12 +321,18 @@ export default Vue.extend({
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 });
this.reload();
}
}, },
showFullAcct: { showFullAcct: {
get() { return this.$store.state.settings.showFullAcct; }, get() { return this.$store.state.settings.showFullAcct; },
set(value) { this.$store.dispatch('settings/set', { key: 'showFullAcct', value }); } set(value) {
this.$store.dispatch('settings/set', { key: 'showFullAcct', value });
this.reload();
}
}, },
showVia: { showVia: {
@@ -384,6 +405,18 @@ export default Vue.extend({
this.$root.signout(); this.$root.signout();
}, },
reload() {
this.$root.dialog({
type: 'warning',
text: this.$t('@.reload-to-apply-the-setting'),
showCancelButton: true
}).then(({ canceled }) => {
if (!canceled) {
location.reload();
}
});
},
checkForUpdate() { checkForUpdate() {
this.checkingForUpdate = true; this.checkingForUpdate = true;
checkForUpdate(this.$root, true, true).then(newer => { checkForUpdate(this.$root, true, true).then(newer => {

View File

@@ -9,7 +9,8 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../i18n'; import i18n from '../../../i18n';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('mobile/views/pages/signup.vue'),}); i18n: i18n('mobile/views/pages/signup.vue')
});
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@@ -23,6 +24,6 @@ export default Vue.extend({
padding 8px 0 0 0 padding 8px 0 0 0
font-size 1.5em font-size 1.5em
font-weight bold font-weight bold
color #444 color var(--text)
</style> </style>

View File

@@ -59,7 +59,7 @@
</div> </div>
</div> </div>
</header> </header>
<nav v-if="$route.name == 'user'"> <nav v-if="$route.name == 'user'" :class="{ shadow: $store.state.device.useShadow }">
<div class="nav-container"> <div class="nav-container">
<a :data-active="page == 'home'" @click="page = 'home'"><fa icon="home"/> {{ $t('overview') }}</a> <a :data-active="page == 'home'" @click="page = 'home'"><fa icon="home"/> {{ $t('overview') }}</a>
<a :data-active="page == 'notes'" @click="page = 'notes'"><fa :icon="['far', 'comment-alt']"/> {{ $t('timeline') }}</a> <a :data-active="page == 'notes'" @click="page = 'notes'"><fa :icon="['far', 'comment-alt']"/> {{ $t('timeline') }}</a>
@@ -315,10 +315,12 @@ export default Vue.extend({
position -webkit-sticky position -webkit-sticky
position sticky position sticky
top 47px top 47px
box-shadow 0 4px 4px var(--mobileUserPageHeaderShadow)
background-color $bg background-color $bg
z-index 2 z-index 2
&.shadow
box-shadow 0 4px 4px var(--mobileUserPageHeaderShadow)
> .nav-container > .nav-container
display flex display flex
justify-content center justify-content center

View File

@@ -8,10 +8,10 @@
<div class="about"> <div class="about">
<h2>{{ name }}</h2> <h2>{{ name }}</h2>
<p v-html="description || this.$t('@.about')"></p> <p v-html="description || this.$t('@.about')"></p>
<router-link class="signup" to="/signup">{{ $t('signup') }}</router-link> <router-link class="signup" to="/signup">{{ $t('@.signup') }}</router-link>
</div> </div>
<div class="signin"> <div class="signin">
<a href="/signin" @click.prevent="signin()">{{ $t('signin') }}</a> <a href="/signin" @click.prevent="signin()">{{ $t('@.signin') }}</a>
</div> </div>
<div class="tl"> <div class="tl">
<mk-welcome-timeline/> <mk-welcome-timeline/>

View File

@@ -17,8 +17,6 @@ const defaultSettings = {
showPostFormOnTopOfTl: false, showPostFormOnTopOfTl: false,
suggestRecentHashtags: true, suggestRecentHashtags: true,
showClockOnHeader: true, showClockOnHeader: true,
useShadow: true,
roundedCorners: false,
circleIcons: true, circleIcons: true,
contrastedAcct: true, contrastedAcct: true,
showFullAcct: false, showFullAcct: false,
@@ -48,9 +46,11 @@ const defaultDeviceSettings = {
deckMode: false, deckMode: false,
deckColumnAlign: 'center', deckColumnAlign: 'center',
deckColumnWidth: 'normal', deckColumnWidth: 'normal',
useShadow: false,
roundedCorners: true,
reduceMotion: false, reduceMotion: false,
autoPopout: false, autoPopout: false,
darkmode: false, darkmode: true,
darkTheme: 'dark', darkTheme: 'dark',
lightTheme: 'light', lightTheme: 'light',
lineWidth: 1, lineWidth: 1,

View File

@@ -36,7 +36,14 @@ export const meta = {
default: null as any, default: null as any,
transform: transform, transform: transform,
} }
} },
res: {
type: 'array',
items: {
type: 'DriveFolder',
},
},
}; };
export default define(meta, async (ps, user) => { export default define(meta, async (ps, user) => {

View File

@@ -23,7 +23,14 @@ export const meta = {
'ja-JP': 'フォルダID' 'ja-JP': 'フォルダID'
} }
}, },
} },
res: {
type: 'array',
items: {
type: 'DriveFolder',
},
},
}; };
export default define(meta, async (ps, user) => { export default define(meta, async (ps, user) => {

View File

@@ -29,6 +29,10 @@ export const meta = {
} }
}, },
res: {
type: 'DriveFolder',
},
errors: { errors: {
noSuchFolder: { noSuchFolder: {
message: 'No such folder.', message: 'No such folder.',

View File

@@ -44,7 +44,14 @@ export const meta = {
'-attachedRemoteUsers', '-attachedRemoteUsers',
]), ]),
}, },
},
res: {
type: 'array',
items: {
type: 'Hashtag'
} }
},
}; };
const sort: any = { const sort: any = {

View File

@@ -35,7 +35,14 @@ export const meta = {
'ja-JP': 'オフセット' 'ja-JP': 'オフセット'
} }
} }
},
res: {
type: 'array',
items: {
type: 'string'
} }
},
}; };
export default define(meta, async (ps) => { export default define(meta, async (ps) => {

View File

@@ -44,7 +44,14 @@ export const meta = {
]), ]),
default: 'local' default: 'local'
} }
},
res: {
type: 'array',
items: {
type: 'User'
} }
},
}; };
const sort: any = { const sort: any = {

View File

@@ -29,7 +29,6 @@ export default define(meta, async (ps, user) => {
await User.update({ _id: user._id }, { await User.update({ _id: user._id }, {
$set: { $set: {
isDeleted: true, isDeleted: true,
token: null,
name: null, name: null,
description: null, description: null,
pinnedNoteIds: [], pinnedNoteIds: [],

View File

@@ -33,7 +33,7 @@ export const meta = {
}; };
export default define(meta, async (ps, user) => { export default define(meta, async (ps, user) => {
const day = 1000 * 60 * 60 * 24 * 2; const day = 1000 * 60 * 60 * 24 * 3; // 3日前まで
const hideUserIds = await getHideUserIds(user); const hideUserIds = await getHideUserIds(user);

View File

@@ -46,6 +46,13 @@ export const meta = {
}, },
}, },
res: {
type: 'array',
items: {
type: 'Reaction'
}
},
errors: { errors: {
noSuchNote: { noSuchNote: {
message: 'No such note.', message: 'No such note.',

View File

@@ -278,6 +278,46 @@ export const schemas = {
required: ['id', 'createdAt', 'name', 'type', 'datasize', 'md5'] required: ['id', 'createdAt', 'name', 'type', 'datasize', 'md5']
}, },
DriveFolder: {
type: 'object',
properties: {
id: {
type: 'string',
format: 'id',
description: 'The unique identifier for this Drive folder.',
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
},
createdAt: {
type: 'string',
format: 'date-time',
description: 'The date that the Drive folder was created.'
},
name: {
type: 'string',
description: 'The folder name.',
},
foldersCount: {
type: 'number',
description: 'The count of child folders.',
},
filesCount: {
type: 'number',
description: 'The count of child files.',
},
parentId: {
type: 'string',
format: 'id',
nullable: true,
description: 'The parent folder ID of this folder.',
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
},
parent: {
$ref: '#/components/schemas/DriveFolder'
},
},
required: ['id', 'createdAt', 'name']
},
Muting: { Muting: {
type: 'object', type: 'object',
properties: { properties: {
@@ -321,4 +361,86 @@ export const schemas = {
}, },
required: ['id', 'createdAt', 'blockee'] required: ['id', 'createdAt', 'blockee']
}, },
Reaction: {
type: 'object',
properties: {
id: {
type: 'string',
format: 'id',
description: 'The unique identifier for this reaction.',
example: 'xxxxxxxxxxxxxxxxxxxxxxxx',
},
createdAt: {
type: 'string',
format: 'date-time',
description: 'The date that the reaction was created.'
},
user: {
$ref: '#/components/schemas/User',
description: 'User who performed this reaction.'
},
type: {
type: 'string',
enum: [
'like',
'love',
'laugh',
'hmm',
'surprise',
'congrats',
'angry',
'confused',
'rip',
'pudding'
],
description: 'The reaction type.'
},
},
required: ['id', 'createdAt', 'user', 'type']
},
Hashtag: {
type: 'object',
properties: {
tag: {
type: 'string',
description: 'The hashtag name. No # prefixed.',
example: 'misskey',
},
mentionedUsersCount: {
type: 'number',
description: 'Number of all users using this hashtag.'
},
mentionedLocalUsersCount: {
type: 'number',
description: 'Number of local users using this hashtag.'
},
mentionedRemoteUsersCount: {
type: 'number',
description: 'Number of remote users using this hashtag.'
},
attachedUsersCount: {
type: 'number',
description: 'Number of all users who attached this hashtag to profile.'
},
attachedLocalUsersCount: {
type: 'number',
description: 'Number of local users who attached this hashtag to profile.'
},
attachedRemoteUsersCount: {
type: 'number',
description: 'Number of remote users who attached this hashtag to profile.'
},
},
required: [
'tag',
'mentionedUsersCount',
'mentionedLocalUsersCount',
'mentionedRemoteUsersCount',
'attachedUsersCount',
'attachedLocalUsersCount',
'attachedRemoteUsersCount',
]
},
}; };

View File

@@ -2,10 +2,15 @@ import * as Koa from 'koa';
import * as request from 'request-promise-native'; import * as request from 'request-promise-native';
import summaly from 'summaly'; import summaly from 'summaly';
import fetchMeta from '../../misc/fetch-meta'; import fetchMeta from '../../misc/fetch-meta';
import Logger from '../../misc/logger';
const logger = new Logger('url-preview');
module.exports = async (ctx: Koa.BaseContext) => { module.exports = async (ctx: Koa.BaseContext) => {
const meta = await fetchMeta(); const meta = await fetchMeta();
logger.info(`Getting preview of ${ctx.query.url} ...`);
try { try {
const summary = meta.summalyProxy ? await request.get({ const summary = meta.summalyProxy ? await request.get({
url: meta.summalyProxy, url: meta.summalyProxy,
@@ -17,6 +22,8 @@ module.exports = async (ctx: Koa.BaseContext) => {
followRedirects: false followRedirects: false
}); });
logger.succ(`Got preview of ${ctx.query.url}: ${summary.title}`);
summary.icon = wrap(summary.icon); summary.icon = wrap(summary.icon);
summary.thumbnail = wrap(summary.thumbnail); summary.thumbnail = wrap(summary.thumbnail);
@@ -25,6 +32,7 @@ module.exports = async (ctx: Koa.BaseContext) => {
ctx.body = summary; ctx.body = summary;
} catch (e) { } catch (e) {
logger.error(`Failed to get preview of ${ctx.query.url}: ${e}`);
ctx.status = 200; ctx.status = 200;
ctx.set('Cache-Control', 'max-age=86400, immutable'); ctx.set('Cache-Control', 'max-age=86400, immutable');
ctx.body = '{}'; ctx.body = '{}';