2025-01-26 09:15:28 +00:00
|
|
|
using Godot;
|
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using Godot.Collections;
|
|
|
|
|
|
|
|
namespace Rokojori
|
|
|
|
{
|
|
|
|
[Tool]
|
2025-02-12 16:48:15 +00:00
|
|
|
[GlobalClass,Icon("res://addons/rokojori_action_library/Icons/LocaleManager.svg")]
|
2025-01-26 09:15:28 +00:00
|
|
|
public partial class LocaleManager:Node
|
|
|
|
{
|
2025-02-12 16:48:15 +00:00
|
|
|
LocaleCode _languageLocale = LocaleCode.en;
|
|
|
|
static LocaleCode _editorLanguageLocale = LocaleCode.en;
|
|
|
|
|
2025-01-26 09:15:28 +00:00
|
|
|
[Export]
|
2025-02-12 16:48:15 +00:00
|
|
|
public LocaleCode languageLocale
|
|
|
|
{
|
|
|
|
get => _languageLocale;
|
|
|
|
set { _languageLocale = value; _editorLanguageLocale = value; UpdateLocalization(); }
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void _Ready()
|
|
|
|
{
|
|
|
|
RJLog.Log( "_Ready >>", _languageLocale );
|
|
|
|
UpdateLocalization();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void UpdateLocalization()
|
|
|
|
{
|
|
|
|
RJLog.Log( "Updating Language >>>", _languageLocale );
|
|
|
|
this.ForEachInRoot<iLocalizable>( i => { i.UpdateLocalization(); } );
|
|
|
|
}
|
|
|
|
|
|
|
|
public static LocaleCode currentLanguage
|
|
|
|
{
|
|
|
|
get
|
|
|
|
{
|
|
|
|
if ( Engine.IsEditorHint() )
|
|
|
|
{
|
|
|
|
return _editorLanguageLocale;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var lm = Unique<LocaleManager>.Get();
|
|
|
|
var lc = LocaleCode.en;
|
|
|
|
|
|
|
|
if ( lm != null )
|
|
|
|
{
|
|
|
|
lc = lm.languageLocale;
|
|
|
|
}
|
|
|
|
|
|
|
|
RJLog.Log( "currentLanguage", lc );
|
|
|
|
|
|
|
|
return lc;
|
|
|
|
}
|
|
|
|
}
|
2025-01-26 09:15:28 +00:00
|
|
|
}
|
|
|
|
}
|