Просмотр исходного кода

i18n: Improve Japanese(ja) translations and formatting (#9064)

* Update Japanese admin translations

* Update Japanese API translations

* Update Japanese configuration translations

* Update Japanese feedback translations

* Update Japanese general translations

* Update Japanese index translations

* Update Japanese installer translations

* Update Japanese subscription translations

* Normalize punctuation in Japanese translations

* fix(i18n): Correct Japanese scraping item label

* fix(i18n): Improve Japanese translations

* fix(i18n): Refine Japanese translations

* fix(i18n): Clear resolved Japanese DIRTY markers

* fix(i18n): Resolve remaining Japanese DIRTY translations

* fix(i18n): Use Arabic numerals for Japanese months

* style(i18n): Fix Japanese translation indentation

* docs(credits): Add gshimo contributor

* make fix-all

---------

Co-authored-by: gshimo <gakushimodaila@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
gshimo 3 дней назад
Родитель
Сommit
9567dfc865
12 измененных файлов с 605 добавлено и 604 удалено
  1. 1 0
      CREDITS.md
  2. 1 1
      README.fr.md
  3. 1 1
      README.md
  4. 55 55
      app/i18n/ja/admin.php
  5. 11 11
      app/i18n/ja/api.php
  6. 127 127
      app/i18n/ja/conf.php
  7. 75 75
      app/i18n/ja/feedback.php
  8. 103 103
      app/i18n/ja/gen.php
  9. 41 41
      app/i18n/ja/index.php
  10. 57 57
      app/i18n/ja/install.php
  11. 115 115
      app/i18n/ja/sub.php
  12. 18 18
      app/i18n/ja/user.php

+ 1 - 0
CREDITS.md

@@ -112,6 +112,7 @@ People are sorted by name so please keep this order.
 * [Gregor Nathanael Meyer](https://github.com/spackmat): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:spackmat), [Web](https://der-meyer.de)
 * [GreyChame1eon](https://github.com/GreyChame1eon): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:GreyChame1eon)
 * [gsongsong](https://github.com/gsongsong): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:gsongsong)
+* [gshimo](https://github.com/gshimo): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:gshimo)
 * [Guilherme Gall](https://github.com/gmgall): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:gmgall), [Web](https://gmgall.net/)
 * [Guillaume Fillon](https://github.com/kokaz): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:kokaz), [Web](http://www.guillaume-fillon.com/)
 * [Guillaume Hayot](https://github.com/postblue): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:postblue), [Web](https://postblue.info/)

+ 1 - 1
README.fr.md

@@ -240,7 +240,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
 | Magyar (hu) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Bahasa Indonesia (id) | ■■■■■■■■・・ 89% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Italiano (it) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
-| 日本語 (ja) | ■■■■■■■■・・ 87% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
+| 日本語 (ja) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
 | 한국어 (ko) | ■■■■■■■■・・ 81% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Latviešu (lv) | ■■■■■■■■・・ 82% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Nederlands (nl) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 1 - 1
README.md

@@ -136,7 +136,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
 | Magyar (hu) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhu+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Bahasa Indonesia (id) | ■■■■■■■■・・ 89% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fid+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Italiano (it) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fit+%2F%28TODO%7CDIRTY%29%24%2F) |
-| 日本語 (ja) | ■■■■■■■■・・ 87% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
+| 日本語 (ja) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fja+%2F%28TODO%7CDIRTY%29%24%2F) |
 | 한국어 (ko) | ■■■■■■■■・・ 81% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fko+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Latviešu (lv) | ■■■■■■■■・・ 82% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Flv+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Nederlands (nl) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fnl+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 55 - 55
app/i18n/ja/admin.php

@@ -12,32 +12,32 @@
 
 return array(
 	'auth' => array(
-		'allow_anonymous' => 'デフォルトのユーザーの記事がログインしていないときでも読めるようにします。 (%s)',
-		'allow_anonymous_refresh' => '未ログインユーザーでも記事を更新できるようにします。',
-		'api_enabled' => '<abbr>API</abbr>アクセスを許可する <small>(モバイルアプリやユーザークエリの共有に必要)</small>',
-		'form' => 'ウェブフォーム (JavaScriptが必要です)',
-		'http' => 'HTTP (上級者向け: Webサーバー, OIDC, SSO等で管理します)',
-		'none' => 'なし (危険)',
+		'allow_anonymous' => 'ログインしていないユーザーにもデフォルトユーザー(%s)の記事の閲覧を許可する',
+		'allow_anonymous_refresh' => 'ログインしていないユーザーにも記事の更新を許可する',
+		'api_enabled' => '<abbr>API</abbr>アクセスを許可する<small>(モバイルアプリやユーザークエリの共有に必要)</small>',
+		'form' => 'ウェブフォーム(JavaScriptが必要です)',
+		'http' => 'HTTP(上級者向け:Webサーバー、OIDC、SSOなどで管理)',
+		'none' => 'なし(危険)',
 		'title' => '認証',
-		'token' => 'マスター認証用トークン',
-		'token_help' => 'ユーザーのすべての RSS 出力へのアクセスと、認証なしのフィード更新を許可します',
+		'token' => 'マスター認証用トークン',
+		'token_help' => 'ユーザーのすべてのRSS出力へのアクセスと、認証なしのフィード更新を許可します',
 		'type' => '認証メソッド',
 	),
 	'extensions' => array(
-		'author' => '作者',
-		'community' => 'コミュニティ製の拡張機能',
+		'author' => '作者',
+		'community' => '利用可能なコミュニティ拡張機能',
 		'description' => '説明',
 		'disabled' => '無効',
 		'empty_list' => 'インストールされている拡張機能はありません',
 		'empty_list_help' => '拡張機能リストが表示されない原因を特定するために、ログを確認してください。',
 		'enabled' => '有効',
-		'is_compatible' => 'Is compatible',	// TODO
+		'is_compatible' => '互換性あり',
 		'latest' => 'インストール済み',
 		'name' => '名前',
-		'no_configure_view' => 'この拡張機能は設定できません.',
+		'no_configure_view' => 'この拡張機能は設定できません',
 		'system' => array(
-			'_' => 'システム拡張機能',
-			'no_rights' => 'システムの拡張機能 (あなたは権限を所持していません',
+			'_' => 'システム拡張機能',
+			'no_rights' => 'システム拡張機能(必要な権限がありません)',
 		),
 		'title' => '拡張機能',
 		'update' => 'アップデート可能',
@@ -48,64 +48,64 @@ return array(
 		'_' => '統計',
 		'all_feeds' => 'すべてのフィード',
 		'category' => 'カテゴリ',
-		'date_published' => 'Publication date',	// TODO
-		'date_received' => 'Received date',	// TODO
+		'date_published' => '公開日ごと',
+		'date_received' => '受信日ごと',
 		'entry_count' => 'エントリの統計',
-		'entry_per_category' => 'カテゴリのエントリ',
-		'entry_per_day' => '日にちごとのエントリ (直近30日間)',
-		'entry_per_day_of_week' => '週あたり (平均: %.2f メッセージ)',
-		'entry_per_hour' => '時間当たり (平均: %.2f メッセージ)',
-		'entry_per_month' => '月あたり (平均: %.2f メッセージ)',
+		'entry_per_category' => 'カテゴリごとのエントリ',
+		'entry_per_day' => '日にちごとのエントリ(直近30日間)',
+		'entry_per_day_of_week' => '曜日ごと(平均エントリ:%.2f件)',
+		'entry_per_hour' => '時間ごと(平均エントリ:%.2f件)',
+		'entry_per_month' => '月ごと(平均エントリ:%.2f件)',
 		'entry_repartition' => 'エントリの割合',
 		'feed' => 'フィード',
 		'feed_per_category' => 'カテゴリごとのフィード',
 		'idle' => '休止中のフィード',
 		'main' => '主な統計',
-		'main_stream' => '主なストリーム',
-		'nb_unreads' => 'Number of unread articles',	// TODO
-		'no_idle' => '休止中のフィードはありません!',
+		'main_stream' => 'メインストリーム',
+		'nb_unreads' => '未読記事数',
+		'no_idle' => '休止中のフィードはありません',
 		'number_entries' => '%d 記事',
 		'overview' => '概要',
-		'percent_of_total' => '% 総計',
-		'repartition' => '記事の割合: %s',
+		'percent_of_total' => '割合(%)',
+		'repartition' => '記事の分布:%s',
 		'status_favorites' => 'お気に入り',
 		'status_read' => '既読',
 		'status_total' => 'すべて',
 		'status_unread' => '未読',
 		'title' => '統計',
-		'top_feed' => '上位10位のフィード',
-		'unread_dates' => 'Dates with most unread articles',	// TODO
+		'top_feed' => '上位10フィード',
+		'unread_dates' => '未読記事数が多い日付',
 	),
 	'system' => array(
 		'_' => 'システム設定',
-		'auto-update-url' => '自動アップグレードするサーバーのURL',
+		'auto-update-url' => '自動更新サーバーのURL',
 		'base-url' => array(
 			'_' => 'ベースURL',
-			'recommendation' => '自動的に推薦: <kbd>%s</kbd>',
+			'recommendation' => '自動検出された推奨URL:<kbd>%s</kbd>',
 		),
-		'closed_registration_message' => 'Message if registrations are closed',	// TODO
+		'closed_registration_message' => '新規でユーザー登録できない時のメッセージ',
 		'cookie-duration' => array(
 			'help' => '秒',
 			'number' => 'ログイン状態維持時間',
 		),
-		'default_closed_registration_message' => 'This server does not accept new registrations at the moment.',	// TODO
-		'force_email_validation' => 'Eメールアドレスの検証を強制します',
+		'default_closed_registration_message' => '現在新しいユーザー登録を受け付けていません。',
+		'force_email_validation' => 'メールアドレスの確認を必須にします。',
 		'instance-name' => 'インスタンス名',
 		'internal-host-allowlist' => array(
-			'_' => 'Internal host allowlist',	// TODO
-			'help' => 'One entry per line:<ul><li>A <code>host:port</code>. For instance <code>127.0.0.1:8080</code> or <code>rss-bridge:80</code></li><li>A CIDR notation. For instance <code>0.0.0.0/0</code> to allow any IPv4, <code>::/0</code> to allow any IPv6</li><li>A <code>*</code> to allow any host (unsafe)</li></ul>',	// TODO
+			'_' => '内部ホストの許可リスト',
+			'help' => '1行につき1件を指定します:<ul><li><code>host:port</code>形式。例:<code>127.0.0.1:8080</code>、<code>rss-bridge:80</code></li><li>CIDR表記。例:すべてのIPv4アドレスを許可する<code>0.0.0.0/0</code>、すべてのIPv6アドレスを許可する<code>::/0</code></li><li>すべてのホストを許可する<code>*</code>(非推奨)</li></ul>',
 		),
-		'max-categories' => '1ユーザーごとのカテゴリの最大値',
-		'max-feeds' => '1ユーザーごとのフィードの最大値',
-		'override-by-env-var' => 'This setting is set by the environment variable <kbd>%s</kbd>.',	// TODO
+		'max-categories' => 'ユーザーごとの最大カテゴリ数',
+		'max-feeds' => 'ユーザーごとの最大フィード数',
+		'override-by-env-var' => '<kbd>%s</kbd> は環境変数によって上書きされます',
 		'registration' => array(
-			'number' => 'アカウントの最大値',
+			'number' => 'アカウント数の上限',
 			'select' => array(
 				'label' => '登録フォーム',
 				'option' => array(
-					'noform' => '無効: 登録されたフォームはありません',
-					'nolimit' => '有効: アカウントの上限はありません',
-					'setaccountsnumber' => 'アカウントの上限数に達しました',
+					'noform' => '無効:登録フォームはありません',
+					'nolimit' => '有効アカウントの上限はありません',
+					'setaccountsnumber' => '有効:アカウントの上限を設定',
 				),
 			),
 			'status' => array(
@@ -116,8 +116,8 @@ return array(
 		),
 		'sensitive-parameter' => 'センシティブなパラメーターです。<kbd>./data/config.php</kbd> を手動で編集してください',
 		'tos' => array(
-			'disabled' => '無効',
-			'enabled' => '<a href="./?a=tos">有効</a>',
+			'disabled' => '無効',
+			'enabled' => '<a href="./?a=tos">有効</a>',
 			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">利用規約を有効にする方法</a>',
 		),
 		'websub' => array(
@@ -129,18 +129,18 @@ return array(
 		'apply' => '適用',
 		'changelog' => '変更履歴',
 		'check' => 'アップデートを確認する',
-		'copiedFromURL' => 'update.php  %s から ./data にコピーされました。',
+		'copiedFromURL' => 'update.phpが%sから./dataにコピーされました。',
 		'current_version' => '現在のバージョン',
-		'last' => '最近の検証',
+		'last' => '前回の確認',
 		'loading' => '更新中…',
 		'none' => '更新を適用できません',
 		'releaseChannel' => array(
 			'_' => 'リリースチャンネル',
-			'edge' => 'ローリングリリース (“edge”)',
-			'latest' => '安定版リリース (“latest”)',
+			'edge' => 'ローリングリリース(edge)',
+			'latest' => '安定版リリース(latest)',
 		),
 		'title' => 'アップデートシステム',
-		'viaGit' => 'gitとGitHub.comによるアップデートを開始',
+		'viaGit' => 'gitおよびGitHub.com経由でアップデートを開始しました。',
 	),
 	'user' => array(
 		'admin' => '管理者',
@@ -148,18 +148,18 @@ return array(
 		'back_to_manage' => '← ユーザーリストに戻る',
 		'create' => '新規ユーザーを作成',
 		'database_size' => 'データベースサイズ',
-		'email' => 'Eメールアドレス',
+		'email' => 'メールアドレス',
 		'enabled' => '有効',
 		'feed_count' => 'フィード',
 		'is_admin' => '管理者',
 		'language' => '言語',
 		'last_user_activity' => '最近のユーザーアクティビティ',
 		'list' => 'ユーザーリスト',
-		'number' => '%d 人のアカウントがあります',
-		'numbers' => '%d 人のアカウントが作られました',
-		'password_form' => 'パスワード<br /><small>(Web-formログインメソッド)</small>',
-		'password_format' => '最低限7文字必要です',
-		'title' => '管理するユーザー',
+		'number' => '%d件のアカウントが作成されています。',
+		'numbers' => '%d件のアカウントが作成されています。',
+		'password_form' => 'パスワード<br /><small>(Webフォームログイン用)</small>',
+		'password_format' => '7文字以上必要です',
+		'title' => 'ユーザー管理',
 		'username' => 'ユーザー名',
 	),
 );

+ 11 - 11
app/i18n/ja/api.php

@@ -12,22 +12,22 @@
 
 return array(
 	'information' => array(
-		'address' => 'Your API address:',	// TODO
+		'address' => 'APIアドレス:',
 		'output' => array(
-			'encoding-support' => '⚠️ WARN: no <code>%2F</code> support, some clients might not work!',	// TODO
-			'invalid-configuration' => '⚠️ WARN: Probable invalid base URL in ./data/config.php',	// TODO
-			'pass' => '✔️ PASS',	// TODO
-			'unknown-error' => '❌ ',	// TODO
+			'encoding-support' => '⚠️ 警告:<code>%2F</code>に対応していないため、一部のクライアントが動作しない可能性があります',
+			'invalid-configuration' => '⚠️ 警告:<code>./data/config.php</code>内のベースURLが無効な可能性があります。',
+			'pass' => '✔️ 成功',
+			'unknown-error' => '❌ エラー:',
 		),
 		'test' => array(
-			'fever' => 'Fever API configuration test:',	// TODO
-			'greader' => 'Google Reader API configuration test:',	// TODO
+			'fever' => 'Fever API設定テスト:',
+			'greader' => 'Google Reader API設定テスト:',
 		),
 		'title' => array(
-			'_' => 'FreshRSS API endpoints',	// TODO
-			'extension' => 'API for extensions',	// TODO
-			'fever' => 'Fever compatible API',	// TODO
-			'greader' => 'Google Reader compatible API',	// TODO
+			'_' => 'FreshRSS APIエンドポイント',
+			'extension' => '拡張機能向けAPI',
+			'fever' => 'Fever互換API',
+			'greader' => 'Google Reader互換API',
 		),
 	),
 );

+ 127 - 127
app/i18n/ja/conf.php

@@ -13,56 +13,56 @@
 return array(
 	'archiving' => array(
 		'_' => 'アーカイブ',
-		'exception' => '例外を除く',
-		'help' => '個々のフィード設定内で、より多くの設定をしていただけます。',
+		'exception' => '削除対象外',
+		'help' => '個別のフィード内設定で、より詳細な設定ができます。',
 		'keep_favourites' => 'お気に入りを消去しない',
 		'keep_labels' => 'ラベルを消去しない',
-		'keep_max' => '各フィードに残す記事の最大数',
-		'keep_min_by_feed' => '各フィードに残す記事の最小数',
-		'keep_period' => '記事を残す最大時間',
+		'keep_max' => '各フィードに保存する記事数の上限',
+		'keep_min_by_feed' => '各フィードに保存する記事数の下限',
+		'keep_period' => '記事を保存する最長期間',
 		'keep_unreads' => '未読の記事を消去しない',
 		'maintenance' => 'メンテナンス',
-		'optimize' => 'データベースを整理する',
-		'optimize_help' => 'データベースサイズを減らすため、時々実行されます',
+		'optimize' => 'データベースを整理',
+		'optimize_help' => 'データベース容量を削減するため、定期的に実行してください。',
 		'policy' => '不要なデータを削除する',
-		'policy_warning' => 'すべての記事が、不要なデータを削除する設定がなされてないときは保存されます。',
+		'policy_warning' => '削除ポリシーを選択しない場合、すべての記事が保存されます。',
 		'purge_now' => '不要なデータをまとめて削除する',
 		'title' => 'アーカイブ',
-		'ttl' => '自動的に更新される時間',
+		'ttl' => '自動更新する間隔',
 	),
 	'display' => array(
 		'_' => '表示',
 		'darkMode' => array(
 			'_' => '自動ダークモード',
-			'auto' => '自動',
-			'help' => '対応するテーマのみ',
+			'auto' => '有効',
+			'help' => '対応テーマのみ',
 			'no' => '無効',
 		),
 		'icon' => array(
-			'bottom_line' => '行の下部',
+			'bottom_line' => '下段',
 			'display_authors' => '著者',
-			'entry' => '記事アイコン',
-			'publication_date' => '出版された日',
-			'related_tags' => '記事のタグ',
+			'entry' => '記事アイコン',
+			'publication_date' => '公開日時',
+			'related_tags' => 'タグ',
 			'sharing' => '共有',
 			'summary' => '要約',
-			'top_line' => '行の先頭',
+			'top_line' => '上段',
 		),
 		'language' => '言語',
 		'notif_html5' => array(
-			'seconds' => '秒 (0秒だとタイムアウトしません)',
-			'timeout' => 'HTML5通知タイムアウト時間',
+			'seconds' => '秒(0秒だとタイムアウトしません)',
+			'timeout' => 'HTML5通知タイムアウト時間',
 		),
-		'show_nav_buttons' => 'ナビゲーションボタンを表示する',
-		'show_title_unread' => 'タイトルに未読記事数を表示',
+		'show_nav_buttons' => 'ナビゲーションボタンを表示',
+		'show_title_unread' => 'タイトルに未読記事数を表示',
 		'show_unread_count' => array(
-			'_' => 'Show unread counts in sidebar',	// TODO
-			'all' => 'For all categories and feeds',	// TODO
-			'important' => 'For important feeds only',	// TODO
-			'important_locked' => 'Important feeds always show their unread count.',	// TODO
-			'none' => 'Never',	// TODO
+			'_' => 'サイドバーに未読記事数を表示',
+			'all' => 'すべてのカテゴリとフィード',
+			'important' => '重要なフィードのみ',
+			'important_locked' => '重要なフィードでは未読記事数が常に表示されます。',
+			'none' => '表示しない',
 		),
-		'sidebar_hidden_by_default' => 'Hide sidebar by default',	// TODO
+		'sidebar_hidden_by_default' => 'デフォルトでサイドバーを非表示',
 		'theme' => array(
 			'_' => 'テーマ',
 			'deprecated' => array(
@@ -70,7 +70,7 @@ return array(
 				'description' => 'このテーマのサポートは終了しており、<a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">FreshRSSの将来のリリース</a>では利用できなくなります。',
 			),
 		),
-		'theme_not_available' => 'テーマ“%s”はご利用いただけません。他のテーマをお選びください。',
+		'theme_not_available' => 'テーマ「%s」は利用できません。他のテーマを選択してください。',
 		'thumbnail' => array(
 			'label' => 'サムネイル',
 			'landscape' => 'ランドスケープ',
@@ -79,7 +79,7 @@ return array(
 			'square' => '四角',
 		),
 		'timezone' => 'タイムゾーン',
-		'title' => 'ディスプレイ',
+		'title' => '表示',
 		'website' => array(
 			'full' => 'アイコンと名前',
 			'icon' => 'アイコンのみ',
@@ -109,66 +109,66 @@ return array(
 		),
 	),
 	'mark_read_button' => array(
-		'_' => '“すべてに既読を付ける” button',	// DIRTY
-		'big' => 'Big',	// TODO
-		'none' => 'None',	// TODO
-		'small' => 'Small',	// TODO
+		'_' => '「すべて既読にする」ボタン',
+		'big' => '大',
+		'none' => 'なし',
+		'small' => '小',
 	),
 	'notification' => array(
-		'html5_enable_notif' => 'Enable notification',	// TODO
+		'html5_enable_notif' => '通知を有効にする',
 	),
 	'notification_timeout' => array(
 		'bad' => array(
-			'label' => 'Show warning banner',	// TODO
-			'seconds' => 'seconds (at least 1)',	// TODO
+			'label' => '警告バナーの表示時間',
+			'seconds' => '秒(1以上)',
 		),
 		'good' => array(
-			'label' => 'Show acknowledgement banner',	// TODO
-			'seconds' => 'seconds (0 means not shown)',	// TODO
+			'label' => '確認バナーの表示時間',
+			'seconds' => '秒(0で非表示)',
 		),
 	),
 	'privacy' => array(
 		'_' => 'プライバシー',
 		'retrieve_extension_list' => '拡張機能リストを取得する',
-		'send_referrer_allowlist' => 'Sites allowed to see your server address (%s)',	// TODO
+		'send_referrer_allowlist' => 'サーバーアドレスの送信を許可するサイト(%s)',
 	),
 	'profile' => array(
 		'_' => 'プロフィール',
 		'api' => array(
 			'_' => 'API管理',
-			'api_not_set' => 'API password not set',	// TODO
-			'api_set' => 'API password set',	// TODO
-			'check_link' => 'APIステータスを確認する: <kbd><a href="../api/" target="_blank">%s</a></kbd>',
+			'api_not_set' => 'APIパスワード未設定',
+			'api_set' => 'APIパスワード設定済み',
+			'check_link' => 'APIステータスを確認する<kbd><a href="../api/" target="_blank">%s</a></kbd>',
 			'disabled' => 'APIアクセスは無効です。',
-			'documentation_link' => '既知のアプリの一覧は<a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">ドキュメント</a>を参照してください',
-			'help' => '<a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>ドキュメント</a>を参照します',
-			'security_warning' => 'Use HTTPS. The API password is transmitted in clear text and may appear in server logs if sent via GET.',	// TODO
+			'documentation_link' => '<a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">ドキュメントと既知のアプリ一覧</a>を参照してください',
+			'help' => '<a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">ドキュメント</a>を参照してください',
+			'security_warning' => 'HTTPSを使用してください。APIパスワードは平文で送信され、GETで送信した場合はサーバーログに記録される可能性があります。',
 		),
-		'change_password' => 'Change password',	// TODO
-		'confirm_new_password' => 'Confirm new password',	// TODO
-		'current_password' => 'Current password<br /><small>(for the Web-form login method)</small>',	// TODO
+		'change_password' => 'パスワードを変更',
+		'confirm_new_password' => '新しいパスワード(確認)',
+		'current_password' => '現在のパスワード<br /><small>(Webフォームログイン用)</small>',
 		'delete' => array(
-			'_' => 'アカウント消去',
-			'warn' => 'あなたのアカウントとそれに関連したデータが消去されます。',
+			'_' => 'アカウント削除',
+			'warn' => 'このアカウントと関連データが削除されます。',
 		),
-		'email' => 'Eメールアドレス',
-		'new_password' => 'New password',	// TODO
-		'password_api' => 'APIのパスワード<br /><small>(モバイルアプリなど)</small>',
-		'password_format' => '最低7文字必要です',
+		'email' => 'メールアドレス',
+		'new_password' => '新しいパスワード',
+		'password_api' => 'APIのパスワード<br /><small>(モバイルアプリなどで必要)</small>',
+		'password_format' => '7文字以上必要です',
 		'title' => 'プロフィール',
 	),
 	'query' => array(
 		'_' => 'ユーザークエリ',
-		'create' => 'Create new user query',	// TODO
+		'create' => '新しいユーザークエリを作成',
 		'deprecated' => 'このクエリは有効ではありません。参照されているカテゴリやフィードはすでに消去されました。',
 		'description' => '説明',
 		'filter' => array(
-			'_' => 'フィルターを適用:',
+			'_' => 'フィルターを適用',
 			'categories' => 'カテゴリごとに表示する',
 			'feeds' => 'フィードごとに表示する',
 			'order' => '日付ごとにソートする',
-			'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS',	// TODO
-			'search' => '式',
+			'publish_labels_instead_of_tags' => '共有RSSでは<i>フィードタグ</i>の代わりに<i>ユーザーラベル</i>を使用する',
+			'search' => '検索式',
 			'shareOpml' => 'カテゴリとフィードのOPMLによる共有を有効にする',
 			'shareRss' => 'HTMLとRSSによる共有を有効にする',
 			'state' => '状態',
@@ -178,12 +178,12 @@ return array(
 		'get_A' => 'カテゴリで表示するものも含め、すべてのフィードを表示する',
 		'get_Z' => 'アーカイブも含め、すべてのフィードを表示する',
 		'get_all' => 'すべての記事を表示する',
-		'get_all_labels' => '任意のラベルで記事を表示する',
-		'get_category' => 'カテゴリ“%s”を表示する',
+		'get_all_labels' => 'いずれかのラベルが付いた記事を表示する',
+		'get_category' => 'カテゴリ「%s」を表示する',
 		'get_favorite' => 'お気に入りの記事を表示する',
-		'get_feed' => 'フィード“%s”を表示する',
+		'get_feed' => 'フィード「%s」を表示する',
 		'get_important' => '重要なフィードからの記事を表示する',
-		'get_label' => 'ラベル“%s”の記事を表示する',
+		'get_label' => 'ラベル「%s」が付いた記事を表示する',
 		'help' => 'HTML/RSS/OPMLによるユーザークエリと再共有については <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">こちら</a>をご覧ください',
 		'image_url' => '画像のURL',
 		'name' => '名前',
@@ -192,10 +192,10 @@ return array(
 			'_' => 'まだユーザークエリは保存されていません。',
 			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">ドキュメント</a>を参照してください',
 		),
-		'number' => 'クエリ %d',
+		'number' => 'クエリ No. %d',
 		'order_asc' => '古い記事を最初に表示する',
 		'order_desc' => '新しい記事を最初に表示する',
-		'search' => '“%s”で検索する',
+		'search' => '「%s」で検索する',
 		'share' => array(
 			'_' => 'このクエリをリンクで共有する',
 			'disabled' => array(
@@ -203,52 +203,52 @@ return array(
 				'title' => '共有',
 			),
 			'greader' => 'GReader用JSONファイルへの共有リンク',
-			'help' => 'このクエリを誰かと共有したい場合は、このリンクを提供してください',
+			'help' => 'このクエリを誰かと共有したい場合は、このリンクを共有してください',
 			'html' => 'HTMLページへの共有リンク',
 			'opml' => 'フィードのOPMLリストへの共有リンク',
 			'rss' => 'RSSフィードへの共有リンク',
 		),
-		'state_0' => 'すべての記事を表示する',
-		'state_1' => '既読の記事を表示する',
-		'state_2' => '未読の記事を表示する',
-		'state_3' => 'すべての記事を表示する',
-		'state_4' => 'お気に入りの記事を表示する',
-		'state_5' => 'お気に入りの既読の記事を表示する',
-		'state_6' => 'お気に入りの未読の記事を表示する',
-		'state_7' => 'お気に入りの記事を表示する',
-		'state_8' => 'お気に入りでない記事を表示する',
-		'state_9' => 'お気に入りでない既読の記事を表示する',
-		'state_10' => 'お気に入りでない未読の記事を表示する',
-		'state_11' => 'お気に入りでない記事を表示する',
-		'state_12' => 'すべての記事を表示する',
-		'state_13' => 'すべての既読の記事を表示する',
-		'state_14' => '未読の記事を表示する',
-		'state_15' => 'すべての記事を表示する',
+		'state_0' => 'すべての記事を表示',
+		'state_1' => '既読の記事を表示',
+		'state_2' => '未読の記事を表示',
+		'state_3' => 'すべての記事を表示',
+		'state_4' => 'お気に入りの記事を表示',
+		'state_5' => 'お気に入りの既読の記事を表示',
+		'state_6' => 'お気に入りの未読の記事を表示',
+		'state_7' => 'お気に入りの記事を表示',
+		'state_8' => 'お気に入りでない記事を表示',
+		'state_9' => 'お気に入りでない既読の記事を表示',
+		'state_10' => 'お気に入りでない未読の記事を表示',
+		'state_11' => 'お気に入りでない記事を表示',
+		'state_12' => 'すべての記事を表示',
+		'state_13' => 'すべての既読の記事を表示',
+		'state_14' => '未読の記事を表示',
+		'state_15' => 'すべての記事を表示',
 		'title' => 'ユーザークエリ',
 	),
 	'reading' => array(
-		'_' => 'リーディング',
-		'after_onread' => '“すべてに既読を付ける”を押した後,',
+		'_' => '閲覧',
+		'after_onread' => '「すべて既読にする」の実行後、',
 		'always_show_favorites' => 'デフォルトですべてのお気に入りの記事を表示する',
 		'apply_to_individual_feed' => '個々のフィードに適用する',
 		'article' => array(
 			'authors_date' => array(
-				'_' => '著者と日',
+				'_' => '著者と日',
 				'both' => 'ヘッダーとフッター',
 				'footer' => 'フッター',
 				'header' => 'ヘッダー',
 				'none' => 'なし',
 			),
 			'feed_name' => array(
-				'above_title' => '上のタイトル/タグ',
+				'above_title' => 'タイトルとタグの上',
 				'none' => 'なし',
-				'with_authors' => '著者と日付の行',
+				'with_authors' => '著者と日時の隣',
 			),
-			'feed_title' => 'フィードのタイトル',
+			'feed_title' => 'フィード',
 			'icons' => array(
-				'_' => '記事アイコンの位置<br /><small>(リーディングビューのみ)</small>',
+				'_' => '記事アイコンの位置<br /><small>(リーディングビューのみ)</small>',
 				'above_title' => 'タイトルの上',
-				'with_authors' => '著者と日付の行',
+				'with_authors' => '著者と日時の隣',
 			),
 			'tags' => array(
 				'_' => 'タグ',
@@ -258,41 +258,41 @@ return array(
 				'none' => 'なし',
 			),
 			'tags_max' => array(
-				'_' => '表示されるタグの数の上限',
+				'_' => '表示るタグの数の上限',
 				'help' => '0に設定すると、折りたたまずにすべてのタグを表示します。',
 			),
 		),
-		'articles_per_page' => '1ページたりの記事の数',
-		'auto_load_more' => 'ページの下にもっと記事を読み込む',
+		'articles_per_page' => '1ページたりの記事の数',
+		'auto_load_more' => 'ページ下部で記事をさらに読み込む',
 		'auto_remove_article' => '記事を読んだら非表示にする',
-		'confirm_enabled' => '“すべてに既読を付ける” を押したとき確認ダイアログを表示する',
-		'display_articles_unfolded' => 'デフォルトで未分類の記事を表示する',
+		'confirm_enabled' => '既読を付けるボタンを押したとき確認ダイアログを表示する',
+		'display_articles_unfolded' => 'デフォルトで記事を展開する',
 		'display_categories_unfolded' => '展開するカテゴリ',
 		'headline' => array(
-			'articles' => '記事: 開く/閉じる',
-			'articles_header_footer' => '記事: ヘッダー/フッター',
-			'categories' => '左のナビゲーション: カテゴリ',
+			'articles' => '記事開く/閉じる',
+			'articles_header_footer' => '記事ヘッダー/フッター',
+			'categories' => '左のナビゲーションカテゴリ',
 			'mark_as_read' => 'チェックをつけた記事を既読にする',
 			'misc' => 'その他',
 			'view' => 'ビュー',
 		),
-		'hide_read_feeds' => 'カテゴリを非表示 & 未読の記事がないフィード ("すべてに既読を付ける”では適用しません)',
-		'img_with_lazyload' => '<em>lazy load</em>を写真の読み込み時に使う',
-		'jump_next' => '次の未読の姉妹記事へ移る',
+		'hide_read_feeds' => '未読記事のないカテゴリとフィードを非表示(「すべての記事を表示」設定では機能しません)',
+		'img_with_lazyload' => '画像の読み込みに<em>lazy load</em>を使用する',
+		'jump_next' => '次の未読記事へ移動する',
 		'mark_updated_article_unread' => '更新された記事を未読とする',
-		'number_divided_when_reader' => 'リーディングビューを2分割する',
+		'number_divided_when_reader' => 'リーディングビューでは記事数を2分の1にする',
 		'read' => array(
 			'article_open_on_website' => '記事を元のWebサイトで開いたとき',
 			'article_viewed' => '記事を読んだとき',
-			'focus' => 'フォーカスしたとき (重要なフィードを除く)',
+			'focus' => 'フォーカスしたとき(重要なフィードを除く)',
 			'keep_max_n_unread' => '未読の記事として残す最大数',
-			'scroll' => 'スクロールしているとき (重要なフィードを除く)',
+			'scroll' => 'スクロールしているとき(重要なフィードを除く)',
 			'upon_gone' => 'ニュースフィードの提供元がなくなったとき',
 			'upon_reception' => '記事を受け取ったとき',
 			'when' => '記事を既読にする…',
-			'when_same_guid_in_category' => 'if an identical GUID already exists in the top <i>n</i> newest articles of the category',	// TODO
-			'when_same_title_in_category' => 'すでに同一タイトルがカテゴリ内上位<i>n</i>件の最新記事に存在するとき',
-			'when_same_title_in_feed' => 'すでに同一タイトルがフィード内上位<i>n</i>件の最新記事に存在するとき',
+			'when_same_guid_in_category' => 'カテゴリの最新記事上位<i>n</i>件に同一のGUIDを持つ記事が存在する場合',
+			'when_same_title_in_category' => 'カテゴリの最新記事上位<i>n</i>件に同一タイトルの記事が存在する場合',
+			'when_same_title_in_feed' => 'フィードの最新記事上位<i>n</i>件に同一タイトルの記事が存在する場合',
 		),
 		'show' => array(
 			'_' => '記事を表示する',
@@ -306,14 +306,14 @@ return array(
 			'unread_or_favorite' => '未読とお気に入りを表示する',
 		),
 		'show_fav_unread_help' => 'ラベルも適用する',
-		'sides_close_article' => '記事の外をクリックすると記事を閉じるようにする',
+		'sides_close_article' => '記事本文の外側をクリックしたときに記事を閉じる',
 		'star' => array(
 			'when' => '記事をお気に入りに登録する。',
 		),
-		'sticky_post' => '開いたときにトップを記事にする',
-		'sticky_sort' => 'ナビゲーション中も手動の並び順を保持する',	// DIRTY
-		'sticky_sort_help' => '最後に指定した手動の並び順を保持するか、各カテゴリーやフィードが常に独自の既定または全体設定を使用するかを決めます。',	// DIRTY
-		'title' => 'リーディング',
+		'sticky_post' => '開いた記事を先頭固定する',
+		'sticky_sort' => 'ナビゲーション中も手動の並び順を保持する',
+		'sticky_sort_help' => '最後に指定した並べ替え順を保持するか、カテゴリやフィードごとに既定または全体設定の並べ替え順を使用するかを指定します。',
+		'title' => '閲覧',
 		'view' => array(
 			'default' => 'デフォルトビュー',
 			'global' => 'グローバルビュー',
@@ -323,19 +323,19 @@ return array(
 	),
 	'sharing' => array(
 		'_' => '共有',
-		'add' => '共有方法を追加する',
+		'add' => '共有先を追加',
 		'bluesky' => 'Bluesky',	// IGNORE
 		'deprecated' => 'このサービスは非推奨でFreshRSSの<a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="Open documentation for more information" target="_blank">将来のリリース</a>から削除される予定です。',
 		'diaspora' => 'Diaspora*',	// IGNORE
-		'email' => 'Eメール',
+		'email' => 'メール',
 		'facebook' => 'Facebook',	// IGNORE
-		'more_information' => 'もっと多くの情報',
-		'print' => '印刷',	// IGNORE
+		'more_information' => '詳細',
+		'print' => '印刷',
 		'raindrop' => 'Raindrop.io',	// IGNORE
-		'remove' => '共有方法を削除する',
+		'remove' => '共有を削除する',
 		'shaarli' => 'Shaarli',	// IGNORE
-		'share_name' => '共有する方法',
-		'share_url' => 'URLを共有する',
+		'share_name' => '共有',
+		'share_url' => '共有URL',
 		'title' => '共有',
 		'twitter' => 'X (Twitter)',	// IGNORE
 		'wallabag' => 'wallabag',	// IGNORE
@@ -344,15 +344,15 @@ return array(
 		'_' => 'ショートカット',
 		'article_action' => '記事のアクション',
 		'auto_share' => '共有',
-		'auto_share_help' => '共有方法が一つしか設定されていないときにはそれが使われます。そうではなければ、番号によって共有方法にアクセスできます。',
+		'auto_share_help' => '共有方法が1つだけ設定されている場合はそれを使用します。複数ある場合は番号で選択します。',
 		'close_menus' => 'メニューを閉じる',
 		'collapse_article' => '折りたたむ',
 		'first_article' => '初めの記事を開く',
-		'focus_search' => '検索ボックスにアクセスする',
+		'focus_search' => '検索ボックスにフォーカスする',
 		'global_view' => 'グローバルビューに変更する',
 		'help' => 'ドキュメントを表示する',
 		'javascript' => 'JavaScriptはショートカットを使うときに必要です',
-		'last_article' => '最近の記事を表示する',
+		'last_article' => '最後の記事を開く',
 		'load_more' => 'もっと記事を読み込む',
 		'mark_favorite' => 'お気に入りを切り替える',
 		'mark_read' => '既読/未読を切り替える',
@@ -361,10 +361,10 @@ return array(
 		'navigation_no_mod_help' => '以下のナビゲーションショートカットは、修飾キーをサポートしません。',
 		'next_article' => '次の記事を開く',
 		'next_unread_article' => '次の未読の記事を開く',
-		'non_standard' => '(<kbd>%s</kbd>)のキーはショートカットにはなりません。',
+		'non_standard' => '一部のキー(<kbd>%s</kbd>)はショートカットとして機能しない場合があります。',
 		'normal_view' => 'ノーマルビューに切り替える',
 		'other_action' => 'ほかのアクション',
-		'previous_article' => '前の記事を表示する',
+		'previous_article' => '前の記事を開く',
 		'reading_view' => 'リーディングビューに切り替える',
 		'rss_view' => 'RSSフィードとして開く',
 		'see_on_website' => '元のWebサイトを開く',
@@ -372,16 +372,16 @@ return array(
 		'skip_next_article' => '次の記事を開かずにフォーカスする',
 		'skip_previous_article' => '前の記事を開かずにフォーカスする',
 		'title' => 'ショートカット',
-		'toggle_aside' => 'Toggle sidebar',	// TODO
-		'toggle_media' => 'メディアの 再生/停止',
+		'toggle_aside' => 'サイドバーの表示/非表示を切り替える',
+		'toggle_media' => 'メディアを再生/一時停止する',
 		'user_filter' => 'ユーザークエリにアクセスする',
-		'user_filter_help' => 'ユーザークエリが一つしかなければ、それを使う。そうではなければ、番号でクエリを選択する。',
+		'user_filter_help' => 'ユーザークエリが1件だけの場合はそれを使用し、複数ある場合は番号で選択します。',
 		'views' => 'ビュー',
 	),
 	'user' => array(
-		'articles_and_size' => '%s 記事 (%s)',
+		'articles_and_size' => '%s件の記事(%s)',
 		'current' => '現在のユーザー',
-		'is_admin' => 'は管理者です',
+		'is_admin' => '管理者権限',
 		'users' => 'ユーザー',
 	),
 );

+ 75 - 75
app/i18n/ja/feedback.php

@@ -13,140 +13,140 @@
 return array(
 	'access' => array(
 		'denied' => 'このページにアクセスする権限がありません。',
-		'not_found' => 'お探しのページは見つかりません。',
+		'not_found' => 'お探しのページは見つかりませんでした。',
 	),
 	'admin' => array(
 		'optimization_complete' => '最適化が完了しました',
 	),
 	'api' => array(
 		'password' => array(
-			'failed' => 'パスワードは変更できません',
+			'failed' => 'パスワードは変更できませんでした',
 			'updated' => 'パスワードは変更されました',
 		),
 	),
 	'auth' => array(
 		'login' => array(
-			'invalid' => 'ログインは無効です。',
-			'success' => 'ログインしました',
+			'invalid' => 'ログインできませんでした',
+			'success' => 'ログインしました',
 		),
 		'logout' => array(
-			'success' => 'ログアウトされました。',
+			'success' => 'ログアウトしました',
 		),
 	),
 	'conf' => array(
-		'error' => '設定を保存するとき、エラーが発生しました。',
-		'query_created' => '“%s”クエリは作成されました。',
-		'shortcuts_updated' => 'ショートカットはアップデートされました。',
+		'error' => '設定の保存中にエラーが発生しました。',
+		'query_created' => 'クエリ「%s」を作成しました。',
+		'shortcuts_updated' => 'ショートカットを更新しました。',
 		'updated' => '設定が更新されました。',
 	),
 	'extensions' => array(
-		'already_enabled' => '%sはすでに有効になっています',
-		'cannot_remove' => '%sは消去できません',
+		'already_enabled' => '「%s」はすでに有効です',
+		'cannot_remove' => '「%s」は削除できません',
 		'disable' => array(
-			'ko' => '%sは表示できません。 <a href="%s">FreshRSS のログを確認してください</a> 詳細が表示されます。',
-			'ok' => '%sは無効にされています。',
+			'ko' => '「%s」を無効にできません。詳細は<a href="%s">FreshRSSのログ</a>を確認してください。',
+			'ok' => '「%s」は無効になっています。',
 		),
 		'enable' => array(
-			'ko' => '%sは有効にできません。 <a href="%s">FreshRSS のログを確認してください</a> 詳細が表示されます。',
-			'ok' => '%sは有効にされています。',
+			'ko' => '%sを有効にできません。詳細は<a href="%s">FreshRSSのログ</a>を確認してください。',
+			'ok' => '%sは有効す。',
 		),
-		'invalid_view_mode' => 'Invalid view mode “%s”! Fall back to “Normal view”.',	// TODO
-		'no_access' => 'あなたは%sにアクセスする権限がありません',
-		'not_enabled' => '%sは有効にされていません',
-		'not_found' => '%sは存在しません',
-		'removed' => '%sは消去されました',
+		'invalid_view_mode' => '無効なビューモード「%s」です。ノーマルビューに戻します。',
+		'no_access' => '%sにアクセスする権限がありません',
+		'not_enabled' => '%sは有効ではありません',
+		'not_found' => '%sが見つかりませんでした',
+		'removed' => '%sは削除されました',
 	),
 	'import_export' => array(
-		'export_no_zip_extension' => 'ZIP 拡張は現在あなたのサーバーに存在しません。一つずつファイルをエクスポートしてみてください。',
-		'feeds_imported' => 'フィードがインポートされました。インポートが完了したら<i>フィードを更新する</i>ボタンをクリックしてください。',
-		'feeds_imported_with_errors' => 'フィードがインポートされましたが、エラーが起きました。インポートが完了したら、<i>フィードを更新する</i>ボタンをクリックしてください。',
-		'file_cannot_be_uploaded' => 'ファイルをアップロードすることはできません!',
-		'no_zip_extension' => 'ZIP拡張は現在あなたのサーバーに存在しません。',
+		'export_no_zip_extension' => 'ZIP拡張機能がサーバーに存在しません。ファイルを個別にエクスポートしてください。',
+		'feeds_imported' => 'フィードがインポートされました。インポートが完了したら<i>フィードを更新する</i>ボタンをクリックしてください。',
+		'feeds_imported_with_errors' => 'フィードをインポートしましたが、一部でエラーが発生しました。インポートが完了したら<i>フィードを更新する</i>ボタンをクリックしてください。',
+		'file_cannot_be_uploaded' => 'ファイルをアップロードできません',
+		'no_zip_extension' => 'ZIP拡張機能がサーバーに存在しません。',
 		'zip_error' => 'ZIPの処理中にエラーが発生しました。',
 	),
 	'profile' => array(
-		'error' => 'あなたのプロフィールを変更することはできません',
-		'passwords_dont_match' => 'Passwords don’t match',	// TODO
-		'updated' => 'あなたのプロフィールを変更されました',
+		'error' => 'プロフィールを変更できません',
+		'passwords_dont_match' => 'パスワードが一致しません',
+		'updated' => 'プロフィールが更新されました',
 	),
 	'sub' => array(
 		'actualize' => '更新中',
 		'articles' => array(
-			'marked_read' => '選択された記事は既読になります。',
-			'marked_unread' => '選択された記事は未読になります。',
+			'marked_read' => '選択した記事を既読にしました',
+			'marked_unread' => '選択した記事を未読にしました',
 		),
 		'category' => array(
-			'created' => '%sカテゴリは作成されました',
-			'deleted' => 'カテゴリは消去されました',
-			'emptied' => 'カテゴリは空になりました',
-			'error' => 'カテゴリが更新することができません',
-			'name_exists' => 'そのカテゴリは既に存在します',
-			'no_id' => 'あなたはカテゴリIDを指定する必要があります',
-			'no_name' => 'カテゴリ名を空白にすることはできません!',
-			'not_delete_default' => 'デフォルトカテゴリを消去することはできません!',
-			'not_exist' => 'カテゴリは存在しません!',
-			'over_max' => 'カテゴリの上限に達しました(%d)',
-			'updated' => 'カテゴリは更新されました。',
+			'created' => 'カテゴリ「%s」を作成しました',
+			'deleted' => 'カテゴリ「%s」を削除しました',
+			'emptied' => 'カテゴリ「%s」を空にしました',
+			'error' => 'カテゴリを更新できません',
+			'name_exists' => '同名のカテゴリが既に存在します',
+			'no_id' => 'カテゴリIDを指定する必要があります',
+			'no_name' => 'カテゴリ名は空にできません',
+			'not_delete_default' => 'デフォルトカテゴリは消去できません',
+			'not_exist' => 'カテゴリが存在しません',
+			'over_max' => 'カテゴリの上限(%d)に達しました',
+			'updated' => 'カテゴリが更新されました',
 		),
 		'feed' => array(
-			'actualized' => '<em>%s</em>は更新されました',
-			'actualizeds' => 'RSSフィードは更新されました',
-			'added' => 'RSS フィードの <em>%s</em> は更新されました',
-			'already_subscribed' => 'すでにあなたは<em>%s</em>を購読しています',
-			'cache_cleared' => '<em>%s</em>キャッシュは作られました',
-			'deleted' => 'フィードは消去されました',
-			'error' => 'フィードを更新することができません',
+			'actualized' => '<em>%s</em>は更新されました',
+			'actualizeds' => 'RSSフィードは更新されました',
+			'added' => 'RSSフィード<em>%s</em>が追加されました',
+			'already_subscribed' => 'すでに<em>%s</em>を購読しています',
+			'cache_cleared' => '<em>%s</em>のキャッシュを消去しました',
+			'deleted' => 'フィードを削除しました',
+			'error' => 'フィードを更新できません',
 			'favicon' => array(
-				'too_large' => 'Uploaded icon is too large. The maximum file size is <em>%s</em>.',	// TODO
-				'unsupported_format' => 'Unsupported image file format!',	// TODO
+				'too_large' => 'アップロードしたアイコンサイズが大きすぎます。上限は <em>%s</em> です。',
+				'unsupported_format' => '対応していない画像ファイル形式です',
 			),
-			'internal_problem' => 'newsfeedを追加することはできません。<a href="%s">FreshRSSログの詳細を</a>確かめてください。強制的に追加することを試せます <code>#force_feed</code>このURLを確認ください。',
+			'internal_problem' => 'ニュースフィードを追加できませんでした。詳細は<a href="%s">FreshRSSのログ</a>を確認してください。URLの末尾に<code>#force_feed</code>を追加すると強制的に追加できます。',
 			'invalid_url' => 'URL <em>%s</em>は無効です',
-			'n_actualized' => '%d フィードはアップデートされました',
-			'n_entries_deleted' => '%d 記事が消去されました',
-			'no_refresh' => 'リフレッシュするフィードがありません',
-			'not_added' => '<em>%s</em> は追加することができません',
-			'not_found' => 'フィードを見つけることができませんでした',
-			'over_max' => 'フィードの最大値に達しました (%d)',
+			'n_actualized' => '%d件のフィードを更新しました',
+			'n_entries_deleted' => '%d件の記事を削除しました',
+			'no_refresh' => '更新するフィードがありません',
+			'not_added' => '<em>%s</em> は追加できません',
+			'not_found' => 'フィードが見つかりませんでした',
+			'over_max' => 'フィード数の上限(%d)に達しました',
 			'reloaded' => '<em>%s</em> は再読み込みされました',
 			'selector_preview' => array(
 				'http_error' => 'Webサイトの読み込みに失敗しました',
-				'no_entries' => 'このフィードには記事がありません。少なくともプレビュー表示を作成するには一つの記事が必要です。',
-				'no_feed' => '内部エラー (フィードが見つかりませんでした).',
-				'no_result' => '選択されたものはどれともマッチしませんでした。代わりにフォールバックとして、元のテキストが表示されます。',
-				'selector_empty' => '選択されたものは空白です。プレビューするには一つ定義することが必要です。',
+				'no_entries' => 'このフィードには記事がありません。プレビューを作成するには少なくとも1件の記事が必要です。',
+				'no_feed' => '内部エラー(フィードが見つかりませんでした)。',
+				'no_result' => '一致するものがありませんでした。代わりに元のフィード本文を表示します。',
+				'selector_empty' => 'セレクターが空です。プレビューを作成するにはセレクターを指定してください。',
 			),
-			'updated' => 'フィードは更新されました。',
+			'updated' => 'フィードを更新しました。',
 		),
-		'purge_completed' => '不要データの削除が完了されました (%d 記事は消去されました)',
+		'purge_completed' => '不要データの削除が完了しました(%d件の記事を削除しました)',
 	),
 	'tag' => array(
-		'created' => '“%s” タグが作成されました',
+		'created' => 'ラベル「%s」を作成しました',
 		'error' => 'ラベルを更新できませんでした',
-		'name_exists' => 'このタグ名は既に存在します',
-		'renamed' => '“%s”タグは“%s”に改名されました',
+		'name_exists' => 'このラベル名は既に存在します',
+		'renamed' => 'ラベル「%s」の名前を「%s」に変更しました',
 		'updated' => 'ラベルが更新されました',
 	),
 	'update' => array(
 		'can_apply' => 'FreshRSSは<strong>バージョン %s</strong>に更新されます。',
-		'error' => 'アップデートプロセスはエラーによって失敗しました: %s',
-		'file_is_nok' => '新規 <strong>バージョン %s</strong> があります、しかし <em>%s</em> ディレクトリには権限がありません。HTTP は書き込み権限が必要です。',
-		'finished' => 'アップデートが完了しました!',
+		'error' => 'アップデート中にエラーが発生しました:%s',
+		'file_is_nok' => 'FreshRSSのアップデート(<strong>バージョン %s</strong>)を利用できますが、<em>%s</em>ディレクトリの権限を確認してください。HTTPサーバーに書き込み権限が必要です。',
+		'finished' => 'アップデートが完了しました',
 		'none' => '適用できるアップデートはありません',
-		'server_not_found' => 'アップデートサーバーが見つかりませんでした [%s]',
+		'server_not_found' => 'アップデートサーバーが見つかりません[%s]',
 	),
 	'user' => array(
 		'created' => array(
-			'_' => '%s ユーザーが作成されました',
-			'error' => '%s ユーザーの作成はできません',
+			'_' => 'ユーザー「%s」を作成しました',
+			'error' => 'ユーザー「%s」を作成できません',
 		),
 		'deleted' => array(
-			'_' => '%s ユーザーが消去されました',
-			'error' => '%s ユーザーの消去はできません',
+			'_' => 'ユーザー「%s」を削除しました',
+			'error' => 'ユーザー「%s」を削除できません',
 		),
 		'updated' => array(
-			'_' => '%s ユーザーが更新されました',
-			'error' => '%s ユーザーの更新はできません',
+			'_' => 'ユーザー「%s」を更新しました',
+			'error' => 'ユーザー「%s」を更新できませんでした',
 		),
 	),
 );

+ 103 - 103
app/i18n/ja/gen.php

@@ -19,9 +19,9 @@ return array(
 		'close' => '閉じる',
 		'create' => '作成',
 		'delete_all_feeds' => 'すべてのフィードを削除する',
-		'delete_errored_feeds' => 'エラーのフィードを削除する',
+		'delete_errored_feeds' => 'エラーが発生しているフィードを削除',
 		'delete_muted_feeds' => 'ミュートにしているフィードを削除する',
-		'demote' => '寄付',
+		'demote' => '降格',
 		'disable' => '無効',
 		'download' => 'ダウンロード',
 		'empty' => '空',
@@ -41,9 +41,9 @@ return array(
 			'up' => '先頭へ',
 		),
 		'open_url' => 'URLを開く',
-		'promote' => 'プロモート',
+		'promote' => '昇格',
 		'purge' => '不要なデータの削除',
-		'refresh_opml' => 'OPMLをリフレッシュする',
+		'refresh_opml' => 'OPMLを更新する',
 		'remove' => '消去',
 		'rename' => '名前を変更する',
 		'see_website' => 'Webサイトを開く',
@@ -52,82 +52,82 @@ return array(
 		'update' => '更新',
 	),
 	'auth' => array(
-		'accept_tos' => '私は <a href="%s">Terms of Service</a>を承認します。',
-		'email' => 'Eメールアドレス',
-		'keep_logged_in' => 'ログインを保持する <small>%s日後にログアウトする</small>',
+		'accept_tos' => '<a href="%s">利用規約</a>に同意します。',
+		'email' => 'メールアドレス',
+		'keep_logged_in' => 'ログイン状態を保持する<small>(%s日間)</small>',
 		'login' => 'ログイン',
 		'logout' => 'ログアウト',
 		'password' => array(
 			'_' => 'パスワード',
-			'format' => '<small>最低7文字必要です</small>',
+			'format' => '<small>7文字以上必要です</small>',
 		),
 		'reauth' => array(
-			'header' => 'Reauthentication is required',	// TODO
-			'tip' => 'You won’t be asked to sign in again for <u>%d minutes</u>',	// TODO
-			'title' => 'Reauthentication',	// TODO
+			'header' => '再認証が必要です',
+			'tip' => '今後<u>%d分間</u>は再ログインを求められません',
+			'title' => '再認証',
 		),
 		'registration' => array(
 			'_' => '新規アカウント',
-			'ask' => 'アカウントを作りますか?',
+			'ask' => 'アカウントを作成しますか?',
 			'title' => 'アカウント作成',
 		),
 		'username' => array(
 			'_' => 'ユーザー名',
-			'format' => '<small>最大16文字の英数字</small>',
+			'format' => '<small>16文字以内の英数字</small>',
 		),
 	),
 	'date' => array(
-		'Apr' => '\\四\\月',
-		'Aug' => '\\八\\月',
-		'Dec' => '\\十\\二\\月',
-		'Feb' => '\\二\\月',
-		'Jan' => '\\一\\月',
-		'Jul' => '\\七\\月',
-		'Jun' => '\\六\\月',
-		'Mar' => '\\三\\月',
-		'May' => '\\五\\月',
-		'Nov' => '\\十\\一\\月',
-		'Oct' => '\\十\\月',
-		'Sep' => '\\九\\月',
-		'apr' => '月',
-		'april' => '月',
-		'aug' => '月',
-		'august' => '月',
-		'before_yesterday' => 'おととい',
-		'dec' => '十二月',
-		'december' => '十二月',
-		'feb' => '月',
-		'february' => '月',
+		'Apr' => '4\\月',
+		'Aug' => '8\\月',
+		'Dec' => '12\\月',
+		'Feb' => '2\\月',
+		'Jan' => '1\\月',
+		'Jul' => '7\\月',
+		'Jun' => '6\\月',
+		'Mar' => '3\\月',
+		'May' => '5\\月',
+		'Nov' => '11\\月',
+		'Oct' => '10\\月',
+		'Sep' => '9\\月',
+		'apr' => '4月',
+		'april' => '4月',
+		'aug' => '8月',
+		'august' => '8月',
+		'before_yesterday' => '一昨日',
+		'dec' => '12月',
+		'december' => '12月',
+		'feb' => '2月',
+		'february' => '2月',
 		'format_date' => 'Y\\年n\\月j\\日',
 		'format_date_hour' => 'Y\\年n\\月j\\日	H\\:i',
 		'fri' => '金',
-		'jan' => '月',
-		'january' => '月',
-		'jul' => '月',
-		'july' => '月',
-		'jun' => '月',
-		'june' => '月',
-		'last_2_year' => '直近年間',
-		'last_3_month' => '直近三か月',
-		'last_3_year' => '直近年間',
-		'last_5_year' => '直近年間',
-		'last_6_month' => '直近六か月',
+		'jan' => '1月',
+		'january' => '1月',
+		'jul' => '7月',
+		'july' => '7月',
+		'jun' => '6月',
+		'june' => '6月',
+		'last_2_year' => '直近2年間',
+		'last_3_month' => '直近3ヶ月間',
+		'last_3_year' => '直近3年間',
+		'last_5_year' => '直近5年間',
+		'last_6_month' => '直近6ヶ月間',
 		'last_month' => '先月',
 		'last_week' => '先週',
 		'last_year' => '去年',
-		'mar' => '月',
-		'march' => '月',
-		'may' => '月',
-		'may_' => '月',
+		'mar' => '3月',
+		'march' => '3月',
+		'may' => '5月',
+		'may_' => '5月',
 		'mon' => '月',
 		'month' => '月',
-		'nov' => '十一月',
-		'november' => '十一月',
-		'oct' => '月',
-		'october' => '月',
+		'nov' => '11月',
+		'november' => '11月',
+		'oct' => '10月',
+		'october' => '10月',
 		'sat' => '土',
-		'sep' => '月',
-		'september' => '月',
+		'sep' => '9月',
+		'september' => '9月',
 		'sun' => '日',
 		'thu' => '木',
 		'today' => '今日',
@@ -162,24 +162,24 @@ return array(
 		),
 	),
 	'js' => array(
-		'category_empty' => '空のカテゴリ',
-		'confirm_action' => '本当に実行してもいいですか?キャンセルはできません!',
-		'confirm_action_feed_cat' => '本当に実行してもいいですか? あなたは関連するお気に入りとユーザークエリを失います。キャンセルできません!',
-		'confirm_exit_slider' => 'Are you sure you want to discard unsaved settings?',	// TODO
+		'category_empty' => '空のカテゴリ',
+		'confirm_action' => '本当に実行しますか?この操作は取り消せません。',
+		'confirm_action_feed_cat' => '本当に実行しますか?関連するお気に入りとユーザークエリも削除されます。この操作は取り消せません。',
+		'confirm_exit_slider' => '保存していない設定を破棄してもよろしいですか',
 		'feedback' => array(
 			'body_new_articles' => array(
-				0 => '%d の新規記事がFreshRSSにはあります。',	// DIRTY
+				0 => '新着記事が%d件あります。',
 			),
 			'body_unread_articles' => array(
-				0 => '(未読: %d)',	// DIRTY
+				0 => '(未読:%d件)',
 			),
 			'request_failed' => 'おそらくインターネット接続に問題があるため、リクエストは失敗しました。',
-			'title_new_articles' => 'FreshRSS: 新規記事!',
+			'title_new_articles' => 'FreshRSS:新着記事',
 		),
 		'labels_empty' => 'ラベルがありません',
-		'new_article' => '新しい記事があるのでクリックしてページをリフレッシュしてください。',
-		'should_be_activated' => 'JavaScriptは有効になっている必要があります。',
-		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
+		'new_article' => '新しい記事があります。クリックしてページを更新してください。',
+		'should_be_activated' => 'JavaScriptを有効にする必要があります。',
+		'unsafe_csp_header' => '使用中のCSPヘッダーは安全ではないため、FreshRSSがXSS攻撃に対して脆弱になる可能性があります。<a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">ドキュメント</a>を参照してください。',
 	),
 	'lang' => array(
 		'cs' => 'Čeština',	// IGNORE
@@ -214,17 +214,17 @@ return array(
 		'about' => 'FreshRSSについて',
 		'account' => 'アカウント',
 		'admin' => '管理者',
-		'advanced_search' => 'Advanced Search',	// TODO
+		'advanced_search' => '高度な検索',
 		'archiving' => 'アーカイブ',
 		'authentication' => '認証',
 		'check_install' => 'インストール時のチェック',
 		'configuration' => '設定',
-		'display' => 'ディスプレイ',
+		'display' => '表示',
 		'extensions' => '拡張機能',
 		'logs' => 'ログ',
 		'privacy' => 'プライバシー',
 		'queries' => 'ユーザークエリ',
-		'reading' => 'リーディング',
+		'reading' => '閲覧',
 		'search' => '単語で検索するかハッシュタグで検索する',
 		'search_help' => '高度な検索パラメータについては <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">こちら</a>を参照してください',
 		'sharing' => '共有',
@@ -248,32 +248,32 @@ return array(
 		'translated' => 'Progress',	// IGNORE
 	),
 	'search' => array(
-		'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.',	// TODO
-		'authors' => 'Authors',	// TODO
-		'categories' => 'Categories',	// TODO
-		'content' => 'Content',	// TODO
-		'date_from' => 'From',	// TODO
-		'date_modified' => 'Server Modification Date',	// TODO
-		'date_past' => 'In the past',	// TODO
-		'date_published' => 'Publication Date',	// TODO
-		'date_range' => 'Date Range',	// TODO
-		'date_received' => 'Received Date',	// TODO
-		'date_to' => 'To',	// TODO
-		'date_user' => 'User Modification Date',	// TODO
-		'feeds' => 'Feeds',	// TODO
-		'free_text' => 'Free Text',	// TODO
-		'free_text_help' => 'Search both in title and content',	// TODO
-		'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>',	// TODO
-		'labels' => 'My Labels',	// TODO
-		'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)',	// TODO
-		'sources' => 'Sources',	// TODO
-		'tags' => 'Article Tags',	// TODO
-		'text' => 'Text Search',	// TODO
-		'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.',	// TODO
-		'text_placeholder' => 'Keyword',	// TODO
-		'title' => 'Title',	// TODO
-		'url' => 'URL',	// TODO
-		'user_queries' => 'User Queries',	// TODO
+		'advanced_search_help' => 'このフォームで検索クエリを作成できますが、手動で記述するクエリではさらに高度な検索が可能です。',
+		'authors' => '著者',
+		'categories' => 'カテゴリ',
+		'content' => '本文',
+		'date_from' => '開始日',
+		'date_modified' => 'サーバー上の変更日時',
+		'date_past' => '直近',
+		'date_published' => '公開日時',
+		'date_range' => '期間を指定',
+		'date_received' => '受信日時',
+		'date_to' => '終了日',
+		'date_user' => 'ユーザーによる変更日時',
+		'feeds' => 'フィード',
+		'free_text' => 'フリーワード',
+		'free_text_help' => 'タイトルと本文の両方を検索します。',
+		'full_documentation' => '<a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">検索機能の詳しいドキュメント</a>を表示',
+		'labels' => 'ラベル',
+		'multiple_help' => '1つ以上選択してください(複数選択するには<kbd>Ctrl</kbd>または<kbd>Cmd</kbd>を押しながらクリック)',
+		'sources' => '検索対象',
+		'tags' => 'タグ',
+		'text' => 'テキスト検索',
+		'text_help' => '複数行は論理<i>OR</i>で結合されます。<a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">正規表現</a>も使用できます。',
+		'text_placeholder' => 'キーワード',
+		'title' => 'タイトル',
+		'url' => 'URL',	// IGNORE
+		'user_queries' => 'ユーザークエリ',
 	),
 	'share' => array(
 		'Known' => 'よく使われるサイト',
@@ -284,8 +284,8 @@ return array(
 		'buffer' => 'Buffer',	// IGNORE
 		'clipboard' => 'クリップボード',
 		'diaspora' => 'Diaspora*',	// IGNORE
-		'email' => 'Eメール',
-		'email-webmail-firefox-fix' => 'Eメール(Firefox用に修正)',
+		'email' => 'メール',
+		'email-webmail-firefox-fix' => 'メール(Firefox対応)',
 		'facebook' => 'Facebook',	// IGNORE
 		'gnusocial' => 'GNU social',	// IGNORE
 		'jdh' => 'Journal du hacker',	// IGNORE
@@ -312,21 +312,21 @@ return array(
 		'xing' => 'Xing',	// IGNORE
 	),
 	'short' => array(
-		'attention' => '警告!',
+		'attention' => '警告',
 		'blank_to_disable' => '空白のままにすると無効になります',
-		'by_author' => '著者:',
+		'by_author' => '著者',
 		'by_default' => 'デフォルト',
-		'damn' => '終了!',
+		'damn' => 'しまった!',
 		'default_category' => '未分類',
 		'no' => 'いいえ',
-		'not_applicable' => '利用不可能',
-		'ok' => 'OK!',
+		'not_applicable' => '利用できません',
+		'ok' => 'OK',
 		'or' => 'または',
 		'yes' => 'はい',
 	),
 	'stream' => array(
-		'load_more' => '記事をもっと読み込む',
+		'load_more' => '記事を追加で読み込む',
 		'mark_all_read' => 'すべての記事を既読にする',
-		'nothing_to_load' => 'これ以上記事はありません',
+		'nothing_to_load' => 'これ以上記事はありません',
 	),
 );

+ 41 - 41
app/i18n/ja/index.php

@@ -20,41 +20,41 @@ return array(
 				'browser' => 'ブラウザ',
 				'database' => 'データベース',
 				'server_software' => 'サーバーソフトウェア',
-				'version_curl' => 'cURL version',	// TODO
+				'version_curl' => 'cURLバージョン',
 				'version_frss' => 'FreshRSSバージョン',
 				'version_php' => 'PHPバージョン',
 			),
 		),
 		'bugs_reports' => 'バグレポート',
 		'documentation' => 'ドキュメント',
-		'freshrss_description' => 'FreshRSSはセルフホストできるRSSフィード収集ツールです。強力なツールで、軽量で簡単に使え、豊富な設定が特徴です。',
-		'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">Githubへお願いします</a>',
+		'freshrss_description' => 'FreshRSSはセルフホストできるRSSリーダーです。複数のニュースサイトを個別に開かなくても、まとめて閲覧・購読できます。軽量で設定の自由度が高く、簡単に使えます。',
+		'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">GitHubで報告する</a>',
 		'license' => 'ライセンス',
-		'project_website' => 'プロジェクトのwebサイト',
+		'project_website' => 'プロジェクトのWebサイト',
 		'title' => 'FreshRSSについて',
 		'version' => 'バージョン',
 	),
 	'feed' => array(
 		'empty' => '表示できる記事がありません',
 		'published' => array(
-			'_' => 'Published',	// TODO
-			'future' => 'Published in the future',	// TODO
-			'today' => 'Published today',	// TODO
-			'yesterday' => 'Published yesterday',	// TODO
+			'_' => '公開日',
+			'future' => '未来の日付で公開',
+			'today' => '本日公開',
+			'yesterday' => '昨日公開',
 		),
 		'received' => array(
-			'_' => 'Received',	// TODO
+			'_' => '受信日',
 			'today' => '今日',
 			'yesterday' => '昨日',
 		),
-		'rss_of' => '%s のRSSフィード',
+		'rss_of' => '%sのRSSフィード',
 		'title' => 'メイン',
 		'title_fav' => 'お気に入り',
 		'title_global' => 'グローバルビュー',
 		'userModified' => array(
-			'_' => 'Modified by user',	// TODO
-			'today' => 'Modified by user today',	// TODO
-			'yesterday' => 'Modified by user yesterday',	// TODO
+			'_' => 'ユーザーによる変更',
+			'today' => '本日変更',
+			'yesterday' => '昨日変更',
 		),
 	),
 	'log' => array(
@@ -67,8 +67,8 @@ return array(
 		'about' => 'FreshRSSについて',
 		'before_one_day' => '一日以上前',
 		'before_one_week' => '一週間以上前',
-		'bookmark_query' => '現在のブックマーククエリ',
-		'favorites' => 'お気に入り (%s)',
+		'bookmark_query' => '現在のクエリをブックマーク',
+		'favorites' => 'お気に入り(%s)',
 		'global_view' => 'グローバルビュー',
 		'important' => '重要なフィード',
 		'main_stream' => 'メイン',
@@ -77,50 +77,50 @@ return array(
 		'mark_feed_read' => 'フィードを既読にする',
 		'mark_selection_unread' => '選択した記事を未読にする',
 		'mylabels' => 'ラベル',
-		'non-starred' => 'お気に入りに登録されてない記事を表示する',
+		'non-starred' => 'お気に入りに登録されてない記事を表示',
 		'normal_view' => 'ノーマルビュー',
 		'queries' => 'ユーザークエリ',
-		'read' => '既読の記事を表示する',
+		'read' => '既読の記事を表示',
 		'reader_view' => 'リーディングビュー',
 		'rss_view' => 'RSSフィード',
 		'search_short' => '検索',
 		'sort' => array(
-			'asc' => 'Ascending',	// TODO
+			'asc' => '昇順',
 			'c' => array(
-				'name_asc' => 'Category, feed titles A→Z',	// TODO
-				'name_desc' => 'Category, feed titles Z→A',	// TODO
+				'name_asc' => 'カテゴリ→フィードタイトル(昇順)',
+				'name_desc' => 'カテゴリ→フィードタイトル(降順)',
 			),
-			'date_asc' => '公開日順 1→9',
-			'date_desc' => '公開日順 9→1',
-			'desc' => 'Descending',	// TODO
+			'date_asc' => '公開日時(古い順)',
+			'date_desc' => '公開日時(新しい順)',
+			'desc' => '降順',
 			'f' => array(
-				'name_asc' => 'Feed title A→Z',	// TODO
-				'name_desc' => 'Feed title Z→A',	// TODO
+				'name_asc' => 'フィードタイトル(昇順)',
+				'name_desc' => 'フィードタイトル(降順)',
 			),
-			'id_asc' => '新着を最後に並べる',
-			'id_desc' => '新着を最初に並べる',
-			'length_asc' => 'Content length 1→9',	// TODO
-			'length_desc' => 'Content length 9→1',	// TODO
-			'link_asc' => 'リンクURL順 A→Z',
-			'link_desc' => 'リンクURL順 Z→A',
+			'id_asc' => '受信日時(古い順)',
+			'id_desc' => '受信日時(新しい順)',
+			'length_asc' => '本文の長さ(昇順)',
+			'length_desc' => '本文の長さ(降順)',
+			'link_asc' => 'リンクURL(昇順)',
+			'link_desc' => 'リンクURL(降順)',
 			'primary' => array(
-				'_' => 'Sorting criterion',	// TODO
-				'help' => 'Sorting by <em>received</em> date is recommended in most cases, for consistency and performance',	// TODO
+				'_' => '並べ替え基準',
+				'help' => '一貫性とパフォーマンスの観点から、通常は<em>受信</em>日時での並べ替えを推奨します。',
 			),
 			'rand' => 'ランダムに並べる',
 			'secondary' => array(
-				'_' => 'Secondary sorting criterion',	// TODO
-				'help' => 'Only relevant when the primary sorting criterion is categories or feeds titles',	// TODO
+				'_' => '第2並べ替え基準',
+				'help' => '並べ替え基準がカテゴリ名またはフィード名の場合にのみ有効です',
 			),
-			'title_asc' => 'タイトル順 A→Z',
-			'title_desc' => 'タイトル順 Z→A',
-			'user_modified_asc' => 'User modified 1→9',	// TODO
-			'user_modified_desc' => 'User modified 9→1',	// TODO
+			'title_asc' => 'タイトル(昇順)',
+			'title_desc' => 'タイトル(降順)',
+			'user_modified_asc' => 'ユーザーによる変更(昇順)',
+			'user_modified_desc' => 'ユーザーによる変更(降順)',
 		),
-		'starred' => 'お気に入りを表示する',
+		'starred' => 'お気に入りを表示',
 		'stats' => '統計',
 		'subscription' => '購読フィードの管理',
-		'unread' => '未読記事を表示する',
+		'unread' => '未読記事を表示',
 	),
 	'share' => '共有',
 	'tag' => array(

+ 57 - 57
app/i18n/ja/install.php

@@ -12,7 +12,7 @@
 
 return array(
 	'action' => array(
-		'finish' => 'インストール作業を終わりにする',
+		'finish' => 'インストールを完了する',
 		'fix_errors_before' => '次のステップへ移る前にエラーを修正してください。',
 		'keep_install' => '前の設定を保持する',
 		'next_step' => '次のステップへ進む',
@@ -22,8 +22,8 @@ return array(
 		'_' => 'データベース',
 		'conf' => array(
 			'_' => 'データベース設定',
-			'ko' => 'あなたのデータベース設定を確認します。',
-			'ok' => 'データベース設定は保存されました。',
+			'ko' => 'データベース設定を確認してください。',
+			'ok' => 'データベース設定を保存しました。',
 		),
 		'host' => 'ホスト',
 		'password' => 'データベースパスワード',
@@ -33,137 +33,137 @@ return array(
 	),
 	'check' => array(
 		'_' => '環境確認',
-		'already_installed' => 'FreshRSS が、すでにインストールされています!',
+		'already_installed' => 'FreshRSSはすでにインストールされています!',
 		'cache' => array(
-			'nok' => ' <em>%1$s</em> ディレクトリ <em>%2$s</em> ユーザーのアクセス権限を確認してください。HTTPサーバーを書き込むには権限が必要です。',
+			'nok' => '<em>%1$s</em>ディレクトリに対する<em>%2$s</em>ユーザーの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
 			'ok' => 'キャッシュディレクトリの権限は正しく設定されています。',
 		),
 		'ctype' => array(
-			'nok' => '必要とされている文字タイプを確認するライブラリが見つかりませんでした。(php-ctype)',
-			'ok' => '必要とされている文字タイプを確認するライブラリが見つかりました。(ctype)',
+			'nok' => '文字種の判定に必要なライブラリが見つかりませんでした(php-ctype)。',
+			'ok' => '文字種の判定に必要なライブラリが見つかりました(ctype)。',
 		),
 		'curl' => array(
-			'nok' => 'cURLライブラリが見つかりませんでした(php-curl package)',
+			'nok' => 'cURLライブラリが見つかりませんでした(php-curlパッケージ)。',
 			'ok' => 'cURLライブラリが見つかりました。',
 		),
 		'data' => array(
-			'nok' => 'この <em>%1$s</em> ディレクトリの <em>%2$s</em> ユーザーのアクセス権限を確認してください。HTTPサーバーは編集権限を必要としています。',
-			'ok' => 'ディレクトリのパーミッションは正しく設定されています。',
+			'nok' => '<em>%1$s</em>ディレクトリに対する<em>%2$s</em>ユーザーの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
+			'ok' => 'dataディレクトリの権限は正しく設定されています。',
 		),
 		'database-connection' => array(
-			'nok' => 'Database connection error.',	// TODO
-			'ok' => 'Database connection is good.',	// TODO
+			'nok' => 'データベース接続に失敗しました。',
+			'ok' => 'データベース接続は正常です。',
 		),
 		'database-table' => array(
-			'nok' => 'Database table "%s" is incomplete.',	// TODO
-			'ok' => 'Database table "%s" is good.',	// TODO
+			'nok' => 'データベーステーブル「%s」に不備があります。',
+			'ok' => 'データベーステーブル「%s」は正常です。',
 		),
 		'database-tables' => array(
-			'nok' => 'Some database tables are missing.',	// TODO
-			'ok' => 'All database tables exist.',	// TODO
+			'nok' => 'データベーステーブルの一部が存在しません。',
+			'ok' => 'データベーステーブルはすべて存在します。',
 		),
-		'database-title' => 'Database',	// TODO
+		'database-title' => 'データベース',
 		'docroot' => array(
 			'nok' => 'Your web server document root does not seem to point to the <code>./p/</code> folder. Other folders such as <code>./data/</code> may be publicly accessible.',	// TODO
 			'ok' => 'Your web server document root correctly points to the <code>./p/</code> folder.',	// TODO
 		),
 		'dom' => array(
-			'nok' => 'DOMを検索するライブラリが見つかりませんでした。',
-			'ok' => 'DOMを検索するライブラリが見つかりました。',
+			'nok' => 'DOMの操作に必要なライブラリが見つかりませんでした。',
+			'ok' => 'DOMの操作に必要なライブラリが見つかりました。',
 		),
 		'favicons' => array(
-			'nok' => 'この <em>%1$s</em> ディレクトリの <em>%2$s</em> ユーザーのアクセス権限を確認してください。HTTPサーバーは編集権限を必要としています。',
-			'ok' => 'ディレクトリのパーミッションは正しく設定されています。',
+			'nok' => '<em>%1$s</em>ディレクトリに対する<em>%2$s</em>ユーザーの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
+			'ok' => 'faviconsディレクトリの権限は正しく設定されています。',
 		),
 		'fileinfo' => array(
-			'nok' => 'PHP fileinfoライブラリが見つかりませんでした。 (fileinfo package).',
+			'nok' => 'PHP fileinfoライブラリが見つかりませんでした(fileinfoパッケージ)。',
 			'ok' => 'fileinfoライブラリは正しく設定されています。',
 		),
 		'files' => 'ファイルインストール',
 		'intl' => array(
-			'nok' => 'Cannot find the recommended library php-intl for internationalisation.',	// TODO
-			'ok' => 'You have the recommended library php-intl for internationalisation.',	// TODO
+			'nok' => '多言語・地域対応用のphp-intlライブラリが見つかりませんでした。',
+			'ok' => '多言語・地域対応用のphp-intlライブラリはインストールされています。',
 		),
 		'json' => array(
-			'nok' => 'JSONをパースするライブラリが見つかりませんでした。',
-			'ok' => 'JSONをパースするライブラリはインストールされています。',
+			'nok' => 'JSON解析ライブラリが見つかりませんでした。',
+			'ok' => 'JSON解析ライブラリはインストールされています。',
 		),
 		'mbstring' => array(
 			'nok' => 'mbstringライブラリが見つかりませんでした。',
 			'ok' => 'mbstringライブラリはインストールされています。',
 		),
 		'pcre' => array(
-			'nok' => '正規表現ライブラリが見つかりませんでした。 (php-pcre).',
-			'ok' => '正規表現ライブラリはインストールされています。 (PCRE).',
+			'nok' => '正規表現ライブラリが見つかりませんでした(php-pcre)。',
+			'ok' => '正規表現ライブラリはインストールされています(PCRE)。',
 		),
 		'pdo-mysql' => array(
-			'nok' => 'Cannot find the required PDO driver for MySQL/MariaDB.',	// TODO
+			'nok' => 'MySQL/MariaDBに必要なPDOドライバーが見つかりませんでした。',
 		),
 		'pdo-pgsql' => array(
-			'nok' => 'Cannot find the required PDO driver for PostgreSQL.',	// TODO
+			'nok' => 'PostgreSQLに必要なPDOドライバーが見つかりませんでした。',
 		),
 		'pdo-sqlite' => array(
-			'nok' => 'Cannot find the PDO driver for SQLite.',	// TODO
-			'ok' => 'You have the PDO driver for SQLite.',	// TODO
+			'nok' => 'SQLiteに必要なPDOドライバーが見つかりませんでした。',
+			'ok' => 'SQLiteに必要なPDOドライバーはインストールされています。',
 		),
 		'pdo' => array(
-			'nok' => 'PDOまたはサポートされているドライバーが見つかりませんでした。 (pdo_sqlite, pdo_pgsql, pdo_mysql).',
-			'ok' => 'PDOとサポートされているドライバーはインストールされています。 (pdo_sqlite, pdo_pgsql, pdo_mysql).',
+			'nok' => 'PDOまたはサポートされているドライバーが見つかりませんでした(pdo_sqlite, pdo_pgsql, pdo_mysql)。',
+			'ok' => 'PDOと、対応するドライバーのいずれかがインストールされています(pdo_sqlite、pdo_pgsql、pdo_mysql)。',
 		),
 		'php' => array(
 			'_' => 'PHPインストール',
-			'nok' => 'あなたのPHPのバージョンは %s ですが、FreshRSSが動作する最低限のバージョンは %s です。',
-			'ok' => 'あなたのPHPのバージョン (%s) はFreshRSSが動作することができるバージョンです。',
+			'nok' => 'PHPのバージョンは%sですが、FreshRSSには%s以降が必要です。',
+			'ok' => 'PHPのバージョン(%s)はFreshRSSに対応しています。',
 		),
-		'reload' => '再度確かめる',
+		'reload' => '再確認',
 		'tmp' => array(
-			'nok' => 'この <em>%1$s</em> ディレクトリの <em>%2$s</em> ユーザーのアクセス権限を確認してください。HTTPサーバーは編集権限を必要としています。',
+			'nok' => '<em>%1$s</em>ディレクトリに対する<em>%2$s</em>ユーザーの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
 			'ok' => 'tempディレクトリの権限は正しく設定されています。',
 		),
 		'tokens' => array(
-			'nok' => '<em>./data/tokens</em>ディレクトリのパーミッションを確認してください。HTTP serverは編集パーミッションを必要としています。',
-			'ok' => 'tokensディレクトリのパーミッションは正しく設定されています。',
+			'nok' => '<em>./data/tokens</em>ディレクトリの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
+			'ok' => 'tokensディレクトリの権限は正しく設定されています。',
 		),
 		'unknown_process_username' => '不明',
 		'users' => array(
-			'nok' => 'この <em>%1$s</em> ディレクトリの <em>%2$s</em> ユーザーのアクセス権限を確認してください。 HTTPサーバーは編集権限を必要としています。',
+			'nok' => '<em>%1$s</em>ディレクトリに対する<em>%2$s</em>ユーザーの権限を確認してください。HTTPサーバーには書き込み権限が必要です。',
 			'ok' => 'usersディレクトリの権限は正しく設定されています。',
 		),
 		'xml' => array(
-			'nok' => 'XMLをパースするライブラリが見つかりませんでした。',
-			'ok' => 'XMLをパースするライブラリが見つかりました。',
+			'nok' => 'XML解析ライブラリが見つかりませんでした。',
+			'ok' => 'XML解析ライブラリが見つかりました。',
 		),
 		'zip' => array(
-			'nok' => 'ZIP拡張が見つかりませんでした。 (php-zip package).',
+			'nok' => 'ZIP拡張機能が見つかりませんでした(php-zipパッケージ)。',
 			'ok' => 'ZIP拡張はインストールされています。',
 		),
 	),
 	'conf' => array(
 		'_' => '一般設定',
-		'ok' => '一般設定は保存されました。',
+		'ok' => '一般設定を保存しました。',
 	),
-	'congratulations' => 'おめでとうございます!',
+	'congratulations' => 'おめでとうございます',
 	'default_user' => array(
 		'_' => 'デフォルトのユーザー名',
-		'max_char' => '最大16文字の英数字',
+		'max_char' => '16文字以内の英数字',
 	),
-	'fix_errors_before' => 'エラーを次のステップへ移る前に修正してください。',
-	'javascript_is_better' => 'FreshRSS はJavascriptが有効だとより快適にご利用いただけます。',
+	'fix_errors_before' => '次のステップへ移る前にエラーを修正してください。',
+	'javascript_is_better' => 'JavaScriptを有効にすると、FreshRSSをより快適に利用できます。',
 	'js' => array(
-		'confirm_reinstall' => 'もし再インストールするとFreshRSSの設定は削除されます。それでも続けますか?',
+		'confirm_reinstall' => '再インストールするとFreshRSSの設定が削除されます。続行しますか?',
 	),
 	'language' => array(
 		'_' => '言語',
-		'choose' => 'FreshRSSで使う言語を選んでください',
-		'defined' => '言語の設定ができました。',
+		'choose' => 'FreshRSSで使用する言語を選択してください',
+		'defined' => '言語を設定しました。',
 	),
-	'missing_applied_migrations' => '何かが誤っています; 空のファイルを手動で作ることができます <em>%s</em>',
-	'ok' => 'インストール作業は成功しました。',
+	'missing_applied_migrations' => '問題が発生しました。空のファイル<em>%s</em>を手動で作成してください。',
+	'ok' => 'インストール成功しました。',
 	'session' => array(
-		'nok' => 'Webサーバーは、不正な設定がされておりPHPセッションが必要とされているクッキーの設定が誤っています!',
+		'nok' => 'PHPセッションに必要なCookieについて、Webサーバーの設定に問題があるようです。',
 	),
 	'step' => 'ステップ %d',
 	'steps' => 'ステップ',
-	'this_is_the_end' => '了',
-	'title' => 'インストール · FreshRSS',
+	'this_is_the_end' => '了',
+	'title' => 'FreshRSSのインストール',
 );

+ 115 - 115
app/i18n/ja/sub.php

@@ -16,7 +16,7 @@ return array(
 		'title' => 'API',	// IGNORE
 	),
 	'bookmarklet' => array(
-		'documentation' => 'このボタンをブックマークツールバーへドラッグするか、右クリックして、「このリンクをブックマークする」を選択します。そうすることでどのページでも購読できるようになります。',
+		'documentation' => 'このボタンをブックマークツールバーにドラッグするか、右クリックして「このリンクをブックマーク」を選択してください。その後、購読したいページで「購読」ボタンをクリックします。',
 		'label' => '購読',
 		'title' => 'ブックマーク',
 	),
@@ -25,244 +25,244 @@ return array(
 		'add' => 'カテゴリを追加する',
 		'archiving' => 'アーカイブ',
 		'dynamic_opml' => array(
-			'_' => 'ダイナミックOPML',
+			'_' => '動的OPML',
 			'help' => 'このカテゴリに動的フィードを追加するための<a href="http://opml.org/" target="_blank">OPMLファイル</a>のURLを指定します。',
 		),
 		'empty' => '空のカテゴリ',
-		'error' => 'This dynamic OPML category has encountered a problem. Check that the OPML URL is still reachable and that the maximum number of feeds per user has not been exceeded.',	// TODO
+		'error' => '動的OPMLカテゴリで問題が発生しました。OPMLのURLに引き続きアクセスできることと、ユーザーごとの最大フィード数を超えていないことを確認してください。',
 		'expand' => 'カテゴリを展開する',
-		'information' => 'インフォメーション',
+		'information' => '情報',
 		'open' => 'カテゴリを開く',
 		'opml_url' => 'OPMLのURL',
 		'position' => '表示位置',
-		'position_help' => 'カテゴリの表示順を操作する',
+		'position_help' => 'カテゴリの表示順を指定します',
 		'title' => 'タイトル',
 	),
 	'feed' => array(
 		'accept_cookies' => 'クッキーを受け入れる',
-		'accept_cookies_help' => 'クッキーをこのサーバーから受け入れます(このリクエストだけにメモリへ保存されます)',
-		'add' => 'フィード追加する',
+		'accept_cookies_help' => 'フィードサーバーからのクッキーを受け入れます(クッキーはこのリクエスト中のみメモリに保存されます)',
+		'add' => 'フィード追加する',
 		'advanced' => '高度な設定',
 		'archiving' => 'アーカイブ',
 		'auth' => array(
-			'configuration' => 'ログイン',
-			'help' => 'RSSフィードへのHTTPアクセスを許可す',
+			'configuration' => '認証情報',
+			'help' => 'HTTP認証で保護されたRSSフィードへのアクセスを許可します',
 			'http' => 'HTTP認証',
-			'password' => 'HTTP パスワード',
-			'username' => 'HTTP ユーザー名',
+			'password' => 'HTTPパスワード',
+			'username' => 'HTTPユーザー名',
 		),
-		'change_favicon' => 'Change…',	// TODO
+		'change_favicon' => '変更…',
 		'clear_cache' => '常にキャッシュをクリアする',
 		'content_action' => array(
-			'_' => '記事のコンテンツを取得するときの動作',
-			'append' => '既に存在するコンテンツの後に追加する',
-			'prepend' => '既に存在するコンテンツの前に追加する',
-			'replace' => '既に存在するコンテンツを置換する',
+			'_' => '記事の本文を取得するときの動作',
+			'append' => '既に存在する本文の後に追加する',
+			'prepend' => '既に存在する本文の前に追加する',
+			'replace' => '既に存在する本文を置換する',
 		),
-		'content_retrieval' => 'コンテンツ取得',
-		'css_cookie' => '記事のコンテンツを取得するとき、クッキーを使用する',
-		'css_cookie_help' => '例: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
-		'css_help' => '省略されたRSSフィードを復元します (ただし、時間がかかります)',
+		'content_retrieval' => '本文取得',
+		'css_cookie' => '記事の本文を取得するとき、クッキーを使用する',
+		'css_cookie_help' => '例<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
+		'css_help' => '省略された記事本文を取得します(時間がかかります)',
 		'css_path' => '元のWebサイトから記事を抽出するCSSセレクタ',
 		'css_path_filter' => array(
 			'_' => '要素を削除するCSSセレクタ',
-			'help' => 'CSSセレクタは次のようなリストです: <kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>',
+			'help' => 'CSSセレクタは次のようなリストです<kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>',
 		),
 		'description' => '説明',
-		'empty' => 'このフィードは空です。サイトが運営されているかどうかを確認してみてください。',
+		'empty' => 'このフィードは空です。配信元サイトが現在も運営されているか確認してください。',
 		'error' => 'このフィードで問題が発生しました。この状況が続く場合は、まだアクセスできるか確認してください。',
 		'export-as-opml' => array(
 			'download' => 'ダウンロード',
-			'help' => 'XMLファイル (データのサブセット。<a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">ドキュメントを参照してください</a>。)',
+			'help' => 'XMLファイルデータのサブセット。<a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">ドキュメントを参照</a>)',
 			'label' => 'OPMLとしてエクスポート',
 		),
-		'ext_favicon' => 'Set automatically',	// TODO
-		'favicon_changed_by_ext' => 'The icon has been set by the <b>%s</b> extension.',	// TODO
+		'ext_favicon' => '自動設定',
+		'favicon_changed_by_ext' => '<b>%s</b>拡張機能によってアイコンが設定されました。',
 		'filteractions' => array(
 			'_' => 'フィルターアクション',
 			'help' => '1行に1つの検索フィルターを設定してください。演算子は<a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">ドキュメントを参照してください</a>。',
-			'view_filter' => 'Preview filters on existing articles (new window)',	// TODO
+			'view_filter' => '既存の記事でフィルターをプレビュー(新しいウィンドウ)',
 		),
 		'http_headers' => 'HTTPヘッダ',
-		'http_headers_help' => 'ヘッダは改行で区切られ、ヘッダの名前と値はコロンで区切られます (例: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',
-		'icon' => 'Icon',	// TODO
-		'information' => 'インフォメーション',
-		'keep_adding_feed' => 'Then add more feeds',	// TODO
-		'keep_min' => '最小数の記事は保持されます',
+		'http_headers_help' => 'ヘッダは改行で区切られ、ヘッダの名前と値はコロンで区切られます(例:<kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>)。',
+		'icon' => 'アイコン',
+		'information' => '情報',
+		'keep_adding_feed' => '続けてフィードを追加',
+		'keep_min' => '保持する記事数の下限',
 		'kind' => array(
 			'_' => 'フィードソースの種類',
 			'html_json' => array(
-				'_' => 'HTML + XPath + JSONドット記法 (HTML内のJSON)',
+				'_' => 'HTML + XPath + JSONドット記法(HTML内のJSON)',
 				'xpath' => array(
 					'_' => 'HTML内のJSONを指すXPath',
-					'help' => '例: <code>normalize-space(//script[@type="application/json"])</code> (single JSON)<br />or: <code>//script[@type="application/ld+json"]</code> (one JSON object per article)',	// DIRTY
+					'help' => '例:<code>normalize-space(//script[@type="application/json"])</code>(単一のJSON)<br />または:<code>//script[@type="application/ld+json"]</code>(記事ごとに1つのJSONオブジェクト)',
 				),
 			),
 			'html_xpath' => array(
-				'_' => 'HTML + XPath (ウェブスクレイピング)',
+				'_' => 'HTML + XPath(ウェブスクレイピング)',
 				'feed_title' => array(
 					'_' => 'フィードタイトル',
-					'help' => '例: <code>//title</code> または文字列定数: <code>"カスタムフィード"</code>',
+					'help' => '例:<code>//title</code> または文字列定数:<code>"カスタムフィード"</code>',
 				),
 				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> は上級者向けのクエリ型言語で、FreshRSSでスクレイピングをサポートしている言語です。',
 				'item' => array(
-					'_' => 'ニュース<strong>項目</strong>を探す<br /><small>(最も重要)</small>',
-					'help' => '例: <code>//div[@class="news-item"]</code>',
+					'_' => 'ニュースの<strong>項目</strong>を検索する<br /><small>(最も重要)</small>',
+					'help' => '例<code>//div[@class="news-item"]</code>',
 				),
 				'item_author' => array(
-					'_' => '項目の著者',
-					'help' => 'これもまた、文字定数が使えます。例: <code>"匿名"</code>',
+					'_' => '著者',
+					'help' => '固定文字定数も使用できます。例:<code>"匿名"</code>',
 				),
-				'item_categories' => '項目のタグ',
+				'item_categories' => 'タグ',
 				'item_content' => array(
-					'_' => '項目のコンテンツ',
-					'help' => 'すべての項目を取得する方法例: <code>.</code>',
+					'_' => '本文',
+					'help' => 'すべての項目を取得する方法例<code>.</code>',
 				),
 				'item_thumbnail' => array(
-					'_' => '項目のサムネイル',
-					'help' => '例: <code>descendant::img/@src</code>',
+					'_' => 'サムネイル',
+					'help' => '例<code>descendant::img/@src</code>',
 				),
 				'item_timeFormat' => array(
 					'_' => 'カスタム日時フォーマット',
 					'help' => 'オプションです。<a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>でサポートされている書式で、<code>d-m-Y H:i:s</code>のように指定します',
 				),
 				'item_timestamp' => array(
-					'_' => '項目の日付',
+					'_' => '日時',
 					'help' => '結果は<a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>で解析されます',
 				),
 				'item_title' => array(
-					'_' => '項目のタイトル',
+					'_' => 'タイトル',
 					'help' => '特に<a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath Axis</a>の <code>descendant::</code> を <code>descendant::h2</code> のように使います',
 				),
 				'item_uid' => array(
-					'_' => '項目のユニークID',
-					'help' => 'オプションです。例: <code>descendant::div/@data-uri</code>',
+					'_' => 'ユニークID',
+					'help' => 'オプションです。例<code>descendant::div/@data-uri</code>',
 				),
 				'item_uri' => array(
-					'_' => '項目のリンク(URL)',
-					'help' => '例: <code>descendant::a/@href</code>',
+					'_' => 'リンク(URL)',
+					'help' => '例<code>descendant::a/@href</code>',
 				),
-				'relative' => 'XPath (項目からの相対パス):',
+				'relative' => 'XPath(項目からの相対パス):',
 				'xpath' => 'XPath:',
 			),
 			'json_dotnotation' => array(
 				'_' => 'JSON(ドット記法)',
 				'feed_title' => array(
 					'_' => 'フィード名',
-					'help' => '例: <code>meta.title</code> または静的文字列: <code>"My custom feed"</code>',
+					'help' => '例:<code>meta.title</code>、または固定文字列:<code>"カスタムフィード"</code>',
 				),
-				'help' => 'JSONのドット記法は、オブジェクトの間にドットを使用し、配列には括弧を使用します。例: <code>data.items[0].title</code>',
+				'help' => 'JSONのドット記法は、オブジェクトの間にドットを使用し、配列には括弧を使用します。例<code>data.items[0].title</code>',
 				'item' => array(
-					'_' => 'ニュース<strong>項目</strong>を探す<br /><small>(最重要)</small>',
-					'help' => '項目を含む配列へのJSONパス。 例: <code>$</code> or <code>newsItems</code>',
+					'_' => 'ニュース<strong>項目</strong>を探す<br /><small>(最重要)</small>',
+					'help' => '項目を含む配列へのJSONパス。例:<code>$</code>または<code>newsItems</code>',
 				),
 				'item_author' => '項目の著者',
 				'item_categories' => '項目のタグ',
 				'item_content' => array(
-					'_' => '項目のコンテンツ',
-					'help' => 'コンテンツが存在するキー。例: <code>content</code>',
+					'_' => '本文',
+					'help' => '本文が存在するキー。例:<code>content</code>',
 				),
 				'item_thumbnail' => array(
-					'_' => '項目のサムネイル',
-					'help' => '例: <code>image</code>',
+					'_' => 'サムネイル',
+					'help' => '例<code>image</code>',
 				),
 				'item_timeFormat' => array(
 					'_' => 'カスタム日時フォーマット',
 					'help' => 'オプションです。<a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a>でサポートされている書式で、<code>d-m-Y H:i:s</code>のように指定します',
 				),
 				'item_timestamp' => array(
-					'_' => '項目の日付',
+					'_' => '日時',
 					'help' => '結果は<a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a>で解析されます',
 				),
-				'item_title' => '項目のタイトル',
-				'item_uid' => '項目のユニークID',
+				'item_title' => 'タイトル',
+				'item_uid' => 'ユニークID',
 				'item_uri' => array(
-					'_' => '項目のリンク(URL)',
-					'help' => '例: <code>permalink</code>',
+					'_' => 'リンク(URL)',
+					'help' => '例<code>permalink</code>',
 				),
-				'json' => 'ドット記法:',
-				'relative' => 'ドット記法(項目からの相対パス):',
+				'json' => 'ドット記法',
+				'relative' => 'ドット記法(項目からの相対パス)',
 			),
 			'jsonfeed' => 'JSONフィード',
-			'rss' => 'RSS / Atom (標準)',
+			'rss' => 'RSS/Atom(標準)',
 			'xml_xpath' => 'XML + XPath',	// IGNORE
 		),
-		'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
+		'last-entry-publication-date' => '最新記事の公開日時:<time datetime="%1$s" title="%1$s">%2$s</time>。',
+		'last-entry-received-date' => '最新記事の受信日時:<time datetime="%1$s" title="%1$s">%2$s</time>。',
+		'last-error-date' => '最後に更新エラーが発生した日時:<time datetime="%1$s" title="%1$s">%2$s</time>。',
+		'last-update' => '最後に正常に更新した日時:<time datetime="%1$s" title="%1$s">%2$s</time>。',
 		'maintenance' => array(
 			'clear_cache' => 'キャッシュのクリア',
-			'clear_cache_help' => 'このフィードのキャッシュをクリアします。',
+			'clear_cache_help' => 'フィードのキャッシュをクリアします。',
 			'reload_articles' => '記事を再読み込みする',
 			'reload_articles_help' => '指定した数の記事を再読み込みし、セレクターが定義されていればコンテンツを完全に取得します。',
 			'title' => 'メンテナンス',
 		),
-		'max_http_redir' => 'HTTPリダイレクトの上限',
+		'max_http_redir' => 'HTTPリダイレクトの上限',
 		'max_http_redir_help' => '0を設定するか、空白のままにすると無効になり、-1を設定するとリダイレクト数が無制限になります。',
 		'method' => array(
 			'_' => 'HTTPメソッド',
 		),
-		'method_help' => 'POSTペイロードは <code>application/x-www-form-urlencoded</code> と <code>application/json</code> を自動的にサポートしています',
+		'method_help' => 'POSTペイロードでは<code>application/x-www-form-urlencoded</code>と<code>application/json</code>が自動的にサポートされます',
 		'method_postparams' => 'POST用ペイロード',
-		'moved_category_deleted' => 'カテゴリを削除したとき、フィードは自動的に<em>%s</em>下に分類されます。',
+		'moved_category_deleted' => 'カテゴリを削除すると、そのフィードは自動的に<em>%s</em>へ移動します。',
 		'mute' => array(
 			'_' => 'ミュート',
-			'state_is_muted' => 'このフィードはミュートす',
+			'state_is_muted' => 'このフィードはミュートされています',
 		),
 		'no_selected' => 'どのフィードも選択されていません',
-		'number_entries' => '%d 記事数',
-		'open_feed' => 'フィードを開く %s',
+		'number_entries' => '記事数:%d件',
+		'open_feed' => 'フィード「%s」を開く',
 		'path_entries_conditions' => 'コンテンツを取得する条件',
 		'priority' => array(
-			'_' => '表示する場所',
-			'category' => 'カテゴリで表示する',
-			'feed' => 'Show in its feed',	// TODO
-			'hidden' => '非表示にする',
-			'important' => '重要なフィードに表示する',
-			'main_stream' => 'メインストリームで表示する',
+			'_' => '表示範囲',
+			'category' => 'カテゴリで表示',
+			'feed' => 'フィード内に表示',
+			'hidden' => '非表示',
+			'important' => '重要なフィードに表示',
+			'main_stream' => 'メインストリームで表示',
 		),
 		'proxy' => 'フィードを取得するときのプロキシ',
-		'proxy_help' => 'プロトコルを選択し (例: SOCKS5) プロキシアドレスを入力してください (例: <kbd>127.0.0.1:1080</kbd> や <kbd>username:password@127.0.0.1:1080</kbd>)',
-		'reset_favicon' => 'Reset to default',	// TODO
+		'proxy_help' => 'プロトコルを選択し(例:SOCKS5)プロキシアドレスを入力してください(例:<kbd>127.0.0.1:1080</kbd> や <kbd>username:password@127.0.0.1:1080</kbd>)',
+		'reset_favicon' => 'デフォルトに戻す',
 		'selector_preview' => array(
 			'show_raw' => 'ソースコードを表示する',
 			'show_rendered' => 'コンテンツを表示する',
 		),
 		'show' => array(
 			'all' => 'すべてのフィードを表示する',
-			'error' => 'エラーがるフィードを表示する',
+			'error' => 'エラーが発生しているフィードを表示する',
 		),
 		'showing' => array(
-			'error' => 'エラーがあるフィードを表示する',
+			'error' => 'エラーが発生しているフィードのみを表示しています',
 		),
-		'ssl_verify' => 'SSL セキュリティを管理する',
+		'ssl_verify' => 'SSL証明書を検証する',
 		'stats' => '統計',
-		'think_to_add' => 'フィードを追加できます。',
-		'timeout' => 'タイムアウトする時間(秒)',
+		'think_to_add' => 'フィードを追加してみましょう。',
+		'timeout' => 'タイムアウトする時間(秒)',
 		'title' => 'タイトル',
-		'title_add' => 'RSS フィードを追加する',
+		'title_add' => 'RSSフィードを追加する',
 		'ttl' => '自動更新の頻度',
 		'unicityCriteria' => array(
-			'_' => '記事の同一判定',
-			'forced' => '<span title="フィードに重複した記事が存在しても、同一判定を抑制します">強制する</span>',
-			'help' => '不正なフィードに対処します。<br />⚠️ ポリシーを変更すると重複が発生します。',
-			'id' => '標準的なID (デフォルト)',
+			'_' => '記事の重複判定基準',
+			'forced' => '<span title="重複記事が存在しても、選択した重複判定基準を自動変更しません">選択した基準を固定する</span>',
+			'help' => '仕様に準拠していないフィードへの対処に使用します。<br />⚠️ 基準を変更すると重複記事が作成される可能性があります。',
+			'id' => '標準ID(デフォルト)',
 			'link' => 'リンク',
-			'sha1:content' => 'Content',	// TODO
-			'sha1:content_published' => 'Content + Date',	// TODO
-			'sha1:link_published' => 'リンク + 日付',
-			'sha1:link_published_title' => 'リンク + 日付 + タイトル',
-			'sha1:link_published_title_content' => 'リンク + 日付 + タイトル + コンテンツ',
-			'sha1:published' => 'Date',	// TODO
-			'sha1:title' => 'Title',	// TODO
-			'sha1:title_published' => 'Title + Date',	// TODO
-			'sha1:title_published_content' => 'Title + Date + Content',	// TODO
+			'sha1:content' => '本文',
+			'sha1:content_published' => '本文 + 公開日時',
+			'sha1:link_published' => 'リンク + 公開日時',
+			'sha1:link_published_title' => 'リンク + 公開日時 + タイトル',
+			'sha1:link_published_title_content' => 'リンク + 公開日時 + タイトル + 本文',
+			'sha1:published' => '公開日時',
+			'sha1:title' => 'タイトル',
+			'sha1:title_published' => 'タイトル + 公開日時',
+			'sha1:title_published_content' => 'タイトル + 公開日時 + 本文',
 		),
 		'url' => 'フィードのURL',
-		'useragent' => 'フィードを取得するときのユーザーエージェント',
-		'useragent_help' => '例: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
-		'validator' => 'フィードが有効であるかどうかを確認してください',
+		'useragent' => 'フィードを取得するのユーザーエージェント',
+		'useragent_help' => '例<kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
+		'validator' => 'フィードが有効かどうかを確認する',
 		'website' => 'WebサイトのURL',
 		'websub' => 'WebSubとの即時通知',
 	),
@@ -272,24 +272,24 @@ return array(
 			'sqlite' => 'ユーザーデータベースをSQLiteとしてダウンロードする',
 		),
 		'export_labelled' => 'ラベル付けされた記事をエクスポートする',
-		'export_opml' => 'フィードリストをエクスポートする (OPML)',
+		'export_opml' => 'フィードリストをエクスポートする(OPML)',
 		'export_starred' => 'お気に入りをエクスポートする',
 		'feed_list' => '%s 記事のリスト',
-		'file_to_import' => 'インポートするファイル<br />(OPML, JSON または ZIP)',
-		'file_to_import_no_zip' => 'インポートするファイル<br />(OPML または JSON)',
+		'file_to_import' => 'インポートするファイル<br />(OPML, JSON または ZIP)',
+		'file_to_import_no_zip' => 'インポートするファイル<br />(OPML または JSON)',
 		'import' => 'インポート',
 		'starred_list' => 'お気に入りの記事',
-		'title' => 'インポート / エクスポート',
+		'title' => 'インポートエクスポート',
 	),
 	'menu' => array(
 		'add' => 'フィードやカテゴリを追加',
-		'import_export' => 'インポート / エクスポート',
+		'import_export' => 'インポートエクスポート',
 		'label_management' => 'ラベル管理',
 		'stats' => array(
 			'idle' => '休止中のフィード',
 			'main' => '主な統計',
 			'repartition' => '記事の割合',
-			'unread_dates' => 'Unread dates',	// TODO
+			'unread_dates' => '未読記事数が多い日付',
 		),
 		'subscription_management' => '購読フィードの管理',
 		'subscription_tools' => '購読ツール',
@@ -304,7 +304,7 @@ return array(
 		'_' => '購読フィードの管理',
 		'add' => 'フィードやカテゴリを追加',
 		'add_category' => 'カテゴリの追加',
-		'add_dynamic_opml' => '動的OPMLを追加する',
+		'add_dynamic_opml' => '動的OPMLを追加する',
 		'add_feed' => 'フィードの追加',
 		'add_label' => 'ラベルの追加',
 		'add_opml_category' => 'OPMLカテゴリ名',

+ 18 - 18
app/i18n/ja/user.php

@@ -13,42 +13,42 @@
 return array(
 	'email' => array(
 		'feedback' => array(
-			'invalid' => 'このEメールアドレスは無効です。',
-			'required' => 'Eメールアドレスは必要です。',
+			'invalid' => 'このメールアドレスは無効です。',
+			'required' => 'メールアドレスが必要です。',
 		),
 		'validation' => array(
-			'change_email' => 'Eメールアドレスは <a href="%s">プロフィールページで変更できます</a>.',
-			'email_sent_to' => 'あなたのメールボックス<strong>%s</strong>にメールを送りました。有効性を確認するためにメールを確かめてください。',
+			'change_email' => 'メールアドレスは <a href="%s">プロフィールページ</a>で変更できます。',
+			'email_sent_to' => '<strong>%s</strong>宛てにメールを送信しました。メールの案内に従ってアドレスを確認してください。',
 			'feedback' => array(
-				'email_failed' => 'サーバー設定にエラーがあるためEメールを送信できませんでした。',
-				'email_sent' => 'Eメールはあなたのメールボックスに送信されました',
-				'error' => 'Eメールアドレスの確認は失敗しました。',
-				'ok' => 'このEメールアドレスは確認されました。',
-				'unnecessary' => 'このEメールアドレスは既に確認済みです。',
-				'wrong_token' => 'このEメールアドレスのトークンは誤っています。',
+				'email_failed' => 'サーバー設定にエラーがあるためメールを送信できませんでした。',
+				'email_sent' => '確認メールを送信しました。',
+				'error' => 'メールアドレスの確認に失敗しました。',
+				'ok' => 'メールアドレスを確認しました。',
+				'unnecessary' => 'このメールアドレスは既に確認済みです。',
+				'wrong_token' => 'トークンが正しくないため、メールアドレスを確認できませんでした。',
 			),
-			'need_to' => '%s を使うためには、Eメールアドレスの認証が必要です。',
-			'resend_email' => 'Eメールの再送',
-			'title' => 'Eメールアドレス確認',
+			'need_to' => '%sを利用するにはメールアドレスの確認が必要です。',
+			'resend_email' => 'メールを再送信',
+			'title' => 'メールアドレス確認',
 		),
 	),
 	'mailer' => array(
 		'email_need_validation' => array(
-			'body' => 'あなたは %s で登録されましたが、Eメールアドレスを確認する必要があります。このリンクに従ってください:',
-			'title' => 'あなたのアカウント確認する必要があります',
+			'body' => '%sへの登録を完了するには、メールアドレスの確認が必要です。次のリンクを開いてください:',
+			'title' => 'アカウント確認',
 			'welcome' => 'ようこそ %s さん',
 		),
 	),
 	'password' => array(
-		'invalid' => 'このパスワードは無効です',
+		'invalid' => 'このパスワードは無効です',
 	),
 	'tos' => array(
 		'feedback' => array(
-			'invalid' => 'あなたが使うには利用規約に同意する必要があります。',
+			'invalid' => '登録するには利用規約への同意が必要です。',
 		),
 	),
 	'username' => array(
 		'invalid' => 'このユーザー名は無効です。',
-		'taken' => '%s は既に使われているユーザー名です。',
+		'taken' => '%sは既に使われているユーザー名です。',
 	),
 );