PR

[Unity]App Storeにリリースしたゲームのストア画面の言語が英語になってしまう問題

Unity

はじめに

みなさんはこんな経験ありませんか?

Unityでゲームを制作し、App Storeへウキウキと公開。公開されたゲームをいざApp Storeからダウンロードしようと思いApp Storeのストア情報を見たら。。。

言語:英語

え、どういうこと?日本語のみのアプリなんですけど。。。

今回はこの対策方法を紹介します。

環境

  • Unity 2020.3.1f1
  • Xcode 12.4

言語とは

App Storeでユーザーへ表示するサポートしている言語のことです。

ここに表記されているからと言って、本当にサポートされているかわかりません

あくまで、ユーザーに明記しているだけです。

言語はどこで設定するのか?

みんな大好きInfo.plistです!

具体的にはCFBundleLocalizationsに日本語を設定します。

CFBundleLocalizations | Apple Developer Documentation
The localizations handled manually by your app.

対応方法

Xcodeプロジェクトに書き出し

まずはいつもの通り、UnityでiOSをビルドターゲットにしビルドしてください。

XcodeプロジェクトのInfo.plistを開く

書き出されたXcodeプロジェクトのInfo.plistを開きます。

Localizationsを追加

Localizations(CFBundleLocalizations)を追加します。

Localizationsを展開する

Localizationsの左横に展開するためのボタンがあるので押します。

するとそこにはItem0に「English」と書かれています。

Localizationsを書き換える

Item0を「Japanese」に書き換えます。

あとはいつもどおりビルドするだけで、App Storeの言語の欄が「日本語」に変わります

もし多言語対応の場合は。。。

多言語の対応の場合は、Localizationsに言語を追加していくだけです。

下記は例では日本語英語を設定しています。

もしInfo.plistをテキストで編集する場合は以下のような感じで、CFBundleLocalizationsをキーにして配列を追加します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleLocalizations</key>
	<array>
		<string>ja</string>
		<string>en</string>
	</array>
	<key>CFBundleDisplayName</key>
...
</dict>
</plist>

毎回やるのはめんどくさいのでUnityで自動化

この作業を毎回やるのはめんどくさいですし、時々しかリリースしないアプリの場合は忘れがちなので自動化しようと思います。

サンプルコード

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;

public class LocalizationsPostProcessBuild
{
    [PostProcessBuild]
    public static void OnPostProcessBuild(BuildTarget target, string path)
    {
        if (target == BuildTarget.iOS)
        {
            AddLanguage(path, "ja", "en");
            // 日本語のみの場合の例.
//            AddLanguage(path, "ja");
        }
    }

    /// <summary>
    /// 言語を追加.
    /// </summary>
    public static void AddLanguage(string path, params string[] languages)
    {
        var plistPath = System.IO.Path.Combine(path, "Info.plist");
        var plist = new PlistDocument();

        plist.ReadFromFile(plistPath);

        var localizationKey = "CFBundleLocalizations";

        var localizations = plist.root.values
            .Where(kv => kv.Key == localizationKey)
            .Select(kv => kv.Value)
            .Cast<PlistElementArray>()
            .FirstOrDefault();

        if (localizations == null)
        {
            localizations = plist.root.CreateArray(localizationKey);
        }

        foreach (var language in languages)
        {
            if (localizations.values.Select(el => el.AsString()).Contains(language) == false)
            {
                localizations.AddString(language);
            }
        }

        plist.WriteToFile(plistPath);
    }
}

#endif

Editorフォルダーへの配置

以下のコードを必ずEditorフォルダに配置してください。Editorフォルダー以外に配置するとビルドエラーになります。

あとはいつもどおりビルドするだけ

無事、自動で追加されました!

さいごに

App Storeって、こういうところがいちいちめんどくさいですよね。

おすすめ参考書

コメント

タイトルとURLをコピーしました