using System.Collections;
|
using System.Collections.Generic;
|
using System;
|
using UnityEngine;
|
using LitJson;
|
|
|
public static class Language
|
{
|
|
static Dictionary<string, string> languageShowDict = new Dictionary<string, string>(); //设置中显示多语言版本选择
|
static Dictionary<string, string> languageDict = new Dictionary<string, string>(); //unity语言配置对应的约定字符
|
static string defaultLanguage = "";
|
|
|
public static int languageNumber
|
{
|
get;
|
set;
|
}
|
|
public static event Action languageChangeEvent;
|
|
public static void ChangeLanguage(int _number)
|
{
|
if (languageChangeEvent != null)
|
{
|
languageChangeEvent();
|
}
|
}
|
|
|
/// <summary>
|
/// 根据系统语言自动设置默认语言
|
/// </summary>
|
public static void InitDefaultLanguage()
|
{
|
if (languageShowDict.IsNullOrEmpty())
|
{
|
var config = InitialFunctionConfig.Get("Language");
|
Debug.LogFormat("系统语言:{0} 配置: {1}", Application.systemLanguage, config.Numerical1);
|
if (string.IsNullOrEmpty(config.Numerical1))
|
return;
|
languageShowDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1);
|
languageDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical5);
|
defaultLanguage = config.Numerical2;
|
if (!languageShowDict.ContainsKey(defaultLanguage))
|
defaultLanguage = "";
|
}
|
|
var id = LocalSave.GetString("LANGUAGE_ID1");
|
Debug.LogFormat("系统语言:{0} 当前语言: {1}", Application.systemLanguage, id);
|
if (!string.IsNullOrEmpty(id))
|
return;
|
|
string languageMark = ((int)Application.systemLanguage).ToString();
|
if (languageDict.ContainsKey(languageMark))
|
{
|
id = languageDict[languageMark];
|
}
|
|
Id = languageShowDict.ContainsKey(id) ? id : defaultLanguage;
|
Debug.LogFormat("系统语言:{0} 设置为: {1}", Application.systemLanguage, Id);
|
}
|
|
/// <summary>
|
/// 语言的ID,用于区分下载资源
|
/// </summary>
|
/// <value></value>
|
public static string Id
|
{
|
get
|
{
|
if (languageShowDict.IsNullOrEmpty())
|
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)
|
{
|
var languageInfo = LanguageConfig.Get(_id);
|
if (languageInfo == null)
|
{
|
#if UNITY_EDITOR
|
if (_id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixNewBie) ||
|
_id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixFun))
|
return string.Empty;
|
DebugEx.LogFormat("缺少语言表配置,id: {0}", _id);
|
#endif
|
return string.Empty;
|
}
|
|
if (string.IsNullOrEmpty(languageInfo.content))
|
{
|
DebugEx.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)
|
{
|
DebugEx.LogFormat("语言内容格式错误,id: {0}", _id);
|
return content;
|
}
|
}
|
|
public static string GetFromLocal(int _id)
|
{
|
var languageInfo = PriorLanguageConfig.Get(_id);
|
if (languageInfo == null)
|
{
|
DebugEx.LogFormat("缺少语言表配置,id: {0}", _id);
|
return string.Empty;
|
}
|
|
if (string.IsNullOrEmpty(languageInfo.Content))
|
{
|
DebugEx.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)
|
{
|
DebugEx.LogFormat("语言内容格式错误,id: {0}", _id);
|
return content;
|
}
|
}
|
|
|
}
|