🌎

String Catalogを使って新規アプリをリリースした際にApp Store上で多言語化されなかった話

2024/02/19に公開

Xcode 15から使えるString Catalog、ローカライズが簡単にできて便利ですよね。ただ、これを利用して新規アプリをリリースした際にApp Store上で多言語化されなかったので、事象と解決策をメモしておきます。

事象

  • SwiftUIでプロジェクトを新規作成
  • Xcodeのプロジェクト設定のLocalizationsは、「English(Default)」と「Japanese」
  • String Catalogで「English」と「Japanese」の2言語をローカライズ
    • 「English」はすべてKey = Valueとしたため、Valueの個別設定はなし
  • App Store Connectのプライマリ言語は「英語(アメリカ)」、他言語として「日本語」を追加

この内容で新規アプリをリリース後、App Storeでアプリ情報を見ると、言語が「日本語と英語」ではなく「日本語」と表示されました。 あれっ、英語どこいきました?

解決策

String Catalogでデフォルト言語としていた「English」の適当な1つのKeyにValueを設定すれば解決しました。

ここからは原因の推測です。String Catalogでデフォルト言語のValueに値を設定しない(Keyの値をそのまま利用する)と、Localizable.xcstringslocalizationsにその言語が追加されません。そこで適当な1つのKeyにValueを設定すると、以下のようにlocalizationsにその言語が追加されます。App Storeの言語表示条件の1つに、Localizable.xcstringslocalizationsに含まれている言語を表示する、があるのかもしれません(挙動的にはそのようでした)。

Localizable.xcstrings
 {
   "sourceLanguage" : "en",
   "strings" : {
     "About Backup" : {
       "localizations" : {
+        "en" : {
+          "stringUnit" : {
+            "state" : "translated",
+            "value" : "About Backup"
+          }
+        },
         "ja" : {
           "stringUnit" : {
             "state" : "translated",
             "value" : "バックアップについて"
           }
         }
       }
     },

まとめ

String Catalogを使うときにデフォルト言語をすべてKey = Valueとする場合、少なくとも1つのKeyにValueを個別設定しないとApp Storeで多言語化されないようです。

Discussion