Improve POT Generation dialog
* Avoid "property not found" warnings when adding a file for the first time. * When no file is added, disable the Generate POT button instead of printing a warning.
This commit is contained in:
parent
61d2c85511
commit
584136271c
@ -1355,6 +1355,7 @@ ProjectSettings::ProjectSettings() {
|
|||||||
GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray());
|
GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray());
|
||||||
GLOBAL_DEF_INTERNAL("internationalization/locale/translation_remaps", PackedStringArray());
|
GLOBAL_DEF_INTERNAL("internationalization/locale/translation_remaps", PackedStringArray());
|
||||||
GLOBAL_DEF_INTERNAL("internationalization/locale/translations", PackedStringArray());
|
GLOBAL_DEF_INTERNAL("internationalization/locale/translations", PackedStringArray());
|
||||||
|
GLOBAL_DEF_INTERNAL("internationalization/locale/translations_pot_files", PackedStringArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectSettings::~ProjectSettings() {
|
ProjectSettings::~ProjectSettings() {
|
||||||
|
@ -576,21 +576,21 @@ void LocalizationEditor::update_translations() {
|
|||||||
translation_pot_list->clear();
|
translation_pot_list->clear();
|
||||||
root = translation_pot_list->create_item(nullptr);
|
root = translation_pot_list->create_item(nullptr);
|
||||||
translation_pot_list->set_hide_root(true);
|
translation_pot_list->set_hide_root(true);
|
||||||
if (ProjectSettings::get_singleton()->has_setting("internationalization/locale/translations_pot_files")) {
|
PackedStringArray pot_translations = GLOBAL_GET("internationalization/locale/translations_pot_files");
|
||||||
PackedStringArray pot_translations = GLOBAL_GET("internationalization/locale/translations_pot_files");
|
for (int i = 0; i < pot_translations.size(); i++) {
|
||||||
for (int i = 0; i < pot_translations.size(); i++) {
|
TreeItem *t = translation_pot_list->create_item(root);
|
||||||
TreeItem *t = translation_pot_list->create_item(root);
|
t->set_editable(0, false);
|
||||||
t->set_editable(0, false);
|
t->set_text(0, pot_translations[i].replace_first("res://", ""));
|
||||||
t->set_text(0, pot_translations[i].replace_first("res://", ""));
|
t->set_tooltip_text(0, pot_translations[i]);
|
||||||
t->set_tooltip_text(0, pot_translations[i]);
|
t->set_metadata(0, i);
|
||||||
t->set_metadata(0, i);
|
t->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0, false, TTR("Remove"));
|
||||||
t->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), 0, false, TTR("Remove"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// New translation parser plugin might extend possible file extensions in POT generation.
|
// New translation parser plugin might extend possible file extensions in POT generation.
|
||||||
_update_pot_file_extensions();
|
_update_pot_file_extensions();
|
||||||
|
|
||||||
|
pot_generate_button->set_disabled(pot_translations.is_empty());
|
||||||
|
|
||||||
updating_translations = false;
|
updating_translations = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -726,9 +726,9 @@ LocalizationEditor::LocalizationEditor() {
|
|||||||
addtr->connect("pressed", callable_mp(this, &LocalizationEditor::_pot_file_open));
|
addtr->connect("pressed", callable_mp(this, &LocalizationEditor::_pot_file_open));
|
||||||
thb->add_child(addtr);
|
thb->add_child(addtr);
|
||||||
|
|
||||||
Button *generate = memnew(Button(TTR("Generate POT")));
|
pot_generate_button = memnew(Button(TTR("Generate POT")));
|
||||||
generate->connect("pressed", callable_mp(this, &LocalizationEditor::_pot_generate_open));
|
pot_generate_button->connect("pressed", callable_mp(this, &LocalizationEditor::_pot_generate_open));
|
||||||
thb->add_child(generate);
|
thb->add_child(pot_generate_button);
|
||||||
|
|
||||||
VBoxContainer *tmc = memnew(VBoxContainer);
|
VBoxContainer *tmc = memnew(VBoxContainer);
|
||||||
tmc->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
tmc->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||||
|
@ -54,6 +54,7 @@ class LocalizationEditor : public VBoxContainer {
|
|||||||
Tree *translation_pot_list = nullptr;
|
Tree *translation_pot_list = nullptr;
|
||||||
EditorFileDialog *pot_file_open_dialog = nullptr;
|
EditorFileDialog *pot_file_open_dialog = nullptr;
|
||||||
EditorFileDialog *pot_generate_dialog = nullptr;
|
EditorFileDialog *pot_generate_dialog = nullptr;
|
||||||
|
Button *pot_generate_button = nullptr;
|
||||||
|
|
||||||
bool updating_translations = false;
|
bool updating_translations = false;
|
||||||
String localization_changed;
|
String localization_changed;
|
||||||
|
@ -55,7 +55,9 @@ void POTGenerator::_print_all_translation_strings() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void POTGenerator::generate_pot(const String &p_file) {
|
void POTGenerator::generate_pot(const String &p_file) {
|
||||||
if (!ProjectSettings::get_singleton()->has_setting("internationalization/locale/translations_pot_files")) {
|
Vector<String> files = GLOBAL_GET("internationalization/locale/translations_pot_files");
|
||||||
|
|
||||||
|
if (files.is_empty()) {
|
||||||
WARN_PRINT("No files selected for POT generation.");
|
WARN_PRINT("No files selected for POT generation.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -63,8 +65,6 @@ void POTGenerator::generate_pot(const String &p_file) {
|
|||||||
// Clear all_translation_strings of the previous round.
|
// Clear all_translation_strings of the previous round.
|
||||||
all_translation_strings.clear();
|
all_translation_strings.clear();
|
||||||
|
|
||||||
Vector<String> files = GLOBAL_GET("internationalization/locale/translations_pot_files");
|
|
||||||
|
|
||||||
// Collect all translatable strings according to files order in "POT Generation" setting.
|
// Collect all translatable strings according to files order in "POT Generation" setting.
|
||||||
for (int i = 0; i < files.size(); i++) {
|
for (int i = 0; i < files.size(); i++) {
|
||||||
Vector<String> msgids;
|
Vector<String> msgids;
|
||||||
|
Loading…
Reference in New Issue
Block a user