Compare commits

..

40 Commits

Author SHA1 Message Date
syuilo
2ab8a5bc0a 10.60.4 2018-12-03 20:27:47 +09:00
syuilo
c222b9ae94 Update init.ts 2018-12-03 20:26:46 +09:00
syuilo
53a0f3c794 Merge branch 'develop' of https://github.com/syuilo/misskey into develop 2018-12-03 20:26:38 +09:00
syuilo
9ff349c548 Update post-form.vue 2018-12-03 20:21:05 +09:00
Aya Morisawa
0935bd4bd4 Resolve #3281 (#3479) 2018-12-03 20:11:18 +09:00
syuilo
45bee7cc2f Resolve #327 2018-12-03 20:08:18 +09:00
syuilo
1c86a4bc26 Refactor 2018-12-03 19:44:03 +09:00
syuilo
b385cf2a9f 10.60.3 2018-12-03 09:54:14 +09:00
syuilo
40d3dc454d Merge pull request #3480 from syuilo/l10n_develop
New Crowdin translations
2018-12-03 09:53:40 +09:00
syuilo
8e92848495 New translations ja-JP.yml (Korean) 2018-12-03 09:52:19 +09:00
syuilo
2d94a22a30 New translations ja-JP.yml (French) 2018-12-03 09:52:15 +09:00
syuilo
7a5a091c25 New translations ja-JP.yml (English) 2018-12-03 09:52:08 +09:00
syuilo
2baf810c71 New translations ja-JP.yml (Chinese Simplified) 2018-12-03 09:52:01 +09:00
syuilo
d1ecef13ef New translations ja-JP.yml (Norwegian) 2018-12-03 09:43:22 +09:00
syuilo
495fa553ad New translations ja-JP.yml (Dutch) 2018-12-03 09:43:16 +09:00
syuilo
854e649ea6 New translations ja-JP.yml (Japanese, Kansai) 2018-12-03 09:43:11 +09:00
syuilo
c047324b42 🎨 2018-12-03 09:43:07 +09:00
syuilo
daac865c72 New translations ja-JP.yml (Spanish) 2018-12-03 09:43:07 +09:00
syuilo
63d059b8d1 New translations ja-JP.yml (Russian) 2018-12-03 09:43:01 +09:00
syuilo
e3075a0dc7 New translations ja-JP.yml (Portuguese) 2018-12-03 09:42:57 +09:00
syuilo
6b6e597b95 New translations ja-JP.yml (Polish) 2018-12-03 09:42:51 +09:00
syuilo
eb0eadad5e New translations ja-JP.yml (Korean) 2018-12-03 09:42:46 +09:00
syuilo
f600fee16d New translations ja-JP.yml (Italian) 2018-12-03 09:42:40 +09:00
syuilo
7b88c54aa6 New translations ja-JP.yml (German) 2018-12-03 09:42:34 +09:00
syuilo
623dd57cc3 New translations ja-JP.yml (French) 2018-12-03 09:42:27 +09:00
syuilo
f6edd33adb New translations ja-JP.yml (English) 2018-12-03 09:42:23 +09:00
syuilo
ac20d73222 New translations ja-JP.yml (Chinese Simplified) 2018-12-03 09:42:19 +09:00
syuilo
c59374d79d New translations ja-JP.yml (Catalan) 2018-12-03 09:42:13 +09:00
syuilo
0d478046de Improve usability 2018-12-03 09:41:22 +09:00
syuilo
f3479d1b98 Refactor 2018-12-03 09:38:43 +09:00
syuilo
2fdecb8a38 🎨 2018-12-03 09:14:17 +09:00
syuilo
a95c3ee557 New translations ja-JP.yml (Korean) 2018-12-03 08:12:01 +09:00
syuilo
67c439c70a New translations ja-JP.yml (French) 2018-12-03 03:01:46 +09:00
syuilo
b96037cffa New translations ja-JP.yml (Chinese Simplified) 2018-12-03 00:23:03 +09:00
syuilo
ebd8d34552 New translations ja-JP.yml (Chinese Simplified) 2018-12-03 00:13:13 +09:00
syuilo
a653d9a83e New translations ja-JP.yml (Chinese Simplified) 2018-12-03 00:11:54 +09:00
syuilo
07d6894c42 Clean up 2018-12-02 23:00:06 +09:00
Aya Morisawa
03588b3fd6 Merge if-statements (#3478) 2018-12-02 22:32:09 +09:00
syuilo
2e83440e70 10.60.2 2018-12-02 21:20:36 +09:00
nico
2633873fcc Fix syntax error (#3477)
src/remote/activitypub/models/person.ts(326,4): error TS1005: ',' expected.
2018-12-02 21:19:28 +09:00
39 changed files with 372 additions and 574 deletions

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert." enable-sounds-desc: "Spiel einen Ton ab beim Erhalten eines Beitrags bzw. einer Nachricht. Diese Einstellung wird im Browser gespeichert."
volume: "Lautstärke" volume: "Lautstärke"
test: "Test" test: "Test"
language: "Sprache"
pick-language: "Sprache auswählen"
recommended: "Empfohlen"
auto: "Automatisch"
specify-language: "Sprache auswählen"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast." cache-warn: "Der Cache deines Benutzerkontos (Info, Beiträge, Antworten, Direktnachrichten, Einstellungen), die lokal im Browser gespeichert sind werden gelöscht.\nDu musst die Seite aktualisieren nachdem du aufgeräumt hast."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "Sprache auswählen"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} users mentioned" count: "{} users mentioned"
empty: "No popular hashtag trends" empty: "No popular hashtag trends"
common/views/components/language-settings.vue:
title: "Display Language"
pick-language: "Select a language"
recommended: "Recommended"
auto: "Auto"
specify-language: "Specify language"
info: "You need to reload the page for the changes to take effect."
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "Profile" title: "Profile"
name: "Name" name: "Name"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser." enable-sounds-desc: "Play a sound when you receive a post/message. This setting is stored in the browser."
volume: "Volume" volume: "Volume"
test: "Test" test: "Test"
language: "Language"
pick-language: "Select a language"
recommended: "Recommended"
auto: "Automatic"
specify-language: "Specify language"
language-desc: "You need to reload the page for the changes to take effect."
cache: "Cache" cache: "Cache"
clean-cache: "Clear cache" clean-cache: "Clear cache"
cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up." cache-warn: "The cache of account info/posts/replies/messages/settings stored in the browser will be deleted. You need to reload the page after cleaning up."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "Choose files" select-file: "Choose files"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Signed in as {}" signed-in-as: "Signed in as {}"
lang: "Language"
lang-tip: "You will need to reload the page for the changes to take effect."
recommended: "Recommended"
auto: "Auto"
specify-language: "Select your language"
design: "Design and display" design: "Design and display"
dark-mode: "Dark Mode" dark-mode: "Dark Mode"
i-am-under-limited-internet: "I'm in limited bandwidth" i-am-under-limited-internet: "I'm in limited bandwidth"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} utilisateurs·rices mentionnés·es" count: "{} utilisateurs·rices mentionnés·es"
empty: "Aucune tendance" empty: "Aucune tendance"
common/views/components/language-settings.vue:
title: "Langue "
pick-language: "Sélectionner une langue"
recommended: "Recommandé"
auto: "Automatique"
specify-language: "Spécifier la langue"
info: "Le rechargement de la page est requis afin d'appliquer les modifications."
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "Profil" title: "Profil"
name: "Nom" name: "Nom"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur." enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur."
volume: "Volume" volume: "Volume"
test: "Test" test: "Test"
language: "Langue"
pick-language: "Sélectionner une langue"
recommended: "Recommandé"
auto: "Automatique"
specify-language: "Spécifier la langue"
language-desc: "Le rechargement de la page est requis afin d'appliquer les modifications."
cache: "Cache" cache: "Cache"
clean-cache: "Nettoyage" clean-cache: "Nettoyage"
cache-warn: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que dautres données (y compris les paramètres de configuration). Après le nettoyage, vous devez recharger la page." cache-warn: "Le nettoyage du cache du compte supprime les informations stockées dans le navigateur comme les messages, les réponses ainsi que dautres données (y compris les paramètres de configuration). Après le nettoyage, vous devez recharger la page."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "Choisissez un fichier" select-file: "Choisissez un fichier"
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 {}"
lang: "Langue"
lang-tip: "Le rechargement de la page est requis afin d'appliquer les modifications."
recommended: "Recommandé"
auto: "Automatique"
specify-language: "Sélectionnez votre langue"
design: "Affichage et design" design: "Affichage et design"
dark-mode: "Mode nuit" 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é"
@@ -1434,9 +1430,9 @@ mobile/views/pages/user.vue:
block: "Bloquer" block: "Bloquer"
unblock: "Débloquer" unblock: "Débloquer"
years-old: "{age} ans" years-old: "{age} ans"
push-to-list: "リストに追加" push-to-list: "Ajouter à la liste"
select-list: "リストを選択してください" select-list: "Sélectionnez une liste"
list-pushed: "{user}を{list}に追加しました" list-pushed: "Vous avez ajouté {user} à la liste {list} avec succès."
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
recent-notes: "Notes récentes" recent-notes: "Notes récentes"
images: "Images" images: "Images"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -440,13 +440,11 @@ common/views/components/stream-indicator.vue:
reconnecting: "再接続中" reconnecting: "再接続中"
connected: "接続完了" connected: "接続完了"
common/views/components/twitter-setting.vue: common/views/components/integration-settings.vue:
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。" title: "サービス連携"
connected-to: "次のTwitterアカウントに接続されています" connect: "接続する"
detail: "詳細..."
reconnect: "再接続する"
connect: "Twitterと接続する"
disconnect: "切断する" disconnect: "切断する"
connected-to: "次のアカウントに接続されています"
common/views/components/github-setting.vue: common/views/components/github-setting.vue:
description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。" description: "お使いのGitHubアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでGitHubアカウント情報が表示されるようになったり、GitHubを用いた便利なサインインを利用できるようになります。"
@@ -485,12 +483,21 @@ common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
account: "アカウント" account: "アカウント"
location: "場所" location: "場所"
description: "自己紹介" description: "自己紹介"
language: "言語"
birthday: "誕生日" birthday: "誕生日"
avatar: "アイコン" avatar: "アイコン"
banner: "バナー" banner: "バナー"
@@ -870,13 +877,6 @@ desktop/views/components/settings.vue:
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1554,11 +1554,6 @@ mobile/views/pages/selectdrive.vue:
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"
@@ -1586,18 +1581,6 @@ mobile/views/pages/settings.vue:
disable-via-mobile: "「モバイルからの投稿」フラグを付けない" disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
load-raw-images: "添付された画像を高画質で表示する" load-raw-images: "添付された画像を高画質で表示する"
load-remote-media: "リモートサーバーのメディアを表示する" load-remote-media: "リモートサーバーのメディアを表示する"
twitter: "Twitter連携"
twitter-connect: "Twitterアカウントに接続する"
twitter-reconnect: "再接続する"
twitter-disconnect: "切断する"
github: "GitHub連携"
github-connect: "GitHubアカウントに接続する"
github-reconnect: "再接続する"
github-disconnect: "切断する"
discord: "Discord連携"
discord-connect: "Discordアカウントに接続する"
discord-reconnect: "再接続する"
discord-disconnect: "切断する"
update: "Misskey Update" update: "Misskey Update"
version: "バージョン:" version: "バージョン:"
latest-version: "最新のバージョン:" latest-version: "最新のバージョン:"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "流行は自分で作るんや" empty: "流行は自分で作るんや"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。" enable-sounds-desc: "投稿やメッセージもろたとき、音鳴らしたるわ。大丈夫や、この設定はブラウザが覚えてくれとる。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語選んでや"
recommended: "おすすめ"
auto: "自動"
specify-language: "言語選んでくれ"
language-desc: "変更はページの再度読み込み後に反映されんで。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "お掃除" clean-cache: "お掃除"
cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。" cache-warn: "お掃除するとな、ブラウザが覚えてくれとるアカウントのあれこれや書きかけの投稿・返信・メッセージや設定情報なんかのデータが全部飛んでいくんや。これやったらページ再読込しといてな。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイル選んでや" select-file: "ファイル選んでや"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "あんたは橋の下で拾った{}や!" signed-in-as: "あんたは橋の下で拾った{}や!"
lang: "言語"
lang-tip: "ページもっぺん読み込んだら反映したるで。"
recommended: "これええで"
auto: "勝手にやる"
specify-language: "言語選びや"
design: "見た感じ" design: "見た感じ"
dark-mode: "ナイトゲームや!" dark-mode: "ナイトゲームや!"
i-am-under-limited-internet: "電波と阪神がザコいんや" i-am-under-limited-internet: "電波と阪神がザコいんや"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}명이 언급함" count: "{}명이 언급함"
empty: "트렌드 없음" empty: "트렌드 없음"
common/views/components/language-settings.vue:
title: "표시 언어"
pick-language: "언어 설정"
recommended: "추천"
auto: "자동"
specify-language: "언어 지정"
info: "변경사항은 페이지를 새로고침한 뒤에 반영됩니다."
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "프로필" title: "프로필"
name: "이름" name: "이름"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "글이나 메시지를 송수신하였을 때 소리를 재생합니다. 이 설정은 브라우저에 저장됩니다." enable-sounds-desc: "글이나 메시지를 송수신하였을 때 소리를 재생합니다. 이 설정은 브라우저에 저장됩니다."
volume: "음량" volume: "음량"
test: "테스트" test: "테스트"
language: "언어"
pick-language: "언어 설정"
recommended: "추천"
auto: "자동"
specify-language: "언어 지정"
language-desc: "변경사항은 페이지를 새로고침한 뒤에 반영됩니다."
cache: "캐시" cache: "캐시"
clean-cache: "지우기" clean-cache: "지우기"
cache-warn: "지우기를 실행하면 브라우저에 저장된 계정 정보 캐시, 글이나 답글 및 메시지의 임시 저장, 그 외 데이터 (설정 정보 포함) 가 삭제 됩니다. 지우기 작업을 수행한 후 페이지를 다시 로드해야 합니다." cache-warn: "지우기를 실행하면 브라우저에 저장된 계정 정보 캐시, 글이나 답글 및 메시지의 임시 저장, 그 외 데이터 (설정 정보 포함) 가 삭제 됩니다. 지우기 작업을 수행한 후 페이지를 다시 로드해야 합니다."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "파일 선택" select-file: "파일 선택"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}(으)로 로그인" signed-in-as: "{}(으)로 로그인"
lang: "언어"
lang-tip: "변경사항은 페이지를 새로고침한 뒤에 반영됩니다."
recommended: "추천"
auto: "자동"
specify-language: "언어 지정"
design: "디자인 및 표시" design: "디자인 및 표시"
dark-mode: "다크 모드" dark-mode: "다크 모드"
i-am-under-limited-internet: "저는 통신 대역폭이 제한되어 있습니다" i-am-under-limited-internet: "저는 통신 대역폭이 제한되어 있습니다"
@@ -1434,7 +1430,7 @@ mobile/views/pages/user.vue:
block: "차단" block: "차단"
unblock: "차단 해제" unblock: "차단 해제"
years-old: "{age}세" years-old: "{age}세"
push-to-list: "リストに追加" push-to-list: "리스트에 추가"
select-list: "リストを選択してください" select-list: "リストを選択してください"
list-pushed: "{user}を{list}に追加しました" list-pushed: "{user}を{list}に追加しました"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser." enable-sounds-desc: "Een geluid afspelen bij het ontvangen van een bericht. Deze instelling wordt opgeslagen in je browser."
volume: "Volume" volume: "Volume"
test: "Testen" test: "Testen"
language: "Taal"
pick-language: "Selecteer een taal"
recommended: "Aanbevolen"
auto: "Automatisch"
specify-language: "Taal opgeven"
language-desc: "Je moet de pagina herladen om de wijzigingen toe te passen."
cache: "Cache" cache: "Cache"
clean-cache: "Opschonen" clean-cache: "Opschonen"
cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen." cache-warn: "De cache van je accountinformatie/berichten/antwoorden/instellingen wordt verwijderd. Je moet de pagina herladen na het opschonen."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "Kies een bestand" select-file: "Kies een bestand"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Ingelogd als {}" signed-in-as: "Ingelogd als {}"
lang: "Taal"
lang-tip: "Je moet de pagina herladen om de wijzigingen toe te passen."
recommended: "Aanbevolen"
auto: "Automatisch"
specify-language: "Taal opgeven"
design: "Ontwerp en weergave" design: "Ontwerp en weergave"
dark-mode: "Donkere modus" dark-mode: "Donkere modus"
i-am-under-limited-internet: "Ik heb beperkt internet" i-am-under-limited-internet: "Ik heb beperkt internet"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "Volum" volume: "Volum"
test: "Test" test: "Test"
language: "Språk"
pick-language: "Velg språk"
recommended: "Anbefalt"
auto: "Automatisk"
specify-language: "Angi språk"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "Hurtiglager" cache: "Hurtiglager"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "Språk"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "Anbefalt"
auto: "Automatisk"
specify-language: "Angi språk"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę." enable-sounds-desc: "Odtwarzaj dźwięk przy wstawianiu wpisów, wysyłaniu lub otrzymywaniu wiadomości. Opcja ta jest zapamiętywana przez przeglądarkę."
volume: "Głośność" volume: "Głośność"
test: "Test" test: "Test"
language: "Język"
pick-language: "Wybierz język"
recommended: "Zalecane"
auto: "Automatycznie"
specify-language: "Wybierz język"
language-desc: "Aby zmiany zostały uwzględnione, odśwież stronę."
cache: "Pamięć podręczna" cache: "Pamięć podręczna"
clean-cache: "Wyczyść" clean-cache: "Wyczyść"
cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu." cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu."
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "Wybierz plik" select-file: "Wybierz plik"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "Zalogowany jako {}" signed-in-as: "Zalogowany jako {}"
lang: "Język"
lang-tip: "Aby zmiany zostały uwzględnione, odśwież stronę."
recommended: "Zalecany"
auto: "Automatycznie"
specify-language: "Wybierz język"
design: "Wygląd i wyświetlanie" design: "Wygląd i wyświetlanie"
dark-mode: "Tryb ciemny" dark-mode: "Tryb ciemny"
i-am-under-limited-internet: "Ograniczaj zużycie transferu" i-am-under-limited-internet: "Ograniczaj zużycie transferu"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{}人が投稿" count: "{}人が投稿"
empty: "トレンドなし" empty: "トレンドなし"
common/views/components/language-settings.vue:
title: "表示言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
info: "変更はページの再度読み込み後に反映されます。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "プロフィール" title: "プロフィール"
name: "名前" name: "名前"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。" enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
volume: "ボリューム" volume: "ボリューム"
test: "テスト" test: "テスト"
language: "言語"
pick-language: "言語を選択"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
language-desc: "変更はページの再度読み込み後に反映されます。"
cache: "キャッシュ" cache: "キャッシュ"
clean-cache: "クリーンアップ" clean-cache: "クリーンアップ"
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。" cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択" select-file: "ファイルを選択"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "{}としてサインイン中" signed-in-as: "{}としてサインイン中"
lang: "言語"
lang-tip: "変更はページの再読み込み後に反映されます。"
recommended: "推奨"
auto: "自動"
specify-language: "言語を指定"
design: "デザインと表示" design: "デザインと表示"
dark-mode: "ダークモード" dark-mode: "ダークモード"
i-am-under-limited-internet: "私は通信を制限されている" i-am-under-limited-internet: "私は通信を制限されている"

View File

@@ -26,7 +26,7 @@ common:
close: "关闭" close: "关闭"
do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。" do-not-copy-paste: "请不要在这里输入或粘贴代码。您帐户可能会受到损害。"
load-more: "加载更多" load-more: "加载更多"
enter-password: "パスワードを入力してください" enter-password: "请输入您的密码"
got-it: "没问题" got-it: "没问题"
customization-tips: customization-tips:
title: "客制化提示" title: "客制化提示"
@@ -439,6 +439,13 @@ common/views/components/visibility-chooser.vue:
common/views/components/trends.vue: common/views/components/trends.vue:
count: "{} 被提到" count: "{} 被提到"
empty: "没有流行的标签" empty: "没有流行的标签"
common/views/components/language-settings.vue:
title: "显示语言"
pick-language: "选择一个语言"
recommended: "推荐"
auto: "自动"
specify-language: "指定语言"
info: "你需要刷新这个页面来应用更改。"
common/views/components/profile-editor.vue: common/views/components/profile-editor.vue:
title: "简况" title: "简况"
name: "名称" name: "名称"
@@ -458,10 +465,10 @@ common/views/components/profile-editor.vue:
saved: "更新配置文件成功" saved: "更新配置文件成功"
uploading: "正在上传" uploading: "正在上传"
upload-failed: "上传失败" upload-failed: "上传失败"
email: "メール設定" email: "邮件设置"
email-address: "メールアドレス" email-address: "电子邮件地址"
email-verified: "メールアドレスが確認されました" email-verified: "电子邮件地址已验证"
email-not-verified: "メールアドレスが確認されていません。メールボックスをご確認ください。" email-not-verified: "电子邮件地址还没有验证哦, 请检查一下收信箱吧~"
common/views/widgets/broadcast.vue: common/views/widgets/broadcast.vue:
fetching: "确认中" fetching: "确认中"
no-broadcasts: "没有公告" no-broadcasts: "没有公告"
@@ -736,8 +743,8 @@ desktop/views/components/settings.vue:
note-visibility: "帖子可见性" note-visibility: "帖子可见性"
default-note-visibility: "默认可见性" default-note-visibility: "默认可见性"
remember-note-visibility: "记住帖子可见性" remember-note-visibility: "记住帖子可见性"
web-search-engine: "ウェブ検索エンジン" web-search-engine: "搜索引擎"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
auto-popout: "自动弹出窗口" auto-popout: "自动弹出窗口"
auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。" auto-popout-desc: "如果可用,将使用弹出显示而不是打开新窗口。 此设置存储在浏览器中。"
advanced: "更多设置" advanced: "更多设置"
@@ -774,12 +781,6 @@ desktop/views/components/settings.vue:
enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。" enable-sounds-desc: "收到帖子/留言时播放声音。 此设置将被存储在浏览器中。"
volume: "音量" volume: "音量"
test: "测试" test: "测试"
language: "语言"
pick-language: "选择一个语言"
recommended: "推荐"
auto: "自动"
specify-language: "指定语言"
language-desc: "你需要刷新这个页面来应用更改。"
cache: "缓存" cache: "缓存"
clean-cache: "清除缓存" clean-cache: "清除缓存"
cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。" cache-warn: "将删除存储在浏览器中的帐户信息/帖子/回复/消息/设置的缓存。 清理完毕后需要刷新页面。"
@@ -1004,16 +1005,16 @@ admin/views/instance.vue:
external-user-recommendation-engine-desc: "例如: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}" external-user-recommendation-engine-desc: "例如: https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-misskey-api.cgi?{{host}}+{{user}}+{{limit}}+{{offset}}"
external-user-recommendation-timeout: "超时" external-user-recommendation-timeout: "超时"
external-user-recommendation-timeout-desc: "单位为毫秒 (例如300000)" external-user-recommendation-timeout-desc: "单位为毫秒 (例如300000)"
email-config: "メールサーバーの設定" email-config: "电子邮件服务器设置"
email-config-info: "メールアドレス確認やパスワードリセットの際に使われます。" email-config-info: "用于确认电子邮件和密码重置等。"
enable-email: "メール配信を有効にする" enable-email: "启用电子邮件送递"
email: "メールアドレス" email: "电子邮件地址"
smtp-secure: "SMTP接続に暗黙的なSSL/TLSを使用する" smtp-secure: "SMTP 连接中使用隐式 SSL / TLS"
smtp-secure-info: "STARTTLS使用時はオフにします。" smtp-secure-info: "使用时关闭 STARTTLS。"
smtp-host: "SMTPホスト" smtp-host: "SMTP 服务器地址 (主机名)"
smtp-port: "SMTPポート" smtp-port: "SMTP 端口"
smtp-user: "SMTPユーザー" smtp-user: "SMTP 用户名"
smtp-pass: "SMTPパスワード" smtp-pass: "SMTP 密码"
admin/views/charts.vue: admin/views/charts.vue:
title: "历史记录" title: "历史记录"
per-day: "每天" per-day: "每天"
@@ -1361,11 +1362,6 @@ mobile/views/pages/selectdrive.vue:
select-file: "选择文件" select-file: "选择文件"
mobile/views/pages/settings.vue: mobile/views/pages/settings.vue:
signed-in-as: "以{}登录" signed-in-as: "以{}登录"
lang: "语言"
lang-tip: "你需要刷新这个页面来应用更改。"
recommended: "推荐"
auto: "自动"
specify-language: "选择语言"
design: "设计与展示" design: "设计与展示"
dark-mode: "夜间模式" dark-mode: "夜间模式"
i-am-under-limited-internet: "我的带宽有限" i-am-under-limited-internet: "我的带宽有限"
@@ -1388,8 +1384,8 @@ mobile/views/pages/settings.vue:
note-visibility: "帖子可见性" note-visibility: "帖子可见性"
default-note-visibility: "默认可见性" default-note-visibility: "默认可见性"
remember-note-visibility: "记住帖子可见性" remember-note-visibility: "记住帖子可见性"
web-search-engine: "ウェブ検索エンジン" web-search-engine: "搜索引擎"
web-search-engine-desc: "例: https://www.google.com/?#q={{query}}" web-search-engine-desc: "例: https://www.google.com/?#q={{query}}"
disable-via-mobile: "不要将帖子标记为“来自手机”" disable-via-mobile: "不要将帖子标记为“来自手机”"
load-raw-images: "以原始质量显示附加图像" load-raw-images: "以原始质量显示附加图像"
load-remote-media: "显示来自远程服务器的媒体" load-remote-media: "显示来自远程服务器的媒体"
@@ -1434,9 +1430,9 @@ mobile/views/pages/user.vue:
block: "屏蔽" block: "屏蔽"
unblock: "取消屏蔽" unblock: "取消屏蔽"
years-old: "{age}岁" years-old: "{age}岁"
push-to-list: "リストに追加" push-to-list: "添加至列表"
select-list: "リストを選択してください" select-list: "选择一个列表"
list-pushed: "{user}{list}に追加しました" list-pushed: "成功添加{user}{list}"
mobile/views/pages/user/home.vue: mobile/views/pages/user/home.vue:
recent-notes: "最近的帖子" recent-notes: "最近的帖子"
images: "图片" images: "图片"

View File

@@ -1,8 +1,8 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <i@syuilo.com>", "author": "syuilo <i@syuilo.com>",
"version": "10.60.1", "version": "10.60.4",
"clientVersion": "2.0.12361", "clientVersion": "2.0.12401",
"codename": "nighthike", "codename": "nighthike",
"main": "./built/index.js", "main": "./built/index.js",
"private": true, "private": true,
@@ -156,6 +156,7 @@
"koa-send": "5.0.0", "koa-send": "5.0.0",
"koa-slow": "2.1.0", "koa-slow": "2.1.0",
"koa-views": "6.1.4", "koa-views": "6.1.4",
"langmap": "0.0.16",
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"minio": "7.0.1", "minio": "7.0.1",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",

View File

@@ -1,64 +0,0 @@
<template>
<div class="mk-discord-setting">
<p>{{ $t('description') }}</p>
<p class="account" v-if="$store.state.i.discord" :title="`Discord ID: ${$store.state.i.discord.id}`">{{ $t('connected-to') }}: <a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
<p>
<a :href="`${apiUrl}/connect/discord`" target="_blank" @click.prevent="connect">{{ $store.state.i.discord ? this.$t('reconnect') : this.$t('connect') }}</a>
<span v-if="$store.state.i.discord"> or </span>
<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
</p>
<p class="id" v-if="$store.state.i.discord">Discord ID: {{ $store.state.i.discord.id }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { apiUrl } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/discord-setting.vue'),
data() {
return {
form: null,
apiUrl
};
},
mounted() {
this.$watch('$store.state.i', () => {
if (this.$store.state.i.discord && this.form)
this.form.close();
}, {
deep: true
});
},
methods: {
connect() {
this.form = window.open(apiUrl + '/connect/discord',
'discord_connect_window',
'height=570, width=520');
},
disconnect() {
window.open(apiUrl + '/disconnect/discord',
'discord_disconnect_window',
'height=570, width=520');
}
}
});
</script>
<style lang="stylus" scoped>
.mk-discord-setting
.account
border solid 1px #e1e8ed
border-radius 4px
padding 16px
a
font-weight bold
color inherit
.id
color #8899a6
</style>

View File

@@ -1,64 +0,0 @@
<template>
<div class="mk-github-setting">
<p>{{ $t('description') }}</p>
<p class="account" v-if="$store.state.i.github" :title="`GitHub ID: ${$store.state.i.github.id}`">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
<p>
<a :href="`${apiUrl}/connect/github`" target="_blank" @click.prevent="connect">{{ $store.state.i.github ? this.$t('reconnect') : this.$t('connect') }}</a>
<span v-if="$store.state.i.github"> or </span>
<a :href="`${apiUrl}/disconnect/github`" target="_blank" v-if="$store.state.i.github" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
</p>
<p class="id" v-if="$store.state.i.github">GitHub ID: {{ $store.state.i.github.id }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { apiUrl } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/github-setting.vue'),
data() {
return {
form: null,
apiUrl
};
},
mounted() {
this.$watch('$store.state.i', () => {
if (this.$store.state.i.github && this.form)
this.form.close();
}, {
deep: true
});
},
methods: {
connect() {
this.form = window.open(apiUrl + '/connect/github',
'github_connect_window',
'height=570, width=520');
},
disconnect() {
window.open(apiUrl + '/disconnect/github',
'github_disconnect_window',
'height=570, width=520');
}
}
});
</script>
<style lang="stylus" scoped>
.mk-github-setting
.account
border solid 1px #e1e8ed
border-radius 4px
padding 16px
a
font-weight bold
color inherit
.id
color #8899a6
</style>

View File

@@ -0,0 +1,96 @@
<template>
<ui-card>
<div slot="title"><fa icon="share-alt"/> {{ $t('title') }}</div>
<section>
<header><fa :icon="['fab', 'twitter']"/> Twitter</header>
<p v-if="$store.state.i.twitter">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
<ui-button v-if="$store.state.i.twitter" @click="disconnectTwitter">{{ $t('disconnect') }}</ui-button>
<ui-button v-else @click="connectTwitter">{{ $t('connect') }}</ui-button>
</section>
<section>
<header><fa :icon="['fab', 'discord']"/> Discord</header>
<p v-if="$store.state.i.discord">{{ $t('connected-to') }}: <a :href="`https://discord.com/${$store.state.i.discord.screenName}`" target="_blank">@{{ $store.state.i.discord.screenName }}</a></p>
<ui-button v-if="$store.state.i.discord" @click="disconnectDiscord">{{ $t('disconnect') }}</ui-button>
<ui-button v-else @click="connectDiscord">{{ $t('connect') }}</ui-button>
</section>
<section>
<header><fa :icon="['fab', 'github']"/> GitHub</header>
<p v-if="$store.state.i.github">{{ $t('connected-to') }}: <a :href="`https://github.com/${$store.state.i.github.screenName}`" target="_blank">@{{ $store.state.i.github.screenName }}</a></p>
<ui-button v-if="$store.state.i.github" @click="disconnectGithub">{{ $t('disconnect') }}</ui-button>
<ui-button v-else @click="connectGithub">{{ $t('connect') }}</ui-button>
</section>
</ui-card>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { apiUrl } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/integration-settings.vue'),
data() {
return {
apiUrl,
twitterForm: null,
discordForm: null,
githubForm: null,
};
},
mounted() {
this.$watch('$store.state.i', () => {
if (this.$store.state.i.twitter) {
if (this.twitterForm) this.twitterForm.close();
}
}, {
deep: true
});
},
methods: {
connectTwitter() {
this.twitterForm = window.open(apiUrl + '/connect/twitter',
'twitter_connect_window',
'height=570, width=520');
},
disconnectTwitter() {
window.open(apiUrl + '/disconnect/twitter',
'twitter_disconnect_window',
'height=570, width=520');
},
connectDiscord() {
this.discordForm = window.open(apiUrl + '/connect/discord',
'discord_connect_window',
'height=570, width=520');
},
disconnectDiscord() {
window.open(apiUrl + '/disconnect/discord',
'discord_disconnect_window',
'height=570, width=520');
},
connectGithub() {
this.githubForm = window.open(apiUrl + '/connect/github',
'github_connect_window',
'height=570, width=520');
},
disconnectGithub() {
window.open(apiUrl + '/disconnect/github',
'github_disconnect_window',
'height=570, width=520');
},
}
});
</script>
<style lang="stylus" scoped>
</style>

View File

@@ -0,0 +1,54 @@
<template>
<ui-card>
<div slot="title"><fa icon="language"/> {{ $t('title') }}</div>
<section class="fit-top">
<ui-select v-model="lang" :placeholder="$t('pick-language')">
<optgroup :label="$t('recommended')">
<option value="">{{ $t('auto') }}</option>
</optgroup>
<optgroup :label="$t('specify-language')">
<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
</optgroup>
</ui-select>
<ui-info>Current: <i>{{ currentLanguage }}</i></ui-info>
<ui-info warn>{{ $t('info') }}</ui-info>
</section>
</ui-card>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { langs } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/language-settings.vue'),
data() {
return {
langs,
currentLanguage: 'Unknown',
};
},
computed: {
lang: {
get() { return this.$store.state.device.lang; },
set(value) { this.$store.commit('device/set', { key: 'lang', value }); }
},
},
created() {
try {
const locale = JSON.parse(localStorage.getItem('locale') || "{}");
const localeKey = localStorage.getItem('localeKey');
this.currentLanguage = `${locale.meta.lang} (${localeKey})`;
} catch { }
},
methods: {
}
});
</script>

View File

@@ -32,6 +32,12 @@
<span>{{ $t('description') }}</span> <span>{{ $t('description') }}</span>
</ui-textarea> </ui-textarea>
<ui-select v-model="lang">
<span slot="label">{{ $t('language') }}</span>
<span slot="icon"><fa icon="language"/></span>
<option v-for="lang in unique(Object.values(langmap).map(x => x.nativeName)).map(name => Object.keys(langmap).find(k => langmap[k].nativeName == name))" :value="lang" :key="lang">{{ langmap[lang].nativeName }}</option>
</ui-select>
<ui-input type="file" @change="onAvatarChange"> <ui-input type="file" @change="onAvatarChange">
<span>{{ $t('avatar') }}</span> <span>{{ $t('avatar') }}</span>
<span slot="icon"><fa icon="image"/></span> <span slot="icon"><fa icon="image"/></span>
@@ -87,12 +93,16 @@ import Vue from 'vue';
import i18n from '../../../i18n'; import i18n from '../../../i18n';
import { apiUrl, host } from '../../../config'; import { apiUrl, host } from '../../../config';
import { toUnicode } from 'punycode'; import { toUnicode } from 'punycode';
import langmap from 'langmap';
import { unique } from '../../../../../prelude/array';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('common/views/components/profile-editor.vue'), i18n: i18n('common/views/components/profile-editor.vue'),
data() { data() {
return { return {
unique,
langmap,
host: toUnicode(host), host: toUnicode(host),
enableEmail: false, enableEmail: false,
email: null, email: null,
@@ -100,6 +110,7 @@ export default Vue.extend({
username: null, username: null,
location: null, location: null,
description: null, description: null,
lang: null,
birthday: null, birthday: null,
avatarId: null, avatarId: null,
bannerId: null, bannerId: null,
@@ -137,6 +148,7 @@ export default Vue.extend({
this.username = this.$store.state.i.username; this.username = this.$store.state.i.username;
this.location = this.$store.state.i.profile.location; this.location = this.$store.state.i.profile.location;
this.description = this.$store.state.i.description; this.description = this.$store.state.i.description;
this.lang = this.$store.state.i.lang;
this.birthday = this.$store.state.i.profile.birthday; this.birthday = this.$store.state.i.profile.birthday;
this.avatarId = this.$store.state.i.avatarId; this.avatarId = this.$store.state.i.avatarId;
this.bannerId = this.$store.state.i.bannerId; this.bannerId = this.$store.state.i.bannerId;
@@ -198,6 +210,7 @@ export default Vue.extend({
name: this.name || null, name: this.name || null,
location: this.location || null, location: this.location || null,
description: this.description || null, description: this.description || null,
lang: this.lang,
birthday: this.birthday || null, birthday: this.birthday || null,
avatarId: this.avatarId || undefined, avatarId: this.avatarId || undefined,
bannerId: this.bannerId || undefined, bannerId: this.bannerId || undefined,

View File

@@ -1,65 +0,0 @@
<template>
<div class="mk-twitter-setting">
<p>{{ $t('description') }}</p>
<p class="account" v-if="$store.state.i.twitter" :title="`Twitter ID: ${$store.state.i.twitter.userId}`">{{ $t('connected-to') }}: <a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
<p>
<a :href="`${apiUrl}/connect/twitter`" target="_blank" @click.prevent="connect">{{ $store.state.i.twitter ? this.$t('reconnect') : this.$t('connect') }}</a>
<span v-if="$store.state.i.twitter"> or </span>
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter" @click.prevent="disconnect">{{ $t('disconnect') }}</a>
</p>
<p class="id" v-if="$store.state.i.twitter">Twitter ID: {{ $store.state.i.twitter.userId }}</p>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import i18n from '../../../i18n';
import { apiUrl } from '../../../config';
export default Vue.extend({
i18n: i18n('common/views/components/twitter-setting.vue'),
data() {
return {
form: null,
apiUrl
};
},
mounted() {
this.$watch('$store.state.i', () => {
if (this.$store.state.i.twitter) {
if (this.form) this.form.close();
}
}, {
deep: true
});
},
methods: {
connect() {
this.form = window.open(apiUrl + '/connect/twitter',
'twitter_connect_window',
'height=570, width=520');
},
disconnect() {
window.open(apiUrl + '/disconnect/twitter',
'twitter_disconnect_window',
'height=570, width=520');
}
}
});
</script>
<style lang="stylus" scoped>
.mk-twitter-setting
.account
border solid 1px #e1e8ed
border-radius 4px
padding 16px
a
font-weight bold
color inherit
.id
color #8899a6
</style>

View File

@@ -43,6 +43,7 @@ export default Vue.extend({
> * > *
flex 1 flex 1
min-width 0 !important
> *:not(:last-child) > *:not(:last-child)
margin-right 16px !important margin-right 16px !important

View File

@@ -71,7 +71,6 @@ import parse from '../../../../../mfm/parse';
import { host } from '../../../config'; import { host } from '../../../config';
import { erase, unique } from '../../../../../prelude/array'; import { erase, unique } from '../../../../../prelude/array';
import { length } from 'stringz'; import { length } from 'stringz';
import parseAcct from '../../../../../misc/acct/parse';
import { toASCII } from 'punycode'; import { toASCII } from 'punycode';
export default Vue.extend({ export default Vue.extend({

View File

@@ -16,27 +16,7 @@
<div class="pages"> <div class="pages">
<div class="profile" v-show="page == 'profile'"> <div class="profile" v-show="page == 'profile'">
<x-profile-editor/> <x-profile-editor/>
<x-integration-settings/>
<ui-card>
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter') }}</div>
<section>
<x-twitter-setting/>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github') }}</div>
<section>
<x-github-setting/>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord') }}</div>
<section>
<x-discord-setting/>
</section>
</ui-card>
</div> </div>
<ui-card class="theme" v-show="page == 'theme'"> <ui-card class="theme" v-show="page == 'theme'">
@@ -169,24 +149,7 @@
</section> </section>
</ui-card> </ui-card>
<ui-card class="web" v-show="page == 'web'"> <x-language-settings v-show="page == 'web'"/>
<div slot="title"><fa icon="language"/> {{ $t('language') }}</div>
<section class="fit-top">
<ui-select v-model="lang" :placeholder="$t('pick-language')">
<optgroup :label="$t('recommended')">
<option value="">{{ $t('auto') }}</option>
</optgroup>
<optgroup :label="$t('specify-language')">
<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
</optgroup>
</ui-select>
<div class="none ui info">
<div>Current: <i>{{ this.currentLanguage }}</i></div>
<p><fa icon="info-circle"/>{{ $t('language-desc') }}</p>
</div>
</section>
</ui-card>
<ui-card class="web" v-show="page == 'web'"> <ui-card class="web" v-show="page == 'web'">
<div slot="title"><fa :icon="['far', 'trash-alt']"/> {{ $t('cache') }}</div> <div slot="title"><fa :icon="['far', 'trash-alt']"/> {{ $t('cache') }}</div>
@@ -309,17 +272,16 @@ import X2fa from './settings.2fa.vue';
import XApps from './settings.apps.vue'; import XApps from './settings.apps.vue';
import XSignins from './settings.signins.vue'; import XSignins from './settings.signins.vue';
import XTags from './settings.tags.vue'; import XTags from './settings.tags.vue';
import XTwitterSetting from '../../../common/views/components/twitter-setting.vue'; import XIntegrationSettings from '../../../common/views/components/integration-settings.vue';
import XGithubSetting from '../../../common/views/components/github-setting.vue';
import XDiscordSetting from '../../../common/views/components/discord-setting.vue';
import XTheme from '../../../common/views/components/theme.vue'; import XTheme from '../../../common/views/components/theme.vue';
import XDriveSettings from '../../../common/views/components/drive-settings.vue'; import XDriveSettings from '../../../common/views/components/drive-settings.vue';
import XMuteAndBlock from '../../../common/views/components/mute-and-block.vue'; import XMuteAndBlock from '../../../common/views/components/mute-and-block.vue';
import XPasswordSettings from '../../../common/views/components/password-settings.vue'; import XPasswordSettings from '../../../common/views/components/password-settings.vue';
import XProfileEditor from '../../../common/views/components/profile-editor.vue'; import XProfileEditor from '../../../common/views/components/profile-editor.vue';
import XApiSettings from '../../../common/views/components/api-settings.vue'; import XApiSettings from '../../../common/views/components/api-settings.vue';
import XLanguageSettings from '../../../common/views/components/language-settings.vue';
import { url, langs, clientVersion as version } from '../../../config'; import { url, clientVersion as version } from '../../../config';
import checkForUpdate from '../../../common/scripts/check-for-update'; import checkForUpdate from '../../../common/scripts/check-for-update';
export default Vue.extend({ export default Vue.extend({
@@ -329,15 +291,14 @@ export default Vue.extend({
XApps, XApps,
XSignins, XSignins,
XTags, XTags,
XTwitterSetting, XIntegrationSettings,
XGithubSetting,
XDiscordSetting,
XTheme, XTheme,
XDriveSettings, XDriveSettings,
XMuteAndBlock, XMuteAndBlock,
XPasswordSettings, XPasswordSettings,
XProfileEditor, XProfileEditor,
XApiSettings, XApiSettings,
XLanguageSettings,
}, },
props: { props: {
initialPage: { initialPage: {
@@ -350,8 +311,6 @@ export default Vue.extend({
page: this.initialPage || 'profile', page: this.initialPage || 'profile',
meta: null, meta: null,
version, version,
langs,
currentLanguage: 'Unknown',
latestVersion: undefined, latestVersion: undefined,
checkingForUpdate: false checkingForUpdate: false
}; };
@@ -412,11 +371,6 @@ export default Vue.extend({
set(value) { this.$store.commit('device/set', { key: 'soundVolume', value }); } set(value) { this.$store.commit('device/set', { key: 'soundVolume', value }); }
}, },
lang: {
get() { return this.$store.state.device.lang; },
set(value) { this.$store.commit('device/set', { key: 'lang', value }); }
},
preventUpdate: { preventUpdate: {
get() { return this.$store.state.device.preventUpdate; }, get() { return this.$store.state.device.preventUpdate; },
set(value) { this.$store.commit('device/set', { key: 'preventUpdate', value }); } set(value) { this.$store.commit('device/set', { key: 'preventUpdate', value }); }
@@ -556,12 +510,6 @@ export default Vue.extend({
this.$root.getMeta().then(meta => { this.$root.getMeta().then(meta => {
this.meta = meta; this.meta = meta;
}); });
try {
const locale = JSON.parse(localStorage.getItem('locale') || "{}");
const localeKey = localStorage.getItem('localeKey');
this.currentLanguage = `${locale.meta.lang} (${localeKey})`;
} catch { }
}, },
methods: { methods: {
readAllUnreadNotes() { readAllUnreadNotes() {

View File

@@ -1,7 +1,9 @@
<template> <template>
<div class="lkafjvabenanajk17kwqpsatoushincb"> <a class="lkafjvabenanajk17kwqpsatoushincb" :href="`https://discordapp.com/users/${user.discord.id}`" target="_blank">
<span><fa :icon="['fab', 'discord']"/><a :href="`https://discordapp.com/users/${user.discord.id}`" target="_blank">@{{ user.discord.username }}#{{ user.discord.discriminator }}</a></span> <div>
</div> <span><fa :icon="['fab', 'discord']"/>@{{ user.discord.username }}#{{ user.discord.discriminator }}</span>
</div>
</a>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -14,13 +16,13 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.lkafjvabenanajk17kwqpsatoushincb .lkafjvabenanajk17kwqpsatoushincb
padding 32px margin-left 8px
background #7289da
border-radius 6px
color #fff color #fff
a div
margin-left 8px padding 32px
background #7289da
border-radius 6px
color #fff color #fff
</style> </style>

View File

@@ -1,7 +1,9 @@
<template> <template>
<div class="aqooishiizumijmihokohinatamihoaz"> <a class="aqooishiizumijmihokohinatamihoaz" :href="`https://github.com/${user.github.login}`" target="_blank">
<span><fa :icon="['fab', 'github']"/><a :href="`https://github.com/${user.github.login}`" target="_blank">@{{ user.github.login }}</a></span> <div>
</div> <span><fa :icon="['fab', 'github']"/>@{{ user.github.login }}</span>
</div>
</a>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -14,13 +16,13 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.aqooishiizumijmihokohinatamihoaz .aqooishiizumijmihokohinatamihoaz
padding 32px margin-left 8px
background #171515
border-radius 6px
color #fff color #fff
a div
margin-left 8px padding 32px
background #171515
border-radius 6px
color #fff color #fff
</style> </style>

View File

@@ -1,7 +1,9 @@
<template> <template>
<div class="adsvaidqfznoartcbplullnejvxjphcn"> <a class="adsvaidqfznoartcbplullnejvxjphcn" :href="`https://twitter.com/${user.twitter.screenName}`" target="_blank">
<span><fa :icon="['fab', 'twitter']"/><a :href="`https://twitter.com/${user.twitter.screenName}`" target="_blank">@{{ user.twitter.screenName }}</a></span> <div>
</div> <span><fa :icon="['fab', 'twitter']"/>@{{ user.twitter.screenName }}</span>
</div>
</a>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -14,13 +16,13 @@ export default Vue.extend({
<style lang="stylus" scoped> <style lang="stylus" scoped>
.adsvaidqfznoartcbplullnejvxjphcn .adsvaidqfznoartcbplullnejvxjphcn
padding 32px margin-left 8px
background #1a94f2
border-radius 6px
color #fff color #fff
a div
margin-left 8px padding 32px
background #1a94f2
border-radius 6px
color #fff color #fff
</style> </style>

View File

@@ -458,8 +458,8 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS]) => void,
return x; return x;
}, },
dialog(opts) { dialog(opts) {
const vm = this.new(Dialog, opts);
return new Promise((res) => { return new Promise((res) => {
const vm = this.new(Dialog, opts);
vm.$once('ok', result => res({ canceled: false, result })); vm.$once('ok', result => res({ canceled: false, result }));
vm.$once('cancel', () => res({ canceled: true })); vm.$once('cancel', () => res({ canceled: true }));
}); });

View File

@@ -152,7 +152,7 @@ export default Vue.extend({
text-align left text-align left
background var(--face) background var(--face)
border-radius 8px border-radius 8px
box-shadow 0 0 2px rgba(#000, 0.1) box-shadow 0 4px 16px rgba(#000, 0.1)
@media (min-width 500px) @media (min-width 500px)
box-shadow 0 8px 32px rgba(#000, 0.1) box-shadow 0 8px 32px rgba(#000, 0.1)

View File

@@ -186,7 +186,7 @@ export default Vue.extend({
overflow hidden overflow hidden
background var(--face) background var(--face)
border-radius 8px border-radius 8px
box-shadow 0 0 2px rgba(#000, 0.1) box-shadow 0 4px 16px rgba(#000, 0.1)
@media (min-width 500px) @media (min-width 500px)
box-shadow 0 8px 32px rgba(#000, 0.1) box-shadow 0 8px 32px rgba(#000, 0.1)

View File

@@ -62,7 +62,6 @@ import parse from '../../../../../mfm/parse';
import { host } from '../../../config'; import { host } from '../../../config';
import { erase, unique } from '../../../../../prelude/array'; import { erase, unique } from '../../../../../prelude/array';
import { length } from 'stringz'; import { length } from 'stringz';
import parseAcct from '../../../../../misc/acct/parse';
import { toASCII } from 'punycode'; import { toASCII } from 'punycode';
export default Vue.extend({ export default Vue.extend({

View File

@@ -81,7 +81,7 @@ export default Vue.extend({
top 0 top 0
z-index 1024 z-index 1024
width 100% width 100%
box-shadow 0 1px 0 rgba(#000, 0.075) box-shadow 0 0px 8px rgba(0, 0, 0, 0.25)
&, * &, *
user-select none user-select none

View File

@@ -95,9 +95,13 @@ export default Vue.extend({
methods: { methods: {
search() { search() {
const query = window.prompt(this.$t('search')); this.$root.dialog({
if (query == null || query == '') return; title: this.$t('search'),
this.$router.push(`/search?q=${encodeURIComponent(query)}`); input: true
}).then(({ canceled, result: query }) => {
if (canceled) return;
this.$router.push(`/search?q=${encodeURIComponent(query)}`);
});
}, },
onReversiInvited() { onReversiInvited() {

View File

@@ -105,62 +105,9 @@
</section> </section>
</ui-card> </ui-card>
<ui-card> <x-language-settings/>
<div slot="title"><fa icon="language"/> {{ $t('lang') }}</div>
<section class="fit-top"> <x-integration-settings/>
<ui-select v-model="lang" :placeholder="$t('auto')">
<optgroup :label="$t('recommended')">
<option value="">{{ $t('auto') }}</option>
</optgroup>
<optgroup :label="$t('specify-language')">
<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
</optgroup>
</ui-select>
<div>Current: <i>{{ this.currentLanguage }}</i></div>
<p><fa icon="info-circle"/> {{ $t('lang-tip') }}</p>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'twitter']"/> {{ $t('twitter') }}</div>
<section>
<p class="account" v-if="$store.state.i.twitter"><a :href="`https://twitter.com/${$store.state.i.twitter.screenName}`" target="_blank">@{{ $store.state.i.twitter.screenName }}</a></p>
<p>
<a :href="`${apiUrl}/connect/twitter`" target="_blank">{{ $store.state.i.twitter ? this.$t('twitter-reconnect') : this.$t('twitter-connect') }}</a>
<span v-if="$store.state.i.twitter"> or </span>
<a :href="`${apiUrl}/disconnect/twitter`" target="_blank" v-if="$store.state.i.twitter">{{ $t('twitter-disconnect') }}</a>
</p>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'github']"/> {{ $t('github') }}</div>
<section>
<p class="account" v-if="$store.state.i.github"><a :href="`https://github.com/${$store.state.i.github.login}`" target="_blank">@{{ $store.state.i.github.login }}</a></p>
<p>
<a :href="`${apiUrl}/connect/github`" target="_blank">{{ $store.state.i.github ? this.$t('github-reconnect') : this.$t('github-connect') }}</a>
<span v-if="$store.state.i.github"> or </span>
<a :href="`${apiUrl}/disconnect/github`" target="_blank" v-if="$store.state.i.github">{{ $t('github-disconnect') }}</a>
</p>
</section>
</ui-card>
<ui-card>
<div slot="title"><fa :icon="['fab', 'discord']"/> {{ $t('discord') }}</div>
<section>
<p class="account" v-if="$store.state.i.discord"><a :href="`https://discordapp.com/users/${$store.state.i.discord.id}`" target="_blank">@{{ $store.state.i.discord.username }}#{{ $store.state.i.discord.discriminator }}</a></p>
<p>
<a :href="`${apiUrl}/connect/discord`" target="_blank">{{ $store.state.i.discord ? this.$t('discord-reconnect') : this.$t('discord-connect') }}</a>
<span v-if="$store.state.i.discord"> or </span>
<a :href="`${apiUrl}/disconnect/discord`" target="_blank" v-if="$store.state.i.discord">{{ $t('discord-disconnect') }}</a>
</p>
</section>
</ui-card>
<x-api-settings /> <x-api-settings />
@@ -199,7 +146,7 @@
<script lang="ts"> <script lang="ts">
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../../i18n'; import i18n from '../../../i18n';
import { apiUrl, clientVersion as version, codename, langs } from '../../../config'; import { apiUrl, clientVersion as version, codename } from '../../../config';
import checkForUpdate from '../../../common/scripts/check-for-update'; import checkForUpdate from '../../../common/scripts/check-for-update';
import XTheme from '../../../common/views/components/theme.vue'; import XTheme from '../../../common/views/components/theme.vue';
import XDriveSettings from '../../../common/views/components/drive-settings.vue'; import XDriveSettings from '../../../common/views/components/drive-settings.vue';
@@ -207,6 +154,8 @@ import XMuteAndBlock from '../../../common/views/components/mute-and-block.vue';
import XPasswordSettings from '../../../common/views/components/password-settings.vue'; import XPasswordSettings from '../../../common/views/components/password-settings.vue';
import XProfileEditor from '../../../common/views/components/profile-editor.vue'; import XProfileEditor from '../../../common/views/components/profile-editor.vue';
import XApiSettings from '../../../common/views/components/api-settings.vue'; import XApiSettings from '../../../common/views/components/api-settings.vue';
import XLanguageSettings from '../../../common/views/components/language-settings.vue';
import XIntegrationSettings from '../../../common/views/components/integration-settings.vue';
export default Vue.extend({ export default Vue.extend({
i18n: i18n('mobile/views/pages/settings.vue'), i18n: i18n('mobile/views/pages/settings.vue'),
@@ -218,6 +167,8 @@ export default Vue.extend({
XPasswordSettings, XPasswordSettings,
XProfileEditor, XProfileEditor,
XApiSettings, XApiSettings,
XLanguageSettings,
XIntegrationSettings,
}, },
data() { data() {
@@ -225,8 +176,6 @@ export default Vue.extend({
apiUrl, apiUrl,
version, version,
codename, codename,
langs,
currentLanguage: 'Unknown',
latestVersion: undefined, latestVersion: undefined,
checkingForUpdate: false checkingForUpdate: false
}; };
@@ -277,11 +226,6 @@ export default Vue.extend({
set(value) { this.$store.commit('device/set', { key: 'loadRawImages', value }); } set(value) { this.$store.commit('device/set', { key: 'loadRawImages', value }); }
}, },
lang: {
get() { return this.$store.state.device.lang; },
set(value) { this.$store.commit('device/set', { key: 'lang', value }); }
},
enableSounds: { enableSounds: {
get() { return this.$store.state.device.enableSounds; }, get() { return this.$store.state.device.enableSounds; },
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); } set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
@@ -327,7 +271,6 @@ export default Vue.extend({
set(value) { this.$store.dispatch('settings/set', { key: 'showVia', value }); } set(value) { this.$store.dispatch('settings/set', { key: 'showVia', value }); }
}, },
iLikeSushi: { iLikeSushi: {
get() { return this.$store.state.settings.iLikeSushi; }, get() { return this.$store.state.settings.iLikeSushi; },
set(value) { this.$store.dispatch('settings/set', { key: 'iLikeSushi', value }); } set(value) { this.$store.dispatch('settings/set', { key: 'iLikeSushi', value }); }
@@ -379,14 +322,6 @@ export default Vue.extend({
}, },
}, },
created() {
try {
const locale = JSON.parse(localStorage.getItem('locale') || "{}");
const localeKey = localStorage.getItem('localeKey');
this.currentLanguage = `${locale.meta.lang} (${localeKey})`;
} catch { }
},
mounted() { mounted() {
document.title = this.$t('settings'); document.title = this.$t('settings');
}, },

View File

@@ -44,6 +44,7 @@ type IUserBase = {
wallpaperUrl?: string; wallpaperUrl?: string;
data: any; data: any;
description: string; description: string;
lang?: string;
pinnedNoteIds: mongo.ObjectID[]; pinnedNoteIds: mongo.ObjectID[];
/** /**

View File

@@ -21,10 +21,8 @@ export default async (actor: IRemoteUser, activity: ILike) => {
let reaction = 'pudding'; let reaction = 'pudding';
// 他のMisskeyインスタンスからのリアクション // 他のMisskeyインスタンスからのリアクション
if (activity._misskey_reaction) { if (activity._misskey_reaction && validateReaction.ok(activity._misskey_reaction)) {
if (validateReaction.ok(activity._misskey_reaction)) { reaction = activity._misskey_reaction;
reaction = activity._misskey_reaction;
}
} }
await create(actor, note, reaction); await create(actor, note, reaction);

View File

@@ -322,7 +322,7 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
url: person.url, url: person.url,
endpoints: person.endpoints, endpoints: person.endpoints,
isBot: object.type == 'Service', isBot: object.type == 'Service',
isCat: (person as any).isCat === true isCat: (person as any).isCat === true,
isLocked: person.manuallyApprovesFollowers, isLocked: person.manuallyApprovesFollowers,
createdAt: Date.parse(person.published) || null, createdAt: Date.parse(person.published) || null,
publicKey: { publicKey: {

View File

@@ -6,6 +6,7 @@ import acceptAllFollowRequests from '../../../../services/following/requests/acc
import { publishToFollowers } from '../../../../services/i/update'; import { publishToFollowers } from '../../../../services/i/update';
import define from '../../define'; import define from '../../define';
import getDriveFileUrl from '../../../../misc/get-drive-file-url'; import getDriveFileUrl from '../../../../misc/get-drive-file-url';
const langmap = require('langmap');
export const meta = { export const meta = {
desc: { desc: {
@@ -32,6 +33,13 @@ export const meta = {
} }
}, },
lang: {
validator: $.str.optional.nullable.or(Object.keys(langmap)),
desc: {
'ja-JP': '言語'
}
},
location: { location: {
validator: $.str.optional.nullable.pipe(isValidLocation), validator: $.str.optional.nullable.pipe(isValidLocation),
desc: { desc: {
@@ -121,6 +129,7 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
if (ps.name !== undefined) updates.name = ps.name; if (ps.name !== undefined) updates.name = ps.name;
if (ps.description !== undefined) updates.description = ps.description; if (ps.description !== undefined) updates.description = ps.description;
if (ps.lang !== undefined) updates.lang = ps.lang;
if (ps.location !== undefined) updates['profile.location'] = ps.location; if (ps.location !== undefined) updates['profile.location'] = ps.location;
if (ps.birthday !== undefined) updates['profile.birthday'] = ps.birthday; if (ps.birthday !== undefined) updates['profile.birthday'] = ps.birthday;
if (ps.avatarId !== undefined) updates.avatarId = ps.avatarId; if (ps.avatarId !== undefined) updates.avatarId = ps.avatarId;