Compare commits

..

60 Commits

Author SHA1 Message Date
syuilo
196c55edbc Merge pull request #2125 from acid-chicken/acid-chicken-patch-2
Spotify
2018-08-09 03:32:55 +09:00
Acid Chicken (硫酸鶏)
e724c1e7e8 Update url-preview.vue 2018-08-09 03:32:09 +09:00
greenkeeper[bot]
869c19c666 fix(package): update style-loader to version 0.22.1 2018-08-09 00:59:39 +09:00
syuilo
86a5f715d3 Merge pull request #2121 from syuilo/greenkeeper/systeminformation-3.42.9
Update systeminformation to the latest version 🚀
2018-08-08 23:18:27 +09:00
syuilo
514aeac2d8 Merge pull request #2120 from syuilo/greenkeeper/vue-loader-15.3.0
Update vue-loader to the latest version 🚀
2018-08-08 23:18:16 +09:00
syuilo
8980a26713 Merge pull request #2119 from syuilo/greenkeeper/style-loader-0.22.0
Update style-loader to the latest version 🚀
2018-08-08 23:18:06 +09:00
syuilo
a39e2b28d1 Merge pull request #2118 from syuilo/greenkeeper/commander-2.17.1
Update commander to the latest version 🚀
2018-08-08 23:17:53 +09:00
greenkeeper[bot]
bef617cb7c fix(package): update systeminformation to version 3.42.9 2018-08-08 05:13:03 +00:00
greenkeeper[bot]
1dc1feca0f fix(package): update vue-loader to version 15.3.0 2018-08-07 21:34:59 +00:00
greenkeeper[bot]
90eed0ea0d fix(package): update style-loader to version 0.22.0 2018-08-07 13:13:16 +00:00
greenkeeper[bot]
c730e5edfa fix(package): update commander to version 2.17.1 2018-08-07 11:23:35 +00:00
syuilo
7bd33ecc72 ✌️ 2018-08-07 13:25:50 +09:00
syuilo
d4f7058574 🍕 2018-08-07 12:37:17 +09:00
syuilo
980ae3dcb3 Merge pull request #2114 from gutfuckllc/devel
Localized all hiragana lines.
2018-08-07 11:09:55 +09:00
syuilo
3a76113b78 Merge pull request #2109 from syuilo/l10n_master
New Crowdin translations
2018-08-07 11:09:34 +09:00
syuilo
ec8105b2ae Merge pull request #2112 from syuilo/greenkeeper/@types/node-10.5.7
Update @types/node to the latest version 🚀
2018-08-07 11:09:16 +09:00
syuilo
bf05785345 Merge pull request #2110 from syuilo/greenkeeper/typescript-eslint-parser-18.0.0
Update typescript-eslint-parser to the latest version 🚀
2018-08-07 11:09:07 +09:00
syuilo
82346d788b Merge pull request #2115 from syuilo/greenkeeper/vue-loader-15.2.7
Update vue-loader to the latest version 🚀
2018-08-07 11:08:46 +09:00
greenkeeper[bot]
d86cfa86e4 fix(package): update vue-loader to version 15.2.7 2018-08-07 02:05:20 +00:00
gutfuckllc
b85f13dad3 Localize mobile search.vue 2018-08-06 21:06:09 -04:00
gutfuckllc
eb8c3fe884 Localize a dev file 2018-08-06 21:03:24 -04:00
gutfuckllc
ff325d9588 Localized annotations line 2018-08-06 21:00:58 -04:00
gutfuckllc
a98392ff27 Localize "only one file attached" popup 2018-08-06 20:57:14 -04:00
greenkeeper[bot]
22b8aab7a0 fix(package): update @types/node to version 10.5.7 2018-08-06 22:08:57 +00:00
gutfuckllc
24de518922 Localized 2 missing lines for mobile widgets.vue 2018-08-06 16:08:54 -04:00
gutfuckllc
a169c7756f Added more close buttons 2018-08-06 16:05:48 -04:00
gutfuckllc
249a7f4f68 Slight reordering 2018-08-06 16:05:32 -04:00
gutfuckllc
4f590e0a96 Localized adjective 2018-08-06 16:04:20 -04:00
gutfuckllc
f5b5b290e4 Localized copy-paste message (added common) 2018-08-06 16:02:53 -04:00
gutfuckllc
1f75cf4ace Localize missing line 2018-08-06 16:00:12 -04:00
gutfuckllc
1e4f11a979 Localize japanese adjective. 2018-08-06 15:58:09 -04:00
gutfuckllc
be12e23aa1 Localize unlocalized line. 2018-08-06 15:55:39 -04:00
gutfuckllc
790e6ceca4 Localize unlocalized line 2018-08-06 15:53:21 -04:00
gutfuckllc
a303d52990 Fix typo 2018-08-06 15:53:06 -04:00
greenkeeper[bot]
096fab575c fix(package): update typescript-eslint-parser to version 18.0.0 2018-08-06 19:52:58 +00:00
gutfuckllc
a256393b81 Merge remote-tracking branch 'upstream/master' into devel 2018-08-06 15:45:52 -04:00
syuilo
e8eee9057a New translations ja.yml (Spanish) 2018-08-07 03:51:39 +09:00
syuilo
d81acae17e 5.19.0 2018-08-07 03:33:21 +09:00
syuilo
313715bc75 Merge pull request #2108 from syuilo/l10n_master
New Crowdin translations
2018-08-07 03:32:25 +09:00
syuilo
94dabd2038 New translations ja.yml (English) 2018-08-07 03:31:58 +09:00
syuilo
a3d58e5bc7 New translations ja.yml (Catalan) 2018-08-07 03:22:45 +09:00
syuilo
bfdfd026a2 New translations ja.yml (Portuguese) 2018-08-07 03:22:43 +09:00
syuilo
b713f06599 New translations ja.yml (Korean) 2018-08-07 03:22:41 +09:00
syuilo
2172c5edca New translations ja.yml (Polish) 2018-08-07 03:22:39 +09:00
syuilo
9bc0cfacfa New translations ja.yml (Chinese Simplified) 2018-08-07 03:22:37 +09:00
syuilo
546cfeadbe New translations ja.yml (Italian) 2018-08-07 03:22:33 +09:00
syuilo
2413583ce9 New translations ja.yml (Russian) 2018-08-07 03:22:30 +09:00
syuilo
d7510491a5 New translations ja.yml (English) 2018-08-07 03:22:28 +09:00
syuilo
61db07edf4 New translations ja.yml (Spanish) 2018-08-07 03:22:25 +09:00
syuilo
5c3ac8f952 New translations ja.yml (German) 2018-08-07 03:22:22 +09:00
syuilo
5bfcb75ec3 New translations ja.yml (French) 2018-08-07 03:22:18 +09:00
syuilo
d733a1b445 i18n 2018-08-07 03:20:26 +09:00
syuilo
75c44cd349 Merge pull request #2107 from syuilo/l10n_master
New Crowdin translations
2018-08-07 00:28:13 +09:00
syuilo
f4d247cfae New translations ja.yml (English) 2018-08-07 00:21:42 +09:00
syuilo
4260ec713f Improve error handling 2018-08-06 21:48:23 +09:00
syuilo
99f4ab7000 ✌️ 2018-08-06 21:35:49 +09:00
gutfuckllc
06390380f8 Translated mute. 2018-08-06 03:18:52 -04:00
gutfuckllc
752186066b Merge remote-tracking branch 'upstream/master' into devel 2018-08-05 16:54:54 -04:00
gutfuckllc
911762fedf Removed start.sh 2018-08-04 13:13:56 -04:00
gutfuckllc
de448fc99f Added start.sh 2018-08-04 13:13:29 -04:00
70 changed files with 369 additions and 207 deletions

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "vor {0} Monat{0:en}"
years_ago: "vor {} Jahr{0:en}"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "So"
monday: "Mo"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Melde an..."
signin: "Anmelden"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "Benutzername"
checking: "Überprüfung..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Schwarz ... komplett"
notes: "Blau ... Hinweise"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskey is not running ads</strong>, but some features may be unavailable or malfunctioning if ad blocking features are enabled."
application-authorization: "Application authorizations."
close: "Close"
got-it: "Got it!"
customization-tips:
title: "Customization tips"
paragraph1: "Home customization allows you to add/delete, drag and drop and rearrange widgets."
@@ -39,12 +40,6 @@ common:
months_ago: "{}month(s) ago"
years_ago: "{}year(s) ago"
trash: "Trash"
date:
full-year: "Year"
month: "Month"
day: "Day"
hours: "Hour"
minutes: "Minutes"
weekday-short:
sunday: "S"
monday: "M"
@@ -207,7 +202,7 @@ common/views/components/games/reversi/reversi.room.vue:
cancel-ready: "Cancel \"Ready\""
common/views/components/connect-failed.vue:
title: "Unable to connect to the server"
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please try again later."
description: "There is a problem with your Internet connection, or the server may be down or under maintenance. Please {try again} later."
thanks: "Thank you for using Misskey."
troubleshoot: "Troubleshoot"
common/views/components/connect-failed.troubleshooter.vue:
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Signing in..."
signin: "Sign in"
or: "Or"
signin-with-twitter: "Log in with Twitter"
common/views/components/signup.vue:
username: "Username"
checking: "Checking..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "Follow"
request-pending: "Pending follow request"
follow-request: "Follow request"
desktop:
banner-crop-title: "Crop the part that appears as a banner"
banner: "Banner"
uploading-banner: "Uploading a new banner"
banner-updated: "Updated the banner"
choose-banner: "Choose the banner"
avatar-crop-title: "Crop the part that appears as an avatar"
avatar: "Avatar"
uploading-avatar: "Uploading a new avatar"
avatar-updated: "Updated the avatar"
choose-avatar: "Choose an avatar image"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "User lists"
create-list: "Create new list"
list-name: "List name"
desktop/views/components/user-preview.vue:
notes: "Posts"
following: "Following"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mute"
muted: "Muting"
unmute: "Unmute"
push-to-a-list: "Add to list"
list-pushed: "You added {user} to {list}."
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Following"
@@ -1006,7 +1017,7 @@ mobile/views/pages/welcome.vue:
signup: "Sign up"
mobile/views/pages/widgets.vue:
dashboard: "Dashboard"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
widgets-hints: "You can add/delete/rearrange widgets. To move the widget, drag \"三\". Tap \"x\" to delete the widget. Some widgets can change display by tapping."
mobile/views/pages/widgets/activity.vue:
activity: "Activity"
mobile/views/pages/share.vue:

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskey no tiene anuncios publicitarios.</strong> Sin embargo, algunas características podrían no estar disponibles si el bloqueador de publicidad está habilitado."
application-authorization: "Autorizaciones de la aplicación."
close: "Cerrar"
got-it: "¡Listo!"
customization-tips:
title: "Consejos de personalización"
paragraph1: "Customización de inicio le permite agregar, borrar, o reorganizar los accesorios."
@@ -39,12 +40,6 @@ common:
months_ago: "Hace {} mes(es)"
years_ago: "Hace {} año(s)"
trash: "Papelera"
date:
full-year: "Año"
month: "Mes"
day: "Día"
hours: "horas"
minutes: "minutos"
weekday-short:
sunday: "domingo"
monday: "lunes"
@@ -88,7 +83,7 @@ common:
i-like-sushi: "Prefiero sushi a pudín"
show-reversi-board-labels: "Mostrar etiquetas de filas y columnas en Reversi"
verified-user: "Usuario verificado"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
disable-animated-mfm: "Desactivar texto animado en una publicación"
reversi:
drawn: "Empatado"
my-turn: "Mi turno"
@@ -170,23 +165,23 @@ common/views/components/games/reversi/reversi.vue:
waiting-for: "Esperando por {}"
cancel: "Cancelar"
common/views/components/games/reversi/reversi.game.vue:
surrender: "投了"
surrendered: "投了により"
surrender: "Rendirse"
surrendered: "Por rendirse"
common/views/components/games/reversi/reversi.index.vue:
title: "Misskey Reversi"
sub-title: "他のMisskeyユーザーとリバーシで対戦しよう"
invite: "招待"
rule: "遊び方"
sub-title: "¡Juega Reversi con tus amigos!"
invite: "Invitar"
rule: "Cómo jugar"
rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてゆき、最終的に残った石が多い方が勝ちというボードゲームです。"
mode-invite: "招待"
mode-invite-desc: "指定したユーザーと対戦するモードです。"
invitations: "対局の招待があります!"
my-games: "自分の対局"
all-games: "みんなの対局"
enter-username: "ユーザー名を入力してください"
mode-invite: "Invitar"
mode-invite-desc: "Invitar un usuario al juego."
invitations: "¡Has recibido una invitación!"
my-games: "Mis juegos"
all-games: "Todos los juegos"
enter-username: "Ingresar nombre de usuario"
game-state:
ended: "終了"
playing: "進行中"
ended: "Finalizado"
playing: "En progreso"
common/views/components/games/reversi/reversi.room.vue:
settings-of-the-game: "Configuración de juego"
choose-map: "Elije un mapa"
@@ -198,7 +193,7 @@ common/views/components/games/reversi/reversi.room.vue:
looped-map: "Mapa en bucle"
can-put-everywhere: "Puedes colocar donde quieras"
settings-of-the-bot: "Configuración de bot"
this-game-is-started-soon: "ゲームは数秒後に開始されます"
this-game-is-started-soon: "El juego comenzará pronto"
waiting-for-other: "Esperando a que se prepare el adversario"
waiting-for-me: "Esperando por la preparación"
waiting-for-both: "Esperando por ti"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "Identificador"
signing-in: "Entrando..."
signin: "Entra"
or: "O"
signin-with-twitter: "Ingresar con Twitter"
common/views/components/signup.vue:
username: "Usuario"
checking: "Comprobando..."
@@ -377,7 +374,7 @@ common/views/widgets/tips.vue:
tips-line9: "Misskey está hecho bajo licencia AGPLv3"
tips-line10: "Usando el accesorio de Máquina del Tiempo puedes encontrar publicaciones antiguas"
tips-line11: "Puedes resaltar publicaciones en la página de usuario haciendo click en \"...\""
tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
tips-line13: "Todos los archivos añadidos a la publicación se han guardado en tu unidad."
tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
tips-line17: "「**」でテキストを囲むと**強調表示**されます"
tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskey n'utilise pas de publicités</strong>, mais quelques options peuvent être non disponibles ou fonctionneraient mal si un bloqueur de publicités est activé."
application-authorization: "Permissions de l'application"
close: "Fermer"
got-it: "わかった"
customization-tips:
title: "Conseils de personnalisation"
paragraph1: "La personnalisation à la maison vous permet d'ajouter / supprimer, glisser et déposer et réorganiser les widgets."
@@ -39,12 +40,6 @@ common:
months_ago: "Il y a {} mois"
years_ago: "Il y a {} an·s"
trash: "Corbeille"
date:
full-year: "Année "
month: "Mois"
day: "Jour"
hours: "heures"
minutes: "minutes"
weekday-short:
sunday: "D"
monday: "L"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Connexion...."
signin: "Se connecter"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "Nom d'utilisateur"
checking: "Vérification"
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "Suivre"
request-pending: "Demande d'abonnement en attente"
follow-request: "Demande d'abonnement"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Noirs ... Total"
notes: "Bleu ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "Listes de l'utilisateur"
create-list: "Créer une liste"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "Publications"
following: "Abonné à"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "Mettre en sourdine"
muted: "Muting"
unmute: "Enlever la sourdine"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "Notes"
following: "Suit"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,8 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -26,7 +28,6 @@ common:
notified-by: "{}さんから"
reply-from: "{}さんから返信:"
quoted-by: "{}さんが引用:"
name: "Misskey"
time:
unknown: "なぞのじかん"
future: "未来"
@@ -38,16 +39,10 @@ common:
weeks_ago: "{}週間前"
months_ago: "{}ヶ月前"
years_ago: "{}年前"
month-and-day: "{month}月 {day}日"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -259,12 +254,14 @@ common/views/components/messaging-room.vue:
no-history: "これより過去の履歴はありません"
resize-form: "ドラッグしてフォームの広さを調整"
new-message: "新しいメッセージがあります"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.form.vue:
input-message-here: "ここにメッセージを入力"
send: "送信"
attach-from-local: "PCからファイルを添付する"
attach-from-drive: "ドライブからファイルを添付する"
only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
common/views/components/messaging-room.message.vue:
is-read: "既読"
@@ -311,6 +308,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
@@ -438,6 +437,18 @@ common/views/pages/follow.vue:
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -597,6 +608,8 @@ desktop/views/components/notes.note.vue:
detail: "詳細"
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
hide: "隠す"
see-more: "もっと見る"
desktop/views/components/notes.vue:
error: "読み込みに失敗しました。"
@@ -635,6 +648,7 @@ desktop/views/components/post-form.vue:
geolocation-alert: "お使いの端末は位置情報に対応していません"
error: "エラー"
enter-username: "ユーザー名を入力してください"
annotations: "内容への注釈 (オプション)"
desktop/views/components/post-form-window.vue:
note: "新規投稿"
@@ -823,6 +837,7 @@ desktop/views/components/timeline.vue:
desktop/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
desktop/views/components/ui.header.account.vue:
profile: "プロフィール"
@@ -855,11 +870,10 @@ desktop/views/components/received-follow-requests-window.vue:
accept: "承認"
reject: "拒否"
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
@@ -964,6 +978,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
@@ -1119,6 +1135,7 @@ mobile/views/components/timeline.vue:
mobile/views/components/ui.header.vue:
welcome-back: "おかえりなさい、"
adjective: "さん"
mobile/views/components/ui.nav.vue:
timeline: "タイムライン"
@@ -1180,6 +1197,8 @@ mobile/views/pages/welcome.vue:
mobile/views/pages/widgets.vue:
dashboard: "ダッシュボード"
widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
add-widget: "追加"
customization-tips: "カスタマイズのヒント"
mobile/views/pages/widgets/activity.vue:
activity: "アクティビティ"
@@ -1228,6 +1247,7 @@ mobile/views/pages/settings/settings.profile.vue:
mobile/views/pages/search.vue:
search: "検索"
empty: "「{}」に関する投稿は見つかりませんでした。"
not-found: "「{}」に関する投稿は見つかりませんでした。"
mobile/views/pages/selectdrive.vue:
select-file: "ファイルを選択"
@@ -1332,3 +1352,7 @@ docs:
name: "名前"
type: "型"
description: "説明"
dev/views/index.vue:
manage-apps: "アプリの管理"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskey는 광고를 게재하지 않습니다</strong> 그러나 광고를 차단하는 기능 기능을 사용할 경우 일부 기능을 사용할 수 없게 될 가능성이나 결함이 발생하는 경우가 있습니다."
application-authorization: "앱의 연계"
close: "닫기"
got-it: "わかった"
customization-tips:
title: "사용자 정의 팁"
paragraph1: "홈 정의는 위젯을 추가 / 삭제하거나 드래그 앤 드롭하여 정렬 할 수 있습니다."
@@ -39,12 +40,6 @@ common:
months_ago: "{}개월전"
years_ago: "{}년전"
trash: "휴지통"
date:
full-year: "년"
month: "달"
day: "일"
hours: "때"
minutes: "분"
weekday-short:
sunday: "일"
monday: "월"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskey nie zawiera reklam</strong>, ale część funkcji może nie działać prawidłowo z włączonym blokowaniem reklam."
application-authorization: "アプリの連携"
close: "Zamknij"
got-it: "わかった"
customization-tips:
title: "Wskazówki o dostosowywaniu"
paragraph1: "Dostosowywanie strony głównej pozwala na dodawanie, usuwanie, przeciąganie i zmienianie kolejności widżetów."
@@ -39,12 +40,6 @@ common:
months_ago: "{} mies. temu"
years_ago: "{} lat temu"
trash: "Kosz"
date:
full-year: "Rok"
month: "Miesiąc"
day: "Dzień"
hours: "Godzina"
minutes: "Minuty"
weekday-short:
sunday: "N"
monday: "Pn"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "Token"
signing-in: "Logowanie…"
signin: "Zaloguj"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "Nazwa użytkownika"
checking: "Sprawdzanie…"
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "Śledź"
request-pending: "Oczekiwanie na pozwolenie"
follow-request: "Poproś o śledzenie"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Czarny … Łącznie"
notes: "Niebieski … Wpisy"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "Listy"
create-list: "Utwórz listę"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "Wpisy"
following: "Śledzeni"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "Wycisz"
muted: "Wyciszyłeś"
unmute: "Cofnij wyciszenie"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "Wpisy"
following: "Śledzeni"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -11,6 +11,7 @@ common:
warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
application-authorization: "アプリの連携"
close: "閉じる"
got-it: "わかった"
customization-tips:
title: "カスタマイズのヒント"
paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
@@ -39,12 +40,6 @@ common:
months_ago: "{}ヶ月前"
years_ago: "{}年前"
trash: "ゴミ箱"
date:
full-year: "年"
month: "月"
day: "日"
hours: "時"
minutes: "分"
weekday-short:
sunday: "日"
monday: "月"
@@ -283,6 +278,8 @@ common/views/components/signin.vue:
token: "トークン"
signing-in: "やってます..."
signin: "サインイン"
or: "または"
signin-with-twitter: "Twitterでログイン"
common/views/components/signup.vue:
username: "ユーザー名"
checking: "確認しています..."
@@ -392,6 +389,17 @@ common/views/pages/follow.vue:
follow: "フォロー"
request-pending: "フォロー許可待ち"
follow-request: "フォロー申請"
desktop:
banner-crop-title: "バナーとして表示する部分を選択"
banner: "バナー"
uploading-banner: "新しいバナーをアップロードしています"
banner-updated: "バナーを更新しました"
choose-banner: "バナーにする画像を選択"
avatar-crop-title: "アバターとして表示する部分を選択"
avatar: "アバター"
uploading-avatar: "新しいアバターをアップロードしています"
avatar-updated: "アバターを更新しました"
choose-avatar: "アバターにする画像を選択"
desktop/views/components/activity.chart.vue:
total: "Black ... Total"
notes: "Blue ... Notes"
@@ -750,6 +758,7 @@ desktop/views/components/received-follow-requests-window.vue:
desktop/views/components/user-lists-window.vue:
title: "リスト"
create-list: "リストを作成"
list-name: "リスト名"
desktop/views/components/user-preview.vue:
notes: "投稿"
following: "フォロー"
@@ -832,6 +841,8 @@ desktop/views/pages/user/user.profile.vue:
mute: "ミュートする"
muted: "ミュートしています"
unmute: "ミュート解除"
push-to-a-list: "リストに追加"
list-pushed: "{user}を{list}に追加しました。"
desktop/views/pages/user/user.header.vue:
posts: "投稿"
following: "フォロー"

View File

@@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "5.18.0",
"clientVersion": "1.0.8033",
"version": "5.19.0",
"clientVersion": "1.0.8052",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,
@@ -59,7 +59,7 @@
"@types/mocha": "5.2.3",
"@types/mongodb": "3.1.3",
"@types/ms": "0.7.30",
"@types/node": "10.5.6",
"@types/node": "10.5.7",
"@types/portscanner": "2.1.0",
"@types/pug": "2.0.4",
"@types/qrcode": "1.2.0",
@@ -88,7 +88,7 @@
"bootstrap-vue": "2.0.0-rc.11",
"cafy": "11.3.0",
"chalk": "2.4.1",
"commander": "2.17.0",
"commander": "2.17.1",
"crc-32": "1.2.0",
"css-loader": "1.0.0",
"dateformat": "3.0.3",
@@ -184,11 +184,11 @@
"single-line-log": "1.1.2",
"speakeasy": "2.0.0",
"stringz": "1.0.0",
"style-loader": "0.21.0",
"style-loader": "0.22.1",
"stylus": "0.54.5",
"stylus-loader": "3.0.2",
"summaly": "2.0.6",
"systeminformation": "3.42.8",
"systeminformation": "3.42.9",
"syuilo-password-strength": "0.0.1",
"textarea-caret": "3.1.0",
"tmp": "0.0.33",
@@ -196,7 +196,7 @@
"ts-node": "7.0.0",
"tslint": "5.10.0",
"typescript": "2.9.2",
"typescript-eslint-parser": "17.0.1",
"typescript-eslint-parser": "18.0.0",
"uglify-es": "3.3.9",
"url-loader": "1.0.1",
"uuid": "3.3.2",
@@ -205,7 +205,7 @@
"vue-cropperjs": "2.2.1",
"vue-js-modal": "1.3.16",
"vue-json-tree-view": "2.1.4",
"vue-loader": "15.2.6",
"vue-loader": "15.3.0",
"vue-router": "3.0.1",
"vue-style-loader": "4.1.1",
"vue-template-compiler": "2.5.17",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -12,7 +12,7 @@
</ui-input>
<ui-input v-if="user && user.twoFactorEnabled" v-model="token" type="number" required/>
<ui-button type="submit" :disabled="signing">{{ signing ? '%i18n:@signing-in%' : '%i18n:@signin%' }}</ui-button>
<p style="margin: 8px 0;">または<a :href="`${apiUrl}/signin/twitter`">Twitterでログイン</a></p>
<p style="margin: 8px 0;">%i18n:@or%<a :href="`${apiUrl}/signin/twitter`">%i18n:@signin-with-twitter%</a></p>
</form>
</template>

View File

@@ -2,6 +2,9 @@
<iframe v-if="youtubeId" type="text/html" height="250"
:src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
frameborder="0"/>
<iframe v-else-if="spotifyId"
:src="`https://open.spotify.com/embed/track/${spotifyId}`"
frameborder="0" allowtransparency="true" allow="encrypted-media" />
<div v-else-if="tweetUrl && detail" class="twitter">
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
<a :href="url"></a>
@@ -60,6 +63,8 @@ export default Vue.extend({
this.youtubeId = url.searchParams.get('v');
} else if (url.hostname == 'youtu.be') {
this.youtubeId = url.pathname;
} else if (url.hostname == 'open.spotify.com') {
this.spotifyId = url.pathname.split('/').reverse().filter(x => x !== '')[0];
} else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
this.tweetUrl = url;
const twttr = (window as any).twttr || {};

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,7 +4,7 @@
<div class="main" ref="main">
<div class="backdrop"></div>
<div class="main">
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>さん</p>
<p ref="welcomeback" v-if="$store.getters.isSignedIn">%i18n:@welcome-back%<b>{{ $store.state.i | userName }}</b>%i18n:@adjective%</p>
<div class="container" ref="mainContainer">
<div class="left">
<x-nav/>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,10 +7,11 @@
<script lang="ts">
import Vue from 'vue';
import * as config from '../../../../config';
export default Vue.extend({
mounted() {
document.title = '%i18n:common.name% %i18n:@reversi%';
document.title = `${config.name} %i18n:@reversi%`;
document.documentElement.style.background = '#fff';
},
methods: {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -67,6 +67,7 @@ import * as age from 's-age';
import parseAcct from '../../../../../misc/acct/parse';
import Progress from '../../../common/scripts/loading';
import XHome from './user/home.vue';
import * as config from '../../../config';
export default Vue.extend({
components: {
@@ -106,7 +107,7 @@ export default Vue.extend({
this.fetching = false;
Progress.done();
document.title = Vue.filter('userName')(this.user) + ' | %i18n:common.name%';
document.title = Vue.filter('userName')(this.user) + ' | ' + config.name;
});
}
}

View File

@@ -1,10 +1,10 @@
<template>
<div class="welcome">
<div>
<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="%i18n:common.name%">
<img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" :alt="name">
<p class="host">{{ host }}</p>
<div class="about">
<h2>{{ name || 'unidentified' }}</h2>
<h2>{{ name }}</h2>
<p v-html="description || '%i18n:common.about%'"></p>
<router-link class="signup" to="/signup">%i18n:@signup%</router-link>
</div>

View File

@@ -24,8 +24,8 @@
<option value="nav">%i18n:common.widgets.nav%</option>
<option value="tips">%i18n:common.widgets.tips%</option>
</select>
<button @click="addWidget">追加</button>
<p><a @click="hint">カスタマイズのヒント</a></p>
<button @click="addWidget">%i18n:add-widget%</button>
<p><a @click="hint">%i18n:customization-tips%</a></p>
</header>
<x-draggable
:list="widgets"
@@ -53,6 +53,7 @@
import Vue from 'vue';
import * as XDraggable from 'vuedraggable';
import * as uuid from 'uuid';
import * as config from '../../../config';
export default Vue.extend({
components: {
@@ -102,7 +103,7 @@ export default Vue.extend({
},
mounted() {
document.title = '%i18n:common.name%';
document.title = config.name;
},
methods: {

View File

@@ -47,6 +47,8 @@ export default function load() {
if (config.localDriveCapacityMb == null) config.localDriveCapacityMb = 256;
if (config.remoteDriveCapacityMb == null) config.remoteDriveCapacityMb = 8;
if (config.name == null) config.name = 'Misskey';
return Object.assign(config, mixin);
}

View File

@@ -4,6 +4,8 @@
Error.stackTraceLimit = Infinity;
require('events').EventEmitter.defaultMaxListeners = 128;
import * as os from 'os';
import * as cluster from 'cluster';
import * as debug from 'debug';

View File

@@ -7,6 +7,11 @@ export default async (job: bq.Job, done: any): Promise<void> => {
await request(job.data.user, job.data.to, job.data.content);
done();
} catch (res) {
if (!res.hasOwnProperty('statusCode')) {
console.warn(`deliver failed (unknown): ${res}`);
return done();
}
if (res.statusCode == null) return done();
if (res.statusCode >= 400 && res.statusCode < 500) {
// HTTPステータスコード4xxはクライアントエラーであり、それはつまり