1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

[macOS / iOS Export] Fix generation of duplicate locale property list files.

This commit is contained in:
bruvzg
2022-08-17 16:11:56 +03:00
parent 982ff7d925
commit 16b45ee542
2 changed files with 89 additions and 73 deletions

View File

@@ -387,13 +387,17 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_
String locale_files; String locale_files;
Vector<String> translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations"); Vector<String> translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations");
if (translations.size() > 0) { if (translations.size() > 0) {
int index = 0; HashSet<String> languages;
for (const String &E : translations) { for (const String &E : translations) {
Ref<Translation> tr = ResourceLoader::load(E); Ref<Translation> tr = ResourceLoader::load(E);
if (tr.is_valid()) { if (tr.is_valid() && tr->get_locale() != "en") {
String lang = tr->get_locale(); languages.insert(tr->get_locale());
locale_files += "D0BCFE4518AEBDA2004A" + itos(index).pad_zeros(4) + " /* " + lang + " */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = " + lang + "; path = " + lang + ".lproj/InfoPlist.strings; sourceTree = \"<group>\"; };";
} }
}
int index = 0;
for (const String &lang : languages) {
locale_files += "D0BCFE4518AEBDA2004A" + itos(index).pad_zeros(4) + " /* " + lang + " */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = " + lang + "; path = " + lang + ".lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n";
index++; index++;
} }
} }
@@ -402,13 +406,17 @@ void EditorExportPlatformIOS::_fix_config_file(const Ref<EditorExportPreset> &p_
String locale_files; String locale_files;
Vector<String> translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations"); Vector<String> translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations");
if (translations.size() > 0) { if (translations.size() > 0) {
int index = 0; HashSet<String> languages;
for (const String &E : translations) { for (const String &E : translations) {
Ref<Translation> tr = ResourceLoader::load(E); Ref<Translation> tr = ResourceLoader::load(E);
if (tr.is_valid()) { if (tr.is_valid() && tr->get_locale() != "en") {
String lang = tr->get_locale(); languages.insert(tr->get_locale());
locale_files += "D0BCFE4518AEBDA2004A" + itos(index).pad_zeros(4) + " /* " + lang + " */,";
} }
}
int index = 0;
for (const String &lang : languages) {
locale_files += "D0BCFE4518AEBDA2004A" + itos(index).pad_zeros(4) + " /* " + lang + " */,\n";
index++; index++;
} }
} }
@@ -1651,27 +1659,31 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
f->store_line("NSPhotoLibraryUsageDescription = \"" + p_preset->get("privacy/photolibrary_usage_description").operator String() + "\";"); f->store_line("NSPhotoLibraryUsageDescription = \"" + p_preset->get("privacy/photolibrary_usage_description").operator String() + "\";");
} }
HashSet<String> languages;
for (const String &E : translations) { for (const String &E : translations) {
Ref<Translation> tr = ResourceLoader::load(E); Ref<Translation> tr = ResourceLoader::load(E);
if (tr.is_valid()) { if (tr.is_valid() && tr->get_locale() != "en") {
String lang = tr->get_locale(); languages.insert(tr->get_locale());
String fname = dest_dir + binary_name + "/" + lang + ".lproj"; }
tmp_app_path->make_dir_recursive(fname); }
Ref<FileAccess> f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
f->store_line("/* Localized versions of Info.plist keys */"); for (const String &lang : languages) {
f->store_line(""); String fname = dest_dir + binary_name + "/" + lang + ".lproj";
if (appnames.has(lang)) { tmp_app_path->make_dir_recursive(fname);
f->store_line("CFBundleDisplayName = \"" + appnames[lang].operator String() + "\";"); Ref<FileAccess> f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
} f->store_line("/* Localized versions of Info.plist keys */");
if (camera_usage_descriptions.has(lang)) { f->store_line("");
f->store_line("NSCameraUsageDescription = \"" + camera_usage_descriptions[lang].operator String() + "\";"); if (appnames.has(lang)) {
} f->store_line("CFBundleDisplayName = \"" + appnames[lang].operator String() + "\";");
if (microphone_usage_descriptions.has(lang)) { }
f->store_line("NSMicrophoneUsageDescription = \"" + microphone_usage_descriptions[lang].operator String() + "\";"); if (camera_usage_descriptions.has(lang)) {
} f->store_line("NSCameraUsageDescription = \"" + camera_usage_descriptions[lang].operator String() + "\";");
if (photolibrary_usage_descriptions.has(lang)) { }
f->store_line("NSPhotoLibraryUsageDescription = \"" + photolibrary_usage_descriptions[lang].operator String() + "\";"); if (microphone_usage_descriptions.has(lang)) {
} f->store_line("NSMicrophoneUsageDescription = \"" + microphone_usage_descriptions[lang].operator String() + "\";");
}
if (photolibrary_usage_descriptions.has(lang)) {
f->store_line("NSPhotoLibraryUsageDescription = \"" + photolibrary_usage_descriptions[lang].operator String() + "\";");
} }
} }
} }

View File

@@ -919,54 +919,58 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
f->store_line("NSHumanReadableCopyright = \"" + p_preset->get("application/copyright").operator String() + "\";"); f->store_line("NSHumanReadableCopyright = \"" + p_preset->get("application/copyright").operator String() + "\";");
} }
HashSet<String> languages;
for (const String &E : translations) { for (const String &E : translations) {
Ref<Translation> tr = ResourceLoader::load(E); Ref<Translation> tr = ResourceLoader::load(E);
if (tr.is_valid()) { if (tr.is_valid() && tr->get_locale() != "en") {
String lang = tr->get_locale(); languages.insert(tr->get_locale());
String fname = tmp_app_path_name + "/Contents/Resources/" + lang + ".lproj"; }
tmp_app_dir->make_dir_recursive(fname); }
Ref<FileAccess> f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
f->store_line("/* Localized versions of Info.plist keys */"); for (const String &lang : languages) {
f->store_line(""); String fname = tmp_app_path_name + "/Contents/Resources/" + lang + ".lproj";
if (appnames.has(lang)) { tmp_app_dir->make_dir_recursive(fname);
f->store_line("CFBundleDisplayName = \"" + appnames[lang].operator String() + "\";"); Ref<FileAccess> f = FileAccess::open(fname + "/InfoPlist.strings", FileAccess::WRITE);
} f->store_line("/* Localized versions of Info.plist keys */");
if (microphone_usage_descriptions.has(lang)) { f->store_line("");
f->store_line("NSMicrophoneUsageDescription = \"" + microphone_usage_descriptions[lang].operator String() + "\";"); if (appnames.has(lang)) {
} f->store_line("CFBundleDisplayName = \"" + appnames[lang].operator String() + "\";");
if (camera_usage_descriptions.has(lang)) { }
f->store_line("NSCameraUsageDescription = \"" + camera_usage_descriptions[lang].operator String() + "\";"); if (microphone_usage_descriptions.has(lang)) {
} f->store_line("NSMicrophoneUsageDescription = \"" + microphone_usage_descriptions[lang].operator String() + "\";");
if (location_usage_descriptions.has(lang)) { }
f->store_line("NSLocationUsageDescription = \"" + location_usage_descriptions[lang].operator String() + "\";"); if (camera_usage_descriptions.has(lang)) {
} f->store_line("NSCameraUsageDescription = \"" + camera_usage_descriptions[lang].operator String() + "\";");
if (address_book_usage_descriptions.has(lang)) { }
f->store_line("NSContactsUsageDescription = \"" + address_book_usage_descriptions[lang].operator String() + "\";"); if (location_usage_descriptions.has(lang)) {
} f->store_line("NSLocationUsageDescription = \"" + location_usage_descriptions[lang].operator String() + "\";");
if (calendar_usage_descriptions.has(lang)) { }
f->store_line("NSCalendarsUsageDescription = \"" + calendar_usage_descriptions[lang].operator String() + "\";"); if (address_book_usage_descriptions.has(lang)) {
} f->store_line("NSContactsUsageDescription = \"" + address_book_usage_descriptions[lang].operator String() + "\";");
if (photos_library_usage_descriptions.has(lang)) { }
f->store_line("NSPhotoLibraryUsageDescription = \"" + photos_library_usage_descriptions[lang].operator String() + "\";"); if (calendar_usage_descriptions.has(lang)) {
} f->store_line("NSCalendarsUsageDescription = \"" + calendar_usage_descriptions[lang].operator String() + "\";");
if (desktop_folder_usage_descriptions.has(lang)) { }
f->store_line("NSDesktopFolderUsageDescription = \"" + desktop_folder_usage_descriptions[lang].operator String() + "\";"); if (photos_library_usage_descriptions.has(lang)) {
} f->store_line("NSPhotoLibraryUsageDescription = \"" + photos_library_usage_descriptions[lang].operator String() + "\";");
if (documents_folder_usage_descriptions.has(lang)) { }
f->store_line("NSDocumentsFolderUsageDescription = \"" + documents_folder_usage_descriptions[lang].operator String() + "\";"); if (desktop_folder_usage_descriptions.has(lang)) {
} f->store_line("NSDesktopFolderUsageDescription = \"" + desktop_folder_usage_descriptions[lang].operator String() + "\";");
if (downloads_folder_usage_descriptions.has(lang)) { }
f->store_line("NSDownloadsFolderUsageDescription = \"" + downloads_folder_usage_descriptions[lang].operator String() + "\";"); if (documents_folder_usage_descriptions.has(lang)) {
} f->store_line("NSDocumentsFolderUsageDescription = \"" + documents_folder_usage_descriptions[lang].operator String() + "\";");
if (network_volumes_usage_descriptions.has(lang)) { }
f->store_line("NSNetworkVolumesUsageDescription = \"" + network_volumes_usage_descriptions[lang].operator String() + "\";"); if (downloads_folder_usage_descriptions.has(lang)) {
} f->store_line("NSDownloadsFolderUsageDescription = \"" + downloads_folder_usage_descriptions[lang].operator String() + "\";");
if (removable_volumes_usage_descriptions.has(lang)) { }
f->store_line("NSRemovableVolumesUsageDescription = \"" + removable_volumes_usage_descriptions[lang].operator String() + "\";"); if (network_volumes_usage_descriptions.has(lang)) {
} f->store_line("NSNetworkVolumesUsageDescription = \"" + network_volumes_usage_descriptions[lang].operator String() + "\";");
if (copyrights.has(lang)) { }
f->store_line("NSHumanReadableCopyright = \"" + copyrights[lang].operator String() + "\";"); if (removable_volumes_usage_descriptions.has(lang)) {
} f->store_line("NSRemovableVolumesUsageDescription = \"" + removable_volumes_usage_descriptions[lang].operator String() + "\";");
}
if (copyrights.has(lang)) {
f->store_line("NSHumanReadableCopyright = \"" + copyrights[lang].operator String() + "\";");
} }
} }
} }