Begin slow process of Language refactoring and testing.
This commit is contained in:
@@ -29,6 +29,7 @@ VN="*res://scripts/Singleton/VN.gd"
|
|||||||
LOAD="*res://scenes/Singletons/Load.tscn"
|
LOAD="*res://scenes/Singletons/Load.tscn"
|
||||||
EVENT="*res://scripts/Singleton/Event.gd"
|
EVENT="*res://scripts/Singleton/Event.gd"
|
||||||
RECIPE="*res://scenes/Singletons/Recipe.tscn"
|
RECIPE="*res://scenes/Singletons/Recipe.tscn"
|
||||||
|
LOCALE="*res://scripts/Singleton/Locale.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
|
@@ -38,7 +38,9 @@ layout_mode = 1
|
|||||||
visible = false
|
visible = false
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
|
anchor_right = 0.0
|
||||||
anchor_bottom = 0.0
|
anchor_bottom = 0.0
|
||||||
offset_right = 207.0
|
offset_right = 207.0
|
||||||
offset_bottom = 206.0
|
offset_bottom = 206.0
|
||||||
|
grow_horizontal = 1
|
||||||
grow_vertical = 1
|
grow_vertical = 1
|
||||||
|
@@ -12,7 +12,7 @@ script = ExtResource("1_pcsq6")
|
|||||||
|
|
||||||
[node name="MainMenu" type="Button" parent="."]
|
[node name="MainMenu" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_MAIN_MENU"
|
text = "ui.debug_menu.main_menu"
|
||||||
|
|
||||||
[node name="OverworldOption" type="HBoxContainer" parent="."]
|
[node name="OverworldOption" type="HBoxContainer" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@@ -20,33 +20,33 @@ size_flags_vertical = 0
|
|||||||
|
|
||||||
[node name="Overworld" type="Button" parent="OverworldOption"]
|
[node name="Overworld" type="Button" parent="OverworldOption"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_OVERWORLD"
|
text = "ui.debug_menu.overworld"
|
||||||
|
|
||||||
[node name="MapDropdown" type="OptionButton" parent="OverworldOption"]
|
[node name="MapDropdown" type="OptionButton" parent="OverworldOption"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
[node name="Quests" type="Button" parent="."]
|
[node name="Quest" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_QUESTS"
|
text = "ui.debug_menu.quest"
|
||||||
|
|
||||||
[node name="Inventory" type="Button" parent="."]
|
[node name="Inventory" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_INVENTORY"
|
text = "ui.debug_menu.inventory"
|
||||||
|
|
||||||
[node name="Event" type="Button" parent="."]
|
[node name="Event" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_EVENTS"
|
text = "ui.debug_menu.event"
|
||||||
|
|
||||||
[node name="Cutscene" type="Button" parent="."]
|
[node name="Cutscene" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_CUTSCENES"
|
text = "ui.debug_menu.cutscene"
|
||||||
|
|
||||||
[node name="Cooking" type="Button" parent="."]
|
[node name="Cooking" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "UI_DEBUG_COOKING"
|
text = "ui.debug_menu.cooking"
|
||||||
|
|
||||||
[node name="Battle" type="Button" parent="."]
|
[node name="Battle" type="Button" parent="."]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
disabled = true
|
disabled = true
|
||||||
text = "UI_DEBUG_BATTLE"
|
text = "ui.debug_menu.battle"
|
||||||
|
107
scripts/Singleton/Locale.gd
Normal file
107
scripts/Singleton/Locale.gd
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
class_name LocaleSystem extends Node
|
||||||
|
|
||||||
|
enum Language {
|
||||||
|
ENGLISH,
|
||||||
|
JAPANESE,
|
||||||
|
SPANISH,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Region {
|
||||||
|
US,
|
||||||
|
EU,
|
||||||
|
AU,
|
||||||
|
JP
|
||||||
|
}
|
||||||
|
|
||||||
|
const LANGUAGE_MATCH:Dictionary[String, Language] = {
|
||||||
|
"EN": Language.ENGLISH,
|
||||||
|
"JA": Language.JAPANESE,
|
||||||
|
"ES": Language.SPANISH
|
||||||
|
}
|
||||||
|
|
||||||
|
const REGION_MATCH:Dictionary[String, Region] = {
|
||||||
|
"US": Region.US,
|
||||||
|
"EU": Region.EU,
|
||||||
|
"AU": Region.AU,
|
||||||
|
"JP": Region.JP
|
||||||
|
}
|
||||||
|
|
||||||
|
const DEFAULT_LANGUAGE:Language = Language.ENGLISH
|
||||||
|
const DEFAULT_REGION:Region = Region.US
|
||||||
|
|
||||||
|
var locale:String = "";
|
||||||
|
var language:Language = -1
|
||||||
|
var region:Region = -1
|
||||||
|
|
||||||
|
signal localeChanged
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var preferred = OS.get_locale_language()
|
||||||
|
self.setLocaleFromLocaleString(preferred)
|
||||||
|
|
||||||
|
func setLocaleFromLocaleString(localeString:String) -> void:
|
||||||
|
var parts:PackedStringArray = localeString.split("_")
|
||||||
|
|
||||||
|
var strLang:String
|
||||||
|
var strReg:String
|
||||||
|
|
||||||
|
# Default missing region or language to "??", will default lower
|
||||||
|
if parts.size() == 0:
|
||||||
|
strLang = "??".to_upper()
|
||||||
|
strReg = "??".to_upper()
|
||||||
|
elif parts.size() == 1:
|
||||||
|
strLang = parts[0].to_upper()
|
||||||
|
strReg = "??".to_upper()
|
||||||
|
else:
|
||||||
|
strLang = parts[0].to_upper()
|
||||||
|
strReg = parts[1].to_upper()
|
||||||
|
|
||||||
|
# Select matching internal language and region
|
||||||
|
var lang:Language
|
||||||
|
var reg:Region
|
||||||
|
|
||||||
|
if LANGUAGE_MATCH.has(strLang):
|
||||||
|
lang = LANGUAGE_MATCH[strLang]
|
||||||
|
else:
|
||||||
|
print("Unknown language: " + strLang)
|
||||||
|
lang = DEFAULT_LANGUAGE
|
||||||
|
reg = DEFAULT_REGION
|
||||||
|
|
||||||
|
if REGION_MATCH.has(strReg):
|
||||||
|
reg = REGION_MATCH[strReg]
|
||||||
|
else:
|
||||||
|
print("Unknown region: " + strReg)
|
||||||
|
reg = DEFAULT_REGION
|
||||||
|
|
||||||
|
# Set locale.
|
||||||
|
self.setLocale(lang, reg)
|
||||||
|
|
||||||
|
func setLocale(language:Language, region:Region) -> void:
|
||||||
|
print("Setting locale to: " + str(language) + "_" + str(region))
|
||||||
|
if self.language == language and self.region == region:
|
||||||
|
return
|
||||||
|
|
||||||
|
var l:String = ""
|
||||||
|
|
||||||
|
var matchLang = LANGUAGE_MATCH.find_key(language)
|
||||||
|
if matchLang:
|
||||||
|
l = matchLang.to_lower()
|
||||||
|
else:
|
||||||
|
print("Invalid language: " + str(language))
|
||||||
|
l = LANGUAGE_MATCH.find_key(DEFAULT_LANGUAGE).to_lower()
|
||||||
|
|
||||||
|
l += "_"
|
||||||
|
|
||||||
|
var matchRegion = REGION_MATCH.find_key(region)
|
||||||
|
if matchRegion:
|
||||||
|
l += matchRegion.to_upper
|
||||||
|
else:
|
||||||
|
print("Invalid region: " + str(region))
|
||||||
|
l += REGION_MATCH.find_key(DEFAULT_REGION).to_upper()
|
||||||
|
|
||||||
|
self.language = language
|
||||||
|
self.region = region
|
||||||
|
self.locale = l
|
||||||
|
TranslationServer.set_locale(l)
|
||||||
|
localeChanged.emit(l)
|
||||||
|
print("Locale set to: " + l)
|
1
scripts/Singleton/Locale.gd.uid
Normal file
1
scripts/Singleton/Locale.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bv8v8hdhnio1h
|
@@ -7,7 +7,7 @@ func _ready() -> void:
|
|||||||
|
|
||||||
$MainMenu.connect("pressed", _on_MainMenu_pressed);
|
$MainMenu.connect("pressed", _on_MainMenu_pressed);
|
||||||
$OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed);
|
$OverworldOption/Overworld.connect("pressed", _on_Overworld_pressed);
|
||||||
$Quests.connect("pressed", _on_Quests_pressed);
|
$Quest.connect("pressed", _on_Quests_pressed);
|
||||||
$Inventory.connect("pressed", _on_Inventory_pressed);
|
$Inventory.connect("pressed", _on_Inventory_pressed);
|
||||||
$Event.connect("pressed", _on_Event_pressed);
|
$Event.connect("pressed", _on_Event_pressed);
|
||||||
$Cutscene.connect("pressed", _on_Custscene_pressed);
|
$Cutscene.connect("pressed", _on_Custscene_pressed);
|
||||||
@@ -23,7 +23,7 @@ func _ready() -> void:
|
|||||||
func _exit_tree() -> void:
|
func _exit_tree() -> void:
|
||||||
$MainMenu.disconnect("pressed", _on_MainMenu_pressed);
|
$MainMenu.disconnect("pressed", _on_MainMenu_pressed);
|
||||||
$OverworldOption/Overworld.disconnect("pressed", _on_Overworld_pressed);
|
$OverworldOption/Overworld.disconnect("pressed", _on_Overworld_pressed);
|
||||||
$Quests.disconnect("pressed", _on_Quests_pressed);
|
$Quest.disconnect("pressed", _on_Quests_pressed);
|
||||||
$Cutscene.disconnect("pressed", _on_Custscene_pressed);
|
$Cutscene.disconnect("pressed", _on_Custscene_pressed);
|
||||||
$Cooking.disconnect("pressed", _on_Cooking_pressed);
|
$Cooking.disconnect("pressed", _on_Cooking_pressed);
|
||||||
$Battle.disconnect("pressed", _on_Battle_pressed);
|
$Battle.disconnect("pressed", _on_Battle_pressed);
|
||||||
@@ -59,8 +59,6 @@ func _on_Custscene_pressed():
|
|||||||
|
|
||||||
func _on_Cooking_pressed():
|
func _on_Cooking_pressed():
|
||||||
print("Cooking pressed")
|
print("Cooking pressed")
|
||||||
TranslatssionServer.change
|
|
||||||
TranslationServer.set_locale("en_US")
|
|
||||||
|
|
||||||
func _on_Battle_pressed():
|
func _on_Battle_pressed():
|
||||||
print("Battle pressed")
|
print("Battle pressed")
|
||||||
|
Reference in New Issue
Block a user