Compare commits

..

61 Commits

Author SHA1 Message Date
syuilo
2fee2e5166 8.40.0 2018-09-15 05:50:08 +09:00
syuilo
98bd6c3cb8 Merge pull request #2706 from syuilo/l10n_develop
New Crowdin translations
2018-09-15 05:49:13 +09:00
syuilo
fc31e44fd2 Fix bug 2018-09-15 05:42:14 +09:00
syuilo
12f89f0e2e New translations ja-JP.yml (Norwegian) 2018-09-15 05:42:13 +09:00
syuilo
cdf15fc43a New translations ja-JP.yml (Dutch) 2018-09-15 05:42:10 +09:00
syuilo
2a12af28dd New translations ja-JP.yml (Japanese, Kansai) 2018-09-15 05:42:08 +09:00
syuilo
f128fceaba New translations ja-JP.yml (Spanish) 2018-09-15 05:42:06 +09:00
syuilo
26c5d66994 New translations ja-JP.yml (Russian) 2018-09-15 05:42:04 +09:00
syuilo
bd390d424a New translations ja-JP.yml (Portuguese) 2018-09-15 05:42:01 +09:00
syuilo
6b85730361 New translations ja-JP.yml (Polish) 2018-09-15 05:41:58 +09:00
syuilo
d6176d1901 New translations ja-JP.yml (Korean) 2018-09-15 05:41:56 +09:00
syuilo
43f336bea4 New translations ja-JP.yml (Italian) 2018-09-15 05:41:52 +09:00
syuilo
d2ed9e965e New translations ja-JP.yml (German) 2018-09-15 05:41:50 +09:00
syuilo
ea73e9d5de New translations ja-JP.yml (French) 2018-09-15 05:41:48 +09:00
syuilo
36ef862fc6 New translations ja-JP.yml (English) 2018-09-15 05:41:46 +09:00
syuilo
999275ca2c New translations ja-JP.yml (Chinese Simplified) 2018-09-15 05:41:44 +09:00
syuilo
78c36ec260 New translations ja-JP.yml (Catalan) 2018-09-15 05:41:41 +09:00
syuilo
c985fed3e4 Resolve #2328 2018-09-15 05:40:58 +09:00
syuilo
f13fe431b8 New translations ja-JP.yml (English) 2018-09-14 21:01:37 +09:00
syuilo
f1d7cc08bb New translations ja-JP.yml (Norwegian) 2018-09-14 20:41:45 +09:00
syuilo
e662dfbcfb New translations ja-JP.yml (Dutch) 2018-09-14 20:41:42 +09:00
syuilo
8aaf667f78 New translations ja-JP.yml (Japanese, Kansai) 2018-09-14 20:41:39 +09:00
syuilo
fdfea73bdb New translations ja-JP.yml (Spanish) 2018-09-14 20:41:37 +09:00
syuilo
50161bc84d New translations ja-JP.yml (Russian) 2018-09-14 20:41:34 +09:00
syuilo
8046a4488d New translations ja-JP.yml (Portuguese) 2018-09-14 20:41:32 +09:00
syuilo
e818c37a0c New translations ja-JP.yml (Polish) 2018-09-14 20:41:30 +09:00
syuilo
16ffa0c3c7 New translations ja-JP.yml (Korean) 2018-09-14 20:41:26 +09:00
syuilo
6a9b839e62 New translations ja-JP.yml (Italian) 2018-09-14 20:41:24 +09:00
syuilo
b5da01931c New translations ja-JP.yml (German) 2018-09-14 20:41:22 +09:00
syuilo
99b6896cf4 New translations ja-JP.yml (French) 2018-09-14 20:41:19 +09:00
syuilo
0ac05df628 New translations ja-JP.yml (English) 2018-09-14 20:41:17 +09:00
syuilo
83726ddcec New translations ja-JP.yml (Chinese Simplified) 2018-09-14 20:41:15 +09:00
syuilo
be627d488c New translations ja-JP.yml (Catalan) 2018-09-14 20:41:12 +09:00
syuilo
6032ec3823 New translations ja-JP.yml (Norwegian) 2018-09-14 20:12:22 +09:00
syuilo
01ed052ae6 New translations ja-JP.yml (Dutch) 2018-09-14 20:12:19 +09:00
syuilo
88a9a7c48f New translations ja-JP.yml (Japanese, Kansai) 2018-09-14 20:12:17 +09:00
syuilo
d74755f0a4 New translations ja-JP.yml (Spanish) 2018-09-14 20:12:15 +09:00
syuilo
e05871a7f8 New translations ja-JP.yml (Russian) 2018-09-14 20:12:12 +09:00
syuilo
fed44e2f2b New translations ja-JP.yml (Portuguese) 2018-09-14 20:12:10 +09:00
syuilo
2189f450df New translations ja-JP.yml (Polish) 2018-09-14 20:12:07 +09:00
syuilo
288e8f0f75 New translations ja-JP.yml (Korean) 2018-09-14 20:12:05 +09:00
syuilo
dfe7eaaa04 New translations ja-JP.yml (Italian) 2018-09-14 20:12:02 +09:00
syuilo
51b166b419 New translations ja-JP.yml (German) 2018-09-14 20:11:59 +09:00
syuilo
0ac9a85314 New translations ja-JP.yml (French) 2018-09-14 20:11:56 +09:00
syuilo
d153297294 New translations ja-JP.yml (English) 2018-09-14 20:11:54 +09:00
syuilo
ec71658087 New translations ja-JP.yml (Chinese Simplified) 2018-09-14 20:11:51 +09:00
syuilo
3f359e67b3 New translations ja-JP.yml (Catalan) 2018-09-14 20:11:49 +09:00
syuilo
385116bf30 New translations ja-JP.yml (Norwegian) 2018-09-14 15:22:13 +09:00
syuilo
f3b476a348 New translations ja-JP.yml (Dutch) 2018-09-14 15:22:11 +09:00
syuilo
d0dec99222 New translations ja-JP.yml (Japanese, Kansai) 2018-09-14 15:22:09 +09:00
syuilo
b3fa50d4d1 New translations ja-JP.yml (Spanish) 2018-09-14 15:22:06 +09:00
syuilo
1dbf245f76 New translations ja-JP.yml (Russian) 2018-09-14 15:22:04 +09:00
syuilo
7c092bc04c New translations ja-JP.yml (Portuguese) 2018-09-14 15:22:02 +09:00
syuilo
b8f1a8a243 New translations ja-JP.yml (Polish) 2018-09-14 15:21:59 +09:00
syuilo
c2b235b4a3 New translations ja-JP.yml (Korean) 2018-09-14 15:21:56 +09:00
syuilo
19a9d8d254 New translations ja-JP.yml (Italian) 2018-09-14 15:21:53 +09:00
syuilo
c79d29bd6c New translations ja-JP.yml (German) 2018-09-14 15:21:51 +09:00
syuilo
14816a1c6d New translations ja-JP.yml (French) 2018-09-14 15:21:48 +09:00
syuilo
0c86f1c1aa New translations ja-JP.yml (English) 2018-09-14 15:21:46 +09:00
syuilo
8f440ae633 New translations ja-JP.yml (Chinese Simplified) 2018-09-14 15:21:44 +09:00
syuilo
863a5ba872 New translations ja-JP.yml (Catalan) 2018-09-14 15:21:41 +09:00
23 changed files with 318 additions and 8 deletions

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Datei auswählen"
upload: "Dateien von deinem PC hochladen"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "Make the stone color clear in reversi"
verified-user: "Verified account"
disable-animated-mfm: "Disable animated texts in a post"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "Do not omit the hostname from the username"
this-setting-is-this-device-only: "Only for this device"
do-not-use-in-production: 'As this is for development, do not use this in production.'
reversi:
drawn: "Draw"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "Posts"
users: "Users"
drive: "Drive"
network: "ネットワーク"
charts:
notes: "The number of posts: increase/decrease (Combined)"
local-notes: "The number of posts: increase/decrease (Local)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "Capacity used as the storage: cumulative total"
drive-files: "The number of files on the storage: increase/decrease"
drive-files-total: "The number of files on the storage: cumulative total"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Choose files"
upload: "Upload files from your device"
@@ -778,7 +786,7 @@ desktop/views/components/settings.profile.vue:
birthday: "Birthday"
save: "Update profile"
locked-account: "Protect your account"
is-locked: "フォローを承認制にする"
is-locked: "Follow request needs approval"
other: "Other"
is-bot: "This account is a Bot"
is-cat: "This account is a Cat"
@@ -1160,7 +1168,7 @@ mobile/views/pages/settings/settings.profile.vue:
avatar: "Avatar"
banner: "Banner"
is-cat: "This account is a Cat"
is-locked: "フォローを承認制にする"
is-locked: "Follow request needs approval"
advanced: "Advanced"
privacy: "Privacy"
save: "Update profile"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "Hacer el color de la piedra claro en Reversi"
verified-user: "Cuenta verificada"
disable-animated-mfm: "Desactivar texto animado en una publicación"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'Esto está en desarrollo, no usarlo para producción.'
reversi:
drawn: "Empatado"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "Publicaciones"
users: "Usuarios"
drive: "Unidad"
network: "ネットワーク"
charts:
notes: "Número de publicaciones: aumentar/disminuir (Combinado)"
local-notes: "Número de publicaciones: aumentar/disminuir (Local)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "Capacidad de almacenamiento usada: Acumulativa total"
drive-files: "Número de archivos almacenados: aumentar/disminuir"
drive-files-total: "Número de archivos almacenados: Acumulativo total"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Escoger archivos"
upload: "Cargar archivos de tu dispositivo"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "Compte vérifié"
disable-animated-mfm: "Désactiver les textes animés dans les publications"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "Partie nulle"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "Publications"
users: "Utilisateurs"
drive: "Drive"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Sélection de fichiers"
upload: "Téléverser des fichiers à partir de votre ordinateur"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -518,6 +518,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -529,6 +530,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストをつけんで!"
verified-user: "アメちゃん付きアカウント"
disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "おあいこ"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "게시물의 문자 애니메이션을 비활성화 할"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "무승부"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Bestanden kiezen"
upload: "Bestanden uploaden van je computer"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "Wyłącz animowany tekst we wpisach"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "Remis"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "Wybierz plik"
upload: "Wyślij pliki z Twojego komputera"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "Conta verificada"
disable-animated-mfm: "Desativar texto animado nas publicações"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "Empatado"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -109,6 +109,10 @@ common:
use-contrast-reversi-stones: "リバーシのアイコンにコントラストを付ける"
verified-user: "公式アカウント"
disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
always-show-nsfw: "常に閲覧注意のメディアを表示する"
always-mark-nsfw: "常にメディアを閲覧注意として投稿"
show-full-acct: "ユーザー名のホストを省略しない"
this-setting-is-this-device-only: "このデバイスのみ"
do-not-use-in-production: 'これは開発ビルドです。本番環境で使用しないでください。'
reversi:
drawn: "引き分け"
@@ -461,6 +465,7 @@ desktop/views/components/charts.vue:
notes: "投稿"
users: "ユーザー"
drive: "ドライブ"
network: "ネットワーク"
charts:
notes: "投稿の増減 (統合)"
local-notes: "投稿の増減 (ローカル)"
@@ -472,6 +477,9 @@ desktop/views/components/charts.vue:
drive-total: "ドライブ使用量の累計"
drive-files: "ドライブのファイル数の増減"
drive-files-total: "ドライブのファイル数の累計"
network-requests: "リクエスト"
network-time: "応答時間"
network-usage: "通信量"
desktop/views/components/choose-file-from-drive-window.vue:
choose-file: "ファイル選択中"
upload: "PCからドライブにファイルをアップロード"

View File

@@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "8.39.0",
"clientVersion": "1.0.9650",
"version": "8.40.0",
"clientVersion": "1.0.9711",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,
@@ -179,6 +179,7 @@
"redis": "2.8.0",
"request": "2.88.0",
"request-promise-native": "1.0.5",
"request-stats": "3.0.0",
"rimraf": "2.6.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",

View File

@@ -19,6 +19,11 @@
<option value="drive">%i18n:@charts.drive%</option>
<option value="drive-total">%i18n:@charts.drive-total%</option>
</optgroup>
<optgroup label="%i18n:@network%">
<option value="network-requests">%i18n:@charts.network-requests%</option>
<option value="network-time">%i18n:@charts.network-time%</option>
<option value="network-usage">%i18n:@charts.network-usage%</option>
</optgroup>
</select>
<div>
<span @click="span = 'day'" :class="{ active: span == 'day' }">%i18n:@per-day%</span> | <span @click="span = 'hour'" :class="{ active: span == 'hour' }">%i18n:@per-hour%</span>
@@ -41,7 +46,10 @@ const colors = {
localPlus: 'rgb(52, 178, 118)',
remotePlus: 'rgb(158, 255, 209)',
localMinus: 'rgb(255, 97, 74)',
remoteMinus: 'rgb(255, 149, 134)'
remoteMinus: 'rgb(255, 149, 134)',
incoming: 'rgb(52, 178, 118)',
outgoing: 'rgb(255, 97, 74)',
};
const rgba = (color: string): string => {
@@ -75,6 +83,9 @@ export default Vue.extend({
case 'drive-total': return this.driveTotalChart();
case 'drive-files': return this.driveFilesChart();
case 'drive-files-total': return this.driveFilesTotalChart();
case 'network-requests': return this.networkRequestsChart();
case 'network-time': return this.networkTimeChart();
case 'network-usage': return this.networkUsageChart();
}
},
@@ -544,8 +555,96 @@ export default Vue.extend({
}
}
}];
},
networkRequestsChart(): any {
const data = this.stats.slice().reverse().map(x => ({
date: new Date(x.date),
requests: x.network.requests
}));
return [{
datasets: [{
label: 'Requests',
fill: true,
backgroundColor: rgba(colors.localPlus),
borderColor: colors.localPlus,
borderWidth: 2,
pointBackgroundColor: '#fff',
lineTension: 0,
data: data.map(x => ({ t: x.date, y: x.requests }))
}]
}];
},
networkTimeChart(): any {
const data = this.stats.slice().reverse().map(x => ({
date: new Date(x.date),
time: x.network.requests != 0 ? (x.network.totalTime / x.network.requests) : 0,
}));
return [{
datasets: [{
label: 'Avg time (ms)',
fill: true,
backgroundColor: rgba(colors.localPlus),
borderColor: colors.localPlus,
borderWidth: 2,
pointBackgroundColor: '#fff',
lineTension: 0,
data: data.map(x => ({ t: x.date, y: x.time }))
}]
}];
},
networkUsageChart(): any {
const data = this.stats.slice().reverse().map(x => ({
date: new Date(x.date),
incoming: x.network.incomingBytes,
outgoing: x.network.outgoingBytes
}));
return [{
datasets: [{
label: 'Incoming',
fill: true,
backgroundColor: rgba(colors.incoming),
borderColor: colors.incoming,
borderWidth: 2,
pointBackgroundColor: '#fff',
lineTension: 0,
data: data.map(x => ({ t: x.date, y: x.incoming }))
}, {
label: 'Outgoing',
fill: true,
backgroundColor: rgba(colors.outgoing),
borderColor: colors.outgoing,
borderWidth: 2,
pointBackgroundColor: '#fff',
lineTension: 0,
data: data.map(x => ({ t: x.date, y: x.outgoing }))
}]
}, {
scales: {
yAxes: [{
ticks: {
callback: value => {
return Vue.filter('bytes')(value, 1);
}
}
}]
},
tooltips: {
callbacks: {
label: (tooltipItem, data) => {
const label = data.datasets[tooltipItem.datasetIndex].label || '';
return `${label}: ${Vue.filter('bytes')(tooltipItem.yLabel, 1)}`;
}
}
}
}];
},
}
});
</script>

View File

@@ -204,4 +204,30 @@ export interface IStats {
decSize: number;
};
};
/**
* ネットワークに関する統計
*/
network: {
/**
* サーバーへのリクエスト数
*/
requests: number;
/**
* 応答時間の合計
* TIP: (totalTime / requests) でひとつのリクエストに平均でどれくらいの時間がかかったか知れる
*/
totalTime: number;
/**
* 合計受信データ量
*/
incomingBytes: number;
/**
* 合計送信データ量
*/
outgoingBytes: number;
};
}

View File

@@ -3,7 +3,7 @@ import Meta from '../../../../models/meta';
export default () => new Promise(async (res, rej) => {
const meta = await Meta.findOne({});
const hidedTags = (meta.hidedTags || []).map(t => t.toLowerCase());
const hidedTags = meta ? (meta.hidedTags || []).map(t => t.toLowerCase()) : [];
const span = 1000 * 60 * 60 * 24 * 7; // 1週間

View File

@@ -6,6 +6,15 @@ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
function migrateStats(stats: IStats[]) {
stats.forEach(stat => {
if (stat.network == null) {
stat.network = {
requests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
};
}
const isOldData =
stat.users.local.inc == null ||
stat.users.local.dec == null ||
@@ -180,6 +189,12 @@ export default (params: any) => new Promise(async (res, rej) => {
decCount: 0,
decSize: 0
}
},
network: {
requests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
}
});
} else {
@@ -236,6 +251,12 @@ export default (params: any) => new Promise(async (res, rej) => {
decCount: 0,
decSize: 0
}
},
network: {
requests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
}
});
}

View File

@@ -19,7 +19,7 @@ const max = 5;
*/
export default () => new Promise(async (res, rej) => {
const meta = await Meta.findOne({});
const hidedTags = (meta.hidedTags || []).map(t => t.toLowerCase());
const hidedTags = meta ? (meta.hidedTags || []).map(t => t.toLowerCase()) : [];
//#region 1. 直近Aの内に投稿されたハッシュタグ(とユーザーのペア)を集計
const data = await Note.aggregate([{

View File

@@ -11,11 +11,13 @@ import * as Router from 'koa-router';
import * as mount from 'koa-mount';
import * as compress from 'koa-compress';
import * as logger from 'koa-logger';
const requestStats = require('request-stats');
//const slow = require('koa-slow');
import activityPub from './activitypub';
import webFinger from './webfinger';
import config from '../config';
import { updateNetworkStats } from '../services/update-chart';
// Init app
const app = new Koa();
@@ -81,4 +83,27 @@ export default () => new Promise(resolve => {
// Listen
server.listen(config.port, resolve);
//#region Network stats
let queue: any[] = [];
requestStats(server, (stats: any) => {
if (stats.ok) {
queue.push(stats);
}
});
// Bulk write
setInterval(() => {
if (queue.length == 0) return;
const requests = queue.length;
const time = queue.reduce((a, b) => a + b.time, 0);
const incomingBytes = queue.reduce((a, b) => a + b.req.bytes, 0);
const outgoingBytes = queue.reduce((a, b) => a + b.res.bytes, 0);
queue = [];
updateNetworkStats(requests, time, incomingBytes, outgoingBytes);
}, 5000);
//#endregion
});

View File

@@ -96,6 +96,12 @@ async function getCurrentStats(span: 'day' | 'hour'): Promise<IStats> {
decCount: 0,
decSize: 0
}
},
network: {
requests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
}
};
@@ -161,6 +167,12 @@ async function getCurrentStats(span: 'day' | 'hour'): Promise<IStats> {
decCount: 0,
decSize: 0
}
},
network: {
requests: 0,
totalTime: 0,
incomingBytes: 0,
outgoingBytes: 0
}
};
@@ -243,3 +255,13 @@ export async function updateDriveStats(file: IDriveFile, isAdditional: boolean)
await update(inc);
}
export async function updateNetworkStats(requests: number, time: number, incomingBytes: number, outgoingBytes: number) {
const inc = {} as any;
inc['network.requests'] = requests;
inc['network.totalTime'] = time;
inc['network.incomingBytes'] = incomingBytes;
inc['network.outgoingBytes'] = outgoingBytes;
await update(inc);
}