🌍
[Unity]iOSビルド時にアプリ名やinfo.plistのローカライズを自動でやる
やりたいこと
アプリ名やinfo.plistの中見をビルド時に完全自動でローカライズさせたい
自分の環境
Unity2020.3.12f1
Xcode12.4
やること
最初は自分でPostProcessを使って自動化しようとしていたのですが、すでに同じようなことを実装されている方がいました。
こちらを導入するとスムーズに設定できます。
ローカライズされた文字列が記載されたinfoPlist.stringsを含んだlprojフォルダを、対応したい言語分だけ追加します。
例えば日本語を設定してあげたい場合は
Assets
L NativeLocale
L iOS
L ja.lproj
L infoPlist.strings
でOK。
infoPlist.stringsの中身
"CFBundleDisplayName" = "アプリ名";
あとはプロジェクト内のEditor以下のフォルダにあるスクリプトから
[PostProcessBuild(0)]
public static void EditIosInfoPlist(BuildTarget buildTarget, string pathToBuiltProject)
{
if (buildTarget == BuildTarget.iOS)
{
// ローカライズ追加
NativeLocale.AddLocalizedStringsIOS(pathToBuiltProject, Path.Combine(Application.dataPath, "NativeLocale/iOS"));
}
}
のように呼んであげればOK。
ここで注意したいのが、自分の環境だとUnityでビルドしたXcodeプロジェクトは、デフォルトで英語のローカライズ設定がされていました。
Assets
L NativeLocale
L iOS
L en.lproj
その状態でこのように英語用のローカライズを設定すると、ビルド時にinfoPlist.stringsが競合しましたみたいなエラーがでて失敗してしまいます。
なのでデフォルトのinfo.plistには英語用の文言をセットし、他で対応したい言語があればinfoPlist.stringsを配置する、というような対応にしています。
元のレポジトリからforkして日本語用のサンプルを追加したブランチを作ったので、記載しておきます。
おわり
アプリのリリースフローの中に「ビルドしてから◯◯をする」があると自分の場合たまにそれを忘れます。
申請後に思い出して取り下げてアップロードし直して、、といったことは面倒なので今後も完全に自動化していきたいです_(:3 」∠ )_
Discussion