mirror of
https://github.com/Relintai/godot_translation_editor.git
synced 2024-11-20 08:37:18 +01:00
Show translation status on language tabs
This commit is contained in:
parent
ce879a3206
commit
36c7e48fd3
@ -56,7 +56,7 @@ var _dialogs_to_free_on_exit := []
|
|||||||
var _logger = Logger.get_for(self)
|
var _logger = Logger.get_for(self)
|
||||||
var _string_status_icons := [null, null, null]
|
var _string_status_icons := [null, null, null]
|
||||||
|
|
||||||
# {stringID => {comments: string, languages: {string => text}}}
|
# {string_id => {comments: string, translations: {language_name => text}}}
|
||||||
var _data := {}
|
var _data := {}
|
||||||
# string[]
|
# string[]
|
||||||
var _languages := []
|
var _languages := []
|
||||||
@ -300,10 +300,35 @@ func _create_translation_edit(language: String):
|
|||||||
var tab_index := _translation_tab_container.get_tab_count()
|
var tab_index := _translation_tab_container.get_tab_count()
|
||||||
_translation_tab_container.add_child(edit)
|
_translation_tab_container.add_child(edit)
|
||||||
_translation_tab_container.set_tab_title(tab_index, language)
|
_translation_tab_container.set_tab_title(tab_index, language)
|
||||||
|
|
||||||
|
var strid := _get_selected_string_id()
|
||||||
|
if strid != "":
|
||||||
|
var s = _data[strid]
|
||||||
|
if s.translations.has(language):
|
||||||
|
edit.text = s.translations[language]
|
||||||
|
var status := _get_string_status_for_language(strid, language)
|
||||||
|
var icon = _string_status_icons[status]
|
||||||
|
_translation_tab_container.set_tab_icon(tab_index, icon)
|
||||||
|
|
||||||
_translation_edits[language] = edit
|
_translation_edits[language] = edit
|
||||||
edit.connect("text_changed", self, "_on_TranslationEdit_text_changed", [language])
|
edit.connect("text_changed", self, "_on_TranslationEdit_text_changed", [language])
|
||||||
|
|
||||||
|
|
||||||
|
func _get_selected_string_id() -> String:
|
||||||
|
var selected = _string_list.get_selected_items()
|
||||||
|
if len(selected) == 0:
|
||||||
|
return ""
|
||||||
|
return _string_list.get_item_text(selected[0])
|
||||||
|
|
||||||
|
|
||||||
|
func _get_language_tab_index(language: String) -> int:
|
||||||
|
var page = _translation_edits[language]
|
||||||
|
for i in _translation_tab_container.get_child_count():
|
||||||
|
if _translation_tab_container.get_child(i) == page:
|
||||||
|
return i
|
||||||
|
return -1
|
||||||
|
|
||||||
|
|
||||||
func _on_TranslationEdit_text_changed(language: String):
|
func _on_TranslationEdit_text_changed(language: String):
|
||||||
var edit : TextEdit = _translation_edits[language]
|
var edit : TextEdit = _translation_edits[language]
|
||||||
var selected_strids := _string_list.get_selected_items()
|
var selected_strids := _string_list.get_selected_items()
|
||||||
@ -328,6 +353,10 @@ func _on_TranslationEdit_text_changed(language: String):
|
|||||||
# Update status icon
|
# Update status icon
|
||||||
var status := _get_string_status(strid)
|
var status := _get_string_status(strid)
|
||||||
_string_list.set_item_icon(list_index, _string_status_icons[status])
|
_string_list.set_item_icon(list_index, _string_status_icons[status])
|
||||||
|
|
||||||
|
var tab_index := _get_language_tab_index(language)
|
||||||
|
var tab_status := _get_string_status_for_language(strid, language)
|
||||||
|
_translation_tab_container.set_tab_icon(tab_index, _string_status_icons[tab_status])
|
||||||
|
|
||||||
|
|
||||||
func _on_NotesEdit_text_changed():
|
func _on_NotesEdit_text_changed():
|
||||||
@ -359,16 +388,12 @@ func _set_language_unmodified(language: String):
|
|||||||
|
|
||||||
|
|
||||||
func _set_language_tab_title(language: String, title: String):
|
func _set_language_tab_title(language: String, title: String):
|
||||||
var page = _translation_edits[language]
|
var tab_index := _get_language_tab_index(language)
|
||||||
for i in _translation_tab_container.get_child_count():
|
assert(tab_index != -1)
|
||||||
if _translation_tab_container.get_child(i) == page:
|
_translation_tab_container.set_tab_title(tab_index, title)
|
||||||
_translation_tab_container.set_tab_title(i, title)
|
# TODO There seem to be a Godot bug, tab titles don't update unless you click on them Oo
|
||||||
# TODO There seem to be a Godot bug, tab titles don't update unless you click on them Oo
|
# See https://github.com/godotengine/godot/issues/23696
|
||||||
# See https://github.com/godotengine/godot/issues/23696
|
_translation_tab_container.update()
|
||||||
_translation_tab_container.update()
|
|
||||||
return
|
|
||||||
# Something bad happened
|
|
||||||
assert(false)
|
|
||||||
|
|
||||||
|
|
||||||
func _get_current_language() -> String:
|
func _get_current_language() -> String:
|
||||||
@ -443,6 +468,18 @@ func _refresh_list():
|
|||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
func _get_string_status_for_language(strid: String, language: String) -> int:
|
||||||
|
if len(_languages) == 0:
|
||||||
|
return STATUS_UNTRANSLATED
|
||||||
|
var s : Dictionary = _data[strid]
|
||||||
|
if not s.translations.has(language):
|
||||||
|
return STATUS_UNTRANSLATED
|
||||||
|
var text : String = s.translations[language].strip_edges()
|
||||||
|
if text != "":
|
||||||
|
return STATUS_TRANSLATED
|
||||||
|
return STATUS_UNTRANSLATED
|
||||||
|
|
||||||
|
|
||||||
func _get_string_status(strid: String) -> int:
|
func _get_string_status(strid: String) -> int:
|
||||||
if len(_languages) == 0:
|
if len(_languages) == 0:
|
||||||
return STATUS_UNTRANSLATED
|
return STATUS_UNTRANSLATED
|
||||||
@ -469,6 +506,10 @@ func _on_StringList_item_selected(index: int):
|
|||||||
e.text = s.translations[language]
|
e.text = s.translations[language]
|
||||||
else:
|
else:
|
||||||
e.text = ""
|
e.text = ""
|
||||||
|
var status = _get_string_status_for_language(str_id, language)
|
||||||
|
var icon = _string_status_icons[status]
|
||||||
|
var tab_index = _get_language_tab_index(language)
|
||||||
|
_translation_tab_container.set_tab_icon(tab_index, icon)
|
||||||
_notes_edit.text = s.comments
|
_notes_edit.text = s.comments
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user