Browse Source

Add Japanese translation (#1552)

* add device.ja.yml

* update device.ja.yml

* add file simple_form.ja.yml

* 👍Added doorkeeper.ja.yml

* add ja.yml

* Update doorkeeper.ja.yml

fixed url to uri

* update ja.yml

* fix some translations

* fix japanese grammar of a translate

* fix some translates

* fix ja.yml

* add ja.jsx

* add Japanese user mail views

* Added japanese translate locales

* Added :ja to available_locales

こっちも

* Added "日本語" to HUMAN_LOCALES

* Imported/Added ja to addLocaleData

* update ja.jsx
pinfort 7 years ago
parent
commit
6f5268b02d

+ 2 - 1
app/assets/javascripts/components/containers/mastodon.jsx

@@ -49,6 +49,7 @@ import uk from 'react-intl/locale-data/uk';
 import fi from 'react-intl/locale-data/fi';
 import eo from 'react-intl/locale-data/eo';
 import ru from 'react-intl/locale-data/ru';
+import ja from 'react-intl/locale-data/ja';
 
 import getMessagesForLocale from '../locales';
 import { hydrateStore } from '../actions/store';
@@ -63,7 +64,7 @@ const browserHistory = useRouterHistory(createBrowserHistory)({
 });
 
 
-addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi, ...eo, ...ru]);
+addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi, ...eo, ...ru, ...ja]);
 
 
 const Mastodon = React.createClass({

+ 3 - 1
app/assets/javascripts/components/locales/index.jsx

@@ -8,6 +8,7 @@ import uk from './uk';
 import fi from './fi';
 import eo from './eo';
 import ru from './ru';
+import ja from './ja';
 
 
 const locales = {
@@ -20,7 +21,8 @@ const locales = {
   uk,
   fi,
   eo,
-  ru
+  ru,
+  ja
 
 };
 

+ 72 - 0
app/assets/javascripts/components/locales/ja.jsx

@@ -0,0 +1,72 @@
+const ja = {
+  "column_back_button.label": "戻る",
+  "lightbox.close": "閉じる",
+  "loading_indicator.label": "読み込み中...",
+  "status.mention": "@{name}さんへの返信",
+  "status.delete": "削除",
+  "status.reply": "返信",
+  "status.reblog": "ブースト",
+  "status.favourite": "お気に入り",
+  "status.reblogged_by": "{name}さんにブーストされました",
+  "status.sensitive_warning": "不適切なコンテンツ",
+  "status.sensitive_toggle": "見るにはクリック",
+  "status.show_more": "もっと見る",
+  "status.show_less": "隠す",
+  "status.open": "Expand this status",
+  "status.report": "@{name}さんを報告",
+  "video_player.toggle_sound": "音切り替え",
+  "account.mention": "@{name}さんに返信",
+  "account.edit_profile": "プロフィール返信",
+  "account.unblock": "@{name}さんのブロックを解除",
+  "account.unfollow": "フォロー解除",
+  "account.block": "@{name}さんをブロック",
+  "account.follow": "フォロー",
+  "account.posts": "投稿",
+  "account.follows": "フォロー",
+  "account.followers": "フォロワー",
+  "account.follows_you": "フォロー中",
+  "account.requested": "承認待ち",
+  "getting_started.heading": "スタート",
+  "getting_started.about_addressing": "ドメインとユーザー名を知っているなら検索フォームに入力すればフォローできます。",
+  "getting_started.about_shortcuts": "対象のアカウントがあなたと同じドメインのユーザーならばユーザー名のみで検索できます。これは返信のときも一緒です。",
+  "getting_started.open_source_notice": "Mastodon はオープンソースのソフトウェアです。誰でもGitHub({github})から開発に参加したり、問題を報告したりできます。 {apps}",
+  "column.home": "ホーム",
+  "column.community": "ローカルタイムライン",
+  "column.public": "連邦タイムライン",
+  "column.notifications": "通知",
+  "tabs_bar.compose": "Compose",
+  "tabs_bar.home": "ホーム",
+  "tabs_bar.mentions": "返信",
+  "tabs_bar.public": "連邦タイムライン",
+  "tabs_bar.notifications": "通知",
+  "compose_form.placeholder": "今なにしてる?",
+  "compose_form.publish": "トゥート",
+  "compose_form.sensitive": "メディアを不適切なコンテンツとしてマークする",
+  "compose_form.spoiler": "テキストを隠す",
+  "compose_form.private": "非公開にする",
+  "compose_form.privacy_disclaimer": "あなたの非公開トゥートは返信先のユーザー(at {domains})に公開されます。{domainsCount, plural, one {that server} other {those servers}}を信頼しますか?投稿のプライバシー保護はMastodonサーバー内でのみ有効です。 もし{domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}ならばあなたの投稿のプライバシーは保護されず、ブーストされたり予期しないユーザーに見られる可能性があります。",
+  "compose_form.unlisted": "公開タイムラインに表示しない",
+  "navigation_bar.edit_profile": "プロフィール編集",
+  "navigation_bar.preferences": "ユーザー設定",
+  "navigation_bar.community_timeline": "ローカルタイムライン",
+  "navigation_bar.public_timeline": "連邦タイムライン",
+  "navigation_bar.logout": "ログアウト",
+  "reply_indicator.cancel": "キャンセル",
+  "search.placeholder": "検索",
+  "search.account": "アカウント",
+  "search.hashtag": "ハッシュタグ",
+  "upload_button.label": "メディアを追加",
+  "upload_form.undo": "やり直す",
+  "notification.follow": "{name}さんにフォローされました",
+  "notification.favourite": "{name}さんがあなたのトゥートをいいねしました",
+  "notification.reblog": "{name}さんがあなたのトゥートをブーストしました",
+  "notification.mention": "{name}さんがあなたに返信しました",
+  "notifications.column_settings.alert": "デスクトップ通知",
+  "notifications.column_settings.show": "表示項目",
+  "notifications.column_settings.follow": "新しいフォロワー:",
+  "notifications.column_settings.favourite": "いいね:",
+  "notifications.column_settings.mention": "返信:",
+  "notifications.column_settings.reblog": "ブースト:",
+};
+
+export default ja;

+ 1 - 0
app/helpers/settings_helper.rb

@@ -13,6 +13,7 @@ module SettingsHelper
     'zh-CN': '简体中文',
     fi: 'Suomi',
     ru: 'Русский',
+    ja: '日本語',
 
   }.freeze
 

+ 5 - 0
app/views/user_mailer/confirmation_instructions.ja.html.erb

@@ -0,0 +1,5 @@
+<p>ようこそ<%= @resource.email %>さん</p>
+
+<p>以下のリンクをクリックしてMastodonアカウントのメールアドレスを確認してください</p>
+
+<p><%= link_to 'メールアドレスの確認', confirmation_url(@resource, confirmation_token: @token) %></p>

+ 5 - 0
app/views/user_mailer/confirmation_instructions.ja.text.erb

@@ -0,0 +1,5 @@
+ようこそ<%= @resource.email %>さん
+
+以下のリンクをクリックしてMastodonアカウントのメールアドレスを確認してください
+
+<%= confirmation_url(@resource, confirmation_token: @token) %>

+ 3 - 0
app/views/user_mailer/password_change.ja.html.erb

@@ -0,0 +1,3 @@
+<p>こんにちは<%= @resource.email %>さん</p>
+
+<p>Mastodonアカウントのパスワードが変更されました。</p>

+ 3 - 0
app/views/user_mailer/password_change.ja.text.erb

@@ -0,0 +1,3 @@
+こんにちは<%= @resource.email %>さん
+
+Mastodonアカウントのパスワードが変更されました。

+ 8 - 0
app/views/user_mailer/reset_password_instructions.ja.html.erb

@@ -0,0 +1,8 @@
+<p>こんにちは<%= @resource.email %>さん</p>
+
+<p>Mastodonアカウントのパスワードの変更がリクエストされました。以下のリンクをクリックして操作を完了できます。</p>
+
+<p><%= link_to 'パスワードを変更', edit_password_url(@resource, reset_password_token: @token) %></p>
+
+<p>このメールに見に覚えのない場合は無視してください。</p>
+<p>上記のリンクにアクセスし、変更をしない限りパスワードは変更されません。</p>

+ 8 - 0
app/views/user_mailer/reset_password_instructions.ja.text.erb

@@ -0,0 +1,8 @@
+こんにちは<%= @resource.email %>さん
+
+Mastodonアカウントのパスワードの変更がリクエストされました。以下のリンクをクリックして操作を完了できます。
+
+<%= edit_password_url(@resource, reset_password_token: @token) %>
+
+このメールに見に覚えのない場合は無視してください。
+上記のリンクにアクセスし、変更をしない限りパスワードは変更されません。

+ 1 - 1
config/application.rb

@@ -25,7 +25,7 @@ module Mastodon
     # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
     # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
 
-    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo, :ru]
+    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo, :ru, :ja]
 
     config.i18n.default_locale    = :en
 

+ 61 - 0
config/locales/devise.ja.yml

@@ -0,0 +1,61 @@
+---
+ja:
+  devise:
+    confirmations:
+      confirmed: メールアドレスの確認が正常に完了しました。
+      send_instructions: まもなくメールアドレスの確認の方法が記載されたメールが送信されます。
+      send_paranoid_instructions: もしあなたのメールアドレスが登録されていれば、まもなくメールアドレスの確認の方法が記載されたメールが送信されます。
+    failure:
+      already_authenticated: 既にログイン済みです。
+      inactive: あなたのアカウントはまだアクティベートされていません。
+      invalid: '%{authentication_keys}かパスワードが誤っています'
+      last_attempt: あと1回失敗するとアカウントがロックされます。
+      locked: アカウントはロックされました。
+      not_found_in_database: '%{authentication_keys}かパスワードが誤っています'
+      timeout: セッションの有効期限が切れました。続行するには再度ログインしてください。
+      unauthenticated: 続行するにはログインするか、アカウントを作成してください。
+      unconfirmed: 続行するにはメールアドレスを確認する必要があります。
+    mailer:
+      confirmation_instructions:
+        subject: 'Mastodon: メールアドレスの確認'
+      password_change:
+        subject: 'Mastodon: パスワードが変更されました'
+      reset_password_instructions:
+        subject: 'Mastodon: パスワード再発行'
+      unlock_instructions:
+        subject: 'Mastodon: アカウントのロックの解除'
+    omniauth_callbacks:
+      failure: '%{reason}によって%{kind}からのアクセスを認証できませんでした。'
+      success: '%{kind}からのアクセスは正常に認証されました。'
+    passwords:
+      no_token: パスワード再発行のメール以外からこのページにアクセスすることはできません。 パスワード再発行のメールからアクセスしたのにもかかわらずこのメッセージが表示される場合は、アクセスしたURLが間違っていないか確認してください。
+      send_instructions: パスワード再発行の方法が記載されたメールが間もなく送信されます。
+      send_paranoid_instructions: メールアドレスが登録済みであれば、パスワードをリセットするリンクが記載されたメールがあなたのメールアドレスに送信されます。
+      updated: パスワードは正常に更新されました。なお、既にログイン済みです。
+      updated_not_active: パスワードは正常に更新されました。
+    registrations:
+      destroyed: アカウントの作成はキャンセルされました。またのご利用をお待ちしています。
+      signed_up: アカウントの作成が完了しました。Mastodonへようこそ!
+      signed_up_but_inactive: アカウントの作成が完了しました。しかし、アカウントが有効化されていないためログインできませんでした。
+      signed_up_but_locked: アカウントの作成が完了しました。しかし、アカウントがロックされているためログインできませんでした。
+      signed_up_but_unconfirmed: メールアドレスの確認用のリンクが入力したメールアドレスに送信されました。メール内のリンクをクリックしてアカウントを有効化してください。
+      update_needs_confirmation: アカウント情報の更新に成功しました。しかし、メールアドレスの確認が必要です。送信されたメール内のリンクをクリックしてメールアドレスを確認してください。
+      updated: アカウント情報の更新に成功しました。
+    sessions:
+      already_signed_out: ログアウトしました。
+      signed_in: ログインしました。
+      signed_out: ログアウトしました。
+    unlocks:
+      send_instructions: まもなくアカウントのロックを解除するための方法を記載したメールが送信されます。
+      send_paranoid_instructions: もしアカウントが存在すれば、まもなくアカウントのロックを解除するための方法を記載したメールが送信されます。
+      unlocked: アカウントロックは正常に解除されました。続行するにはログインしてください。
+  errors:
+    messages:
+      already_confirmed: は確認されました。ログインを試してください。
+      confirmation_period_expired: '%{period}以内に確認が必要です。再度試してください。'
+      expired: は期限切れです。再度試してください。
+      not_found: 見つかりません
+      not_locked: ロックされていません
+      not_saved:
+        one: 'エラーが発生したため、%{resource}の保存に失敗しました。'
+        other: "%{count}個のエラーが発生したため、保存に失敗しました。 %{resource}"

+ 113 - 0
config/locales/doorkeeper.ja.yml

@@ -0,0 +1,113 @@
+---
+ja:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: 名前
+        redirect_uri: リダイレクトURI
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: フラグメントを含めることはできません。
+              invalid_uri: 有効なURIである必要があります。
+              relative_uri: 絶対URIである必要があります。
+              secured_uri: URIはHTTPS/SSLである必要があります。
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: 承認
+        cancel: キャンセル
+        destroy: 削除
+        edit: 編集
+        submit: 送信
+      confirmations:
+        destroy: 本当に削除しますか?
+      edit:
+        title: アプリケーションの編集
+      form:
+        error: フォームにエラーが無いか確認してください。
+      help:
+        native_redirect_uri: ローカルテストに %{native_redirect_uri} を使用
+        redirect_uri: 一行に一つのURLを入力してください
+        scopes: アクセス権は半角スペースで区切ることができます。 空白のままにするとデフォルトを使用します。
+      index:
+        callback_url: コールバックURL
+        name: 名前
+        new: 新規アプリケーション
+        title: あなたのアプリケーション
+      new:
+        title: 新規アプリケーション
+      show:
+        actions: アクション
+        application_id: アクションId
+        callback_urls: コールバックurl
+        scopes: アクセス権
+        secret: 非公開
+        title: 'アプリケーション: %{name}'
+    authorizations:
+      buttons:
+        authorize: 承認
+        deny: 拒否
+      error:
+        title: エラーが発生しました。
+      new:
+        able_to: このアプリケーションは以下のことができます
+        prompt: アプリケーション %{client_name} があなたのアカウントへのアクセスを要求しています。
+        title: 認証が必要です。
+      show:
+        title: 認証コード
+    authorized_applications:
+      buttons:
+        revoke: 取り消す
+      confirmations:
+        revoke: 本当に取り消しますか?
+      index:
+        application: アプリケーション
+        created_at: 認証済み
+        date_format: "%Y年%m月%d日 %H時%M分%S秒"
+        scopes: アクセス権
+        title: あなたの認証済みアプリケーション
+    errors:
+      messages:
+        access_denied: リソースの所有者または認証サーバーが要求を拒否しました。
+        credential_flow_not_configured: リソース所有者のパスワード Doorkeeper.configure.resource_owner_from_credentials が設定されていないためクレデンシャルフローに失敗しました。
+        invalid_client: 不明なクライアントであるか、クライアント情報が含まれていない、またはサポートされていない認証方法のため、クライアントの認証に失敗しました。
+        invalid_grant: 指定された認証許可は無効であるか、期限切れ、取り消されている、リダイレクトURIの不一致、または別のクライアントに発行されています。
+        invalid_redirect_uri: 無効なリダイレクトURIが含まれています。
+        invalid_request: リクエストに必要なパラメータが欠けているか、サポートされていないパラメータが含まれている、または不正なフォーマットです。
+        invalid_resource_owner: 指定されたリソース所有者のクレデンシャルが無効であるか、リソース所有者が見つかりません。
+        invalid_scope: 要求されたアクセス権は無効であるか、不明、または不正なフォーマットです。
+        invalid_token:
+          expired: アクセストークンの有効期限が切れています
+          revoked: アクセストークンは取り消されています。
+          unknown: アクセストークンが無効です。
+        resource_owner_authenticator_not_configured: Doorkeeper.configure.resource_owner_authenticatorが設定されていないため、リソース所有者の検索に失敗しました。
+        server_error: 認証サーバーに予期せぬ例外が発生したため、リクエストを実行できなくなりました。
+        temporarily_unavailable: 現在、認証サーバーに一時的な過負荷が掛かっているか、またはメンテナンス中のため、リクエストを処理できません。
+        unauthorized_client: クライアントはこのメゾットで要求を実行する権限がありません。
+        unsupported_grant_type: 指定された認証許可タイプは認証サーバでサポートされていません。
+        unsupported_response_type: このレスポンスタイプは認証サーバでサポートされていません。
+    flash:
+      applications:
+        create:
+          notice: アプリケーションが作成されました。
+        destroy:
+          notice: アプリケーションが削除されました。
+        update:
+          notice: アプリケーションが更新されました。
+      authorized_applications:
+        destroy:
+          notice: アプリケーションが取り消されました。
+    layouts:
+      admin:
+        nav:
+          applications: アプリケーション
+          oauth2_provider: OAuth2プロバイダー
+      application:
+        title: OAuth認証が必要です。
+    scopes:
+      follow: アカウントのフォロー, ブロック, ブロック解除, フォロー解除
+      read: アカウントへのデータの読み取り
+      write: アカウントからの投稿の書き込み

+ 173 - 0
config/locales/ja.yml

@@ -0,0 +1,173 @@
+---
+ja:
+  about:
+    about_mastodon: Mastodon は<em>無料でオープンソース</em>のソーシャルネットワークです。 従来のプラットフォームとは違う<em>分散型</em>で、これはあなたの会話が一つの会社によって独占されるのを防ぎます。自分の信頼できるサーバーを選びます&mdash; どのサーバーを選んでも、誰とでも会話することができます。 だれでも自分の Mastodon サーバーを作ることができ、<em>シームレスにソーシャルネットワークに参加</em>できます。
+    about_this: このサーバーについて
+    apps: アプリ
+    business_email: 'ビジネスメールアドレス:'
+    closed_registrations: 現在このサーバーでの新規登録は受け付けていません。
+    contact: 連絡先
+    description_headline: '%{domain}とは?'
+    domain_count_after: 個のサーバー
+    domain_count_before: 接続中
+    features:
+      api: アプリやその他サービスにAPIを公開
+      blocks: ブロックやミュートの種類は豊富
+      characters: 1投稿は500文字まで可能
+      chronology: 時系列に沿ったタイムライン
+      ethics: 広告も行動追跡もなく、プライバシーにも配慮
+      gifv: GIFVや短い動画にも対応
+      privacy: 細かく投稿ごとに公開範囲が設定可能
+      public: 公開タイムライン
+    features_headline: Mastodonの特徴
+    get_started: 始める
+    links: リンク
+    other_instances: 他のサーバー
+    source_code: ソースコード
+    status_count_after: トゥート
+    status_count_before: トゥート数
+    terms: 規約
+    user_count_after: 人
+    user_count_before: ユーザー数
+  accounts:
+    follow: フォロー
+    followers: フォロワー
+    following: フォロー中
+    nothing_here: 何もありません
+    people_followed_by: '%{name}さんをフォロー中のアカウント'
+    people_who_follow: '%{name}さんがフォロー中のアカウント'
+    posts: 投稿
+    remote_follow: リモートフォロー
+    unfollow: フォロー解除
+  application_mailer:
+    settings: 'メール設定の変更: %{link}'
+    signature: 'Mastodon %{instance}サーバーからの通知'
+    view: 'View:'
+  applications:
+    invalid_url: URLが無効です
+  auth:
+    change_password: 資格情報
+    didnt_get_confirmation: 確認メールを受信できませんか?
+    forgot_password: パスワードをお忘れですか?
+    login: ログイン
+    logout: ログアウト
+    register: サインアップ
+    resend_confirmation: 確認メールを再送する
+    reset_password: パスワード再発行
+    set_new_password: 新しいパスワード
+  authorize_follow:
+    error: 残念ながら、リモートアカウントにエラーが発生しました。
+    follow: フォロー
+    prompt_html: 'あなた (<strong>%{self}</strong>) は以下のアカウントのフォローをリクエストしました:'
+    title: '%{acct}をフォロー'
+  datetime:
+    distance_in_words:
+      about_x_hours: "%{count}時間"
+      about_x_months: "%{count}月"
+      about_x_years: "%{count}年"
+      almost_x_years: "%{count}年"
+      half_a_minute: 今
+      less_than_x_minutes: "%{count}分"
+      less_than_x_seconds: 今
+      over_x_years: "%{count}年"
+      x_days: "%{count}日"
+      x_minutes: "%{count}分"
+      x_months: "%{count}月"
+      x_seconds: "%{count}秒"
+  exports:
+    blocks: ブロック
+    csv: CSV
+    follows: フォロー
+    storage: メディア
+  generic:
+    changes_saved_msg: 正常に変更されました
+    powered_by: powered by %{link}
+    save_changes: 変更を保存
+    validation_errors:
+      one: エラーが発生しました。以下のエラーを確認してください
+      other: エラーが発生しました。以下の%{count}個のエラーを確認してください
+  imports:
+    preface: このサーバーのあなたのアカウントにフォロー、ブロック、などの他のサーバーからエクスポートされたファイルの情報をインポートできます。
+    success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください
+    types:
+      blocking: ブロック中のアカウントリスト
+      following: フォロー中のアカウントリスト
+    upload: アップロード
+  landing_strip_html: <strong>%{name}</strong>さんはサーバー<strong>%{domain}</strong>のユーザーです。アカウントさえ持っていればフォローしたり会話したりできます。もしお持ちでないなら<a href="%{sign_up_path}">こちら</a>からサインアップできます。
+  media_attachments:
+    validations:
+      images_and_video: 既に画像が追加されている場合動画を追加することはできません。
+      too_many: 追加できるファイルは4つまでです。
+  notification_mailer:
+    digest:
+      body: '%{instance}での最後のログインからの出来事:'
+      mention: "%{name}さんがあなたに返信しました:"
+      new_followers_summary:
+        one: 新たなフォロワーを獲得しました!
+        other: '%{count}人の新たなフォロワーを獲得しました!'
+      subject:
+        one: "新しい1つの通知 \U0001F418"
+        other: "新しい%{count}つの通知 \U0001F418"
+    favourite:
+      body: 'あなたのステータスが%{name}さんにいいねされました:'
+      subject: "%{name}さんがあなたのステータスをいいねしました"
+    follow:
+      body: "%{name}さんにフォローされています"
+      subject: "%{name}さんにフォローされています"
+    follow_request:
+      body: "%{name}さんがあなたにフォローをリクエストしました。"
+      subject: '%{name}さんからのフォローリクエスト'
+    mention:
+      body: '%{name}さんから返信がありました:'
+      subject: '%{name}さんに返信されました'
+    reblog:
+      body: 'あなたのステータスが%{name}さんにブーストされました:'
+      subject: "あなたのステータスが%{name}さんにブーストされました"
+  pagination:
+    next: 次
+    prev: 前
+  remote_follow:
+    acct: フォローしたい人の ユーザー名@ドメイン を入力してください
+    missing_resource: リダイレクト先が見つかりませんでした
+    proceed: フォローする
+    prompt: 'フォローしようとしています:'
+  settings:
+    authorized_apps: 認証済みアプリ
+    back: 戻る
+    edit_profile: プロフィール編集
+    export: データのエクスポート
+    import: データのインポート
+    preferences: ユーザー設定
+    settings: 設定
+    two_factor_auth: 二段階認証
+  statuses:
+    open_in_web: Webで開く
+    over_character_limit: '%{max}文字までしか入力できません'
+    show_more: もっと見る
+    visibilities:
+      private: フォロワーだけに見せる
+      public: 公開
+      unlisted: 公開されますが、公開タイムラインには載りません
+  stream_entries:
+    click_to_show: 見るにはクリック
+    reblogged: ブーストされました
+    sensitive_content: 不適切なコンテンツの可能性があります
+  time:
+    formats:
+      default: "%Y年%m月%d日 %H:%M"
+  two_factor_auth:
+    code_hint: 確認するには認証アプリで表示されたコードを入力してください
+    description_html: <strong>二段階認証</strong>を有効にするとログイン時、電話でコードを受け取る必要があります。
+    disable: 無効
+    enable: 有効
+    enabled_success: 二段階認証が有効になりました
+    instructions_html: "<strong>Google Authenticatorか、もしくはほかのTOTPアプリでこのQRコードをスキャンしてください。</strong>これ以降、ログインするときはそのアプリで生成されるコードが必要になります。"
+    manual_instructions: 'QRコードがスキャンできず、手動での登録を希望の場合はこのシークレットコードを利用してください。:'
+    setup: 初期設定
+    warning: 現在認証アプリを設定できない場合、無効に設定して、有効にしないでください。
+    wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していることを確認してください。
+  users:
+    invalid_email: メールアドレスが無効です
+    invalid_otp_token: 二段階認証コードが間違っています
+  will_paginate:
+    page_gap: "&hellip;"

+ 46 - 0
config/locales/simple_form.ja.yml

@@ -0,0 +1,46 @@
+---
+ja:
+  simple_form:
+    hints:
+      defaults:
+        avatar: PNGやGIF、JPGは2MBまでです。120x120pxまで縮小されます。
+        display_name: 名前は30文字まで設定することができます。
+        header: PNGやGIF、JPGは2MBまでです。 700x335pxまで縮小されます。
+        locked: フォロワーを手動で承認する必要があります。デフォルトでは投稿範囲はフォロワーまでです。
+        note: プロフィールは30文字まで設定することができます。
+      imports:
+        data: CSVファイルからデータをインポートしました。
+    labels:
+      defaults:
+        avatar: アカウント
+        confirm_new_password: 新しいパスワード(確認用)
+        confirm_password: 新しいパスワード
+        current_password: 現在のパスワード
+        data: データ
+        display_name: 表示名
+        email: メールアドレス
+        header: ヘッダー
+        locale: 言語
+        locked: 非公開アカウントにする
+        new_password: パスワード
+        note: プロフィール
+        otp_attempt: 二段階認証コード
+        password: パスワード
+        setting_default_privacy: 投稿範囲
+        type: インポートするファイルの種類
+        username: ユーザー名
+      interactions:
+        must_be_follower: フォロワー以外からの通知をブロック
+        must_be_following: フォローしていないユーザーからの通知をブロック
+      notification_emails:
+        digest: タイムラインからピックアップしてメールで通知する
+        favourite: いいねされた時メールで通知する
+        follow: フォローされた時メールで通知する
+        follow_request: フォローリクエストを受けた時メールで通知する
+        mention: 返信された時メールで通知する
+        reblog: あなたのトゥートがブーストされた時メールで通知する
+    'no': 'いいえ'
+    required:
+      mark: "*"
+      text: 必須
+    'yes': 'はい'