[macOS and iOS export] Add localized application name to the translation .plist files.

(cherry picked from commit 5fdea69276)
This commit is contained in:
bruvzg
2022-03-04 09:27:44 +02:00
committed by Rémi Verschelde
parent db9d426798
commit fa56990170
4 changed files with 58 additions and 0 deletions

View File

@ -41,6 +41,7 @@
D0BCFE3418AEBDA2004A7AAE /* $binary.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "$binary.app"; sourceTree = BUILT_PRODUCTS_DIR; };
D0BCFE4318AEBDA2004A7AAE /* $binary-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "$binary-Info.plist"; sourceTree = "<group>"; };
D0BCFE4518AEBDA2004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
$pbx_locale_file_reference
D0BCFE7718AEBFEB004A7AAE /* $binary.pck */ = {isa = PBXFileReference; lastKnownFileType = file; path = "$binary.pck"; sourceTree = "<group>"; };
$pbx_launch_screen_file_reference
/* End PBXFileReference section */
@ -199,6 +200,7 @@
isa = PBXVariantGroup;
children = (
D0BCFE4518AEBDA2004A7AAE /* en */,
$pbx_locale_build_reference
);
name = InfoPlist.strings;
sourceTree = "<group>";

View File

@ -8,6 +8,8 @@
<string>$binary</string>
<key>CFBundleName</key>
<string>$name</string>
<key>CFBundleDisplayName</key>
<string>$name</string>
<key>CFBundleGetInfoString</key>
<string>$info</string>
<key>CFBundleIconFile</key>

View File

@ -656,6 +656,32 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_
String value = value_format.format(value_dictionary, "$_");
strnew += lines[i].replace("$launch_screen_background_color", value) + "\n";
} else if (lines[i].find("$pbx_locale_file_reference") != -1) {
String locale_files;
Vector<String> translations = ProjectSettings::get_singleton()->get("locale/translations");
if (translations.size() > 0) {
for (int j = 0; j < translations.size(); j++) {
Ref<Translation> tr = ResourceLoader::load(translations[j]);
if (tr.is_valid()) {
String lang = tr->get_locale();
locale_files += "D0BCFE4518AEBDA2004A" + itos(j).pad_zeros(4) + " /* " + lang + " */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = " + lang + "; path = " + lang + ".lproj/InfoPlist.strings; sourceTree = \"<group>\"; };";
}
}
}
strnew += lines[i].replace("$pbx_locale_file_reference", locale_files);
} else if (lines[i].find("$pbx_locale_build_reference") != -1) {
String locale_files;
Vector<String> translations = ProjectSettings::get_singleton()->get("locale/translations");
if (translations.size() > 0) {
for (int j = 0; j < translations.size(); j++) {
Ref<Translation> tr = ResourceLoader::load(translations[j]);
if (tr.is_valid()) {
String lang = tr->get_locale();
locale_files += "D0BCFE4518AEBDA2004A" + itos(j).pad_zeros(4) + " /* " + lang + " */,";
}
}
}
strnew += lines[i].replace("$pbx_locale_build_reference", locale_files);
} else {
strnew += lines[i] + "\n";
}
@ -1865,6 +1891,29 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
return ERR_FILE_NOT_FOUND;
}
Vector<String> translations = ProjectSettings::get_singleton()->get("locale/translations");
if (translations.size() > 0) {
{
String fname = dest_dir + binary_name + "/en.lproj";
tmp_app_path->make_dir_recursive(fname);
FileAccessRef f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
f->store_line("CFBundleDisplayName = \"" + ProjectSettings::get_singleton()->get("application/config/name").operator String() + "\";");
}
for (int i = 0; i < translations.size(); i++) {
Ref<Translation> tr = ResourceLoader::load(translations[i]);
if (tr.is_valid()) {
String fname = dest_dir + binary_name + "/" + tr->get_locale() + ".lproj";
tmp_app_path->make_dir_recursive(fname);
FileAccessRef f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
String prop = "application/config/name_" + tr->get_locale();
if (ProjectSettings::get_singleton()->has_setting(prop)) {
f->store_line("CFBundleDisplayName = \"" + ProjectSettings::get_singleton()->get(prop).operator String() + "\";");
}
}
}
}
// Copy project static libs to the project
Vector<Ref<EditorExportPlugin>> export_plugins = EditorExport::get_singleton()->get_export_plugins();
for (int i = 0; i < export_plugins.size(); i++) {

View File

@ -876,6 +876,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
String fname = tmp_app_path_name + "/Contents/Resources/en.lproj";
tmp_app_dir->make_dir_recursive(fname);
FileAccessRef f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
f->store_line("CFBundleDisplayName = \"" + ProjectSettings::get_singleton()->get("application/config/name").operator String() + "\";");
}
for (int i = 0; i < translations.size(); i++) {
@ -884,6 +885,10 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
String fname = tmp_app_path_name + "/Contents/Resources/" + tr->get_locale() + ".lproj";
tmp_app_dir->make_dir_recursive(fname);
FileAccessRef f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
String prop = "application/config/name_" + tr->get_locale();
if (ProjectSettings::get_singleton()->has_setting(prop)) {
f->store_line("CFBundleDisplayName = \"" + ProjectSettings::get_singleton()->get(prop).operator String() + "\";");
}
}
}
}