瀏覽代碼

Merge pull request #637 from angad-k/pseudolocalization

Add pseudolocalization demo
Aaron Franke 3 年之前
父節點
當前提交
5875f2a320

+ 78 - 0
gui/pseudolocalization/Pseudolocalization.gd

@@ -0,0 +1,78 @@
+extends Node2D
+
+func _ready():
+	$HBoxContainer/Pseudolocalization_options/accents.pressed = ProjectSettings.get("internationalization/pseudolocalization/replace_with_accents")
+	$HBoxContainer/Pseudolocalization_options/toggle.pressed = TranslationServer.pseudolocalization_enabled
+	$HBoxContainer/Pseudolocalization_options/fakebidi.pressed = ProjectSettings.get("internationalization/pseudolocalization/fake_bidi")
+	$HBoxContainer/Pseudolocalization_options/doublevowels.pressed = ProjectSettings.get("internationalization/pseudolocalization/double_vowels")
+	$HBoxContainer/Pseudolocalization_options/override.pressed = ProjectSettings.get("internationalization/pseudolocalization/override")
+	$HBoxContainer/Pseudolocalization_options/skipplaceholders.pressed = ProjectSettings.get("internationalization/pseudolocalization/skip_placeholders")
+	$HBoxContainer/Pseudolocalization_options/prefix/TextEdit.text = ProjectSettings.get("internationalization/pseudolocalization/prefix")
+	$HBoxContainer/Pseudolocalization_options/suffix/TextEdit.text = ProjectSettings.get("internationalization/pseudolocalization/suffix")
+	$HBoxContainer/Pseudolocalization_options/exp_ratio/TextEdit.text = str(ProjectSettings.get("internationalization/pseudolocalization/expansion_ratio"))
+	pass
+
+func _on_accents_toggled(button_pressed):
+	ProjectSettings.set("internationalization/pseudolocalization/replace_with_accents", button_pressed)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_toggle_toggled(button_pressed):
+	TranslationServer.pseudolocalization_enabled = button_pressed
+	pass
+
+
+func _on_fakebidi_toggled(button_pressed):
+	ProjectSettings.set("internationalization/pseudolocalization/fake_bidi", button_pressed)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_prefix_changed():
+	ProjectSettings.set("internationalization/pseudolocalization/prefix", $HBoxContainer/Pseudolocalization_options/prefix/TextEdit.text)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_suffix_changed():
+	ProjectSettings.set("internationalization/pseudolocalization/suffix", $HBoxContainer/Pseudolocalization_options/suffix/TextEdit.text)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_Pseudolocalize_pressed():
+	$HBoxContainer/Pseudolocalizer/Result.text = TranslationServer.pseudolocalize($HBoxContainer/Pseudolocalizer/Key.text)
+	pass
+
+
+func _on_doublevowels_toggled(button_pressed):
+	ProjectSettings.set("internationalization/pseudolocalization/double_vowels", button_pressed)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_expansion_ratio_text_changed():
+	float()
+	var ratio = ($HBoxContainer/Pseudolocalization_options/exp_ratio/TextEdit.text).to_float()
+	if ratio > 1:
+		ratio = 1
+		$HBoxContainer/Pseudolocalization_options/exp_ratio/TextEdit.text = str(ratio)
+	if ratio < 0:
+		ratio = 0
+		$HBoxContainer/Pseudolocalization_options/exp_ratio/TextEdit.text = str(ratio)
+	ProjectSettings.set("internationalization/pseudolocalization/expansion_ratio", ratio)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_override_toggled(button_pressed):
+	ProjectSettings.set("internationalization/pseudolocalization/override", button_pressed)
+	TranslationServer.reload_pseudolocalization()
+	pass
+
+
+func _on_skipplaceholders_toggled(button_pressed):
+	ProjectSettings.set("internationalization/pseudolocalization/skip_placeholders", button_pressed)
+	TranslationServer.reload_pseudolocalization()
+	pass

+ 335 - 0
gui/pseudolocalization/Pseudolocalization.tscn

@@ -0,0 +1,335 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://icon.png" type="Texture2D" id=1]
+[ext_resource path="res://Pseudolocalization.gd" type="Script" id=2]
+
+[node name="Pseudolocalization" type="Node2D"]
+script = ExtResource( 2 )
+
+[node name="Title" type="Label" parent="."]
+offset_top = 27.0
+offset_right = 1024.0
+offset_bottom = 74.0
+custom_font_sizes/font_size = 30
+text = "Pseudolocalization Demo"
+align = 1
+valign = 1
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="icon" type="Sprite2D" parent="Title"]
+position = Vector2(67.1489, 33.8245)
+scale = Vector2(1.26563, 1.26563)
+skew = 4.37114e-08
+texture = ExtResource( 1 )
+script = null
+
+[node name="HBoxContainer" type="HBoxContainer" parent="."]
+offset_left = 13.0
+offset_top = 102.0
+offset_right = 1025.0
+offset_bottom = 560.0
+size_flags_vertical = 3
+custom_constants/separation = 40
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Pseudolocalization_options" type="VBoxContainer" parent="HBoxContainer"]
+offset_right = 466.0
+offset_bottom = 458.0
+layout_direction = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+script = null
+
+[node name="toggle" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_right = 466.0
+offset_bottom = 40.0
+size_flags_horizontal = 3
+text = "Toggle Pseudolocalization"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="accents" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 44.0
+offset_right = 466.0
+offset_bottom = 84.0
+size_flags_horizontal = 3
+text = "Toggle Accents"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="doublevowels" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 88.0
+offset_right = 466.0
+offset_bottom = 128.0
+size_flags_horizontal = 3
+text = "Toggle Double Vowels"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="fakebidi" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 132.0
+offset_right = 466.0
+offset_bottom = 172.0
+rect_pivot_offset = Vector2(-370, -80)
+size_flags_horizontal = 3
+text = "Toggle Fake Bidi"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="override" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 176.0
+offset_right = 466.0
+offset_bottom = 216.0
+rect_pivot_offset = Vector2(-370, -80)
+size_flags_horizontal = 3
+text = "Toggle Override"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="skipplaceholders" type="CheckButton" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 220.0
+offset_right = 466.0
+offset_bottom = 260.0
+rect_pivot_offset = Vector2(-370, -80)
+size_flags_horizontal = 3
+text = "Skip Placeholders"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="exp_ratio" type="HBoxContainer" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 264.0
+offset_right = 466.0
+offset_bottom = 290.0
+size_flags_vertical = 0
+script = null
+
+[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/Pseudolocalization_options/exp_ratio"]
+offset_right = 3.0
+offset_bottom = 26.0
+custom_constants/margin_left = 3
+script = null
+
+[node name="Label" type="Label" parent="HBoxContainer/Pseudolocalization_options/exp_ratio"]
+offset_left = 7.0
+offset_right = 141.0
+offset_bottom = 26.0
+size_flags_horizontal = 2
+size_flags_vertical = 1
+size_flags_stretch_ratio = 4.0
+text = "Expansion Ratio : "
+valign = 1
+structured_text_bidi_override_options = []
+script = null
+
+[node name="TextEdit" type="TextEdit" parent="HBoxContainer/Pseudolocalization_options/exp_ratio"]
+offset_left = 375.0
+offset_right = 466.0
+offset_bottom = 26.0
+size_flags_horizontal = 3
+structured_text_bidi_override_options = []
+script = null
+
+[node name="prefix" type="Control" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 294.0
+offset_right = 466.0
+offset_bottom = 294.0
+size_flags_horizontal = 3
+script = null
+
+[node name="TextEdit" type="TextEdit" parent="HBoxContainer/Pseudolocalization_options/prefix"]
+offset_left = 5.0
+offset_top = 32.8613
+offset_right = 385.0
+offset_bottom = 62.8613
+size_flags_horizontal = 3
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="HBoxContainer/Pseudolocalization_options/prefix"]
+offset_left = 6.0
+offset_top = 2.86133
+offset_right = 297.0
+offset_bottom = 28.8613
+text = "Pseudolocalization Prefix :"
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="suffix" type="Control" parent="HBoxContainer/Pseudolocalization_options"]
+offset_top = 298.0
+offset_right = 466.0
+offset_bottom = 298.0
+size_flags_horizontal = 3
+script = null
+
+[node name="TextEdit" type="TextEdit" parent="HBoxContainer/Pseudolocalization_options/suffix"]
+offset_left = 3.811
+offset_top = 106.592
+offset_right = 383.811
+offset_bottom = 136.592
+size_flags_horizontal = 3
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="HBoxContainer/Pseudolocalization_options/suffix"]
+offset_left = 6.0
+offset_top = 76.5923
+offset_right = 297.0
+offset_bottom = 102.592
+text = "Pseudolocalization Suffix :"
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Pseudolocalizer" type="VBoxContainer" parent="HBoxContainer"]
+offset_left = 506.0
+offset_right = 972.0
+offset_bottom = 458.0
+grow_horizontal = 0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Label" type="Label" parent="HBoxContainer/Pseudolocalizer"]
+offset_right = 466.0
+offset_bottom = 26.0
+size_flags_horizontal = 3
+size_flags_vertical = 5
+text = "Pseudolocalization key :"
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Key" type="TextEdit" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 30.0
+offset_right = 466.0
+offset_bottom = 143.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+text = "The quick brown fox jumped over the lazy dog."
+wrap_enabled = true
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="margin" type="MarginContainer" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 147.0
+offset_bottom = 152.0
+size_flags_horizontal = 0
+size_flags_vertical = 0
+custom_constants/margin_top = 5
+script = null
+
+[node name="Pseudolocalize" type="Button" parent="HBoxContainer/Pseudolocalizer"]
+offset_left = 170.0
+offset_top = 156.0
+offset_right = 295.0
+offset_bottom = 185.0
+size_flags_horizontal = 6
+text = "Pseudolocalize"
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="margin2" type="MarginContainer" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 189.0
+offset_bottom = 194.0
+size_flags_horizontal = 0
+size_flags_vertical = 0
+custom_constants/margin_top = 5
+script = null
+
+[node name="Label2" type="Label" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 198.0
+offset_right = 466.0
+offset_bottom = 224.0
+text = "Pseudolocalization result :"
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="Result" type="TextEdit" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 228.0
+offset_right = 466.0
+offset_bottom = 341.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+custom_colors/font_color = Color(1, 1, 1, 1)
+custom_colors/font_readonly_color = Color(1, 1, 1, 1)
+readonly = true
+wrap_enabled = true
+structured_text_bidi_override_options = []
+script = null
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="A2Z" type="Label" parent="HBoxContainer/Pseudolocalizer"]
+offset_top = 345.0
+offset_right = 466.0
+offset_bottom = 458.0
+size_flags_vertical = 7
+custom_font_sizes/font_size = 16
+custom_colors/font_color = Color(0.0235294, 0.94902, 1, 1)
+text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ
+abcdefghijklmnopqrstuvwxyz"
+align = 1
+valign = 1
+structured_text_bidi_override_options = []
+script = null
+
+[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer"]
+offset_left = 1012.0
+offset_right = 1012.0
+offset_bottom = 458.0
+script = null
+
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/toggle" to="." method="_on_toggle_toggled"]
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/accents" to="." method="_on_accents_toggled"]
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/doublevowels" to="." method="_on_doublevowels_toggled"]
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/fakebidi" to="." method="_on_fakebidi_toggled"]
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/override" to="." method="_on_override_toggled"]
+[connection signal="toggled" from="HBoxContainer/Pseudolocalization_options/skipplaceholders" to="." method="_on_skipplaceholders_toggled"]
+[connection signal="text_changed" from="HBoxContainer/Pseudolocalization_options/exp_ratio/TextEdit" to="." method="_on_expansion_ratio_text_changed"]
+[connection signal="text_changed" from="HBoxContainer/Pseudolocalization_options/prefix/TextEdit" to="." method="_on_prefix_changed"]
+[connection signal="text_changed" from="HBoxContainer/Pseudolocalization_options/suffix/TextEdit" to="." method="_on_suffix_changed"]
+[connection signal="pressed" from="HBoxContainer/Pseudolocalizer/Pseudolocalize" to="." method="_on_Pseudolocalize_pressed"]

+ 11 - 0
gui/pseudolocalization/README.md

@@ -0,0 +1,11 @@
+# Pseudolocalization Demo
+
+A demo showcasing the Pseudolocalization feature in Godot
+
+Language: GDScript
+
+Renderer: Vulkan
+
+## Screenshots
+
+![Screenshot](screenshots/pseudolocalization.png)

+ 8 - 0
gui/pseudolocalization/default_env.tres

@@ -0,0 +1,8 @@
+[gd_resource type="Environment" load_steps=2 format=2]
+
+[sub_resource type="Sky" id=1]
+
+[resource]
+background_mode = 1
+background_color = Color(0.839216, 0.352941, 0.635294, 1)
+sky = SubResource( 1 )

二進制
gui/pseudolocalization/icon.png


+ 34 - 0
gui/pseudolocalization/icon.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture2D"
+path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://icon.png"
+dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
+
+[params]
+
+compress/mode=0
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/bptc_ldr=0
+compress/normal_map=0
+compress/channel_pack=0
+compress/streamed=false
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/HDR_as_SRGB=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0

+ 20 - 0
gui/pseudolocalization/project.godot

@@ -0,0 +1,20 @@
+; Engine configuration file.
+; It's best edited using the editor UI and not directly,
+; since the parameters that go here are not all obvious.
+;
+; Format:
+;   [section] ; section goes between []
+;   param=value ; assign values to parameters
+
+config_version=4
+
+[application]
+
+config/name="Pseudolocalization"
+run/main_scene="res://Pseudolocalization.tscn"
+config/icon="res://icon.png"
+
+[internationalization]
+
+pseudolocalization/use_pseudolocalization=true
+pseudolocalization/double_vowels=true

+ 0 - 0
gui/pseudolocalization/screenshots/.gdignore


二進制
gui/pseudolocalization/screenshots/pseudolocalization.png