miduo_client/Assets/Scripts/GameInit/SLanguageMoreLanguageMgr.cs

292 lines
16 KiB
C#
Raw Normal View History

2021-01-26 17:08:39 +08:00
using GameCore;
using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace GameLogic
{
//public static class ChineseLanguage
//{
// public static string CANEL = "取消";
// public static string CONFIRM = "确认";
// public static string CONFIRM_CLOSE = "确定关闭程序?";
// public static string GET_GAME_SETTINGS = "获取游戏配置";
// public static string RETRY = "重试";
// public static string GET_GAME_SETTINGS_FAILED = "获取游戏配置失败!";
// public static string GET_GAME_SETTINGS_ERROR = "获取游戏配置错误!";
// public static string GET_VERSION_INFO = "获取版本信息";
// public static string GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI = "获取游戏配置失败,请确认网络后重试!";
// public static string DOWNlOAD_FILE_FAILED_CONFIRM_WIFI = "下载安装文件失败,请确认网络后重试!";
// public static string GET_RESOURCES_SETTINGS = "获取资源配置";
// public static string GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI = "获取资源版本失败,请确认网络后重试!";
// public static string CHECK_RESOURCES_FILE = "校验资源文件";
// public static string GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI = "获取资源配置失败,请确认网络后重试!";
// public static string NOT_WIFI_CONFIRM = "检测到资源更新{0:f2}MB,当前非wifi环境点击确定开始更新!";
// public static string WIFI_CONFIRM = "检测到资源更新{0:f2}MB, 点击确定开始更新!";
// public static string DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI = "下载资源文件失败,请确认网络后重试!";
// public static string DOWNLOAD_NEWEST_APP = "与最新版本差异过大,请下载最新安装包!";
// public static string DOWNLOAD_PROGRESS_RATE = "下载进度:{0}/{1}MB ,下载速度:{2}KB/s";
// public static string DOWNLOAD_PROGRESS = "下载进度:{0}/{1}MB({2}%)";
// public static string UPDATE_COMPLETE = "更新完成";
// public static string RELOAD_RESOURCES = "正在预加载资源,此过程不消耗流量。";
//}
//public static class EnglishLanguage
//{
// public static string CANEL = "canel";
// public static string CONFIRM = "confirm";
// public static string CONFIRM_CLOSE = "确定关闭程序?";
// public static string GET_GAME_SETTINGS = "获取游戏配置";
// public static string RETRY = "重试";
// public static string GET_GAME_SETTINGS_FAILED = "获取游戏配置失败!";
// public static string GET_GAME_SETTINGS_ERROR = "获取游戏配置错误!";
// public static string GET_VERSION_INFO = "获取版本信息";
// public static string GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI = "获取游戏配置失败,请确认网络后重试!";
// public static string DOWNlOAD_FILE_FAILED_CONFIRM_WIFI = "下载安装文件失败,请确认网络后重试!";
// public static string GET_RESOURCES_SETTINGS = "获取资源配置";
// public static string GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI = "获取资源版本失败,请确认网络后重试!";
// public static string CHECK_RESOURCES_FILE = "校验资源文件";
// public static string GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI = "获取资源配置失败,请确认网络后重试!";
// public static string NOT_WIFI_CONFIRM = "检测到资源更新{0:f2}MB,当前非wifi环境点击确定开始更新!";
// public static string WIFI_CONFIRM = "检测到资源更新{0:f2}MB, 点击确定开始更新!";
// public static string DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI = "下载资源文件失败,请确认网络后重试!";
// public static string DOWNLOAD_NEWEST_APP = "与最新版本差异过大,请下载最新安装包!";
// public static string DOWNLOAD_PROGRESS_RATE = "下载进度:{0}/{1}MB ,下载速度:{2}KB/s";
// public static string DOWNLOAD_PROGRESS = "下载进度:{0}/{1}MB({2}%)";
// public static string UPDATE_COMPLETE = "更新完成";
// public static string RELOAD_RESOURCES = "正在预加载资源,此过程不消耗流量。";
//}
public enum more_language
{
CANEL = 0,
CONFIRM = 1,
CONFIRM_CLOSE = 2,
GET_GAME_SETTINGS = 3,
RETRY = 4,
GET_GAME_SETTINGS_FAILED = 5,
GET_GAME_SETTINGS_ERROR = 6,
GET_VERSION_INFO = 7,
GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI = 8,
DOWNlOAD_FILE_FAILED_CONFIRM_WIFI = 9,
GET_RESOURCES_SETTINGS = 10,
GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI = 11,
CHECK_RESOURCES_FILE = 12,
GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI = 13,
NOT_WIFI_CONFIRM = 14,
WIFI_CONFIRM = 15,
DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI = 16,
DOWNLOAD_NEWEST_APP = 17,
DOWNLOAD_PROGRESS_RATE = 18,
DOWNLOAD_PROGRESS = 19,
UPDATE_COMPLETE = 20,
RELOAD_RESOURCES = 21,
TIPS = 22,
}
/// <summary>
/// 更新管理器
/// </summary>
public class SLanguageMoreLanguageMgr : Singleton<SLanguageMoreLanguageMgr>
{
Hashtable data;
/// <summary>
/// 版本号文件
/// </summary>
2021-07-13 18:20:56 +08:00
const string languageFilePath = "Language";
2021-01-26 17:08:39 +08:00
/// <summary>
/// 版本文件路径
/// </summary>
string LanguageFilePath
{
get
{
2021-07-13 18:20:56 +08:00
return AppConst.PersistentDataPath + languageFilePath + ".json";
2021-01-26 17:08:39 +08:00
}
}
public class languageStruct
{
public string chinese;
2021-02-18 17:21:14 +08:00
public string english;
public string vietnamese;
2021-01-26 17:08:39 +08:00
}
//Dictionary<more_language, languageStruct> languagedictionary;
public void InitData()
{
//languagedictionary = new Dictionary<more_language, languageStruct>();
InitLanguageConfig();
2021-01-26 17:08:39 +08:00
InitLanguagedictionary();
//this.languagedictionary.Add(more_language.CANEL, new languageStruct() { english = EnglishLanguage.CANEL, chinese = ChineseLanguage.CANEL });
//this.languagedictionary.Add(more_language.CONFIRM, new languageStruct() { english = EnglishLanguage.CONFIRM, chinese = ChineseLanguage.CONFIRM });
//this.languagedictionary.Add(more_language.CONFIRM_CLOSE, new languageStruct() { english = EnglishLanguage.CONFIRM_CLOSE, chinese = ChineseLanguage.CONFIRM_CLOSE });
//this.languagedictionary.Add(more_language.GET_GAME_SETTINGS, new languageStruct() { english = EnglishLanguage.GET_GAME_SETTINGS, chinese = ChineseLanguage.GET_GAME_SETTINGS });
//this.languagedictionary.Add(more_language.RETRY, new languageStruct() { english = EnglishLanguage.RETRY, chinese = ChineseLanguage.RETRY });
//this.languagedictionary.Add(more_language.GET_GAME_SETTINGS_FAILED, new languageStruct() { english = EnglishLanguage.GET_GAME_SETTINGS_FAILED, chinese = ChineseLanguage.GET_GAME_SETTINGS_FAILED });
//this.languagedictionary.Add(more_language.GET_GAME_SETTINGS_ERROR, new languageStruct() { english = EnglishLanguage.GET_GAME_SETTINGS_ERROR, chinese = ChineseLanguage.GET_GAME_SETTINGS_ERROR });
//this.languagedictionary.Add(more_language.GET_VERSION_INFO, new languageStruct() { english = EnglishLanguage.GET_VERSION_INFO, chinese = ChineseLanguage.GET_VERSION_INFO });
//this.languagedictionary.Add(more_language.GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI, new languageStruct() { english = EnglishLanguage.GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI, chinese = ChineseLanguage.GET_GAME_SETTINGS_FAILED_CONFIRM_WIFI });
//this.languagedictionary.Add(more_language.DOWNlOAD_FILE_FAILED_CONFIRM_WIFI, new languageStruct() { english = EnglishLanguage.DOWNlOAD_FILE_FAILED_CONFIRM_WIFI, chinese = ChineseLanguage.DOWNlOAD_FILE_FAILED_CONFIRM_WIFI });
//this.languagedictionary.Add(more_language.GET_RESOURCES_SETTINGS, new languageStruct() { english = EnglishLanguage.GET_RESOURCES_SETTINGS, chinese = ChineseLanguage.GET_RESOURCES_SETTINGS });
//this.languagedictionary.Add(more_language.GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI, new languageStruct() { english = EnglishLanguage.GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI, chinese = ChineseLanguage.GET_RESOURCES_VERSION_FAILED_CONFIRM_WIFI });
//this.languagedictionary.Add(more_language.CHECK_RESOURCES_FILE, new languageStruct() { english = EnglishLanguage.CHECK_RESOURCES_FILE, chinese = ChineseLanguage.CHECK_RESOURCES_FILE });
//this.languagedictionary.Add(more_language.GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI, new languageStruct() { english = EnglishLanguage.GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI, chinese = ChineseLanguage.GET_RESOURCES_SETTINGS_FAILED_CONFIRM_WIFI });
//this.languagedictionary.Add(more_language.NOT_WIFI_CONFIRM, new languageStruct() { english = EnglishLanguage.NOT_WIFI_CONFIRM, chinese = ChineseLanguage.NOT_WIFI_CONFIRM });
//this.languagedictionary.Add(more_language.WIFI_CONFIRM, new languageStruct() { english = EnglishLanguage.WIFI_CONFIRM, chinese = ChineseLanguage.WIFI_CONFIRM });
//this.languagedictionary.Add(more_language.DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI, new languageStruct() { english = EnglishLanguage.DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI, chinese = ChineseLanguage.DOWNlOAD_RESOURCES_FILE_FAILED_CONFIRM_WIFI });
//this.languagedictionary.Add(more_language.DOWNLOAD_NEWEST_APP, new languageStruct() { english = EnglishLanguage.DOWNLOAD_NEWEST_APP, chinese = ChineseLanguage.DOWNLOAD_NEWEST_APP });
//this.languagedictionary.Add(more_language.DOWNLOAD_PROGRESS_RATE, new languageStruct() { english = EnglishLanguage.DOWNLOAD_PROGRESS_RATE, chinese = ChineseLanguage.DOWNLOAD_PROGRESS_RATE });
//this.languagedictionary.Add(more_language.DOWNLOAD_PROGRESS, new languageStruct() { english = EnglishLanguage.DOWNLOAD_PROGRESS, chinese = ChineseLanguage.DOWNLOAD_PROGRESS });
//this.languagedictionary.Add(more_language.UPDATE_COMPLETE, new languageStruct() { english = EnglishLanguage.UPDATE_COMPLETE, chinese = ChineseLanguage.UPDATE_COMPLETE });
//this.languagedictionary.Add(more_language.RELOAD_RESOURCES, new languageStruct() { english = EnglishLanguage.RELOAD_RESOURCES, chinese = ChineseLanguage.RELOAD_RESOURCES });
}
private void ReadJson(string strjson)
{
XDebug.Log.l(strjson);
2021-01-26 17:08:39 +08:00
data = JsonMapper.ToObject<Hashtable>(strjson);
}
public int GetLanguageType()
{
return PlayerPrefs.GetInt("language", 0);
}
public void InitLanguageConfig()
{
if (ConfigManager.Instance.GetConfigInfo("Setting.LanguagePackager.isActive") == "1")
{
if (!PlayerPrefs.HasKey("language"))
{
if (Application.systemLanguage == SystemLanguage.Chinese || Application.systemLanguage == SystemLanguage.ChineseSimplified || Application.systemLanguage == SystemLanguage.ChineseTraditional)
{
PlayerPrefs.SetInt("language", 0);
}
else if (Application.systemLanguage == SystemLanguage.Vietnamese)
{
PlayerPrefs.SetInt("language", 2);
}
else
{
PlayerPrefs.SetInt("language", 1);
}
}
else if (PlayerPrefs.HasKey("language_flag") && PlayerPrefs.GetInt("language") != PlayerPrefs.GetInt("language_flag"))
{
PlayerPrefs.SetInt("language", PlayerPrefs.GetInt("language_flag"));
}
if (!PlayerPrefs.HasKey("language_flag"))
{
PlayerPrefs.SetInt("language_flag", PlayerPrefs.GetInt("language"));
}
}
else
{
PlayerPrefs.SetInt("language", 0);
}
string languageStr = "";
switch (GetLanguageType())
{
case 0: languageStr = "中文";break;
case 1: languageStr = "英文"; break;
case 2: languageStr = "越南语"; break;
}
XDebug.Log.l("当前语言是:" + languageStr);
}
2021-01-26 17:08:39 +08:00
/// <summary>
/// 初始化
/// </summary>
public void InitLanguagedictionary()
{
try
{
//首先检测读写目录是否有配置文件如果有读取配置如果没有从resource加载
StreamReader sr;
if (File.Exists(LanguageFilePath))
{
sr = File.OpenText(LanguageFilePath);
if (null != sr)
{
string strinfo = sr.ReadToEnd();
if (strinfo != null && strinfo.Length > 10)
{
ReadJson(strinfo);
}
}
}
else
{
//加载本地默认配置
TextAsset config = Resources.Load<TextAsset>(languageFilePath) as TextAsset;
if (null != config)
{
ReadJson(config.ToString());
}
else
{
//取默认值
XDebug.Log.l("language.txt is no exist get the default");
2021-01-26 17:08:39 +08:00
}
}
}
catch (Exception ex)
{
XDebug.Log.l(ex.ToString());
2021-01-26 17:08:39 +08:00
}
}
string languageThrans = "";
public string GetLanguageChValBykey(more_language language)
{
if (this.data == null)
this.InitData();
try
{
string index1 = ((int)language).ToString();
var data2 = JsonMapper.ToJson(data[index1]);
var data1 = JsonMapper.ToObject<languageStruct>(data2);
switch (GetLanguageType())
2021-01-26 17:08:39 +08:00
{
case 0:
languageThrans = data1.chinese;
break;
2021-02-18 17:21:14 +08:00
case 2:
languageThrans = data1.vietnamese;
break;
2021-01-26 17:08:39 +08:00
default:
languageThrans = data1.english;
break;
}
}
catch (Exception e)
{
XDebug.Log.l(e.ToString());
2021-01-26 17:08:39 +08:00
}
return languageThrans;
//languageStruct data = new languageStruct();
//this.languagedictionary.TryGetValue(language, out data);
//if (data != null)
//{
// switch (PlayerPrefs.GetString("Language"))
// {
// case "chinese":
// languageThrans = data.chinese;
// break;
// default:
// languageThrans = data.english;
// break;
// }
// if (string.IsNullOrEmpty(languageThrans))
// {
// return data.chinese;
// }
// return languageThrans;
//}
//return "";
}
}
}