about summary refs log tree commit diff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/components/features/ui/containers/status_list_container.jsx6
-rw-r--r--app/assets/javascripts/components/locales/fr.jsx1
-rw-r--r--app/assets/javascripts/components/locales/ja.jsx194
-rw-r--r--app/assets/javascripts/components/reducers/statuses.jsx3
4 files changed, 107 insertions, 97 deletions
diff --git a/app/assets/javascripts/components/features/ui/containers/status_list_container.jsx b/app/assets/javascripts/components/features/ui/containers/status_list_container.jsx
index f249240d8..4c33f2b61 100644
--- a/app/assets/javascripts/components/features/ui/containers/status_list_container.jsx
+++ b/app/assets/javascripts/components/features/ui/containers/status_list_container.jsx
@@ -24,8 +24,10 @@ const makeGetStatusIds = () => createSelector([
 
   if (columnSettings.getIn(['regex', 'body'], '').trim().length > 0) {
     try {
-      const regex = new RegExp(columnSettings.getIn(['regex', 'body']).trim(), 'i');
-      showStatus = showStatus && !regex.test(statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'content']) : statusForId.get('content'));
+      if (showStatus) {
+        const regex = new RegExp(columnSettings.getIn(['regex', 'body']).trim(), 'i');
+        showStatus = !regex.test(statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'unescaped_content']) : statusForId.get('unescaped_content'));
+      }
     } catch(e) {
       // Bad regex, don't affect filters
     }
diff --git a/app/assets/javascripts/components/locales/fr.jsx b/app/assets/javascripts/components/locales/fr.jsx
index 8838c264f..0a1dd38ae 100644
--- a/app/assets/javascripts/components/locales/fr.jsx
+++ b/app/assets/javascripts/components/locales/fr.jsx
@@ -75,6 +75,7 @@ const fr = {
   "navigation_bar.favourites": "Favoris",
   "navigation_bar.info": "Plus d'informations",
   "navigation_bar.logout": "Déconnexion",
+  "navigation_bar.mutes": "Utilisateurs muets",
   "navigation_bar.follow_requests": "Demandes de suivi",
   "reply_indicator.cancel": "Annuler",
   "search.placeholder": "Rechercher",
diff --git a/app/assets/javascripts/components/locales/ja.jsx b/app/assets/javascripts/components/locales/ja.jsx
index c64d7ecc6..79defd325 100644
--- a/app/assets/javascripts/components/locales/ja.jsx
+++ b/app/assets/javascripts/components/locales/ja.jsx
@@ -1,121 +1,125 @@
 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.load_more": "もっと見る",
-  "status.show_less": "隠す",
-  "status.open": "Expand this status",
-  "status.report": "@{name} さんを通報",
-  "status.media_hidden": "非表示のメデイア",
-  "video_player.toggle_sound": "音の切り替え",
-  "account.mention": "@{name} さんに返信",
-  "account.edit_profile": "プロフィールを編集",
-  "account.unblock": "@{name} さんのブロックを解除",
-  "account.unfollow": "フォロー解除",
   "account.block": "@{name} さんをブロック",
-  "account.mute": "ミュート",
-  "account.unmute": "ミュート解除",
+  "account.disclaimer": "このユーザーは他のインスタンスに所属しているため、数字が正確で無い場合があります。",
+  "account.edit_profile": "プロフィールを編集",
   "account.follow": "フォロー",
-  "account.report": "@{name}を通報する",
-  "account.posts": "投稿",
-  "account.follows": "フォロー",
   "account.followers": "フォロワー",
+  "account.follows": "フォロー",
   "account.follows_you": "フォローされています",
+  "account.mention": "@{name} さんに返信",
+  "account.mute": "ミュート",
+  "account.posts": "投稿",
+  "account.report": "@{name}を通報する",
   "account.requested": "承認待ち",
-  "follow_request.authorize": "許可",
-  "follow_request.reject": "拒否",
-  "getting_started.heading": "スタート",
-  "getting_started.about_addressing": "ドメインとユーザー名を知っているなら検索フォームに入力すればフォローできます。",
-  "getting_started.about_shortcuts": "対象のアカウントがあなたと同じドメインのユーザーならばユーザー名のみで検索できます。これは返信のときも一緒です。",
-  "getting_started.open_source_notice": "Mastodon はオープンソースソフトウェアです。誰でも GitHub({github})から開発に参加したり、問題を報告したりできます。 {apps}",
-  "getting_started.apps": "さまざまなアプリで利用できます。",
-  "column.home": "ホーム",
+  "account.unblock": "@{name} さんのブロックを解除",
+  "account.unfollow": "フォロー解除",
+  "account.unmute": "ミュート解除",
+  "boost_modal.combo": "次からは{combo}を押せば、これをスキップできます。",
+  "column.blocks": "ブロックしたユーザー",
   "column.community": "ローカルタイムライン",
-  "column.public": "連合タイムライン",
-  "column.notifications": "通知",
   "column.favourites": "お気に入り",
-  "tabs_bar.compose": "投稿",
-  "tabs_bar.home": "ホーム",
-  "tabs_bar.mentions": "返信",
-  "tabs_bar.local_timeline": "ローカル",
-  "tabs_bar.federated_timeline": "連合",
-  "tabs_bar.notifications": "通知",
+  "column.follow_requests": "フォローリクエスト",
+  "column.home": "ホーム",
+  "column.mutes": "ミュートしたユーザー",
+  "column.notifications": "通知",
+  "column.public": "連合タイムライン",
+  "column_back_button.label": "戻る",
   "compose_form.placeholder": "今なにしてる?",
+  "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.publish": "トゥート",
   "compose_form.sensitive": "メディアを不適切なコンテンツとしてマークする",
   "compose_form.spoiler": "テキストを隠す",
-  "compose_form.spoiler_placeholder": "内容注意メッセージ",
-  "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": "公開タイムラインに表示しない",
-  "privacy.public.short": "公開",
-  "privacy.public.long": "公開TLに投稿する",
-  "privacy.unlisted.short": "未収載",
-  "privacy.unlisted.long": "公開TLで表示しない",
-  "privacy.private.short": "非公開",
-  "privacy.private.long": "フォロワーだけに公開",
-  "privacy.direct.short": "ダイレクト",
-  "privacy.direct.long": "含んだユーザーだけに公開",
-  "privacy.change": "投稿のプライバシーを変更",
-  "report.heading": "新規通報",
-  "report.placeholder": "コメント",
-  "report.target": "問題のユーザー",
-  "report.submit": "通報する",
-  "navigation_bar.edit_profile": "プロフィールを編集",
-  "navigation_bar.preferences": "ユーザー設定",
+  "compose_form.spoiler_placeholder": "閲覧注意",
+  "emoji_button.label": "絵文字を追加",
+  "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
+  "empty_column.hashtag": "このハッシュタグはまだ使われていません。",
+  "empty_column.home": "まだ誰もフォローしていません。{public}を見に行くか、検索を使って他のユーザーを見つけましょう。",
+  "empty_column.home.public_timeline": "連合タイムライン",
+  "empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
+  "empty_column.public": "ここにはまだ何もありません!公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう!",
+  "follow_request.authorize": "許可",
+  "follow_request.reject": "拒否",
+  "getting_started.apps": "さまざまなアプリで利用できます。",
+  "getting_started.heading": "スタート",
+  "getting_started.open_source_notice": "Mastodon はオープンソースソフトウェアです。誰でも GitHub({github})から開発に参加したり、問題を報告したりできます。 {apps}",
+  "home.column_settings.advanced": "上級者向け",
+  "home.column_settings.basic": "シンプル",
+  "home.column_settings.filter_regex": "正規表現でフィルター",
+  "home.column_settings.show_reblogs": "ブースト表示",
+  "home.column_settings.show_replies": "返信表示",
+  "home.settings": "カラム設定",
+  "lightbox.close": "閉じる",
+  "loading_indicator.label": "読み込み中...",
+  "media_gallery.toggle_visible": "表示切り替え",
+  "missing_indicator.label": "見つかりません",
+  "navigation_bar.blocks": "ブロックしたユーザー",
   "navigation_bar.community_timeline": "ローカルタイムライン",
-  "navigation_bar.public_timeline": "連合タイムライン",
-  "navigation_bar.logout": "ログアウト",
+  "navigation_bar.edit_profile": "プロフィールを編集",
   "navigation_bar.favourites": "お気に入り",
-  "navigation_bar.blocks": "ブロックしたユーザー",
+  "navigation_bar.follow_requests": "フォローリクエスト",
   "navigation_bar.info": "サーバー情報",
-  "reply_indicator.cancel": "キャンセル",
-  "search.placeholder": "検索",
-  "search.account": "アカウント",
-  "search.hashtag": "ハッシュタグ",
-  "search.status_by": "{uuuname}からの投稿",
-  "search_results.total": "{count} 件",
-  "upload_area.title": "ファイルをこちらにドラッグしてください",
-  "upload_button.label": "メディアを追加",
-  "upload_form.undo": "やり直す",
-  "notification.follow": "{name} さんにフォローされました",
+  "navigation_bar.logout": "ログアウト",
+  "navigation_bar.mutes": "ミュートしたユーザー",
+  "navigation_bar.preferences": "ユーザー設定",
+  "navigation_bar.public_timeline": "連合タイムライン",
   "notification.favourite": "{name} さんがあなたのトゥートをお気に入りに登録しました",
-  "notification.reblog": "{name} さんがあなたのトゥートをブーストしました",
+  "notification.follow": "{name} さんにフォローされました",
   "notification.mention": "{name} さんがあなたに返信しました",
-  "notifications.clear": "通知を片付ける",
-  "notifications.clear_confirmation": "通知を全部片付けます。大丈夫ですか?",
+  "notification.reblog": "{name} さんがあなたのトゥートをブーストしました",
+  "notifications.clear": "通知を消去",
+  "notifications.clear_confirmation": "本当に通知を消去しますか?",
   "notifications.column_settings.alert": "デスクトップ通知",
-  "notifications.column_settings.show": "カラムに表示",
-  "notifications.column_settings.follow": "新しいフォロワー",
   "notifications.column_settings.favourite": "お気に入り",
+  "notifications.column_settings.follow": "新しいフォロワー",
   "notifications.column_settings.mention": "返信",
   "notifications.column_settings.reblog": "ブースト",
+  "notifications.column_settings.show": "カラムに表示",
   "notifications.column_settings.sound": "通知音を再生",
-  "empty_column.home": "まだ誰もフォローしていません。{public}を見に行くか、検索を使って他のユーザーを見つけましょう。",
-  "empty_column.home.public_timeline": "連合タイムライン",
-  "empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
-  "empty_column.public": "ここにはまだ何もありません!公開で何かを投稿したり、他のインスタンスのユーザーをフォローしたりしていっぱいにしましょう!",
-  "empty_column.hashtag": "このハッシュタグはまだ使っていません。",
-  "upload_progress.label": "アップロード中…",
-  "emoji_button.label": "絵文字を追加",
-  "home.column_settings.basic": "シンプル",
-  "home.column_settings.advanced": "エキスパート",
-  "home.column_settings.show_reblogs": "ブースト表示",
-  "home.column_settings.show_replies": "返信表示",
-  "home.column_settings.filter_regex": "正規表現でフィルター",
-  "home.settings": "カラム設定",
   "notifications.settings": "カラム設定",
-  "missing_indicator.label": "見つかりません",
-  "boost_modal.combo": "次は{combo}を押せば、これをスキップできます。"
+  "privacy.change": "投稿のプライバシーを変更",
+  "privacy.direct.long": "メンションしたユーザーだけに公開",
+  "privacy.direct.short": "ダイレクト",
+  "privacy.private.long": "フォロワーだけに公開",
+  "privacy.private.short": "非公開",
+  "privacy.public.long": "公開TLに投稿する",
+  "privacy.public.short": "公開",
+  "privacy.unlisted.long": "公開TLで表示しない",
+  "privacy.unlisted.short": "未収載",
+  "reply_indicator.cancel": "キャンセル",
+  "report.heading": "新規通報",
+  "report.placeholder": "コメント",
+  "report.submit": "通報する",
+  "report.target": "問題のユーザー",
+  "search.placeholder": "検索",
+  "search.status_by": "{name}からの投稿",
+  "search_results.total": "{count} {count, plural, one {result} other {results}} 件",
+  "status.delete": "削除",
+  "status.favourite": "お気に入り",
+  "status.load_more": "もっと見る",
+  "status.media_hidden": "非表示のメデイア",
+  "status.mention": "@{name} さんへの返信",
+  "status.open": "詳細を表示",
+  "status.reblog": "ブースト",
+  "status.reblogged_by": "{name} さんにブーストされました",
+  "status.reply": "返信",
+  "status.report": "@{name} さんを通報",
+  "status.sensitive_toggle": "クリックして表示",
+  "status.sensitive_warning": "不適切なコンテンツ",
+  "status.show_less": "隠す",
+  "status.show_more": "もっと見る",
+  "tabs_bar.compose": "投稿",
+  "tabs_bar.federated_timeline": "連合",
+  "tabs_bar.home": "ホーム",
+  "tabs_bar.local_timeline": "ローカル",
+  "tabs_bar.notifications": "通知",
+  "upload_area.title": "ドラッグ&ドロップでアップロード",
+  "upload_button.label": "メディアを追加",
+  "upload_form.undo": "やり直す",
+  "upload_progress.label": "アップロード中…",
+  "video_player.expand": "動画の詳細",
+  "video_player.toggle_sound": "音の切り替え",
+  "video_player.toggle_visible": "表示切り替え",
+  "video_player.video_error": "動画の再生に失敗しました",
 };
 
 export default ja;
diff --git a/app/assets/javascripts/components/reducers/statuses.jsx b/app/assets/javascripts/components/reducers/statuses.jsx
index ca8fa7a01..2002d2223 100644
--- a/app/assets/javascripts/components/reducers/statuses.jsx
+++ b/app/assets/javascripts/components/reducers/statuses.jsx
@@ -48,6 +48,9 @@ const normalizeStatus = (state, status) => {
     normalStatus.reblog = status.reblog.id;
   }
 
+  const linebreakComplemented = status.content.replace(/<br \/>/g, '\n').replace(/<\/p><p>/g, '\n\n');
+  normalStatus.unescaped_content = new DOMParser().parseFromString(linebreakComplemented, 'text/html').documentElement.textContent;
+
   return state.update(status.id, Immutable.Map(), map => map.mergeDeep(Immutable.fromJS(normalStatus)));
 };