Skip to main content
  1. Posts/

iOSアプリの日本語化(プロジェクトを日本語として開発する方法)

Xcode 15以降での設定方法は、iOSアプリを多言語化・日本語化する方法: String Catalogsの使い方に記載しています。

多言語対応は、国内向けのアプリ開発をしているとあまり意識しません。 しかし、たとえ国内向けのアプリであっても、プロジェクトの設定はしっかり日本語化しておきたいところ。 今回は、iOSアプリのプロジェクトを「日本語のアプリ」として設定する方法をまとめます。

日本語アプリで、しばしば発生する問題 #

アプリをリリースすると、すべて日本語で表示されるかと思いきや、部分的に英語で表示される場合があります。 例えば、UISearchBarのキャンセルボタンが「Cancel」と表示されたり、UITextView等でテキストを選択したときに出るツールチップのボタンが英語で表示されたりします。

さらには、ストアで表示される「言語」の欄で「英語」として表示されてしまうこともあります。

せっかく作ったアプリなので、ちゃんと「日本語」で表示されるように設定していきます。

AppStoreの表示に対する設定 #

まずは、AppStoreでアプリが日本語であることを表示できるようにしておきます。

  • Localizations
    • 「Japanese」を選択

「Localizations」の設定は、AppStoreの「言語」の表記に反映されるようです。 対応する言語が増えたら、「Localizations」の部分を増やしていくと良さそうです。

アプリの表示に関わる設定 #

つぎに、アプリの表示を日本語化していきます。UISearchBarやツールチップの日本語化をします。 ここでは、2パターンの方法をお伝えします。

とりあえず日本語化する場合 #

Info.plistで、「Localization native development region」の項目を「Japan」に設定します。

これだけで、アプリのUIは日本語で表示されるようになります。

確かに日本語になりました!日本国内のみを想定するなら、実用上これで問題ないと思われます。

ただし、不十分な部分もあります。この方法では、端末が英語設定のときに、UISearchBarなどが英語になる現象は発生します。 これは、プロジェクトのLocalizationの設定にEnglishがあることによるものです。 アプリがサポートを意図していない言語で表示されることを是としない場合は、次の方法で、EnglishのLocalizationを削除する必要があります。

プロジェクトの根本から日本語化する場合 #

プロジェクトの言語設定ごと変更します。project.pbxprojをテキストエディタで開き、developmentRegionの項目をenではなくjaに設定します。 この方法では、 Info.plistは変更しません。「Localization native development region」の項目は$(DEVELOPMENT_LANGUAGE)のままで大丈夫です。 (ここで設定するdevelopmentRegionが、 $(DEVELOPMENT_LANGUAGE)に割り当てられるようです = 挙動から推定)

この変更を行うと、Projectの設定にある「Localization」の項目が変わります。「Development Language」が「Japanese」に変わりました。

変更前

変更後

Englishの表示を実装しないのであれば、EnglishのLocalizationは削除してしまいましょう! むしろそれがあると、端末が英語設定のときにUIが英語表示になってしまします。意図しない言語で表示されることを防止するために、削除しましょう。

これで、プロジェクトの日本語化は完了です。


ところで、プロジェクトの設定の「Localization」には、Baseという項目があります。これは、なにか特定の言語でなく「Base」という言語のようです。 不要に感じてしまうかもしれませんが、Baseは多言語対応するときに便利なようです。

Storyboardやxibを多言語対応するときは、変換先の言語に対して、変換元となる言語(Reference Language)を選択する仕様になっているようです。 この変換元をどこか特定の言語に依存させるのではなく、抽象的な言語「Base」に依存させるという考え方を、「Base Internationalization」と呼んでいるようです。


アプリの日本語化の方法をまとめました。 アプリの新規開発のときには「プロジェクトの日本語化」を意識しておきたいですね。