diff --git a/locales/ca.yml b/locales/ca-ES.yml
similarity index 99%
rename from locales/ca.yml
rename to locales/ca-ES.yml
index 42d4df54a1..8165654fcb 100644
--- a/locales/ca.yml
+++ b/locales/ca-ES.yml
@@ -58,7 +58,7 @@ common:
     friday: "金曜日"
     saturday: "土曜日"
   reactions:
-    like: "いいね"
+    like: "ええやん"
     love: "しゅき"
     laugh: "笑"
     hmm: "ふぅ~む"
diff --git a/locales/de.yml b/locales/de-DE.yml
similarity index 99%
rename from locales/de.yml
rename to locales/de-DE.yml
index 01833a0e87..de656dfb09 100644
--- a/locales/de.yml
+++ b/locales/de-DE.yml
@@ -58,7 +58,7 @@ common:
     friday: "金曜日"
     saturday: "土曜日"
   reactions:
-    like: "Gefällt mir"
+    like: "ええやん"
     love: "Lieben"
     laugh: "Lachen"
     hmm: "Hmm...?"
diff --git a/locales/en.yml b/locales/en-US.yml
similarity index 100%
rename from locales/en.yml
rename to locales/en-US.yml
diff --git a/locales/es.yml b/locales/es-ES.yml
similarity index 99%
rename from locales/es.yml
rename to locales/es-ES.yml
index f384a54b93..599e05b7c4 100644
--- a/locales/es.yml
+++ b/locales/es-ES.yml
@@ -58,7 +58,7 @@ common:
     friday: "Viernes"
     saturday: "Sábado"
   reactions:
-    like: "me gusta"
+    like: "ええやん"
     love: "amor"
     laugh: "risa"
     hmm: "hmm"
diff --git a/locales/fr.yml b/locales/fr-FR.yml
similarity index 99%
rename from locales/fr.yml
rename to locales/fr-FR.yml
index 418bd10551..9e979700d1 100644
--- a/locales/fr.yml
+++ b/locales/fr-FR.yml
@@ -30,7 +30,7 @@ common:
     quoted-by: "Cité·e par {} :"
   time:
     unknown: "inconnu"
-    future: "future"
+    future: "à l'instant"
     just_now: "à l'instant"
     seconds_ago: "Il y a {} seconde·s"
     minutes_ago: "Il y a {} minute·s"
@@ -58,7 +58,7 @@ common:
     friday: "Vendredi"
     saturday: "Samedi"
   reactions:
-    like: "Aime"
+    like: "ええやん"
     love: "Adore"
     laugh: "Rire"
     hmm: "Hmm ... ?"
@@ -287,7 +287,7 @@ common/views/components/signin.vue:
   signin: "Se connecter"
   or: "Ou"
   signin-with-twitter: "Se connecter via Twitter"
-  login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
+  login-failed: "Échec d'authentification. Veuillez vérifier que votre nom d'utilisateur et mot de passe sont corrects."
 common/views/components/signup.vue:
   invitation-code: "Code d’invitation"
   invitation-info: "Si vous n’avez pas de code d’invitation, contactez un·e <a href=\"{}\">administrateur·rice</a>."
@@ -443,7 +443,7 @@ desktop/views/components/drive-window.vue:
 desktop/views/components/drive.file.vue:
   avatar: "Avatar"
   banner: "Bannière"
-  nsfw: "閲覧注意"
+  nsfw: "CW"
   contextmenu:
     rename: "Renommer"
     mark-as-sensitive: "Marquer comme sensible"
@@ -638,7 +638,7 @@ desktop/views/components/settings.vue:
   show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
   sound: "Son"
   enable-sounds: "Activer le son"
-  enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
+  enable-sounds-desc: "Jouer un son lorsque vous recevez un message. Ce paramètre est sauvegardé dans le navigateur."
   volume: "Volume"
   test: "Test"
   mobile: "Mobile"
@@ -699,7 +699,7 @@ desktop/views/components/settings.2fa.vue:
 desktop/views/components/settings.api.vue:
   intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
   caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
-  regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
+  regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
   regenerate-token: "Regenerer le token"
   token: "Jeton :"
   enter-password: "Veuillez entrer le mot de passe"
diff --git a/locales/index.js b/locales/index.js
index ea0c101952..b1bc782166 100644
--- a/locales/index.js
+++ b/locales/index.js
@@ -11,13 +11,13 @@ const loadLang = lang => yaml.safeLoad(
 const native = loadLang('ja-JP');
 
 const langs = {
-	'de': loadLang('de'),
-	'en': loadLang('en'),
-	'fr': loadLang('fr'),
-	'ja': native,
+	'de-DE': loadLang('de-DE'),
+	'en-US': loadLang('en-US'),
+	'fr-FR': loadLang('fr-FR'),
+	'ja-JP': native,
 	'ja-KS': loadLang('ja-KS'),
-	'pl': loadLang('pl'),
-	'es': loadLang('es')
+	'pl-PL': loadLang('pl-PL'),
+	'es-ES': loadLang('es-ES')
 };
 
 Object.values(langs).forEach(locale => {
diff --git a/locales/it.yml b/locales/it-IT.yml
similarity index 99%
rename from locales/it.yml
rename to locales/it-IT.yml
index 42d4df54a1..8165654fcb 100644
--- a/locales/it.yml
+++ b/locales/it-IT.yml
@@ -58,7 +58,7 @@ common:
     friday: "金曜日"
     saturday: "土曜日"
   reactions:
-    like: "いいね"
+    like: "ええやん"
     love: "しゅき"
     laugh: "笑"
     hmm: "ふぅ~む"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index dc93c9dddc..dfcdb59e1c 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -857,6 +857,7 @@ desktop/views/components/ui.header.account.vue:
   lists: "リスト"
   follow-requests: "フォロー申請"
   customize: "ホームのカスタマイズ"
+  admin: "管理"
   settings: "設定"
   signout: "サインアウト"
   dark: "闇に飲まれる"
@@ -1214,6 +1215,7 @@ mobile/views/components/ui.nav.vue:
   game: "ゲーム"
   darkmode: "ダークモード"
   settings: "設定"
+  admin: "管理"
   about: "Misskeyについて"
 
 mobile/views/components/user-timeline.vue:
diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml
index b72dc26c1d..85da28c99b 100644
--- a/locales/ja-KS.yml
+++ b/locales/ja-KS.yml
@@ -1,21 +1,21 @@
+---
 meta:
-  lang: "日本語"
-  divider: "関西弁"
-
+  lang: "日本語 (関西弁)"
+  divider: ""
 common:
   misskey: "A ⭐ of fediverse"
   about-title: "A ⭐ of fediverse."
   about: "ようMisskeyを見つけてくれて、おおきにやで。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>やねん。Fediverse(ぎょうさんのSNSで構成されとる宇宙)っちゅうもんの中におるから、お隣さんのSNSとも仲良うさせてもろてんねん。ちょいとやかましい心斎橋から離れて、新しいインターネットにダイブしてみぃひん?"
   adblock:
-    detected: "広告ブロッカーを切っとくれんか"
-    warning: "<strong>Misskeyは広告を掲載しとらん</strong>けど、広告をブロックする機能が有効やと一部の機能が利用できんくなったり、不具合が発生するかも分からん。知らんけど。"
+    detected: "広告ブロッカーを無効にしてや"
+    warning: "<strong>Misskeyは広告を掲載してへん</strong>けど、広告をブロックしはる機能がおると一部の機能が利用できんくなったり、不具合が発生するかも分からん。知らんけど。"
   application-authorization: "アプリの連携"
-  close: "ほなさいなら"
+  close: "さいなら"
   do-not-copy-paste: "ここにコードを入力したり張り付けたりせんといてください。アカウントが不正利用されるかも分からん。知らんけど。"
   got-it: "ほい"
   customization-tips:
     title: "カスタマイズのヒント"
-    paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりできんねやわ。。"
+    paragraph1: "ホームのカスタマイズやと、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりできんねやわ。"
     paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>したったら表示を変更できんねやわ。"
     paragraph3: "ウィジェットを削除するんやったら、ヘッダーの<strong>「ゴミ箱」</strong>と書いたぁるエリアにウィジェットをドラッグ&ドロップしてな。"
     paragraph4: "カスタマイズを終了するんやったら、右上の「完了」をクリックしてな。"
@@ -40,9 +40,7 @@ common:
     months_ago: "{}ヶ月前"
     years_ago: "{}年前"
   month-and-day: "{month}月 {day}日"
-
   trash: "ゴミ箱"
-
   weekday-short:
     sunday: "日"
     monday: "月"
@@ -51,7 +49,6 @@ common:
     thursday: "木"
     friday: "金"
     saturday: "土"
-
   weekday:
     sunday: "日曜日"
     monday: "月曜日"
@@ -60,51 +57,46 @@ common:
     thursday: "木曜日"
     friday: "金曜日"
     saturday: "土曜日"
-
   reactions:
-    like: "いいね"
-    love: "しゅき"
-    laugh: "笑"
+    like: "ええやん"
+    love: "好きやねん"
+    laugh: "わろた"
     hmm: "ふぅ~む"
     surprise: "わお"
-    congrats: "おめでとう"
-    angry: "おこ"
-    confused: "こまこまのこまり"
+    congrats: "おめでとうさん"
+    angry: "何言うてまんねん"
+    confused: "こまこまのこまりやわぁ"
     rip: "RIP"
-    pudding: "Pudding"
-
+    pudding: "アメちゃんちゃうんちゃう?"
   note-placeholders:
     a: "今なにしてん?"
     b: "何かあったんか?"
     c: "何考えとりますん?"
-    d: "言いたいことは?"
+    d: "言うときたいことは?"
     e: "ここに書いてや"
-    f: "あんさんが書くのを待っちょります..."
-
+    f: "あんさんが書くんを待っちょります..."
   search: "検索"
   delete: "削除"
   loading: "読み込み中"
   ok: "ほい"
-  update-available-title: "更新があるで"
-  update-available: "Misskeyの新しいバージョンがあるで({newer}。現在{current}を利用中)。ページを再度読み込みしたると更新が適用されるわ。"
-  my-token-regenerated: "あんさんのトークンが更新されたらしい、知らんけど。まあとりあえずサインアウトすんで。"
+  update-available-title: "更新があんで"
+  update-available: "Misskeyの新しいバージョンがあんで({newer}。現在{current}をつこてるわ)。ページを再度読み込みしたると更新が適用されるわ。"
+  my-token-regenerated: "あんさんのトークンが更新されたらしいわ。すまんがとりあえずサインアウトすんで。"
   i-like-sushi: "寿司(のほうがプリンよりむしろ)ウマい、タコ焼きはあらへんけど。"
-  show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
-  verified-user: "公式アカウント"
-  disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
-
+  show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示や!"
+  verified-user: "アメちゃん付きアカウント"
+  disable-animated-mfm: "投稿内のちょろちょろ動いてんのを止める"
   reversi:
-    drawn: "引き分け"
+    drawn: "おあいこ"
     my-turn: "あんさんのターンや"
     opponent-turn: "相手のターンや"
-    turn-of: "{}のターンです"
+    turn-of: "{}のターンや"
     past-turn-of: "{}のターン"
-    won: "{}の勝ち"
+    won: "{}の勝ちや!"
     black: "黒"
     white: "白"
     total: "合計"
     this-turn: "{}ターン目"
-
   widgets:
     analog-clock: "アナログ時計"
     profile: "プロフィール"
@@ -129,28 +121,26 @@ common:
     nav: "ナビゲーション"
     tips: "ヒント"
     hashtags: "ハッシュタグ"
-
   deck:
     widgets: "ウィジェット"
-    home: "ホーム"
+    home: "うち"
     local: "ローカル"
     hybrid: "ソーシャル"
     global: "グローバル"
     notifications: "通知"
     list: "リスト"
-    swap-left: "左に移動"
-    swap-right: "右に移動"
-    swap-up: "上に移動"
-    swap-down: "下に移動"
-    remove: "カラムを削除"
-    add-column: "カラムを追加"
-    rename: "名前を変更"
-    stack-left: "左に重ねる"
-    pop-right: "右に出す"
-
+    swap-left: "左に移動や!"
+    swap-right: "右に移動や!"
+    swap-up: "上に移動!"
+    swap-down: "下に移動!"
+    remove: "カラムを削除や!"
+    add-column: "カラムを追加!"
+    rename: "名前を変更や!"
+    stack-left: "左に重ねんで!"
+    pop-right: "右に出すで!"
 auth/views/form.vue:
   share-access: "<i>{{ app.name }}</i>があんさんのアカウントにアクセスすんのを<b>許可</b>してもええか?"
-  permission-ask: "このアプリは次の権限を要求しとるで:"
+  permission-ask: "このアプリは次の権限を要求してんで:"
   account-read: "アカウントの情報を見させてもらうで。"
   account-write: "アカウントの情報を操作させてもらうで。"
   note-write: "投稿させてもらうで。"
@@ -160,32 +150,28 @@ auth/views/form.vue:
   drive-write: "ドライブを操作させてもらうで。"
   notification-read: "通知を見させてもらうで。"
   notification-write: "通知を操作させてもらうで。"
-  cancel: "キャンセル"
-  accept: "アクセスを許可"
-
+  cancel: "やめとくわ"
+  accept: "アクセスを許可や!"
 auth/views/index.vue:
   loading: "読み込み中"
-  denied: "アプリケーションの連携をキャンセルしたわ。"
-  denied-paragraph: "このアプリがあんさんのアカウントにアクセスすることはあらへん。知らんけど。"
+  denied: "アプリケーションの連携をやめといたわ。"
+  denied-paragraph: "このアプリがあんさんのアカウントにアクセスすることは多分あらへん。知らんけど。"
   already-authorized: "このアプリはもう連携済みやったわ"
   allowed: "アプリケーションの連携を許可したで"
   callback-url: "アプリケーションに戻っとります"
   please-go-back: "アプリケーションに戻って、気張ってってな。"
-  error: "セッションが存在しとらん。"
+  error: "セッションが存在してへん。"
   sign-in: "サインインしてや"
-
 common/views/components/games/reversi/reversi.vue:
   matching:
-    waiting-for: "{}を待っとる"
-    cancel: "やっぱやめ"
-
+    waiting-for: "{}を待っとります"
+    cancel: "やめとくわ"
 common/views/components/games/reversi/reversi.game.vue:
-  surrender: "投了"
+  surrender: "投了や..."
   surrendered: "投了により"
   is-llotheo: "石の少ない方が勝ち(ロセオ)"
   looped-map: "ループマップ"
-  can-put-everywhere: "どこでも置けるモード"
-
+  can-put-everywhere: "どこに置いてもええモード"
 common/views/components/games/reversi/reversi.index.vue:
   title: "Misskey Reversi"
   sub-title: "お隣のミスキストはんらとリバーシで対戦や!"
@@ -194,14 +180,13 @@ common/views/components/games/reversi/reversi.index.vue:
   rule-desc: "リバーシは、相手と交互に石をボードに置いて、相手の石を挟んで自分の色に変えてって、最終的に残った石が多い方が勝ちっちゅうボードゲームや。"
   mode-invite: "招待"
   mode-invite-desc: "指定したユーザーと対戦するモードや。"
-  invitations: "対局の招待がきとるで。"
+  invitations: "対局の招待がきてんで!"
   my-games: "自分の対局"
   all-games: "みんなの対局"
   enter-username: "ユーザー名を入力してや"
   game-state:
     ended: "終了"
     playing: "進行中"
-
 common/views/components/games/reversi/reversi.room.vue:
   settings-of-the-game: "ゲームの設定"
   choose-map: "マップを選択"
@@ -213,20 +198,18 @@ common/views/components/games/reversi/reversi.room.vue:
   looped-map: "ループマップ"
   can-put-everywhere: "どこでも置けるモード"
   settings-of-the-bot: "Botの設定"
-  this-game-is-started-soon: "ゲームは数秒後に開始されんで"
-  waiting-for-other: "相手の準備が完了すんのを待っとるで"
-  waiting-for-me: "あんさんの準備が完了すんのを待っとるで"
+  this-game-is-started-soon: "ゲームは数秒後に開始されます"
+  waiting-for-other: "相手の準備が完了するのを待っています"
+  waiting-for-me: "あなたの準備が完了するのを待っています"
   waiting-for-both: "準備中"
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   ready: "準備完了"
   cancel-ready: "準備続行"
-
 common/views/components/connect-failed.vue:
-  title: "サーバーに接続できんわ"
-  description: "インターネット回線に問題が起きとるか、サーバーがダウンまたはメンテナンスしとるっぽいわ。知らんけど。とりあえずあとで{再試行}してや。"
-  thanks: "いつもMisskeyをつこてくれてほんまおおきにやで。"
+  title: "サーバーに接続できません"
+  description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。"
+  thanks: "いつもMisskeyをご利用いただきありがとうございます。"
   troubleshoot: "トラブルシュート"
-
 common/views/components/connect-failed.troubleshooter.vue:
   title: "トラブルシューティング"
   network: "ネットワーク接続"
@@ -235,42 +218,37 @@ common/views/components/connect-failed.troubleshooter.vue:
   checking-internet: "インターネット接続を確認中"
   server: "サーバー接続"
   checking-server: "サーバー接続を確認中"
-  finding: "問題を調べとります"
-  no-network: "ネットワークに接続されとりません"
-  no-network-desc: "つこてるPCのネットワーク接続が正常か確認してや。"
-  no-internet: "インターネットに接続されとりません"
-  no-internet-desc: "ネットワークには接続されとるけど、インターネットには接続されとらんようやわ。つこてるPCのインターネット接続が正常か確認してや。"
-  no-server: "Misskeyのサーバーに接続できん"
-  no-server-desc: "つこてるPCのインターネット接続は正常やけど、Misskeyのサーバーにはつながらんわ。多分サーバーがダウンまたはメンテナンスしとるわ、知らんけど。すまんけどしばらくしてから再度アクセスしてみてや。"
-  success: "Misskeyのサーバーに接続できたわ"
-  success-desc: "正常に接続できるようやわ。ページを再度読み込みしてな。"
+  finding: "問題を調べています"
+  no-network: "ネットワークに接続されていません"
+  no-network-desc: "お使いのPCのネットワーク接続が正常か確認してください。"
+  no-internet: "インターネットに接続されていません"
+  no-internet-desc: "ネットワークには接続されていますが、インターネットには接続されていないようです。お使いのPCのインターネット接続が正常か確認してください。"
+  no-server: "Misskeyのサーバーに接続できません"
+  no-server-desc: "お使いのPCのインターネット接続は正常ですが、Misskeyのサーバーには接続できませんでした。サーバーがダウンまたはメンテナンスしている可能性があるので、しばらくしてから再度御アクセスください。"
+  success: "Misskeyのサーバーに接続できました"
+  success-desc: "正常に接続できるようです。ページを再度読み込みしてください。"
   flush: "キャッシュの削除"
   set-version: "バージョン指定"
-
 common/views/components/messaging.vue:
   search-user: "ユーザーを探す"
-  you: "あんさん"
-  no-history: "履歴はあらへん"
-
+  you: "あなた"
+  no-history: "履歴はありません"
 common/views/components/messaging-room.vue:
-  empty: "このユーザーと話したことはあらへん"
+  empty: "このユーザーと話したことはありません"
   more: "もっと読む"
-  no-history: "これより過去の履歴はあらへん"
+  no-history: "これより過去の履歴はありません"
   resize-form: "ドラッグしてフォームの広さを調整"
-  new-message: "新しいメッセージがあるで"
-  only-one-file-attached: "メッセージに添付できんのはひとつのファイルのみや"
-
+  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: "メッセージに添付できんのはひとつのファイルのみや"
-
+  only-one-file-attached: "メッセージに添付できるのはひとつのファイルのみです"
 common/views/components/messaging-room.message.vue:
   is-read: "既読"
-  deleted: "このメッセージは削除されたわ"
-
+  deleted: "このメッセージは削除されました"
 common/views/components/nav.vue:
   about: "Misskeyについて"
   stats: "統計"
@@ -280,86 +258,75 @@ common/views/components/nav.vue:
   repository: "リポジトリ"
   develop: "開発者"
   feedback: "フィードバック"
-
 common/views/components/note-menu.vue:
   favorite: "お気に入り"
   pin: "ピン留め"
   delete: "削除"
-  delete-confirm: "この投稿を削除してもええか?"
+  delete-confirm: "この投稿を削除しますか?"
   remote: "投稿元で見る"
-
 common/views/components/poll.vue:
-  vote-to: "「{}」に投票や!"
+  vote-to: "「{}」に投票する"
   vote-count: "{}票"
   total-users: "{}人が投票"
   vote: "投票する"
   show-result: "結果を見る"
   voted: "投票済み"
-
 common/views/components/poll-editor.vue:
-  no-only-one-choice: "アンケートには、選択肢が最低2つ必要や"
+  no-only-one-choice: "アンケートには、選択肢が最低2つ必要です"
   choice-n: "選択肢{}"
   remove: "この選択肢を削除"
   add: "+選択肢を追加"
   destroy: "アンケートを破棄"
-
 common/views/components/reaction-picker.vue:
   choose-reaction: "リアクションを選択"
-
 common/views/components/signin.vue:
   username: "ユーザー名"
   password: "パスワード"
   token: "トークン"
-  signing-in: "やっとります..."
+  signing-in: "やってます..."
   signin: "サインイン"
   or: "または"
   signin-with-twitter: "Twitterでログイン"
-  login-failed: "ログインできんかったわ。ユーザー名とパスワードを確認してや。"
-
+  login-failed: "ログインできませんでした。ユーザー名とパスワードを確認してください。"
 common/views/components/signup.vue:
   invitation-code: "招待コード"
-  invitation-info: "招待コードをもっとらんのやったら、<a href=\"{}\">管理者</a>まで連絡してや。"
+  invitation-info: "招待コードをお持ちでない方は、<a href=\"{}\">管理者</a>までご連絡ください。"
   username: "ユーザー名"
-  checking: "確認しとります..."
+  checking: "確認しています..."
   available: "利用できます"
-  unavailable: "既に利用されとります"
+  unavailable: "既に利用されています"
   error: "通信エラー"
-  invalid-format: "a~z、A~Z、0~9、_が使えますねん"
-  too-short: "1文字以上でよろしゅうな!"
-  too-long: "20文字以内でよろしゅうな"
+  invalid-format: "a~z、A~Z、0~9、_が使えます"
+  too-short: "1文字以上でお願いします!"
+  too-long: "20文字以内でお願いします"
   password: "パスワード"
-  password-placeholder: "8文字以上が推奨ですねん"
-  weak-password: "へぼいパスワード"
-  normal-password: "ぼちぼちパスワード"
-  strong-password: "ええ感じのパスワード"
+  password-placeholder: "8文字以上を推奨します"
+  weak-password: "弱いパスワード"
+  normal-password: "まあまあのパスワード"
+  strong-password: "強いパスワード"
   retype: "再入力"
-  retype-placeholder: "確認のためもっぺん入力してや"
-  password-matched: "確認されたで"
-  password-not-matched: "一致しとらんで"
+  retype-placeholder: "確認のため再入力してください"
+  password-matched: "確認されました"
+  password-not-matched: "一致していません"
   recaptcha: "認証"
   create: "アカウント作成"
-  some-error: "何かよう分からんけど、アカウントの作成に失敗してしもたわ。すまんがもっぺん試してくれへんか?"
-
+  some-error: "何らかの原因によりアカウントの作成に失敗しました。再度お試しください。"
 common/views/components/special-message.vue:
   new-year: "Happy New Year!"
   christmas: "Merry Christmas!"
-
 common/views/components/stream-indicator.vue:
   connecting: "接続中"
   reconnecting: "再接続中"
   connected: "接続完了"
-
 common/views/components/twitter-setting.vue:
-  description: "つことるTwitterアカウントをつことるMisskeyアカウントに接続しとくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになったりすんで。"
-  connected-to: "次のTwitterアカウントに接続されとります"
+  description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
+  connected-to: "次のTwitterアカウントに接続されています"
   detail: "詳細..."
   reconnect: "再接続する"
   connect: "Twitterと接続する"
   disconnect: "切断する"
-
 common/views/components/uploader.vue:
   waiting: "待機中"
-
 common/views/components/visibility-chooser.vue:
   public: "公開"
   home: "ホーム"
@@ -369,13 +336,11 @@ common/views/components/visibility-chooser.vue:
   specified: "ダイレクト"
   specified-desc: "指定したユーザーにのみ公開"
   private: "非公開"
-
 common/views/widgets/broadcast.vue:
   fetching: "確認中"
-  no-broadcasts: "お知らせはあらへん"
-  have-a-nice-day: "おおきに!"
+  no-broadcasts: "お知らせはありません"
+  have-a-nice-day: "良い一日を!"
   next: "次"
-
 common/views/widgets/calendar.vue:
   year: "{}年"
   month: "{}月"
@@ -383,119 +348,102 @@ common/views/widgets/calendar.vue:
   today: "今日:"
   this-month: "今月:"
   this-year: "今年:"
-
 common/views/widgets/donation.vue:
   title: "寄付のお願い"
-  text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かりますねん。Misskeyは広告を掲載したりせんから、収入を皆様からの寄付に頼ってますねん。もしご興味があれば、{}までご連絡よろしゅうな。ご協力おおきにやで。"
-
+  text: "Misskeyの運営にはドメイン、サーバー等のコストが掛かります。Misskeyは広告を掲載したりしないため、収入を皆様からの寄付に頼っています。もしご興味があれば、{}までご連絡ください。ご協力ありがとうございます。"
 common/views/widgets/photo-stream.vue:
   title: "フォトストリーム"
-  no-photos: "写真はあらへん"
-
+  no-photos: "写真はありません"
 common/views/widgets/posts-monitor.vue:
   title: "投稿チャート"
   toggle: "表示を切り替え"
-
 common/views/widgets/hashtags.vue:
   title: "ハッシュタグ"
   count: "{}人が投稿"
   empty: "トレンドなし"
-
 common/views/widgets/server.vue:
   title: "サーバー情報"
   toggle: "表示を切り替え"
-
 common/views/widgets/memo.vue:
   title: "付箋"
-  memo: "ここに書くねんで!"
+  memo: "ここに書いて!"
   save: "保存"
-
 common/views/widgets/slideshow.vue:
-  folder-customize-mode: "フォルダを指定するんやったら、カスタマイズモードを終了してや"
-  folder: "クリックしてフォルダを指定してや"
-  no-image: "このフォルダには画像があらへん"
-
+  folder-customize-mode: "フォルダを指定するには、カスタマイズモードを終了してください"
+  folder: "クリックしてフォルダを指定してください"
+  no-image: "このフォルダには画像がありません"
 common/views/widgets/tips.vue:
-  tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできんで"
-  tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開くで"
-  tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできんで"
-  tips-line4: "投稿フォームにクリップボードにおる画像データをペーストできんで"
-  tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできんで"
-  tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できんで"
-  tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できんで"
-  tips-line8: "ホームは設定からカスタマイズできんで"
-  tips-line9: "MisskeyはAGPLv3やで"
-  tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れんで"
-  tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできんで"
-  tips-line13: "投稿に添付したファイルは全てドライブに保存されんで"
-  tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できんで"
-  tips-line17: "「**」でテキストを囲ったると**強調表示**されんで"
-  tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができんで"
-  tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示してんねん"
-  tips-line21: "APIをつこてbotの開発なども行えんで"
+  tips-line1: "<kbd>t</kbd>でタイムラインにフォーカスできます"
+  tips-line2: "<kbd>p</kbd>または<kbd>n</kbd>で投稿フォームを開きます"
+  tips-line3: "投稿フォームにはファイルをドラッグ&ドロップできます"
+  tips-line4: "投稿フォームにクリップボードにある画像データをペーストできます"
+  tips-line5: "ドライブにファイルをドラッグ&ドロップしてアップロードできます"
+  tips-line6: "ドライブでファイルをドラッグしてフォルダ移動できます"
+  tips-line7: "ドライブでフォルダをドラッグしてフォルダ移動できます"
+  tips-line8: "ホームは設定からカスタマイズできます"
+  tips-line9: "MisskeyはAGPLv3です"
+  tips-line10: "タイムマシンウィジェットを利用すると、簡単に過去のタイムラインに遡れます"
+  tips-line11: "投稿の ... をクリックして、投稿をユーザーページにピン留めできます"
+  tips-line13: "投稿に添付したファイルは全てドライブに保存されます"
+  tips-line14: "ホームのカスタマイズ中、ウィジェットを右クリックしてデザインを変更できます"
+  tips-line17: "「**」でテキストを囲むと**強調表示**されます"
+  tips-line19: "いくつかのウィンドウはブラウザの外に切り離すことができます"
+  tips-line20: "カレンダーウィジェットのパーセンテージは、経過の割合を示しています"
+  tips-line21: "APIを利用してbotの開発なども行えます"
   tips-line23: "まゆかわいいよまゆ"
-  tips-line24: "Misskeyは2014年にサービスを開始してん"
-  tips-line25: "対応ブラウザやったらMisskeyを開いとらんでも通知を受け取れんで"
-
+  tips-line24: "Misskeyは2014年にサービスを開始しました"
+  tips-line25: "対応ブラウザではMisskeyを開いていなくても通知を受け取れます"
 common/views/pages/follow.vue:
   signed-in-as: "{}としてサインイン中"
   following: "フォロー中"
   follow: "フォロー"
   request-pending: "フォロー許可待ち"
   follow-request: "フォロー申請"
-
 desktop:
   banner-crop-title: "バナーとして表示する部分を選択"
   banner: "バナー"
-  uploading-banner: "新しいバナーをアップロードしとります"
-  banner-updated: "バナーを更新したで"
+  uploading-banner: "新しいバナーをアップロードしています"
+  banner-updated: "バナーを更新しました"
   choose-banner: "バナーにする画像を選択"
   avatar-crop-title: "アバターとして表示する部分を選択"
   avatar: "アバター"
-  uploading-avatar: "新しいアバターをアップロードしとります"
-  avatar-updated: "アバターを更新したで"
+  uploading-avatar: "新しいアバターをアップロードしています"
+  avatar-updated: "アバターを更新しました"
   choose-avatar: "アバターにする画像を選択"
-
 desktop/views/components/activity.chart.vue:
   total: "Black ... Total"
   notes: "Blue ... Notes"
   replies: "Red ... Replies"
   renotes: "Green ... Renotes"
-
 desktop/views/components/activity.vue:
   title: "アクティビティ"
   toggle: "表示を切り替え"
-
 desktop/views/components/calendar.vue:
   title: "{1}年 {2}月"
   prev: "前の月"
   next: "次の月"
   go: "クリックして時間遡行"
-
 desktop/views/components/choose-file-from-drive-window.vue:
   choose-file: "ファイル選択中"
   upload: "PCからドライブにファイルをアップロード"
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   ok: "決定"
   choose-prompt: "ファイルを選択"
-
 desktop/views/components/choose-folder-from-drive-window.vue:
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   ok: "決定"
   choose-prompt: "フォルダを選択"
-
 desktop/views/components/crop-window.vue:
   skip: "クロップをスキップ"
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   ok: "決定"
-
 desktop/views/components/drive-window.vue:
   used: "使用中"
   drive: "ドライブ"
-
 desktop/views/components/drive.file.vue:
   avatar: "アイコン"
   banner: "バナー"
+  nsfw: "閲覧注意"
   contextmenu:
     rename: "名前を変更"
     mark-as-sensitive: "閲覧注意に設定"
@@ -508,125 +456,104 @@ desktop/views/components/drive.file.vue:
     open-in-app: "アプリで開く"
     add-app: "アプリを追加"
     rename-file: "ファイル名の変更"
-    input-new-file-name: "新しいファイル名を入力してや"
+    input-new-file-name: "新しいファイル名を入力してください"
     copied: "コピー完了"
-    copied-url-to-clipboard: "URLをクリップボードにコピーしたで"
-
+    copied-url-to-clipboard: "URLをクリップボードにコピーしました"
 desktop/views/components/drive.folder.vue:
-  unable-to-process: "操作を完了できん"
-  circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
+  unable-to-process: "操作を完了できません"
+  circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
   unhandled-error: "不明なエラー"
   contextmenu:
     move-to-this-folder: "このフォルダへ移動"
     show-in-new-window: "新しいウィンドウで表示"
     rename: "名前を変更"
     rename-folder: "フォルダ名の変更"
-    input-new-folder-name: "新しいフォルダ名を入力してや"
-
+    input-new-folder-name: "新しいフォルダ名を入力してください"
 desktop/views/components/drive.nav-folder.vue:
   drive: "ドライブ"
-
 desktop/views/components/drive.vue:
   search: "検索"
   load-more: "もっと読み込む"
   empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
-  empty-drive: "ドライブには何もあらへん。"
-  empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできんねん。"
-  empty-folder: "このフォルダーは空や"
-  unable-to-process: "操作を完了できん"
-  circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。"
+  empty-drive: "ドライブには何もありません。"
+  empty-drive-description: "右クリックして「ファイルをアップロード」を選んだり、ファイルをドラッグ&ドロップすることでもアップロードできます。"
+  empty-folder: "このフォルダーは空です"
+  unable-to-process: "操作を完了できません"
+  circular-reference-detected: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。"
   unhandled-error: "不明なエラー"
   url-upload: "URLアップロード"
   url-of-file: "アップロードしたいファイルのURL"
-  url-upload-requested: "アップロードをリクエストしたで"
-  may-take-time: "アップロードが完了するまで時間がかかるかも分からん、知らんけど。"
+  url-upload-requested: "アップロードをリクエストしました"
+  may-take-time: "アップロードが完了するまで時間がかかる場合があります。"
   create-folder: "フォルダー作成"
   folder-name: "フォルダー名"
   contextmenu:
     create-folder: "フォルダーを作成"
     upload: "ファイルをアップロード"
     url-upload: "URLからアップロード"
-
 desktop/views/components/media-image.vue:
   sensitive: "閲覧注意"
   click-to-show: "クリックして表示"
-
 desktop/views/components/media-video.vue:
   sensitive: "閲覧注意"
   click-to-show: "クリックして表示"
-
 desktop/views/components/follow-button.vue:
   following: "フォロー中"
   follow: "フォロー"
   request-pending: "フォロー許可待ち"
   follow-request: "フォロー申請"
-
 desktop/views/components/followers-window.vue:
   followers: "{} のフォロワー"
-
 desktop/views/components/followers.vue:
-  empty: "フォロワーはおらんっぽいで、知らんけど。"
-
+  empty: "フォロワーはいないようです。"
 desktop/views/components/following-window.vue:
   following: "{} のフォロー"
-
 desktop/views/components/following.vue:
-  empty: "フォロー中のユーザーはおらんっぽいで、知らんけど。"
-
+  empty: "フォロー中のユーザーはいないようです。"
 desktop/views/components/friends-maker.vue:
   title: "気になるユーザーをフォロー:"
-  empty: "おすすめのユーザーはおらんかったわ。"
-  fetching: "読み込んどります"
+  empty: "おすすめのユーザーは見つかりませんでした。"
+  fetching: "読み込んでいます"
   refresh: "もっと見る"
   close: "閉じる"
-
 desktop/views/components/game-window.vue:
   game: "リバーシ"
-
 desktop/views/components/home.vue:
   done: "完了"
   add-widget: "ウィジェットを追加:"
   add: "追加"
-
 desktop/views/input-dialog.vue:
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   ok: "決定"
-
 desktop/views/components/messaging-room-window.vue:
   title: "メッセージ:"
-
 desktop/views/components/messaging-window.vue:
   title: "メッセージ"
-
 desktop/views/components/note-detail.vue:
   more: "会話をもっと読み込む"
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   reposted-by: "{}がRenote"
   location: "位置情報"
   renote: "Renote"
   add-reaction: "リアクション"
-
 desktop/views/components/notes.note.vue:
   reposted-by: "{}がRenote"
   reply: "返信"
   renote: "Renote"
   add-reaction: "リアクション"
   detail: "詳細"
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   hide: "隠す"
   see-more: "もっと見る"
-
 desktop/views/components/notes.vue:
-  error: "読み込みに失敗したわ。"
+  error: "読み込みに失敗しました。"
   retry: "リトライ"
   load-more: "もっと読み込む"
-
 desktop/views/components/notifications.vue:
   more: "もっと見る"
-  empty: "あらへん!"
-
+  empty: "ありません!"
 desktop/views/components/post-form.vue:
   add-visible-user: "+ユーザーを追加"
   attach-location-information: "位置情報を添付する"
@@ -636,12 +563,12 @@ desktop/views/components/post-form.vue:
   submit: "投稿"
   reply: "返信"
   renote: "Renote"
-  posted: "投稿したで!"
-  replied: "返信したで!"
-  reposted: "Renoteしたで!"
-  note-failed: "投稿に失敗したで"
-  reply-failed: "返信に失敗したで"
-  renote-failed: "Renoteに失敗したで"
+  posted: "投稿しました!"
+  replied: "返信しました!"
+  reposted: "Renoteしました!"
+  note-failed: "投稿に失敗しました"
+  reply-failed: "返信に失敗しました"
+  renote-failed: "Renoteに失敗しました"
   posting: "投稿中"
   attach-media-from-local: "PCからメディアを添付"
   attach-media-from-drive: "ドライブからメディアを添付"
@@ -652,34 +579,28 @@ desktop/views/components/post-form.vue:
   recent-tags: "最近"
   click-to-tagging: "クリックでタグ付け"
   visibility: "公開範囲"
-  geolocation-alert: "つこてる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
+  geolocation-alert: "お使いの端末は位置情報に対応していません"
   error: "エラー"
-  enter-username: "ユーザー名を入力してや"
+  enter-username: "ユーザー名を入力してください"
   annotations: "内容への注釈 (オプション)"
-
 desktop/views/components/post-form-window.vue:
   note: "新規投稿"
   reply: "返信"
   attaches: "添付: {}メディア"
   uploading-media: "{}個のメディアをアップロード中"
-
 desktop/views/components/progress-dialog.vue:
   waiting: "待機中"
-
 desktop/views/components/renote-form.vue:
   quote: "引用する..."
-  cancel: "やっぱやめ"
+  cancel: "やめとくわ"
   renote: "Renote"
-  reposting: "やっとります..."
-  success: "Renoteしたで!"
-  failure: "Renoteに失敗したで"
-
+  reposting: "しています..."
+  success: "Renoteしました!"
+  failure: "Renoteに失敗しました"
 desktop/views/components/renote-form-window.vue:
-  title: "この投稿をRenoteしてもええか?"
-
+  title: "この投稿をRenoteしますか?"
 desktop/views/components/settings-window.vue:
   settings: "設定"
-
 desktop/views/components/settings.vue:
   profile: "プロフィール"
   notification: "通知"
@@ -691,16 +612,15 @@ desktop/views/components/settings.vue:
   password: "パスワード"
   2fa: "二段階認証"
   other: "その他"
-
+  license: "ライセンス"
   behaviour: "動作"
   fetch-on-scroll: "スクロールで自動読み込み"
-  fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込むで。"
+  fetch-on-scroll-desc: "ページを下までスクロールしたときに自動で追加のコンテンツを読み込みます。"
   auto-popout: "ウィンドウの自動ポップアウト"
-  auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトすんで。この設定はブラウザに記憶されんで。"
+  auto-popout-desc: "ウィンドウが開かれるとき、ポップアウト(ブラウザ外に切り離す)可能なら自動でポップアウトします。この設定はブラウザに記憶されます。"
   advanced: "詳細設定"
   api-via-stream: "ストリームを経由したAPIリクエスト"
-  api-via-stream-desc: "この設定をオンにすると、WebSocket接続を経由してAPIリクエストが行われんで(パフォーマンス向上が期待できるかも分からん、知らんけど)。オフにすると、ネイティブの fetch API が利用されんねやわ。この設定はこのデバイスのみ有効やで。"
-
+  api-via-stream-desc: "この設定をオンにすると、websocket接続を経由してAPIリクエストが行われます(パフォーマンス向上が期待できます)。オフにすると、ネイティブの fetch APIが利用されます。この設定はこのデバイスのみ有効です。"
   display: "デザインと表示"
   customize: "ホームをカスタマイズ"
   choose-wallpaper: "壁紙を選択"
@@ -708,43 +628,36 @@ desktop/views/components/settings.vue:
   dark-mode: "ダークモード"
   circle-icons: "円形のアイコンを使用"
   gradient-window-header: "ウィンドウのタイトルバーにグラデーションを使用"
-  post-form-on-timeline: "タイムライン上部に投稿フォームを表示すんで"
-  suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示すんで"
-  show-reply-target: "リプライ先を表示すんで"
-  show-my-renotes: "自分の行ったRenoteをタイムラインに表示すんで"
-  show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示すんで"
-  show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示すんで"
+  post-form-on-timeline: "タイムライン上部に投稿フォームを表示する"
+  suggest-recent-hashtags: "最近のハッシュタグを投稿フォームに表示する"
+  show-reply-target: "リプライ先を表示する"
+  show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
+  show-renoted-my-notes: "自分の投稿のRenoteをタイムラインに表示する"
+  show-local-renotes: "ローカルの投稿のRenoteをタイムラインに表示する"
   show-maps: "マップの自動展開"
-  show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開すんで。"
-
+  show-maps-desc: "位置情報が添付された投稿のマップを自動的に展開します。"
   sound: "サウンド"
-  enable-sounds: "サウンドを有効にすんで"
-  enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生すんで。この設定はブラウザに記憶されんで。"
+  enable-sounds: "サウンドを有効にする"
+  enable-sounds-desc: "投稿やメッセージを送受信したときなどにサウンドを再生します。この設定はブラウザに記憶されます。"
   volume: "ボリューム"
   test: "テスト"
-
   mobile: "モバイル"
-  disable-via-mobile: "「モバイルからの投稿」フラグを付けへん"
-
+  disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
   language: "言語"
   pick-language: "言語を選択"
   recommended: "推奨"
   auto: "自動"
   specify-language: "言語を指定"
-  language-desc: "変更はページの再度読み込み後に反映されんで。"
-
+  language-desc: "変更はページの再度読み込み後に反映されます。"
   cache: "キャッシュ"
   clean-cache: "クリーンアップ"
-  cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されますねん。クリーンアップを行った後はページを再度読み込みしてや。"
-  cache-cleared: "キャッシュを削除したで"
-  cache-cleared-desc: "ページを再度読み込みしてや。"
-
+  cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
+  cache-cleared: "キャッシュを削除しました"
+  cache-cleared-desc: "ページを再度読み込みしてください。"
   auto-watch: "投稿の自動ウォッチ"
-  auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにすんで。"
-
+  auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
   about: "Misskeyについて"
   operator: "このサーバーの運営者"
-
   update: "Misskey Update"
   version: "バージョン:"
   latest-version: "最新のバージョン:"
@@ -752,66 +665,58 @@ desktop/views/components/settings.vue:
   do-update: "アップデートを確認"
   update-settings: "詳細設定"
   prevent-update: "アップデートを延期する(非推奨)"
-  prevent-update-desc: "この設定をオンにしとってもアップデートが反映される場合があるかも分からん、知らんけど気ぃつけてや。この設定はこのデバイスのみ有効やで。"
-  no-updates: "利用可能な更新はあらへん"
-  no-updates-desc: "つことるMisskeyは最新や!"
-  update-available: "新しいバージョンが利用可能や"
-  update-available-desc: "ページを再度読み込みすると更新が適用されんで。"
-
+  prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
+  no-updates: "利用可能な更新はありません"
+  no-updates-desc: "お使いのMisskeyは最新です。"
+  update-available: "新しいバージョンが利用可能です"
+  update-available-desc: "ページを再度読み込みすると更新が適用されます。"
   advanced-settings: "高度な設定"
-  debug-mode: "デバッグモードを有効にすんで"
-  debug-mode-desc: "この設定はブラウザに記憶されんで。"
-  experimental: "実験的機能を有効にすんで"
-  experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になるかも分からん、知らんけど気ぃつけてや。この設定はブラウザに記憶されんで。"
+  debug-mode: "デバッグモードを有効にする"
+  debug-mode-desc: "この設定はブラウザに記憶されます。"
+  experimental: "実験的機能を有効にする"
+  experimental-desc: "実験的機能を有効にするとMisskeyの動作が不安定になる可能性があります。この設定はブラウザに記憶されます。"
   tools: "ツール"
   task-manager: "タスクマネージャ"
   third-parties: "サードパーティ"
-
 desktop/views/components/settings.2fa.vue:
-  intro: "二段階認証を設定すると、サインイン時にパスワードだけとちゃうくて、予め登録しておいた物理的なデバイス(例えばあんさんのスマートフォンなど)も必要になり、よりセキュリティが向上すんで。"
+  intro: "二段階認証を設定すると、サインイン時にパスワードだけでなく、予め登録しておいた物理的なデバイス(例えばあなたのスマートフォンなど)も必要になり、よりセキュリティが向上します。"
   detail: "詳細..."
   url: "https://www.google.co.jp/intl/ja/landing/2step/"
-  caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできんくなるから気ぃつけてや。"
+  caution: "登録したデバイスを紛失するなどした場合、Misskeyにサインインできなくなりますのでご注意ください。"
   register: "デバイスを登録する"
-  already-registered: "既に設定は完了してまんねん。"
+  already-registered: "既に設定は完了しています。"
   unregister: "設定を解除"
-  unregistered: "二段階認証が無効になりはったわ。"
-  enter-password: "パスワードを入力してや"
-  authenticator: "まず、Google Authenticatorをつこてるデバイスにインストールするやろ:"
+  unregistered: "二段階認証が無効になりました。"
+  enter-password: "パスワードを入力してください"
+  authenticator: "まず、Google Authenticatorをお使いのデバイスにインストールします:"
   howtoinstall: "インストール方法はこちら"
-  scan: "ほんなら、表示されているQRコードをスキャンしてな:"
-  done: "つこてるデバイスに表示されとるトークンを入力して完了や!:"
+  scan: "次に、表示されているQRコードをスキャンします:"
+  done: "お使いのデバイスに表示されているトークンを入力して完了します:"
   submit: "完了"
-  success: "設定が完了したで!"
-  failed: "設定に失敗したで。トークンを間違えとらんか確認してや。"
-  info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されとるトークンを入力してな。"
-
+  success: "設定が完了しました!"
+  failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
+  info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
 desktop/views/components/settings.api.vue:
-  intro: "APIを利用するには、上記のトークンを「i」っちゅうキーでパラメータに付加してリクエストしてや。"
-  caution: "アカウントを不正利用されるかも知れんから、このトークンは第三者に教えたらあきまへん(アプリなどにも入力しんといてな)。"
-  regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できんで。"
+  intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
+  caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
+  regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
   regenerate-token: "トークンを再生成"
   token: "Token:"
-  enter-password: "パスワードを入力してや"
-
+  enter-password: "パスワードを入力してください"
 desktop/views/components/settings.apps.vue:
-  no-apps: "連携しているアプリケーションはあらへん"
-
+  no-apps: "連携しているアプリケーションはありません"
 desktop/views/components/settings.drive.vue:
   max: "中"
   in-use: "使用中"
-
 desktop/views/components/settings.mute.vue:
-  no-users: "ミュートしているユーザーはおらん"
-
+  no-users: "ミュートしているユーザーはいません"
 desktop/views/components/settings.password.vue:
   reset: "パスワードを変更する"
-  enter-current-password: "現在のパスワードを入力してや"
-  enter-new-password: "新しいパスワードを入力してや"
-  enter-new-password-again: "もう一度新しいパスワードを入力してや"
-  not-match: "新しいパスワードが一致しとらん"
-  changed: "パスワードを変更したで"
-
+  enter-current-password: "現在のパスワードを入力してください"
+  enter-new-password: "新しいパスワードを入力してください"
+  enter-new-password-again: "もう一度新しいパスワードを入力してください"
+  not-match: "新しいパスワードが一致しません"
+  changed: "パスワードを変更しました"
 desktop/views/components/settings.profile.vue:
   avatar: "アイコン"
   choice-avatar: "画像を選択"
@@ -823,30 +728,25 @@ desktop/views/components/settings.profile.vue:
   locked-account: "アカウントの保護"
   is-locked: "投稿を非公開にする"
   other: "その他"
-  is-bot: "このアカウントはBotやで"
-  is-cat: "このアカウントはCatやで"
-  profile-updated: "プロフィールを更新したで"
-
+  is-bot: "このアカウントはBotです"
+  is-cat: "このアカウントはCatです"
+  profile-updated: "プロフィールを更新しました"
 desktop/views/components/sub-note-content.vue:
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   media-count: "{}つのメディア"
   poll: "アンケート"
-
 desktop/views/components/taskmanager.vue:
   title: "タスクマネージャ"
-
 desktop/views/components/timeline.vue:
   home: "ホーム"
   local: "ローカル"
   hybrid: "ソーシャル"
   global: "グローバル"
   list: "リスト"
-
 desktop/views/components/ui.header.vue:
-  welcome-back: "おかいり、"
+  welcome-back: "おかえりなさい、"
   adjective: "さん"
-
 desktop/views/components/ui.header.account.vue:
   profile: "プロフィール"
   drive: "ドライブ"
@@ -856,57 +756,45 @@ desktop/views/components/ui.header.account.vue:
   customize: "ホームのカスタマイズ"
   settings: "設定"
   signout: "サインアウト"
-  dark: "ナイトゲームじゃ!"
-
+  dark: "闇に飲まれる"
 desktop/views/components/ui.header.nav.vue:
   home: "ホーム"
   deck: "デッキ"
   messaging: "メッセージ"
   game: "ゲーム"
-
 desktop/views/components/ui.header.notifications.vue:
   title: "通知"
-
 desktop/views/components/ui.header.post.vue:
   post: "新規投稿"
-
 desktop/views/components/ui.header.search.vue:
   placeholder: "検索"
-
 desktop/views/components/received-follow-requests-window.vue:
   title: "フォロー申請"
   accept: "承認"
   reject: "拒否"
-
 desktop/views/components/user-lists-window.vue:
   title: "リスト"
   create-list: "リストを作成"
   list-name: "リスト名"
-
 desktop/views/components/user-preview.vue:
   notes: "投稿"
   following: "フォロー"
   followers: "フォロワー"
-
 desktop/views/components/users-list.vue:
   all: "すべて"
   iknow: "知り合い"
   load-more: "もっと"
-  fetching: "読み込んどります"
-
+  fetching: "読み込んでいます"
 desktop/views/components/users-list-item.vue:
-  followed: "フォローされとります"
-
+  followed: "フォローされています"
 desktop/views/components/window.vue:
   popout: "ポップアウト"
-  close: "ばいなら"
-
+  close: "閉じる"
 desktop/views/pages/admin/admin.vue:
   dashboard: "ダッシュボード"
   drive: "ドライブ"
   users: "ユーザー"
   update: "更新"
-
 desktop/views/pages/admin/admin.dashboard.vue:
   dashboard: "ダッシュボード"
   all-users: "全てのユーザー"
@@ -914,167 +802,137 @@ desktop/views/pages/admin/admin.dashboard.vue:
   all-notes: "全てのノート"
   original-notes: "このインスタンスのノート"
   invite: "招待"
-
 desktop/views/pages/admin/admin.suspend-user.vue:
   suspend-user: "ユーザーの凍結"
   suspend: "凍結"
-  suspended: "凍結したで"
-
+  suspended: "凍結しました"
 desktop/views/pages/admin/admin.unsuspend-user.vue:
   unsuspend-user: "ユーザーの凍結の解除"
   unsuspend: "凍結の解除"
-  unsuspended: "凍結を解除したで"
-
+  unsuspended: "凍結を解除しました"
 desktop/views/pages/admin/admin.verify-user.vue:
   verify-user: "ユーザーの公式アカウント設定"
   verify: "公式アカウントにする"
-  verified: "公式アカウントにしたで"
-
+  verified: "公式アカウントにしました"
 desktop/views/pages/admin/admin.unverify-user.vue:
   unverify-user: "ユーザーの公式アカウント解除"
   unverify: "公式アカウントを解除する"
-  unverified: "公式アカウントを解除したで"
-
+  unverified: "公式アカウントを解除しました"
 desktop/views/pages/admin/admin.notes-chart.vue:
   title: "投稿"
   local: "ローカル"
   remote: "リモート"
-
 desktop/views/pages/admin/admin.users-chart.vue:
   title: "ユーザー"
   local: "ローカル"
   remote: "リモート"
-
+desktop/views/pages/admin/admin.drive-chart.vue:
+  title: "ドライブ"
+  local: "ローカル"
+  remote: "リモート"
 desktop/views/pages/deck/deck.tl-column.vue:
   is-media-only: "メディア投稿のみ"
   is-media-view: "メディアビュー"
   edit: "オプション"
-
 desktop/views/pages/deck/deck.note.vue:
   reposted-by: "{}がRenote"
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
-
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
 desktop/views/pages/welcome.vue:
   about: "詳しく..."
-  gotit: "ほい"
+  gotit: "わかった"
   signin: "ログイン"
   signup: "新規登録"
-  signin-button: "やっとる"
+  signin-button: "やってる"
   signup-button: "やる"
   timeline: "タイムライン"
   powered-by-misskey: "Powered by <b>Misskey</b>."
-
 desktop/views/pages/drive.vue:
   title: "Misskey Drive"
-
 desktop/views/pages/favorites.vue:
   more: "さらに読み込む"
-
 desktop/views/pages/home-customize.vue:
   title: "ホームのカスタマイズ"
-
 desktop/views/pages/note.vue:
   prev: "前の投稿"
   next: "次の投稿"
-
 desktop/views/pages/selectdrive.vue:
-  title: "ファイルを選択してや"
+  title: "ファイルを選択してください"
   ok: "決定"
-  cancel: "キャンセル"
+  cancel: "やめとくわ"
   upload: "PCからドライブにファイルをアップロード"
-
 desktop/views/pages/search.vue:
-  not-available: "検索機能を利用することができへん。"
-  not-found: "「{}」に関する投稿はあらへん。"
-
+  not-available: "検索機能はインスタンスの設定で無効になっています。"
+  not-found: "「{}」に関する投稿は見つかりませんでした。"
 desktop/views/pages/share.vue:
   share-with: "{}で共有"
-
 desktop/views/pages/tag.vue:
-  no-posts-found: "ハッシュタグ「{}」が付けられた投稿はあらへん。"
-
+  no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
 desktop/views/pages/user-list.users.vue:
   users: "ユーザー"
   add-user: "ユーザーを追加"
   username: "ユーザー名"
-
 desktop/views/pages/user/user.followers-you-know.vue:
   title: "知り合いのフォロワー"
   loading: "読み込み中"
-  no-users: "知り合いのフォロワーはおらん"
-
+  no-users: "知り合いのフォロワーはいません"
 desktop/views/pages/user/user.friends.vue:
   title: "よく話すユーザー"
   loading: "読み込み中"
-  no-users: "よく話すユーザーはおらん"
-
+  no-users: "よく話すユーザーはいません"
 desktop/views/pages/user/user.vue:
-  is-suspended: "このユーザーは凍結されとります。"
-  is-remote: "このユーザーはリモートユーザーや。"
+  is-suspended: "このユーザーは凍結されています。"
+  is-remote: "このユーザーはリモートユーザーです。"
   view-remote: "正確な情報を見る"
-
 desktop/views/pages/user/user.home.vue:
   last-used-at: "最終アクセス"
-
 desktop/views/pages/user/user.photos.vue:
   title: "フォト"
   loading: "読み込み中"
-  no-photos: "写真はあらへん"
-
+  no-photos: "写真はありません"
 desktop/views/pages/user/user.profile.vue:
-  follows-you: "フォローされとります"
+  follows-you: "フォローされています"
   stalk: "ストークする"
-  stalking: "ストーキングしとります"
+  stalking: "ストーキングしています"
   unstalk: "ストーク解除"
   mute: "ミュートする"
-  muted: "ミュートしとります"
+  muted: "ミュートしています"
   unmute: "ミュート解除"
   push-to-a-list: "リストに追加"
-  list-pushed: "{user}を{list}に追加したで。"
-
+  list-pushed: "{user}を{list}に追加しました。"
 desktop/views/pages/user/user.header.vue:
   posts: "投稿"
   following: "フォロー"
   followers: "フォロワー"
-  is-bot: "このアカウントはBotや"
-
+  is-bot: "このアカウントはBotです"
 desktop/views/pages/user/user.timeline.vue:
   default: "投稿"
   with-replies: "投稿と返信"
   with-media: "メディア"
-  empty: "このユーザーはまだ何も投稿しとらんようや。"
-
+  empty: "このユーザーはまだ何も投稿していないようです。"
 desktop/views/widgets/messaging.vue:
   title: "メッセージ"
-
 desktop/views/widgets/notifications.vue:
   title: "通知"
   settings: "通知の設定"
-
 desktop/views/widgets/polls.vue:
   title: "アンケート"
   refresh: "他を見る"
-  nothing: "あらへん!"
-
+  nothing: "ありません!"
 desktop/views/widgets/post-form.vue:
   title: "投稿"
   note: "投稿"
-
 desktop/views/widgets/profile.vue:
   update-banner: "クリックでバナー編集"
   update-avatar: "クリックでアバター編集"
-
 desktop/views/widgets/trends.vue:
   title: "トレンド"
   refresh: "他を見る"
-  nothing: "あらへん!"
-
+  nothing: "ありません!"
 desktop/views/widgets/users.vue:
   title: "おすすめユーザー"
   refresh: "他を見る"
-  no-one: "おらん!"
-
+  no-one: "いません!"
 mobile/views/components/drive.vue:
   drive: "ドライブ"
   used: "使用中"
@@ -1082,87 +940,75 @@ mobile/views/components/drive.vue:
   count-separator: "、"
   file-count: "ファイル"
   load-more: "もっと読み込む"
-  nothing-in-drive: "ドライブには何もあらへん"
-  folder-is-empty: "このフォルダは空や"
-  prompt: "何すんの?(数字を入力してや): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
-  deletion-alert: "フォルダの削除は未実装やねん...。堪忍な!"
+  nothing-in-drive: "ドライブには何もありません"
+  folder-is-empty: "このフォルダは空です"
+  prompt: "何をしますか?(数字を入力してください): <1 → ファイルをアップロード | 2 → ファイルをURLでアップロード | 3 → フォルダ作成 | 4 → このフォルダ名を変更 | 5 → このフォルダを移動 | 6 → このフォルダを削除>"
+  deletion-alert: "ごめんなさい!フォルダの削除は未実装です...。"
   folder-name: "フォルダー名"
-  root-rename-alert: "現在おる場所はルートで、フォルダとちゃうから名前の変更はできへん。名前を変更したいフォルダに移動してからやってな。"
-  root-move-alert: "現在おる場所はルートで、フォルダとちゃうから移動はできへん。移動したいフォルダに移動してからやってな。"
+  root-rename-alert: "現在いる場所はルートで、フォルダではないため名前の変更はできません。名前を変更したいフォルダに移動してからやってください。"
+  root-move-alert: "現在いる場所はルートで、フォルダではないため移動はできません。移動したいフォルダに移動してからやってください。"
   url-prompt: "アップロードしたいファイルのURL"
-  uploading: "アップロードをリクエストしたで。アップロードが完了するまで時間がかかるかも分からん、知らんけど。"
-
+  uploading: "アップロードをリクエストしました。アップロードが完了するまで時間がかかる場合があります。"
 mobile/views/components/drive-file-detail.vue:
   rename: "名前を変更"
-
 mobile/views/components/drive-file-chooser.vue:
   select-file: "ファイルを選択"
-
 mobile/views/components/drive-folder-chooser.vue:
   select-folder: "フォルダーを選択"
-
+mobile/views/components/drive.file.vue:
+  nsfw: "閲覧注意"
 mobile/views/components/drive.file-detail.vue:
   download: "ダウンロード"
   rename: "名前を変更"
   move: "移動"
   hash: "ハッシュ (md5)"
   exif: "EXIF"
-
+  nsfw: "閲覧注意"
 mobile/views/components/media-image.vue:
   sensitive: "閲覧注意"
   click-to-show: "クリックして表示"
-
 mobile/views/components/media-video.vue:
   sensitive: "閲覧注意"
   click-to-show: "クリックして表示"
-
 mobile/views/components/follow-button.vue:
   following: "フォロー中"
   follow: "フォロー"
   request-pending: "フォロー許可待ち"
   follow-request: "フォロー申請"
-
 mobile/views/components/friends-maker.vue:
   title: "気になるユーザーをフォロー"
-  empty: "おすすめのユーザーはおらん。"
-  fetching: "読み込んどります"
+  empty: "おすすめのユーザーは見つかりませんでした。"
+  fetching: "読み込んでいます"
   refresh: "もっと見る"
   close: "閉じる"
-
 mobile/views/components/note.vue:
   reposted-by: "{}がRenote"
   more: "もっと見る"
   less: "隠す"
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   location: "位置情報"
-
 mobile/views/components/note-detail.vue:
   reply: "返信"
   reaction: "リアクション"
   reposted-by: "{}がRenote"
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   location: "位置情報"
-
 mobile/views/components/note-preview.vue:
   admin: "admin"
   bot: "bot"
   cat: "cat"
-
 mobile/views/components/note-sub.vue:
   admin: "admin"
   bot: "bot"
   cat: "cat"
-
 mobile/views/components/notes.vue:
-  failed: "読み込みに失敗したで。"
-  retry: "もっぺん"
-
+  failed: "読み込みに失敗しました。"
+  retry: "リトライ"
 mobile/views/components/notifications.vue:
   more: "もっと見る"
-  empty: "あらへん!"
-
+  empty: "ありません!"
 mobile/views/components/post-form.vue:
   add-visible-user: "ユーザーを追加"
   submit: "投稿"
@@ -1171,24 +1017,20 @@ mobile/views/components/post-form.vue:
   quote-placeholder: "この投稿を引用... (オプション)"
   reply-placeholder: "この投稿への返信..."
   cw-placeholder: "内容への注釈 (オプション)"
-  location-alert: "つこてる端末は位置情報に対応しとらんみたいやわ、知らんけど。"
+  location-alert: "お使いの端末は位置情報に対応していません"
   error: "エラー"
-  username-prompt: "ユーザー名を入力してや"
-
+  username-prompt: "ユーザー名を入力してください"
 mobile/views/components/sub-note-content.vue:
-  private: "この投稿は非公開やねん"
-  deleted: "この投稿は削除されてん"
+  private: "この投稿は非公開です"
+  deleted: "この投稿は削除されました"
   media-count: "{}つのメディア"
   poll: "アンケート"
-
 mobile/views/components/timeline.vue:
   empty: "投稿がありません"
   load-more: "もっと"
-
 mobile/views/components/ui.header.vue:
-  welcome-back: "おかいり、"
+  welcome-back: "おかえりなさい、"
   adjective: "さん"
-
 mobile/views/components/ui.nav.vue:
   timeline: "タイムライン"
   notifications: "通知"
@@ -1203,84 +1045,63 @@ mobile/views/components/ui.nav.vue:
   darkmode: "ダークモード"
   settings: "設定"
   about: "Misskeyについて"
-
 mobile/views/components/user-timeline.vue:
-  no-notes: "このユーザーは投稿しとらんようや。"
-  no-notes-with-media: "メディア付き投稿はあらへん。"
+  no-notes: "このユーザーは投稿していないようです。"
+  no-notes-with-media: "メディア付き投稿はありません。"
   load-more: "もっと"
-
 mobile/views/components/users-list.vue:
   all: "すべて"
   known: "知り合い"
   load-more: "もっと"
-
 mobile/views/pages/favorites.vue:
   title: "お気に入り"
-
 mobile/views/pages/user-lists.vue:
   title: "リスト"
-  enter-list-name: "リスト名を入力してや"
-
+  enter-list-name: "リスト名を入力してください"
 mobile/views/pages/drive.vue:
   drive: "ドライブ"
   more: "もっと見る"
-
 mobile/views/pages/signup.vue:
-  lets-start: "📦 始めようや"
-
+  lets-start: "📦 始めましょう"
 mobile/views/pages/followers.vue:
   followers-of: "{}のフォロワー"
-
 mobile/views/pages/following.vue:
   following-of: "{}のフォロー"
-
 mobile/views/pages/home.vue:
   home: "ホーム"
   local: "ローカル"
   hybrid: "ソーシャル"
   global: "グローバル"
-
 mobile/views/pages/tag.vue:
-  no-posts-found: "ハッシュタグ「{}」が付けられた投稿はあらへん。"
-
+  no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
 mobile/views/pages/welcome.vue:
   signup: "新規登録"
-
 mobile/views/pages/widgets.vue:
   dashboard: "ダッシュボード"
-  widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできんで。ウィジェットを移動するんやったら「三」をドラッグしてや。ウィジェットを削除するんやったら「x」をタップしてや。いくつかのウィジェットはタップしたったら表示を変更できるかも分からん、知らんけど。"
+  widgets-hints: "ウィジェットを追加/削除したり並べ替えたりできます。ウィジェットを移動するには「三」をドラッグします。ウィジェットを削除するには「x」をタップします。いくつかのウィジェットはタップすることで表示を変更できます。"
   add-widget: "追加"
   customization-tips: "カスタマイズのヒント"
-
 mobile/views/pages/widgets/activity.vue:
   activity: "アクティビティ"
-
 mobile/views/pages/share.vue:
   share-with: "{}で共有"
-
 mobile/views/pages/messaging.vue:
   messaging: "メッセージ"
-
 mobile/views/pages/messaging-room.vue:
   messaging: "メッセージ"
-
 mobile/views/pages/received-follow-requests.vue:
   title: "フォロー申請"
   accept: "承認"
   reject: "拒否"
-
 mobile/views/pages/note.vue:
   title: "投稿"
   prev: "前の投稿"
   next: "次の投稿"
-
 mobile/views/pages/notifications.vue:
   notifications: "通知"
-  read-all: "すべての通知を既読にしてもええか?"
-
+  read-all: "すべての通知を既読にしますか?"
 mobile/views/pages/games/reversi.vue:
   reversi: "リバーシ"
-
 mobile/views/pages/settings/settings.profile.vue:
   title: "プロフィール"
   name: "名前"
@@ -1290,44 +1111,41 @@ mobile/views/pages/settings/settings.profile.vue:
   birthday: "誕生日"
   avatar: "アイコン"
   banner: "バナー"
-  is-cat: "このアカウントはCatや"
+  is-cat: "このアカウントはCatです"
   save: "保存"
-  saved: "プロフィールを保存したで"
+  saved: "プロフィールを保存しました"
   uploading: "アップロード中"
-  upload-failed: "アップロードに失敗したで"
-
+  upload-failed: "アップロードに失敗しました"
 mobile/views/pages/search.vue:
   search: "検索"
-  empty: "「{}」に関する投稿はあらへん。"
-  not-found: "「{}」に関する投稿はあらへん。"
-
+  empty: "「{}」に関する投稿は見つかりませんでした。"
+  not-found: "「{}」に関する投稿は見つかりませんでした。"
 mobile/views/pages/selectdrive.vue:
   select-file: "ファイルを選択"
-
 mobile/views/pages/settings.vue:
   signed-in-as: "{}としてサインイン中"
   lang: "言語"
-  lang-tip: "変更はページの再読み込み後に反映されんで。"
+  lang-tip: "変更はページの再読み込み後に反映されます。"
   recommended: "推奨"
   auto: "自動"
   specify-language: "言語を指定"
   design: "デザインと表示"
   dark-mode: "ダークモード"
-  i-am-under-limited-internet: "私は通信を制限されてんねん"
+  i-am-under-limited-internet: "私は通信を制限されている"
   circle-icons: "円形のアイコンを使用"
   timeline: "タイムライン"
-  show-reply-target: "リプライ先を表示すんで"
-  show-my-renotes: "自分の行ったRenoteを表示すんで"
-  show-renoted-my-notes: "自分の投稿のRenoteを表示すんで"
-  show-local-renotes: "ローカルの投稿のRenoteを表示すんで"
+  show-reply-target: "リプライ先を表示する"
+  show-my-renotes: "自分の行ったRenoteを表示する"
+  show-renoted-my-notes: "自分の投稿のRenoteを表示する"
+  show-local-renotes: "ローカルの投稿のRenoteを表示する"
   post-style: "投稿の表示スタイル"
   post-style-standard: "標準"
   post-style-smart: "スマート"
   behavior: "動作"
   fetch-on-scroll: "スクロールで自動読み込み"
-  disable-via-mobile: "「モバイルからの投稿」フラグを付けへん"
-  load-raw-images: "添付された画像を高画質で表示すんで"
-  load-remote-media: "リモートサーバーのメディアを表示すんで"
+  disable-via-mobile: "「モバイルからの投稿」フラグを付けない"
+  load-raw-images: "添付された画像を高画質で表示する"
+  load-remote-media: "リモートサーバーのメディアを表示する"
   twitter: "Twitter連携"
   twitter-connect: "Twitterアカウントに接続する"
   twitter-reconnect: "再接続する"
@@ -1337,25 +1155,23 @@ mobile/views/pages/settings.vue:
   latest-version: "最新のバージョン:"
   update-checking: "アップデートを確認中"
   check-for-updates: "アップデートを確認"
-  no-updates: "利用可能な更新はあらへん"
-  no-updates-desc: "つこてるMisskeyは最新や!"
-  update-available: "新しいバージョンが利用可能や"
-  update-available-desc: "ページを再度読み込みすると更新が適用されんで。"
+  no-updates: "利用可能な更新はありません"
+  no-updates-desc: "お使いのMisskeyは最新です。"
+  update-available: "新しいバージョンが利用可能です"
+  update-available-desc: "ページを再度読み込みすると更新が適用されます。"
   settings: "設定"
   signout: "サインアウト"
-
 mobile/views/pages/user.vue:
-  follows-you: "フォローされとります"
+  follows-you: "フォローされています"
   following: "フォロー"
   followers: "フォロワー"
   notes: "投稿"
   overview: "概要"
   timeline: "タイムライン"
   media: "メディア"
-  is-suspended: "このユーザーは凍結されとります。"
-  is-remote: "このユーザーはリモートユーザーや。"
+  is-suspended: "このユーザーは凍結されています。"
+  is-remote: "このユーザーはリモートユーザーです。"
   view-remote: "正確な情報を見る"
-
 mobile/views/pages/user/home.vue:
   recent-notes: "最近の投稿"
   images: "画像"
@@ -1365,27 +1181,21 @@ mobile/views/pages/user/home.vue:
   frequently-replied-users: "よく会話するユーザー"
   followers-you-know: "知り合いのフォロワー"
   last-used-at: "最終ログイン"
-
 mobile/views/pages/user/home.followers-you-know.vue:
   loading: "読み込み中"
-  no-users: "知り合いのユーザーはおらん"
-
+  no-users: "知り合いのユーザーはいません"
 mobile/views/pages/user/home.friends.vue:
   loading: "読み込み中"
-  no-users: "よく会話するユーザーはおらん"
-
+  no-users: "よく会話するユーザーはいません"
 mobile/views/pages/user/home.notes.vue:
   loading: "読み込み中"
   no-notes: "投稿はありません"
-
 mobile/views/pages/user/home.photos.vue:
   loading: "読み込み中"
   no-photos: "写真はありません"
-
 docs:
-  edit-this-page-on-github: "間違いや改善点を見つけたん?"
+  edit-this-page-on-github: "間違いや改善点を見つけましたか?"
   edit-this-page-on-github-link: "このページをGitHubで編集"
-
   api:
     entities:
       properties: "プロパティ"
@@ -1393,19 +1203,17 @@ docs:
       params: "パラメータ"
       no-params: "パラメータはありません"
       res: "レスポンス"
-      require-credential: "このエンドポイントは認証情報が必須や。"
-      require-permission: "このエンドポイントは{permission}の権限が必要や。"
-      has-limit: "レートリミットがあんで。"
-      duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超えてもうたらリクエストできへん。"
-      min-interval-limit: "前回のリクエストから{interval}ミリ秒経っとらんとリクエストできへん。"
-      show-src: "このエンドポイントのソースコードも閲覧できんで。"
+      require-credential: "このエンドポイントは認証情報が必須です。"
+      require-permission: "このエンドポイントは{permission}の権限を必要とします。"
+      has-limit: "レートリミットがあります。"
+      duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
+      min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
+      show-src: "このエンドポイントのソースコードも閲覧できます。"
       show-src-link: "コードをGitHubで見る"
-      generated: "このドキュメントはAPI定義に基づき自動生成されてんねん。"
+      generated: "このドキュメントはAPI定義に基づき自動生成されています。"
     props:
       name: "名前"
       type: "型"
       description: "説明"
-
-
 dev/views/index.vue:
   manage-apps: "アプリの管理"
diff --git a/locales/ko.yml b/locales/ko-KR.yml
similarity index 99%
rename from locales/ko.yml
rename to locales/ko-KR.yml
index 5d0690c4fa..b00d268c97 100644
--- a/locales/ko.yml
+++ b/locales/ko-KR.yml
@@ -58,7 +58,7 @@ common:
     friday: "금요일"
     saturday: "토요일"
   reactions:
-    like: "좋네"
+    like: "ええやん"
     love: "좋아"
     laugh: "크크"
     hmm: "음..."
diff --git a/locales/pl.yml b/locales/pl-PL.yml
similarity index 99%
rename from locales/pl.yml
rename to locales/pl-PL.yml
index a47c805598..c620c4bbd3 100644
--- a/locales/pl.yml
+++ b/locales/pl-PL.yml
@@ -58,7 +58,7 @@ common:
     friday: "Piątek"
     saturday: "Sobota"
   reactions:
-    like: "Lubię"
+    like: "ええやん"
     love: "Kocham"
     laugh: "Śmieszne"
     hmm: "Hmm…?"
diff --git a/locales/pt.yml b/locales/pt-PT.yml
similarity index 87%
rename from locales/pt.yml
rename to locales/pt-PT.yml
index 6a60876b45..029016a598 100644
--- a/locales/pt.yml
+++ b/locales/pt-PT.yml
@@ -3,147 +3,147 @@ meta:
   lang: "Português"
   divider: ""
 common:
-  misskey: "A ⭐ of fediverse"
-  about-title: "A ⭐ of fediverse."
-  about: "Misskeyを見つけていただき、ありがとうございます。Misskeyは、地球で生まれた<b>分散マイクロブログSNS</b>です。Fediverse(様々なSNSで構成される宇宙)の中に存在するため、他のSNSと相互に繋がっています。暫し都会の喧騒から離れて、新しいインターネットにダイブしてみませんか。"
+  misskey: "Uma ⭐ do fediverso"
+  about-title: "Uma ⭐ do fediverso."
+  about: "Obrigado por encontrar Misskey. Uma <b>plataforma descentralizada de microblog</b> nascida na Terra. Já que ela existe no Fediverso (um universo onde várias plataformas de mídia social são organizadas), ela é ligada com outras plataformas.Por que você não tira uma folga do agito e confusão da cidade, e mergulha em uma nova internet?"
   adblock:
-    detected: "広告ブロッカーを無効にしてください"
-    warning: "<strong>Misskeyは広告を掲載していません</strong>が、広告をブロックする機能が有効だと一部の機能が利用できなかったり、不具合が発生する場合があります。"
-  application-authorization: "アプリの連携"
-  close: "閉じる"
-  do-not-copy-paste: "ここにコードを入力したり張り付けたりしないでください。アカウントが不正利用される可能性があります。"
-  got-it: "わかった"
+    detected: "Por favor, desative o bloqueador de anúncios."
+    warning: "Alguns recursos podem não estar disponíveis ou apresentar mal funcionamento se o bloqueio de anúncios estiver ativado. <strong>Misskey não está usando anúncios</strong>"
+  application-authorization: "Aplicativos autorizados"
+  close: "Fechar"
+  do-not-copy-paste: "Por favor, não digite ou copie o código aqui. A conta pode ser comprometida."
+  got-it: "Entendi!"
   customization-tips:
-    title: "カスタマイズのヒント"
-    paragraph1: "ホームのカスタマイズでは、ウィジェットを追加/削除したり、ドラッグ&ドロップして並べ替えたりすることができます。"
-    paragraph2: "一部のウィジェットは、<strong><strong>右</strong>クリック</strong>することで表示を変更することができます。"
-    paragraph3: "ウィジェットを削除するには、ヘッダーの<strong>「ゴミ箱」</strong>と書かれたエリアにウィジェットをドラッグ&ドロップします。"
-    paragraph4: "カスタマイズを終了するには、右上の「完了」をクリックします。"
-    gotit: "Got it!"
+    title: "Dicas de personalização"
+    paragraph1: "Personalização da página inicial permite adicionar/remover, arrastar e soltar e reorganizar widgets."
+    paragraph2: "Você pode mudar a visualização de alguns widgets <strong>clicando com o botão <strong>direito.</strong></strong>"
+    paragraph3: "Para apagar um widget, o arraste e solte <strong>na área chamada \"Lixo\"</strong> no cabeçalho."
+    paragraph4: "Para terminar a personalização clique em \"Terminar\" acima e à direita."
+    gotit: "Entendi!"
   notification:
-    file-uploaded: "ファイルがアップロードされました"
-    message-from: "{}さんからメッセージ:"
-    reversi-invited: "対局への招待があります"
-    reversi-invited-by: "{}さんから"
-    notified-by: "{}さんから"
-    reply-from: "{}さんから返信:"
-    quoted-by: "{}さんが引用:"
+    file-uploaded: "Arquivo enviado!"
+    message-from: "Mensagem de {}:"
+    reversi-invited: "Convidado a jogar"
+    reversi-invited-by: "Convidado por {}:"
+    notified-by: "Notificado por {}:"
+    reply-from: "Resposta de {}:"
+    quoted-by: "Citado por {}:"
   time:
-    unknown: "なぞのじかん"
-    future: "未来"
-    just_now: "たった今"
-    seconds_ago: "{}秒前"
-    minutes_ago: "{}分前"
-    hours_ago: "{}時間前"
-    days_ago: "{}日前"
-    weeks_ago: "{}週間前"
-    months_ago: "{}ヶ月前"
-    years_ago: "{}年前"
-  month-and-day: "{month}月 {day}日"
-  trash: "ゴミ箱"
+    unknown: "Desconhecido"
+    future: "futuro"
+    just_now: "agora"
+    seconds_ago: "{} sec atrás"
+    minutes_ago: "{} min atrás"
+    hours_ago: "{} h atrás"
+    days_ago: "{} d atrás"
+    weeks_ago: "{} sem atrás"
+    months_ago: "{} m atrás"
+    years_ago: "{} ano(s) atrás"
+  month-and-day: "{day}/{month}"
+  trash: "Lixo"
   weekday-short:
-    sunday: "日"
-    monday: "月"
-    tuesday: "火"
-    wednesday: "水"
-    thursday: "木"
-    friday: "金"
-    saturday: "土"
+    sunday: "Dom"
+    monday: "Seg"
+    tuesday: "Ter"
+    wednesday: "Qua"
+    thursday: "Qui"
+    friday: "Sex"
+    saturday: "Seb"
   weekday:
-    sunday: "日曜日"
-    monday: "月曜日"
-    tuesday: "火曜日"
-    wednesday: "水曜日"
-    thursday: "木曜日"
-    friday: "金曜日"
-    saturday: "土曜日"
+    sunday: "domingo"
+    monday: "segunda"
+    tuesday: "terça"
+    wednesday: "quarta"
+    thursday: "quinta"
+    friday: "sexta"
+    saturday: "sábado"
   reactions:
-    like: "いいね"
-    love: "しゅき"
-    laugh: "笑"
-    hmm: "ふぅ~む"
-    surprise: "わお"
-    congrats: "おめでとう"
-    angry: "おこ"
-    confused: "こまこまのこまり"
+    like: "Legal..."
+    love: "Amei"
+    laugh: "Riso"
+    hmm: "Hmm...?"
+    surprise: "Uau"
+    congrats: "Parabéns!"
+    angry: "Raiva"
+    confused: "Confuso"
     rip: "RIP"
-    pudding: "Pudding"
+    pudding: "Pudim"
   note-placeholders:
-    a: "今どうしてる?"
-    b: "何かありましたか?"
-    c: "何をお考えですか?"
-    d: "言いたいことは?"
-    e: "ここに書いてください"
-    f: "あなたが書くのを待っています..."
-  search: "検索"
-  delete: "削除"
-  loading: "読み込み中"
-  ok: "わかった"
-  update-available-title: "更新があります"
-  update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
+    a: "O que está fazendo?"
+    b: "O que está acontecendo?"
+    c: "No que está pensando?"
+    d: "Quer postar algo?"
+    e: "Escreva aqui"
+    f: "Esperando você escrever."
+  search: "Buscar"
+  delete: "Apagar"
+  loading: "Carregando"
+  ok: "OK"
+  update-available-title: "Atualização disponível"
+  update-available: "Uma nova versão de Misskey está disponível ({newer}). A versão atual é {current}. Recarregue a página para atualizar."
   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
-  i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
-  show-reversi-board-labels: "リバーシのボードの行と列のラベルを表示"
-  verified-user: "公式アカウント"
-  disable-animated-mfm: "投稿内の動きのあるテキストを無効にする"
+  i-like-sushi: "Eu prefiro sushi a pudim"
+  show-reversi-board-labels: "Mostrar etiquetas de colunas e linhas no Reversi"
+  verified-user: "Conta verificada"
+  disable-animated-mfm: "Desativar texto animado nas publicações"
   reversi:
-    drawn: "引き分け"
-    my-turn: "あなたのターンです"
-    opponent-turn: "相手のターンです"
-    turn-of: "{}のターンです"
-    past-turn-of: "{}のターン"
-    won: "{}の勝ち"
-    black: "黒"
-    white: "白"
-    total: "合計"
+    drawn: "Empatado"
+    my-turn: "Seu turno"
+    opponent-turn: "Turno do oponente"
+    turn-of: "turno de {}"
+    past-turn-of: "turno de {}"
+    won: "{} venceu"
+    black: "Pretas"
+    white: "Brancas"
+    total: "Total"
     this-turn: "{}ターン目"
   widgets:
-    analog-clock: "アナログ時計"
-    profile: "プロフィール"
-    calendar: "カレンダー"
-    timemachine: "カレンダー(タイムマシン)"
-    activity: "アクティビティ"
-    rss: "RSSリーダー"
-    memo: "付箋"
+    analog-clock: "Relógio analógico"
+    profile: "Perfil"
+    calendar: "Calendário"
+    timemachine: "Calendário (máquina do tempo)"
+    activity: "Atividade"
+    rss: "Leitor de RSS"
+    memo: "Nota adesiva"
     trends: "トレンド"
     photo-stream: "フォトストリーム"
     posts-monitor: "投稿チャート"
     slideshow: "スライドショー"
-    version: "バージョン"
+    version: "Versão"
     broadcast: "ブロードキャスト"
-    notifications: "通知"
-    users: "おすすめユーザー"
-    polls: "アンケート"
+    notifications: "Notificações"
+    users: "Usuário sugeridos"
+    polls: "Enquetes"
     post-form: "投稿フォーム"
-    messaging: "メッセージ"
-    server: "サーバー情報"
-    donation: "寄付のお願い"
-    nav: "ナビゲーション"
-    tips: "ヒント"
-    hashtags: "ハッシュタグ"
+    messaging: "Mensagens"
+    server: "Informações do servidor"
+    donation: "Doações"
+    nav: "Navegação"
+    tips: "Dicas"
+    hashtags: "Hashtags"
   deck:
-    widgets: "ウィジェット"
-    home: "ホーム"
-    local: "ローカル"
-    hybrid: "ソーシャル"
-    global: "グローバル"
-    notifications: "通知"
-    list: "リスト"
-    swap-left: "左に移動"
-    swap-right: "右に移動"
-    swap-up: "上に移動"
-    swap-down: "下に移動"
-    remove: "カラムを削除"
+    widgets: "Widgets"
+    home: "Início"
+    local: "Local"
+    hybrid: "Social"
+    global: "Global"
+    notifications: "Notificações"
+    list: "Listas"
+    swap-left: "Mover para a esquerda"
+    swap-right: "Mover para a direita"
+    swap-up: "Mover para cima"
+    swap-down: "Mover para baixo"
+    remove: "Remover"
     add-column: "カラムを追加"
-    rename: "名前を変更"
+    rename: "Renomear"
     stack-left: "左に重ねる"
     pop-right: "右に出す"
 auth/views/form.vue:
-  share-access: "<i>{{ app.name }}</i>があなたのアカウントにアクセスすることを<b>許可</b>しますか?"
-  permission-ask: "このアプリは次の権限を要求しています:"
-  account-read: "アカウントの情報を見る。"
-  account-write: "アカウントの情報を操作する。"
-  note-write: "投稿する。"
+  share-access: "Você <b>permite</b> que <i>{{ app.name }}</i> acesse sua conta?"
+  permission-ask: "Este aplicativo precisa das seguintes permissões:"
+  account-read: "Ver informações da conta."
+  account-write: "Modificar informações da conta."
+  note-write: "Publicar"
   like-write: "いいねしたりいいね解除する。"
   following-write: "フォローしたりフォロー解除する。"
   drive-read: "ドライブを見る。"
@@ -193,7 +193,7 @@ common/views/components/games/reversi/reversi.room.vue:
   random: "ランダム"
   black-or-white: "先手/後手"
   black-is: "{}が黒"
-  rules: "ルール"
+  rules: "Regras"
   is-llotheo: "石の少ない方が勝ち(ロセオ)"
   looped-map: "ループマップ"
   can-put-everywhere: "どこでも置けるモード"
@@ -202,7 +202,7 @@ common/views/components/games/reversi/reversi.room.vue:
   waiting-for-other: "相手の準備が完了するのを待っています"
   waiting-for-me: "あなたの準備が完了するのを待っています"
   waiting-for-both: "準備中"
-  cancel: "キャンセル"
+  cancel: "Cancelar"
   ready: "準備完了"
   cancel-ready: "準備続行"
 common/views/components/connect-failed.vue:
@@ -779,7 +779,7 @@ desktop/views/components/user-lists-window.vue:
 desktop/views/components/user-preview.vue:
   notes: "投稿"
   following: "フォロー"
-  followers: "フォロワー"
+  followers: "Seguidores"
 desktop/views/components/users-list.vue:
   all: "すべて"
   iknow: "知り合い"
@@ -793,13 +793,13 @@ desktop/views/components/window.vue:
 desktop/views/pages/admin/admin.vue:
   dashboard: "ダッシュボード"
   drive: "ドライブ"
-  users: "ユーザー"
-  update: "更新"
+  users: "Usuários"
+  update: "Actualizações"
 desktop/views/pages/admin/admin.dashboard.vue:
   dashboard: "ダッシュボード"
-  all-users: "全てのユーザー"
+  all-users: "Todos os usuários"
   original-users: "このインスタンスのユーザー"
-  all-notes: "全てのノート"
+  all-notes: "Todas as notas"
   original-notes: "このインスタンスのノート"
   invite: "招待"
 desktop/views/pages/admin/admin.suspend-user.vue:
@@ -845,24 +845,24 @@ desktop/views/pages/welcome.vue:
   signup: "新規登録"
   signin-button: "やってる"
   signup-button: "やる"
-  timeline: "タイムライン"
-  powered-by-misskey: "Powered by <b>Misskey</b>."
+  timeline: "Timeline"
+  powered-by-misskey: "Desenvolvido por <b>Misskey</b>."
 desktop/views/pages/drive.vue:
-  title: "Misskey Drive"
+  title: "Drive Misskey"
 desktop/views/pages/favorites.vue:
-  more: "さらに読み込む"
+  more: "Carregar mais"
 desktop/views/pages/home-customize.vue:
-  title: "ホームのカスタマイズ"
+  title: "Personalizar a página inicial"
 desktop/views/pages/note.vue:
-  prev: "前の投稿"
-  next: "次の投稿"
+  prev: "Nota anterior"
+  next: "Próxima nota"
 desktop/views/pages/selectdrive.vue:
-  title: "ファイルを選択してください"
-  ok: "決定"
-  cancel: "キャンセル"
-  upload: "PCからドライブにファイルをアップロード"
+  title: "Selecione um arquivo"
+  ok: "OK"
+  cancel: "Cancelar"
+  upload: "Envie arquivos do seu dispositivo"
 desktop/views/pages/search.vue:
-  not-available: "検索機能はインスタンスの設定で無効になっています。"
+  not-available: "A pesquisa está desligada nas configurações desta instância."
   not-found: "「{}」に関する投稿は見つかりませんでした。"
 desktop/views/pages/share.vue:
   share-with: "{}で共有"
@@ -1170,29 +1170,29 @@ mobile/views/pages/user.vue:
   timeline: "タイムライン"
   media: "メディア"
   is-suspended: "このユーザーは凍結されています。"
-  is-remote: "このユーザーはリモートユーザーです。"
-  view-remote: "正確な情報を見る"
+  is-remote: "Este é uma usuário remoto. O perfil que vê aqui pode não estar completo."
+  view-remote: "Ver o perfil completo."
 mobile/views/pages/user/home.vue:
-  recent-notes: "最近の投稿"
-  images: "画像"
-  activity: "アクティビティ"
+  recent-notes: "Notas recentes"
+  images: "Imagens"
+  activity: "Atividade"
   keywords: "キーワード"
   domains: "頻出ドメイン"
   frequently-replied-users: "よく会話するユーザー"
-  followers-you-know: "知り合いのフォロワー"
-  last-used-at: "最終ログイン"
+  followers-you-know: "Seguidores que você conhece"
+  last-used-at: "Ativo pela última vez:"
 mobile/views/pages/user/home.followers-you-know.vue:
-  loading: "読み込み中"
+  loading: "Carregando"
   no-users: "知り合いのユーザーはいません"
 mobile/views/pages/user/home.friends.vue:
   loading: "読み込み中"
   no-users: "よく会話するユーザーはいません"
 mobile/views/pages/user/home.notes.vue:
-  loading: "読み込み中"
-  no-notes: "投稿はありません"
+  loading: "Carregando"
+  no-notes: "Nenhuma mensagem"
 mobile/views/pages/user/home.photos.vue:
-  loading: "読み込み中"
-  no-photos: "写真はありません"
+  loading: "Carregando"
+  no-photos: "Sem fotos"
 docs:
   edit-this-page-on-github: "間違いや改善点を見つけましたか?"
   edit-this-page-on-github-link: "このページをGitHubで編集"
@@ -1209,11 +1209,11 @@ docs:
       duration-limit: "直近{duration}ミリ秒の間のこのエンドポイントへのリクエスト数の合計が{max}を超える場合はリクエストできません。"
       min-interval-limit: "前回のリクエストから{interval}ミリ秒経っていない場合はリクエストできません。"
       show-src: "このエンドポイントのソースコードも閲覧できます。"
-      show-src-link: "コードをGitHubで見る"
-      generated: "このドキュメントはAPI定義に基づき自動生成されています。"
+      show-src-link: "Veja o código no GitHub"
+      generated: "Este documento foi gerado pelas definições da API."
     props:
-      name: "名前"
-      type: "型"
-      description: "説明"
+      name: "Nome"
+      type: "Tipo"
+      description: "Descrição"
 dev/views/index.vue:
-  manage-apps: "アプリの管理"
+  manage-apps: "Gerenciar aplicativos"
diff --git a/locales/ru.yml b/locales/ru-RU.yml
similarity index 99%
rename from locales/ru.yml
rename to locales/ru-RU.yml
index 135d792d18..9eef17f79c 100644
--- a/locales/ru.yml
+++ b/locales/ru-RU.yml
@@ -58,7 +58,7 @@ common:
     friday: "金曜日"
     saturday: "土曜日"
   reactions:
-    like: "いいね"
+    like: "ええやん"
     love: "しゅき"
     laugh: "笑"
     hmm: "ふぅ~む"
diff --git a/locales/zh.yml b/locales/zh-CN.yml
similarity index 99%
rename from locales/zh.yml
rename to locales/zh-CN.yml
index 9c1d8a389d..8ce97a5b4b 100644
--- a/locales/zh.yml
+++ b/locales/zh-CN.yml
@@ -58,7 +58,7 @@ common:
     friday: "金曜日"
     saturday: "土曜日"
   reactions:
-    like: "いいね"
+    like: "ええやん"
     love: "しゅき"
     laugh: "笑"
     hmm: "ふぅ~む"
diff --git a/src/client/app/boot.js b/src/client/app/boot.js
index 952881f6cb..86d48faf1a 100644
--- a/src/client/app/boot.js
+++ b/src/client/app/boot.js
@@ -38,12 +38,18 @@
 	//#endregion
 
 	//#region Detect the user language
-	let lang = navigator.language;
+	let lang = null;
 
-	if (!LANGS.includes(lang)) lang = lang.split('-')[0];
+	if (LANGS.includes(navigator.language)) {
+		lang = navigator.language;
+	} else {
+		lang = LANGS.find(x => x.split('-')[0] == navigator.language);
 
-	// The default language is English
-	if (!LANGS.includes(lang)) lang = 'en';
+		if (lang == null) {
+			// Fallback
+			lang = 'en-US';
+		}
+	}
 
 	if (settings) {
 		if (settings.device.lang) lang = settings.device.lang;
diff --git a/src/client/app/desktop/views/components/ui.header.account.vue b/src/client/app/desktop/views/components/ui.header.account.vue
index 4e0fc1cf1a..5e26389d89 100644
--- a/src/client/app/desktop/views/components/ui.header.account.vue
+++ b/src/client/app/desktop/views/components/ui.header.account.vue
@@ -30,10 +30,8 @@
 				<li @click="settings">
 					<p>%fa:cog%<span>%i18n:@settings%</span>%fa:angle-right%</p>
 				</li>
-			</ul>
-			<ul>
-				<li @click="signout">
-					<p class="signout">%fa:power-off%<span>%i18n:@signout%</span></p>
+				<li v-if="$store.state.i.isAdmin">
+					<router-link to="/admin">%fa:terminal%<span>%i18n:@admin%</span>%fa:angle-right%</router-link>
 				</li>
 			</ul>
 			<ul>
@@ -41,6 +39,11 @@
 					<p><span>%i18n:@dark%</span><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
 				</li>
 			</ul>
+			<ul>
+				<li @click="signout">
+					<p class="signout">%fa:power-off%<span>%i18n:@signout%</span></p>
+				</li>
+			</ul>
 		</div>
 	</transition>
 </div>
diff --git a/src/client/app/desktop/views/pages/admin/admin.dashboard.vue b/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
index 3567585cb8..e0d23331b8 100644
--- a/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
+++ b/src/client/app/desktop/views/pages/admin/admin.dashboard.vue
@@ -11,6 +11,10 @@
 		<x-cpu-memory :connection="connection"/>
 	</div>
 	<div>
+		<label>
+			<input type="checkbox" v-model="disableRegistration" @change="updateMeta">
+			<span>disableRegistration</span>
+		</label>
 		<button class="ui" @click="invite">%i18n:@invite%</button>
 		<p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p>
 	</div>
@@ -28,6 +32,7 @@ export default Vue.extend({
 	data() {
 		return {
 			stats: null,
+			disableRegistration: false,
 			inviteCode: null,
 			connection: null,
 			connectionId: null
@@ -37,6 +42,10 @@ export default Vue.extend({
 		this.connection = (this as any).os.streams.serverStatsStream.getConnection();
 		this.connectionId = (this as any).os.streams.serverStatsStream.use();
 
+		(this as any).os.getMeta().then(meta => {
+			this.disableRegistration = meta.disableRegistration;
+		});
+
 		(this as any).api('stats').then(stats => {
 			this.stats = stats;
 		});
@@ -49,6 +58,11 @@ export default Vue.extend({
 			(this as any).api('admin/invite').then(x => {
 				this.inviteCode = x.code;
 			});
+		},
+		updateMeta() {
+			(this as any).api('admin/update-meta', {
+				disableRegistration: this.disableRegistration
+			});
 		}
 	}
 });
diff --git a/src/client/app/mobile/views/components/ui.nav.vue b/src/client/app/mobile/views/components/ui.nav.vue
index 74564a48bb..39ea513b76 100644
--- a/src/client/app/mobile/views/components/ui.nav.vue
+++ b/src/client/app/mobile/views/components/ui.nav.vue
@@ -30,6 +30,7 @@
 				<ul>
 					<li><a @click="search">%fa:search%%i18n:@search%%fa:angle-right%</a></li>
 					<li><router-link to="/i/settings" :data-active="$route.name == 'settings'">%fa:cog%%i18n:@settings%%fa:angle-right%</router-link></li>
+					<li v-if="$store.getters.isSignedIn && $store.state.i.isAdmin"><router-link to="/admin">%fa:terminal%<span>%i18n:@admin%</span>%fa:angle-right%</router-link></li>
 					<li @click="dark"><p><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>%i18n:@darkmode%</span></p></li>
 				</ul>
 			</div>
diff --git a/src/misc/i18n.ts b/src/misc/i18n.ts
index a07af3e939..3dbfd7fe7b 100644
--- a/src/misc/i18n.ts
+++ b/src/misc/i18n.ts
@@ -27,10 +27,12 @@ export default class Replacer {
 		let text = texts;
 
 		if (path) {
+			path = path.replace('.ts', '');
+
 			if (text.hasOwnProperty(path)) {
 				text = text[path];
 			} else {
-				if (this.lang === 'ja') console.warn(`path '${path}' not found`);
+				if (this.lang === 'ja-JP') console.warn(`path '${path}' not found`);
 				return key; // Fallback
 			}
 		}
@@ -46,10 +48,10 @@ export default class Replacer {
 		});
 
 		if (error) {
-			if (this.lang === 'ja') console.warn(`key '${key}' not found in '${path}'`);
+			if (this.lang === 'ja-JP') console.warn(`key '${key}' not found in '${path}'`);
 			return key; // Fallback
 		} else if (typeof text !== 'string') {
-			if (this.lang === 'ja') console.warn(`key '${key}' is not string in '${path}'`);
+			if (this.lang === 'ja-JP') console.warn(`key '${key}' is not string in '${path}'`);
 			return key; // Fallback
 		} else {
 			return text;
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
new file mode 100644
index 0000000000..bfcab9d6a6
--- /dev/null
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -0,0 +1,37 @@
+import $ from 'cafy';
+import Meta from '../../../../models/meta';
+import getParams from '../../get-params';
+
+export const meta = {
+	desc: {
+		ja: 'インスタンスの設定を更新します。'
+	},
+
+	requireCredential: true,
+	requireAdmin: true,
+
+	params: {
+		disableRegistration: $.bool.optional.nullable.note({
+			desc: {
+				ja: '招待制か否か'
+			}
+		}),
+	}
+};
+
+export default (params: any) => new Promise(async (res, rej) => {
+	const [ps, psErr] = getParams(meta, params);
+	if (psErr) return rej(psErr);
+
+	const set = {} as any;
+
+	if (ps.disableRegistration === true || ps.disableRegistration === false) {
+		set.disableRegistration = ps.disableRegistration;
+	}
+
+	await Meta.update({}, {
+		$set: set
+	}, { upsert: true });
+
+	res();
+});