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