using System.Globalization;
using GFramework.Core.Abstractions.Systems;
namespace GFramework.Core.Abstractions.Localization;
///
/// 本地化管理器接口
///
public interface ILocalizationManager : ISystem
{
///
/// 当前语言代码
///
string CurrentLanguage { get; }
///
/// 当前文化信息
///
CultureInfo CurrentCulture { get; }
///
/// 可用语言列表
///
IReadOnlyList AvailableLanguages { get; }
///
/// 设置当前语言
///
/// 语言代码
void SetLanguage(string languageCode);
///
/// 获取本地化表
///
/// 表名
/// 本地化表
ILocalizationTable GetTable(string tableName);
///
/// 获取本地化文本
///
/// 表名
/// 键名
/// 本地化文本
string GetText(string table, string key);
///
/// 获取本地化字符串(支持变量和格式化)
///
/// 表名
/// 键名
/// 本地化字符串
ILocalizationString GetString(string table, string key);
///
/// 尝试获取本地化文本
///
/// 表名
/// 键名
/// 输出文本
/// 是否成功获取
bool TryGetText(string table, string key, out string text);
///
/// 注册格式化器
///
/// 格式化器名称
/// 格式化器实例
void RegisterFormatter(string name, ILocalizationFormatter formatter);
///
/// 获取格式化器
///
/// 格式化器名称
/// 格式化器实例,如果不存在则返回 null
ILocalizationFormatter? GetFormatter(string name);
///
/// 订阅语言变化事件
///
/// 回调函数
void SubscribeToLanguageChange(Action callback);
///
/// 取消订阅语言变化事件
///
/// 回调函数
void UnsubscribeFromLanguageChange(Action callback);
}