diff --git a/Localizations/Localizable.strings b/Localizations/en.lproj/Localizable.strings
similarity index 100%
rename from Localizations/Localizable.strings
rename to Localizations/en.lproj/Localizable.strings
diff --git a/Localizations/Localizable.stringsdict b/Localizations/en.lproj/Localizable.stringsdict
similarity index 100%
rename from Localizations/Localizable.stringsdict
rename to Localizations/en.lproj/Localizable.stringsdict
diff --git a/Localizations/ja.lproj/Localizable.strings b/Localizations/ja.lproj/Localizable.strings
new file mode 100644
index 0000000..e856053
--- /dev/null
+++ b/Localizations/ja.lproj/Localizable.strings
@@ -0,0 +1,343 @@
+// Copyright © 2020 Metabolist. All rights reserved.
+
+"about" = "このアプリについて";
+"about.acknowledgments" = "謝辞";
+"about.made-by-metabolist" = "Metabolistにより開発されました";
+"about.official-account" = "公式アカウント";
+"about.source-code-and-issue-tracker" = "ソースコードと課題追跡システム";
+"about.website" = "ウェブサイト";
+"accessibility.activate-link-%@" = "アクティベートリンク: %@";
+"accessibility.copy-text" = "テキストをコピー";
+"account.%@-followers" = "%@のフォロワー";
+"account.accept-follow-request-button.accessibility-label" = "フォローリクエストを承認";
+"account.add-remove-lists" = "リストから追加/削除";
+"account.avatar.accessibility-label-%@" = "アバター: %@";
+"account.block" = "ブロック";
+"account.block-and-report" = "ブロックして通報";
+"account.block.confirm-%@" = "%@をブロックしますか?";
+"account.blocked" = "ブロック済み";
+"account.direct-message" = "ダイレクトメッセージ";
+"account.domain-block-%@" = "%@をドメインブロック";
+"account.domain-block.confirm-%@" = "%@をドメインブロックしますか?";
+"account.domain-unblock-%@" = "%@をドメインブロック解除";
+"account.domain-unblock.confirm-%@" = "%@をドメインブロック解除しますか?";
+"account.field.verified" = "%@は検証されています";
+"account.follow" = "フォロー";
+"account.following" = "フォロー中";
+"account.following-count" = "%ld フォロー";
+"account.followed-by-%@" = "%@にフォローされています";
+"account.follows-you" = "あなたをフォロー";
+"account.header.accessibility-label-%@" = "ヘッダー画像: %@";
+"account.hide-reblogs" = "ブーストを隠す";
+"account.hide-reblogs.confirm-%@" = "%@からのブーストを隠しますか?";
+"account.joined-%@" = "%@に登録";
+"account.locked.accessibility-label" = "ロックされたアカウント";
+"account.mute" = "ミュート";
+"account.mute.indefinite" = "無期限";
+"account.mute.confirm-%@" = "%@をミュートしてもよろしいですか?";
+"account.mute.confirm.explanation" = "これにより、相手からの投稿や相手に言及した投稿は非表示になりますが、相手はあなたの投稿を見ることができ、あなたをフォローすることができます。";
+"account.mute.confirm.hide-notifications" = "このユーザーからの通知を非表示にしますか?";
+"account.mute.confirm.duration" = "期限";
+"account.mute.target-%@" = "%@をミュート";
+"account.muted" = "ミュート";
+"account.notify" = "通知をオンにする";
+"account.reject-follow-request-button.accessibility-label" = "フォローリクエストを拒否する";
+"account.request" = "リクエスト";
+"account.request.cancel" = "フォローリクエストをキャンセルする";
+"account.statuses.post" = "投稿";
+"account.statuses.toot" = "トゥート";
+"account.statuses-and-replies.post" = "投稿と返信";
+"account.statuses-and-replies.toot" = "トゥートと返信";
+"account.media" = "メディア";
+"account.show-reblogs" = "ブーストを表示";
+"account.show-reblogs.confirm-%@" = "%@からのブーストを表示しますか?";
+"account.unavailable" = "プロフィールを利用できません";
+"account.unblock" = "ブロック解除";
+"account.unblock.confirm-%@" = "%@のブロックを解除しますか?";
+"account.unfollow.confirm-%@" = "%@のフォローを解除しますか?";
+"account.unmute" = "ミュート解除";
+"account.unmute.confirm-%@" = "%@のミュートを解除しますか?";
+"account.unnotify" = "通知をオフにする";
+"activity.open-in-default-browser" = "デフォルトのブラウザで開く";
+"add" = "追加";
+"apns-default-message" = "新しい通知";
+"app-icon.brutalist" = "ブルータリスト";
+"app-icon.rainbow-brutalist" = "虹色ブルータリスト";
+"app-icon.classic" = "クラシック";
+"app-icon.rainbow" = "虹色";
+"add-identity.instance-url" = "インスタンスURL";
+"add-identity.log-in" = "ログイン";
+"add-identity.browse" = "拾い読み";
+"add-identity.instance-not-supported" = "すべてのユーザーに安全なエクスペリエンスを提供し、App Storeレビューガイドラインに準拠するために、このインスタンスはサポートされていません。";
+"add-identity.join" = "登録する";
+"add-identity.prompt" = "接続したいMastodonインスタンスのURLを入力してください:";
+"add-identity.request-invite" = "登録を申請する";
+"add-identity.unable-to-connect-to-instance" = "インスタンスへ接続できません";
+"add-identity.welcome" = "ようこそMetatextへ";
+"add-identity.what-is-mastodon" = "マストドンとは?";
+"attachment.edit.description" = "閲覧が難しいユーザーへの説明";
+"attachment.edit.description.audio" = "聴取が難しいユーザーへの説明";
+"attachment.edit.description.video" = "視聴が難しいユーザーへの説明";
+"attachment.edit.title" = "メディアを編集";
+"attachment.edit.thumbnail.prompt" = "サムネイルの焦点にしたい場所へ円形の枠をドラッグしてください。";
+"attachment.sensitive-content" = "閲覧注意";
+"attachment.media-hidden" = "隠されたメディア";
+"attachment.type.image" = "画像";
+"attachment.type.audio" = "オーディオファイル";
+"attachment.type.video" = "動画";
+"attachment.type.unknown" = "添付ファイル";
+"attachment.unable-to-export-media" = "メディアをエクスポートできません";
+"bookmarks" = "ブックマーク";
+"card.link.accessibility-label" = "リンク";
+"camera-access.title" = "カメラへのアクセスが必要";
+"camera-access.description" = "システム設定を開いてカメラへのアクセスを許可する";
+"camera-access.open-system-settings" = "システム設定を開く";
+"cancel" = "キャンセル";
+"compose.add-button-accessibility-label.post" = "違う投稿を追加";
+"compose.add-button-accessibility-label.toot" = "違うトゥートを追加";
+"compose.attachment.cancel-upload.accessibility-label" = "添付ファイルのアップロードをキャンセルする";
+"compose.attachment.edit" = "添付ファイルを編集";
+"compose.attachment.remove" = "添付ファイルを削除";
+"compose.attachment.uncaptioned" = "見出しなし";
+"compose.attachment.uploading" = "アップロード中";
+"compose.attachments-button.accessibility-label" = "添付ファイルを追加";
+"compose.attachments-will-be-discarded" = "アカウントを変更すると、添付ファイルは破棄されます";
+"compose.browse" = "ブラウズ";
+"compose.characters-remaining-accessibility-label-%ld" = "残り%ld文字";
+"compose.change-identity-button.accessibility-hint" = "タップして別のアカウントで投稿する";
+"compose.content-warning-button.add" = "警告を追加";
+"compose.content-warning-button.remove" = "警告を削除";
+"compose.emoji-button" = "絵文字ピッカー";
+"compose.mark-media-sensitive" = "メディアを閲覧注意としてマークする";
+"compose.photo-library" = "フォトライブラリ";
+"compose.poll.accessibility.multiple-choices-allowed" = "複数選択を許可";
+"compose.poll.add-choice" = "項目を追加";
+"compose.poll.allow-multiple-choices" = "複数選択を許可";
+"compose.poll-button.accessibility-label" = "アンケートを追加";
+"compose.prompt" = "今なにしてる?";
+"compose.take-photo-or-video" = "写真を撮る";
+"compose.visibility-button.accessibility-label-%@" = "公開範囲: %@";
+"compose-button.accessibility-label.post" = "投稿を作成";
+"compose-button.accessibility-label.toot" = "トゥートを作成";
+"conversation.unread" = "未読";
+"dismiss" = "隠す";
+"emoji.custom" = "カスタム";
+"emoji.default-skin-tone" = "デフォルトの肌の色合い";
+"emoji.default-skin-tone-button.accessibility-label" = "デフォルトの肌の色合いを選択";
+"emoji.frequently-used" = "よく使う絵文字";
+"emoji.search" = "絵文字を検索";
+"emoji.system-group.smileys-and-emotion" = "顔文字と感情";
+"emoji.system-group.people-and-body" = "人々と身体";
+"emoji.system-group.components" = "構成要素";
+"emoji.system-group.animals-and-nature" = "動物と自然";
+"emoji.system-group.food-and-drink" = "食べ物と飲み物";
+"emoji.system-group.travel-and-places" = "旅行と場所";
+"emoji.system-group.activites" = "活動";
+"emoji.system-group.objects" = "物";
+"emoji.system-group.symbols" = "記号";
+"emoji.system-group.flags" = "国旗";
+"explore.trending" = "今のトレンド";
+"explore.instance" = "インスタンス";
+"explore.profile-directory" = "ディレクトリ";
+"error" = "エラー";
+"favorites" = "お気に入り";
+"follow-requests" = "フォローリクエスト";
+"registration.review-terms-of-use-and-privacy-policy-%@" = "続行するには%@のサーバーのルールとプライバシーポリシーを確認してください";
+"registration.username" = "ユーザー名";
+"registration.email" = "メールアドレス";
+"registration.password" = "パスワード";
+"registration.password-confirmation" = "確認用パスワード";
+"registration.reason-%@" = "%@に登録する意気込みをお聞かせください";
+"registration.server-rules" = "サーバーのルール";
+"registration.terms-of-service" = "プライバシーポリシー";
+"registration.agree-to-server-rules-and-terms-of-service" = "サーバーのルールとプライバシーポリシーに同意します";
+"registration.password-confirmation-mismatch" = "パスワードと確認用パスワードが一致しません";
+"secondary-navigation.about" = "このアプリについて";
+"secondary-navigation.accounts" = "アカウント";
+"secondary-navigation.lists" = "リスト";
+"secondary-navigation.my-profile" = "マイプロフィール";
+"secondary-navigation.preferences" = "環境設定";
+"secondary-navigation-button.accessibility-title" = "アカウントメニュー";
+"http-error.non-http-response" = "HTTPエラー: Non-HTTP response";
+"http-error.status-code-%ld" = "HTTPエラー: %ld";
+"identities.accounts" = "アカウント";
+"identities.browsing" = "拾い読み中";
+"identities.log-out" = "ログアウト";
+"identities.pending" = "確認待ち";
+"image-error.unable-to-load" = "画像が読み込めません";
+"lists.new-list-title" = "新しいリストタイトル";
+"load-more" = "もっと読み込む";
+"load-more.above.accessibility.post" = "上の投稿を読み込む";
+"load-more.above.accessibility.toot" = "上のトゥートを読み込む";
+"load-more.below.accessibility.post" = "下の投稿を読み込む";
+"load-more.below.accessibility.toot" = "下のトゥートを読み込む";
+"main-navigation.timelines" = "タイムライン";
+"main-navigation.explore" = "探索";
+"main-navigation.notifications" = "通知";
+"main-navigation.conversations" = "メッセージ";
+"metatext" = "Metatext";
+"notification.accessibility.view-profile" = "プロフィールを見る";
+"notification.signed-in-as-%@" = "%@としてログイン";
+"notification.new-items" = "新しい通知";
+"notification.poll" = "あなたが投票したアンケートが終了しました";
+"notification.poll.own" = "あなたのアンケートが終了しました";
+"notification.poll.unknown" = "アンケートが終了しました";
+"notification.status-%@" = "%@さんがトゥートしました";
+"notifications.all" = "すべて";
+"notifications.mentions" = "メンション";
+"ok" = "OK";
+"pending.pending-confirmation" = "アカウントは確認待ちです";
+"post" = "投稿";
+"preferences" = "環境設定";
+"preferences.app" = "アプリ環境設定";
+"preferences.app-icon" = "アプリアイコン";
+"preferences.blocked-domains" = "ブロックしたドメイン";
+"preferences.blocked-users" = "ブロックしたユーザー";
+"preferences.media" = "メディア";
+"preferences.media.avatars" = "アバター";
+"preferences.media.avatars.animate" = "アバターアイコンのアニメーション";
+"preferences.media.avatars.animate.everywhere" = "常に許可";
+"preferences.media.avatars.animate.profiles" = "プロフィール画面でのみ許可";
+"preferences.media.avatars.animate.never" = "常に停止";
+"preferences.media.custom-emojis.animate" = "カスタム絵文字のアニメーションを許可";
+"preferences.media.headers.animate" = "ヘッダーのアニメーションを許可";
+"preferences.media.autoplay" = "自動再生";
+"preferences.media.autoplay.gifs" = "GIFの自動再生";
+"preferences.media.autoplay.videos" = "動画の自動再生";
+"preferences.media.autoplay.always" = "常に許可";
+"preferences.media.autoplay.wifi" = "WiFi接続時のみ許可";
+"preferences.media.autoplay.never" = "常に停止";
+"preferences.use-preferences-from-server" = "サーバの設定を使う";
+"preferences.posting-default-visiblility" = "デフォルト公開範囲";
+"preferences.posting-default-sensitive" = "デフォルトで閲覧注意とマークする";
+"preferences.reading-expand-media" = "メディアの展開";
+"preferences.expand-media.default" = "閲覧注意を隠す";
+"preferences.expand-media.show-all" = "全て表示";
+"preferences.expand-media.hide-all" = "全て隠す";
+"preferences.reading-expand-spoilers" = "常にCWを展開する";
+"preferences.filters" = "フィルター";
+"preferences.links.open-in-default-browser" = "デフォルトブラウザーでリンクを開く";
+"preferences.links.use-universal-links" = "他のアプリへのリンクが利用可能な場合は直接開く";
+"preferences.notification-types" = "通知のタイプ";
+"preferences.notification-types.follow" = "フォロー";
+"preferences.notification-types.favourite" = "お気に入り";
+"preferences.notification-types.follow-request" = "フォローリクエスト";
+"preferences.notification-types.reblog" = "ブースト";
+"preferences.notification-types.mention" = "メンション";
+"preferences.notification-types.poll" = "投票";
+"preferences.notification-types.status" = "投稿通知";
+"preferences.notifications" = "通知設定";
+"preferences.notifications.include-account-name" = "アカウント名を含める";
+"preferences.notifications.include-pictures" = "画像を含める";
+"preferences.notifications.sounds" = "効果音";
+"preferences.muted-users" = "ミュートしたユーザー";
+"preferences.home-timeline-position-on-startup" = "起動時のホームタイムラインの位置";
+"preferences.notifications-position-on-startup" = "起動時の通知の位置";
+"preferences.position.remember-position" = "位置を記憶";
+"preferences.position.newest" = "最新を読み込む";
+"preferences.require-double-tap-to-reblog" = "ダブルタップでブースト";
+"preferences.require-double-tap-to-favorite" = "ダブルタップでお気に入り";
+"preferences.show-reblog-and-favorite-counts" = "ブースト・お気に入り数を表示";
+"preferences.status-word" = "ステータスを表す言葉";
+"filters.active" = "有効";
+"filters.expired" = "期限切れ";
+"filter.add-new" = "新しいフィルターを追加";
+"filter.edit" = "フィルターを編集";
+"filter.keyword-or-phrase" = "キーワードまたはフレーズ";
+"filter.never-expires" = "無期限";
+"filter.expire-after" = "有効期限";
+"filter.contexts" = "除外対象";
+"filter.irreversible" = "隠すのではなく除外する";
+"filter.irreversible-explanation" = "フィルターが後で削除されても、除外されたトゥートは元に戻せなくなります";
+"filter.whole-word" = "単語全体にマッチ";
+"filter.whole-word-explanation" = "キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります
+";
+"filter.save-changes" = "変更を保存";
+"filter.context.home" = "ホームタイムライン";
+"filter.context.notifications" = "通知";
+"filter.context.public" = "公開タイムライン";
+"filter.context.thread" = "会話";
+"filter.context.account" = "プロフィール";
+"filter.context.unknown" = "不明なコンテキスト";
+"more-results.accounts" = "もっと人々を表示";
+"more-results.statuses.post" = "もっと投稿を表示";
+"more-results.statuses.toot" = "もっとトゥートを表示";
+"more-results.tags" = "もっとハッシュタグを表示";
+"notifications" = "通知";
+"notifications.reblogged-your-status" = "%@があなたのステータスをブーストしました";
+"notifications.favourited-your-status" = "%@があなたのステータスをお気に入りしました";
+"notifications.followed-you" = "%@があなたをフォローしました";
+"notifications.poll-ended" = "あなたが投票したアンケートが終了しました";
+"notifications.your-poll-ended" = "アンケートが終了しました";
+"notifications.unknown" = "%@からの通知";
+"remove" = "削除";
+"report" = "通報";
+"report.additional-comments" = "追加コメント";
+"report.hint" = "通報内容はあなたのサーバーのモデレーターへ送信されます。通報理由を入力してください。:";
+"report.target-%@" = "%@さんを通報する";
+"report.forward.hint" = "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?";
+"report.forward-%@" = "%@に転送する";
+"report.select-additional.hint.post" = "通報する追加の投稿を選択します:";
+"report.select-additional.hint.toot" = "通報する追加のトゥートを選択します:";
+"search.scope.all" = "すべて";
+"search.scope.accounts" = "人々";
+"search.scope.statuses.post" = "投稿";
+"search.scope.statuses.toot" = "トゥート";
+"search.scope.tags" = "ハッシュタグ";
+"selected" = "選択中";
+"send" = "送信";
+"share" = "共有";
+"share-extension-error.no-account-found" = "アカウントが見つかりません";
+"status.accessibility.view-author-profile" = "作者のプロフィールを見る";
+"status.accessibility.view-reblogger-profile" = "フーストした人のプロフィールを見る";
+"status.bookmark" = "ブックマーク";
+"status.content-warning-abbreviation" = "CW";
+"status.content-warning.accessibility" = "コンテンツの警告";
+"status.delete" = "削除";
+"status.delete.confirm.post" = "この投稿を削除してよろしいですか?";
+"status.delete.confirm.toot" = "このトゥートを削除してよろしいですか?";
+"status.delete-and-redraft" = "削除して下書きに戻す";
+"status.delete-and-redraft.confirm.post" = "本当にこの投稿を削除して下書きに戻しますか? この投稿へのお気に入り登録やブーストは失われ、返信は孤立することになります。";
+"status.delete-and-redraft.confirm.toot" = "本当にこのトゥートを削除して下書きに戻しますか? このトゥートへのお気に入り登録やブーストは失われ、返信は孤立することになります。";
+"status.mute" = "会話をミュートする";
+"status.new-items.post" = "新しい投稿";
+"status.new-items.toot" = "新しいトゥート";
+"status.pin" = "プロフィールにピン留めする";
+"status.pinned.post" = "ピン留めした投稿";
+"status.pinned.toot" = "ピン留めしたトゥート";
+"status.poll.accessibility-label" = "アンケート";
+"status.poll.option-%ld" = "オプション %ld";
+"status.poll.vote" = "投票";
+"status.poll.time-left" = "残り%@";
+"status.poll.refresh" = "更新";
+"status.poll.closed" = "終了";
+"status.reblogged-by" = "%@さんがブースト";
+"status.reply-button.accessibility-label" = "返信する";
+"status.reblog-button.accessibility-label" = "ブーストする";
+"status.reblog-button.undo.accessibility-label" = "ブーストを解除する";
+"status.favorite-button.accessibility-label" = "お気に入りする";
+"status.favorite-button.undo.accessibility-label" = "お気に入りを解除する";
+"status.show-more" = "もっと見る";
+"status.show-more-all-button.accessibilty-label" = "全てをもっと見る";
+"status.show-less" = "隠す";
+"status.show-less-all-button.accessibilty-label" = "全てを隠す";
+"status.spoiler-text-placeholder" = "ここに警告を書いてください";
+"status.unbookmark" = "ブックマーク解除";
+"status.unmute" = "会話のミュートを解除";
+"status.unpin" = "プロフィールへの固定を解除";
+"status.visibility.public" = "公開";
+"status.visibility.unlisted" = "未収載";
+"status.visibility.private" = "フォロワー限定";
+"status.visibility.direct" = "ダイレクト";
+"status.visibility.public.description" = "誰でも閲覧可、公開TLに表示";
+"status.visibility.unlisted.description" = "誰でも閲覧可、公開TLに非表示";
+"status.visibility.private.description" = "フォロワーのみ閲覧可";
+"status.visibility.direct.description" = "送信した相手のみ閲覧可";
+"tag.accessibility-recent-uses-%ld" = "最近 %ld 件使用";
+"tag.accessibility-hint.post" = "トレンドに関連する投稿を表示";
+"tag.accessibility-hint.toot" = "トレンドに関連するトゥートを表示";
+"tag.per-week-%ld" = "%ld 回 / 週";
+"timelines.home" = "ホーム";
+"timelines.local" = "ローカル";
+"timelines.federated" = "連合";
+"toot" = "トゥート";
diff --git a/Localizations/ja.lproj/Localizable.stringsdict b/Localizations/ja.lproj/Localizable.stringsdict
new file mode 100644
index 0000000..1e2d8c0
--- /dev/null
+++ b/Localizations/ja.lproj/Localizable.stringsdict
@@ -0,0 +1,174 @@
+
+
+
+
+ tag.people-talking
+
+ NSStringLocalizedFormatKey
+ %#@people@
+ people
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 人が話題
+
+
+ status.poll.participation-count
+
+ NSStringLocalizedFormatKey
+ %#@people@
+ people
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 人
+
+
+ status.reblogs-count
+
+ NSStringLocalizedFormatKey
+ %#@reblogs@
+ reblogs
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld ブースト
+
+
+ status.favorites-count
+
+ NSStringLocalizedFormatKey
+ %#@favorites@
+ favorites
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld お気に入り
+
+
+ status.replies-count
+
+ NSStringLocalizedFormatKey
+ %#@replies@
+ replies
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 返信
+
+
+ statuses.count.post-%ld
+
+ NSStringLocalizedFormatKey
+ %#@posts@
+ posts
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 投稿
+
+
+ statuses.count.toot-%ld
+
+ NSStringLocalizedFormatKey
+ %#@toots@
+ toots
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld トゥート
+
+
+ account.followers-count
+
+ NSStringLocalizedFormatKey
+ %#@followers@
+ followers
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld フォロワー
+
+
+ attachment.type.images-%ld
+
+ NSStringLocalizedFormatKey
+ %#@images@
+ images
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 画像
+
+
+ attachment.type.audios-%ld
+
+ NSStringLocalizedFormatKey
+ %#@audios@
+ audios
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 音声
+
+
+ attachment.type.videos-%ld
+
+ NSStringLocalizedFormatKey
+ %#@videos@
+ videos
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 動画
+
+
+ attachment.type.unknowns-%ld
+
+ NSStringLocalizedFormatKey
+ %#@unknowns@
+ unknowns
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ other
+ %ld 添付
+
+
+
+
diff --git a/Metatext.xcodeproj/project.pbxproj b/Metatext.xcodeproj/project.pbxproj
index 9f30d7e..d7089b7 100644
--- a/Metatext.xcodeproj/project.pbxproj
+++ b/Metatext.xcodeproj/project.pbxproj
@@ -125,7 +125,6 @@
D08E5276257C36CA00FA2C5F /* Share Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D08E526C257C36CA00FA2C5F /* Share Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
D08E52A6257C61C000FA2C5F /* ShareExtensionNavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08E52A5257C61C000FA2C5F /* ShareExtensionNavigationViewController.swift */; };
D08E52C7257C7AEE00FA2C5F /* ShareErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08E52C6257C7AEE00FA2C5F /* ShareErrorViewController.swift */; };
- D08E52CC257C80E300FA2C5F /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0C7D45724F76169001EBDBB /* Localizable.strings */; };
D08E52D2257C811200FA2C5F /* ShareExtensionError+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08E52D1257C811200FA2C5F /* ShareExtensionError+Extensions.swift */; };
D08E52EE257D757100FA2C5F /* CompositionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08E52ED257D757100FA2C5F /* CompositionView.swift */; };
D08E52EF257D757100FA2C5F /* CompositionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08E52ED257D757100FA2C5F /* CompositionView.swift */; };
@@ -137,7 +136,6 @@
D09D971825C64682007E6394 /* InstanceCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09D971725C64682007E6394 /* InstanceCollectionViewCell.swift */; };
D09D972225C65682007E6394 /* SeparatorConfiguredCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09D972125C65682007E6394 /* SeparatorConfiguredCollectionViewListCell.swift */; };
D0A1F4F7252E7D4B004435BF /* TableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A1F4F6252E7D4B004435BF /* TableViewDataSource.swift */; };
- D0B325EB25E88ADC00C24BEA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0C7D45724F76169001EBDBB /* Localizable.strings */; };
D0B32F50250B373600311912 /* RegistrationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B32F4F250B373600311912 /* RegistrationView.swift */; };
D0B5FE9B251583DB00478838 /* ProfileCollection+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B5FE9A251583DB00478838 /* ProfileCollection+Extensions.swift */; };
D0B8510C25259E56004E0744 /* LoadMoreTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B8510B25259E56004E0744 /* LoadMoreTableViewCell.swift */; };
@@ -165,8 +163,6 @@
D0C7D4C224F7616A001EBDBB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D0C7D45224F76169001EBDBB /* Assets.xcassets */; };
D0C7D4C324F7616A001EBDBB /* MetatextApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C7D45424F76169001EBDBB /* MetatextApp.swift */; };
D0C7D4C424F7616A001EBDBB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C7D45524F76169001EBDBB /* AppDelegate.swift */; };
- D0C7D4C524F7616A001EBDBB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0C7D45724F76169001EBDBB /* Localizable.strings */; };
- D0C7D4C624F7616A001EBDBB /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = D0C7D45824F76169001EBDBB /* Localizable.stringsdict */; };
D0C7D4D524F7616A001EBDBB /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C7D46A24F76169001EBDBB /* String+Extensions.swift */; };
D0C7D4D624F7616A001EBDBB /* NSMutableAttributedString+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C7D46B24F76169001EBDBB /* NSMutableAttributedString+Extensions.swift */; };
D0C7D4D724F7616A001EBDBB /* UIColor+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C7D46C24F76169001EBDBB /* UIColor+Extensions.swift */; };
@@ -235,6 +231,10 @@
D0FE1C8F253686F9003EF1EB /* PlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE1C8E253686F9003EF1EB /* PlayerView.swift */; };
D0FE1C9825368A9D003EF1EB /* PlayerCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE1C9725368A9D003EF1EB /* PlayerCache.swift */; };
D0FE7C8025C4C79F00203957 /* PreviewViewModels in Frameworks */ = {isa = PBXBuildFile; productRef = D0FE7C7F25C4C79F00203957 /* PreviewViewModels */; };
+ D9E658662601CF76007C426E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D9E6586A2601CF76007C426E /* Localizable.strings */; };
+ D9E658672601CF76007C426E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D9E6586A2601CF76007C426E /* Localizable.strings */; };
+ D9E658682601CF76007C426E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D9E6586A2601CF76007C426E /* Localizable.strings */; };
+ D9E6586F2601CF79007C426E /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = D9E658712601CF79007C426E /* Localizable.stringsdict */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -404,8 +404,6 @@
D0C7D45224F76169001EBDBB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
D0C7D45424F76169001EBDBB /* MetatextApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MetatextApp.swift; sourceTree = ""; };
D0C7D45524F76169001EBDBB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- D0C7D45724F76169001EBDBB /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; };
- D0C7D45824F76169001EBDBB /* Localizable.stringsdict */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.stringsdict; path = Localizable.stringsdict; sourceTree = ""; };
D0C7D46A24F76169001EBDBB /* String+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; };
D0C7D46B24F76169001EBDBB /* NSMutableAttributedString+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSMutableAttributedString+Extensions.swift"; sourceTree = ""; };
D0C7D46C24F76169001EBDBB /* UIColor+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Extensions.swift"; sourceTree = ""; };
@@ -462,6 +460,10 @@
D0FCC104259C4E61000B67DF /* NewStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewStatusViewController.swift; sourceTree = ""; };
D0FE1C8E253686F9003EF1EB /* PlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerView.swift; sourceTree = ""; };
D0FE1C9725368A9D003EF1EB /* PlayerCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerCache.swift; sourceTree = ""; };
+ D9E658692601CF76007C426E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
+ D9E658702601CF79007C426E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; };
+ D9E658762601CF94007C426E /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; };
+ D9E6587B2601CF94007C426E /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ja; path = ja.lproj/Localizable.stringsdict; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -812,8 +814,8 @@
D0C7D45624F76169001EBDBB /* Localizations */ = {
isa = PBXGroup;
children = (
- D0C7D45724F76169001EBDBB /* Localizable.strings */,
- D0C7D45824F76169001EBDBB /* Localizable.stringsdict */,
+ D9E6586A2601CF76007C426E /* Localizable.strings */,
+ D9E658712601CF79007C426E /* Localizable.stringsdict */,
);
path = Localizations;
sourceTree = "";
@@ -1014,6 +1016,7 @@
knownRegions = (
en,
Base,
+ ja,
);
mainGroup = D047FA7F24C3E21000AF17C5;
packageReferences = (
@@ -1039,7 +1042,7 @@
files = (
D0D4306425F0B93700BE5504 /* AppIconBrutalist@2x.png in Resources */,
D0D4304825F0AEE600BE5504 /* AppIconRainbow@3x.png in Resources */,
- D0C7D4C524F7616A001EBDBB /* Localizable.strings in Resources */,
+ D9E658662601CF76007C426E /* Localizable.strings in Resources */,
D0C7D4C224F7616A001EBDBB /* Assets.xcassets in Resources */,
D0D4304925F0AEE600BE5504 /* AppIconRainbow@2x.png in Resources */,
D0D4301C25F08CFD00BE5504 /* AppIconLight@2x.png in Resources */,
@@ -1049,7 +1052,7 @@
D0D4307025F0BBA900BE5504 /* AppIconRainbowBrutalist@2x.png in Resources */,
D0D4307125F0BBA900BE5504 /* AppIconRainbowBrutalist@3x.png in Resources */,
D0D4303C25F0A30600BE5504 /* AppIconClassic@3x.png in Resources */,
- D0C7D4C624F7616A001EBDBB /* Localizable.stringsdict in Resources */,
+ D9E6586F2601CF79007C426E /* Localizable.stringsdict in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1064,7 +1067,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D08E52CC257C80E300FA2C5F /* Localizable.strings in Resources */,
+ D9E658682601CF76007C426E /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1072,7 +1075,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D0B325EB25E88ADC00C24BEA /* Localizable.strings in Resources */,
+ D9E658672601CF76007C426E /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1349,11 +1352,33 @@
};
/* End PBXTargetDependency section */
+/* Begin PBXVariantGroup section */
+ D9E6586A2601CF76007C426E /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D9E658692601CF76007C426E /* en */,
+ D9E658762601CF94007C426E /* ja */,
+ );
+ name = Localizable.strings;
+ sourceTree = "";
+ };
+ D9E658712601CF79007C426E /* Localizable.stringsdict */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D9E658702601CF79007C426E /* en */,
+ D9E6587B2601CF94007C426E /* ja */,
+ );
+ name = Localizable.stringsdict;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
/* Begin XCBuildConfiguration section */
D047FAB424C3E21200AF17C5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
@@ -1413,6 +1438,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";