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