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"
|
||||
EVENT="*res://scripts/Singleton/Event.gd"
|
||||
RECIPE="*res://scenes/Singletons/Recipe.tscn"
|
||||
LOCALE="*res://scripts/Singleton/Locale.gd"
|
||||
|
||||
[display]
|
||||
|
||||
|
@@ -38,7 +38,9 @@ layout_mode = 1
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
anchors_preset = 0
|
||||
anchor_right = 0.0
|
||||
anchor_bottom = 0.0
|
||||
offset_right = 207.0
|
||||
offset_bottom = 206.0
|
||||
grow_horizontal = 1
|
||||
grow_vertical = 1
|
||||
|
@@ -12,7 +12,7 @@ script = ExtResource("1_pcsq6")
|
||||
|
||||
[node name="MainMenu" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_MAIN_MENU"
|
||||
text = "ui.debug_menu.main_menu"
|
||||
|
||||
[node name="OverworldOption" type="HBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
@@ -20,33 +20,33 @@ size_flags_vertical = 0
|
||||
|
||||
[node name="Overworld" type="Button" parent="OverworldOption"]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_OVERWORLD"
|
||||
text = "ui.debug_menu.overworld"
|
||||
|
||||
[node name="MapDropdown" type="OptionButton" parent="OverworldOption"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Quests" type="Button" parent="."]
|
||||
[node name="Quest" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_QUESTS"
|
||||
text = "ui.debug_menu.quest"
|
||||
|
||||
[node name="Inventory" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_INVENTORY"
|
||||
text = "ui.debug_menu.inventory"
|
||||
|
||||
[node name="Event" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_EVENTS"
|
||||
text = "ui.debug_menu.event"
|
||||
|
||||
[node name="Cutscene" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_CUTSCENES"
|
||||
text = "ui.debug_menu.cutscene"
|
||||
|
||||
[node name="Cooking" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
text = "UI_DEBUG_COOKING"
|
||||
text = "ui.debug_menu.cooking"
|
||||
|
||||
[node name="Battle" type="Button" parent="."]
|
||||
layout_mode = 2
|
||||
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);
|
||||
$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);
|
||||
$Event.connect("pressed", _on_Event_pressed);
|
||||
$Cutscene.connect("pressed", _on_Custscene_pressed);
|
||||
@@ -23,7 +23,7 @@ func _ready() -> void:
|
||||
func _exit_tree() -> void:
|
||||
$MainMenu.disconnect("pressed", _on_MainMenu_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);
|
||||
$Cooking.disconnect("pressed", _on_Cooking_pressed);
|
||||
$Battle.disconnect("pressed", _on_Battle_pressed);
|
||||
@@ -59,8 +59,6 @@ func _on_Custscene_pressed():
|
||||
|
||||
func _on_Cooking_pressed():
|
||||
print("Cooking pressed")
|
||||
TranslatssionServer.change
|
||||
TranslationServer.set_locale("en_US")
|
||||
|
||||
func _on_Battle_pressed():
|
||||
print("Battle pressed")
|
||||
|
Reference in New Issue
Block a user