4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

unityで自動でiosのローカライズ対応をする

Last updated at Posted at 2021-06-09

##やりたいこと
アプリ名とかのローカライズの設定を毎回xcodeで設定が面倒なのでunity内で完結したい
アプリ名や、ios固有のATT表示の赤枠のメッセージなどが対象

ATTの中のテキスト アプリ名
001.png 005.png

##検証環境
unity 2019.3.0f6 / Xcode 12.4

#手順

###1,プロジェクトにローカライズのデータを設置

何処に設置してもよいが下記2点は守ること
 ・ファイル名はInfoList.strings  (末尾のsを忘れないこと)
 ・格納するフォルダは対応言語に合わせること 日本語ならja (jpと間違えないこと)
   言語コードはコチラ参照https://qiita.com/hirobe/items/cb906cca486675d02a87

001a.PNG
Base.lproj は用意されてない言語が端末で選択されているときに参照されるデフォルト用
(デフォルト用のつもりでしたが参照されて無い感じがしたのでbaseは見なかったことにしてください)

###2, InfoList.stringsの編集
例としてfr.lproj/InfoList.stringsの中を記載

CFBundleDisplayName = "フランス";  // アプリ名

ATTのメッセージを変えるなら NSUserTrackingUsageDescriptionを指定
このあたりの設定のkey 的なものの一覧がどこかにあるのだろうけどパッと見つからなかったので割愛

###3、PostProcessBuildで1で作成したデータを紐づける

PostProcessBuildとは、という説明は割愛

public class PostProcessBuild : IPostprocessBuildWithReport
{
	const string IOSPbxProjectPath = "/Unity-iPhone.xcodeproj/project.pbxproj";
	int IOrderedCallback.callbackOrder => default;

	void IPostprocessBuildWithReport.OnPostprocessBuild(BuildReport report)
	{
		var summary = report.summary;
		if (summary.platformGroup != BuildTargetGroup.iOS) {
			return;
		}

		string pbxPath = summary.outputPath + IOSPbxProjectPath;
		var project = new PBXProject();
		project.ReadFromFile(pbxPath);
		string targetGuid = project.GetUnityMainTargetGuid();
		// 指定パス以下にあるローカライズデータを紐づける
		string[] languageArray = new string[] { "Base", "ja", "fr" }; // 紐づけたい言語を記載
		foreach (string lang in languageArray) { 
			string dirPath = Application.dataPath + $"/Editor/Localisations/{lang}.lproj"; // project内に設置したパスを指定
			var lGuid = project.AddFolderReference(dirPath, $"{lang}.lproj");
			project.AddFileToBuild(targetGuid, lGuid);
		}
		project.WriteToFile(pbxPath);
	}
}

###間違えやすいこと(やってて間違えてたこと)

// 似たような関数があるので注意 project.GetUnityFrameworkTargetGuidではない
string targetGuid = project.GetUnityMainTargetGuid(); 

##ビルドして完了
いつものようにビルドをして書き出されたxcodeプロジェクトを開くと
指定したフォルダを見つけることができるはず
image.png

あとは端末の言語を切り替えながら動作チェックしてみてください
005.png

まとめ

androidはコチラでできるみたい
https://qiita.com/ptkyoku/items/3f25872ae0f356966c88

デフォルトの設定は後ほど探しておきます

その他まちがってたらおしえてください

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?