HighNoonRoulette/addons/localization_editor/scenes/pseudolocalization/control/LocalizationPseudolocalizationUI.gd
2025-08-28 01:55:38 +02:00

93 lines
4.2 KiB
GDScript

# LocalizationEditor PseudolocalizationUI: MIT License
# @author Vladimir Petrenko
@tool
extends VBoxContainer
const _pseudolocalization: String = "internationalization/pseudolocalization/use_pseudolocalization"
const _accents: String = "internationalization/pseudolocalization/replace_with_accents"
const _double_vowels: String = "internationalization/pseudolocalization/double_vowels"
const _fake_bidi: String = "internationalization/pseudolocalization/fake_bidi"
const _override: String = "internationalization/pseudolocalization/override"
const _expansion_ratio: String = "internationalization/pseudolocalization/expansion_ratio"
const _prefix: String = "internationalization/pseudolocalization/prefix"
const _suffix: String = "internationalization/pseudolocalization/suffix"
const _skip_placeholders: String = "internationalization/pseudolocalization/skip_placeholders"
@onready var _pseudolocalization_ui: CheckBox = $HBoxPseudolocalization/Panel/Pseudolocalization
@onready var _accents_ui: CheckBox = $HBoxAccents/Panel/Accents
@onready var _double_vowels_ui: CheckBox = $HBoxDoubleVowels/Panel/DoubleVowels
@onready var _fake_bidi_ui: CheckBox = $HBoxFakeBidi/Panel/FakeBidi
@onready var _override_ui: CheckBox = $HBoxOverride/Panel/Override
@onready var _expansion_ratio_ui: LineEdit = $HBoxExpansionRatio/ExpansionRatio
@onready var _prefix_ui: LineEdit = $HBoxPrefix/ExpansionPrefix
@onready var _suffix_ui: LineEdit = $HBoxSuffix/ExpansionSuffix
@onready var _skip_placeholders_ui: CheckBox = $HBoxSkipPlaceholders/Panel/SkipPlaceholders
func _ready() -> void:
_init_vars()
_init_connections()
func _init_vars() -> void:
_pseudolocalization_ui.button_pressed = TranslationServer.is_pseudolocalization_enabled()
_accents_ui.button_pressed = ProjectSettings.get(_accents)
_double_vowels_ui.button_pressed = ProjectSettings.get(_double_vowels)
_fake_bidi_ui.button_pressed = ProjectSettings.get(_fake_bidi)
_override_ui.button_pressed = ProjectSettings.get(_override)
_expansion_ratio_ui.text = str(ProjectSettings.get(_expansion_ratio))
_prefix_ui.text = ProjectSettings.get(_prefix)
_suffix_ui.text = ProjectSettings.get(_suffix)
_skip_placeholders_ui.button_pressed = ProjectSettings.get(_skip_placeholders)
func _init_connections() -> void:
_pseudolocalization_ui.toggled.connect(_on_pseudolocalization_toggled)
_accents_ui.toggled.connect(_on_accents_toggled)
_double_vowels_ui.toggled.connect(_on_double_vowels_toggled)
_fake_bidi_ui.toggled.connect(_on_fake_bidi_toggled)
_override_ui.toggled.connect(_on_override_toggled)
_expansion_ratio_ui.text_changed.connect(_on_expansion_ratio_text_changed)
_prefix_ui.text_changed.connect(_on_prefix_text_changed)
_suffix_ui.text_changed.connect(_on_suffix_text_changed)
_skip_placeholders_ui.toggled.connect(_on_skip_placeholders_toggled)
func _on_pseudolocalization_toggled(button_pressed: bool) -> void:
_change_project_setting(_pseudolocalization, button_pressed)
TranslationServer.set_pseudolocalization_enabled(button_pressed)
func _on_accents_toggled(button_pressed: bool) -> void:
_change_project_setting(_accents, button_pressed)
func _on_double_vowels_toggled(button_pressed: bool) -> void:
_change_project_setting(_double_vowels, button_pressed)
func _on_fake_bidi_toggled(button_pressed: bool) -> void:
_change_project_setting(_fake_bidi, button_pressed)
func _on_override_toggled(button_pressed: bool) -> void:
_change_project_setting(_override, button_pressed)
func _on_expansion_ratio_text_changed() -> void:
float()
var ratio = (_expansion_ratio_ui.text).to_float()
if ratio > 1:
ratio = 1
_expansion_ratio_ui.text = str(ratio)
if ratio < 0:
ratio = 0
_expansion_ratio_ui.text = str(ratio)
_change_project_setting(_expansion_ratio, ratio)
func _on_prefix_text_changed() -> void:
_change_project_setting(_prefix, _prefix_ui.text)
func _on_suffix_text_changed() -> void:
_change_project_setting(_suffix, _suffix_ui.text)
func _on_skip_placeholders_toggled(button_pressed: bool) -> void:
_change_project_setting(_skip_placeholders, button_pressed)
func _change_project_setting(property: String, value: Variant, reload: bool = true, save: bool = true) -> void:
ProjectSettings.set(property, value)
if reload:
TranslationServer.reload_pseudolocalization()
if save and Engine.is_editor_hint():
ProjectSettings.save()