Skip to content

Commit 8bdea75

Browse files
committed
feat(Xcode编辑器): 添加对CFBundleDisplayName本地化的支持
检测是否存在CFBundleDisplayName本地化,并在Info.plist中设置LSHasLocalizedDisplayName标志
1 parent b6fef34 commit 8bdea75

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

Editor/PostProcessBuildHelper.Localization.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ private static void RunLocalization(PBXProject project, string projectGuid, stri
2727

2828
string pbxprojPath = Path.Combine(path, "Unity-iPhone.xcodeproj/project.pbxproj");
2929

30+
// 标记是否包含 CFBundleDisplayName 本地化
31+
bool hasLocalizedDisplayName = false;
32+
3033
// 收集所有需要本地化的键,用于更新 Info.plist
3134
// HashSet<string> localizationKeys = new HashSet<string>();
3235

@@ -67,6 +70,12 @@ private static void RunLocalization(PBXProject project, string projectGuid, stri
6770
string value = map["value"].ToString();
6871
sb.Append($"\"{key}\" = \"{value}\";\n");
6972

73+
// 检查是否包含 CFBundleDisplayName
74+
if (key == "CFBundleDisplayName")
75+
{
76+
hasLocalizedDisplayName = true;
77+
}
78+
7079
// 记录需要本地化的键
7180
// localizationKeys.Add(key);
7281
}
@@ -85,6 +94,20 @@ private static void RunLocalization(PBXProject project, string projectGuid, stri
8594
// 更新 Info.plist,将本地化键的值设置为 ${KEY} 格式
8695
// UpdateInfoPlistForLocalization(path, localizationKeys);
8796

97+
// 如果存在显示名称本地化,设置 LSHasLocalizedDisplayName 为 true
98+
if (hasLocalizedDisplayName)
99+
{
100+
string plistPath = Path.Combine(path, "Info.plist");
101+
if (File.Exists(plistPath))
102+
{
103+
PlistDocument plist = new PlistDocument();
104+
plist.ReadFromString(File.ReadAllText(plistPath));
105+
plist.root.SetBoolean("LSHasLocalizedDisplayName", true);
106+
plist.WriteToFile(plistPath);
107+
LogHelper.Log("Updated Info.plist: Set LSHasLocalizedDisplayName to true");
108+
}
109+
}
110+
88111
// 使用 PBXProject API 添加本地化文件到项目
89112
AddLocalizationToProject(project, path, localizations);
90113

0 commit comments

Comments
 (0)