using Cysharp.Threading.Tasks;
namespace TEngine
{
///
/// 本地化管理模块,负责多语言资源的加载和切换。
///
public class LocalizationModule : Module, ILocalizationModule
{
// 实际的本地化管理器实例。
private LocalizationManager _localizationManager;
///
/// 绑定具体的本地化管理器实现。
///
/// 要绑定的本地化管理器实例。
public void Bind(LocalizationManager localizationManager)
{
_localizationManager = localizationManager;
}
///
/// 模块初始化方法。
///
public override void OnInit()
{
}
///
/// 模块关闭方法。
///
public override void Shutdown()
{
UnityEngine.Object.Destroy(_localizationManager);
}
///
/// 当前使用的语言(可读写)。
///
public Language Language
{
get => _localizationManager.Language;
set => _localizationManager.Language = value;
}
///
/// 获取系统默认语言。
///
public Language SystemLanguage => _localizationManager.SystemLanguage;
///
/// 加载完整的语言资源包。
///
/// 要加载的资源包名称
public async UniTask LoadLanguageTotalAsset(string assetName)
{
await _localizationManager.LoadLanguageTotalAsset(assetName);
}
///
/// 加载指定语言的本地化资源。
///
/// 要加载的语言。
/// 是否设置为当前语言。
/// 是否来自初始化流程。
public async UniTask LoadLanguage(string language, bool setCurrent = false, bool fromInit = false)
{
await _localizationManager.LoadLanguage(language, setCurrent, fromInit);
}
///
/// 检查指定语言是否可用。
///
/// 要检查的语言名称。
/// 如果语言可用返回true,否则false。
public bool CheckLanguage(string language)
{
return _localizationManager.CheckLanguage(language);
}
///
/// 设置当前语言(通过枚举值)。
///
/// 要设置的语言枚举值。
/// 是否立即加载语言资源。
/// 设置是否成功。
public bool SetLanguage(Language language, bool load = false)
{
return _localizationManager.SetLanguage(language, load);
}
///
/// 设置当前语言(通过字符串)。
///
/// 要设置的语言名称。
/// 是否立即加载语言资源。
/// 设置是否成功。
public bool SetLanguage(string language, bool load = false)
{
return _localizationManager.SetLanguage(language, load);
}
///
/// 设置当前语言(通过语言ID)。
///
/// 要设置的语言ID。
/// 设置是否成功。
public bool SetLanguage(int languageId)
{
return _localizationManager.SetLanguage(languageId);
}
}
}