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); } } }