using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
public static class Language
{
    public static int languageNumber
    {
        get;
        set;
    }
    public static event Action languageChangeEvent;
    public static void ChangeLanguage(int _number)
    {
        if (languageChangeEvent != null)
        {
            languageChangeEvent();
        }
    }
    /// 
    /// 根据系统语言自动设置默认语言
    /// 
    public static void InitDefaultLanguage()
    {
        var config = InitialFunctionConfig.Get("Language").Numerical1;
        Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config);
        if (string.IsNullOrEmpty(config))
            return;
        var id = LocalSave.GetString("LANGUAGE_ID1");
        if (!string.IsNullOrEmpty(id))
            return;
        switch (Application.systemLanguage)
        {
            case SystemLanguage.Chinese:
            case SystemLanguage.ChineseSimplified:
            case SystemLanguage.ChineseTraditional:
                {
                    id = "zh";
                    break;
                }
        }
        var json = LitJson.JsonMapper.ToObject(config);
        if (json.Keys.Contains(id))
            Id = id;
        else
        {
            //开启的情况下必须要有个默认值
            Id = InitialFunctionConfig.Get("Language").Numerical2;
        }
    }
    /// 
    /// 语言的ID,用于区分下载资源
    /// 
    /// 
    public static string Id
    {
        get
        {
            var config = InitialFunctionConfig.Get("Language").Numerical1;
            if (string.IsNullOrEmpty(config))
                return "";
            return LocalSave.GetString("LANGUAGE_ID1");
        }
        set
        {
            LocalSave.SetString("LANGUAGE_ID1", value);
        }
    }
    //默认路径不附加地址,Id不为空时附加Id
    public static string fixPath
    {
        get
        {
            if (string.IsNullOrEmpty(Id))
                return "";
            return string.Format("/{0}", Id);
        }
    }
    public static string Get(string _id)
    {
        // return string.Empty;
        var languageInfo = LanguageConfig.Get(_id);
        if (languageInfo == null)
        {
#if UNITY_EDITOR
            // TODO YYL
            // if (_id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixNewBie) ||
            //     _id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixFun))
            //     return string.Empty;
            Debug.LogErrorFormat("缺少语言表配置,id: {0}", _id);
#endif
            return string.Empty;
        }
        if (string.IsNullOrEmpty(languageInfo.content))
        {
            Debug.LogFormat("语言内容为空,id: {0}", _id);
        }
        return languageInfo.content;
    }
    public static string Get(string _id, params object[] _objects)
    {
        var content = Get(_id);
        try
        {
            return string.Format(content, _objects);
        }
        catch (Exception ex)
        {
            Debug.LogFormat("语言内容格式错误,id: {0}", _id);
            return content;
        }
    }
    public static string GetFromLocal(int _id)
    {
        return string.Empty;
        var languageInfo = PriorLanguageConfig.Get(_id);
        if (languageInfo == null)
        {
            Debug.LogFormat("缺少语言表配置,id: {0}", _id);
            return string.Empty;
        }
        if (string.IsNullOrEmpty(languageInfo.Content))
        {
            Debug.LogFormat("语言内容为空,id: {0}", _id);
        }
        return languageInfo.Content;
    }
    public static string GetFromLocal(int _id, params object[] _objects)
    {
        var content = GetFromLocal(_id);
        try
        {
            return string.Format(content, _objects);
        }
        catch (Exception ex)
        {
            Debug.LogFormat("语言内容格式错误,id: {0}", _id);
            return content;
        }
    }
}