Files
RedHotRoast-ios/Assets/Scripts/ToolKit/Localization.cs
T

162 lines
4.6 KiB
C#

using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using UnityEngine;
using System.Globalization;
using LoveLegend;
public static class Language
{
private static Dictionary<string, Dictionary<string, string>> _localizedText;
private static string _currentLanguage;
public static void Initialize()
{
var lang = PlayerPrefsKit.ReadString("LangIdKey");
if (lang.IsNullOrWhiteSpace())
{
var systemLanguage = Application.systemLanguage;
if (systemLanguage == SystemLanguage.English)
{
lang = "en";
}
else if (systemLanguage == SystemLanguage.French)
{
lang = "fr";
}
else if (systemLanguage == SystemLanguage.German)
{
lang = "de";
}
else if (systemLanguage == SystemLanguage.Spanish)
{
lang = "es";
}
else if (systemLanguage == SystemLanguage.Portuguese)
{
lang = "pt";
}
else if (systemLanguage == SystemLanguage.Japanese)
{
lang = "ja";
}
else if (systemLanguage == SystemLanguage.Korean)
{
lang = "ko";
}
else if (systemLanguage == SystemLanguage.Russian)
{
lang = "ru";
} else
{
lang = "en";
}
}
setCurrentLanguage(lang);
}
public static void setCurrentLanguage(string lang)
{
_currentLanguage = lang;
PlayerPrefsKit.WriteString("LangIdKey", lang);
UIManager.Instance.SetSwitchLanguage(lang);
}
public static string getCurrentLanguage()
{
return _currentLanguage;
}
public static void LoadLocalizedText()
{
if (_localizedText == null)
{
_localizedText = new Dictionary<string, Dictionary<string, string>>();
}
var localization = LoadKit.Instance.LoadAsset<TextAsset>("TextAsset", "localization");
string json = localization.text;
_localizedText = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(json);
}
public static string GetContent(string key)
{
if (_localizedText == null || !_localizedText.ContainsKey(_currentLanguage) || !_localizedText[_currentLanguage].ContainsKey(key))
{
return key; // 如果找不到对应的键,返回键本身
}
return _localizedText[_currentLanguage][key];
}
public static string GetContentParams(string key, params object[] args)
{
if (_localizedText == null || !_localizedText.ContainsKey(_currentLanguage) || !_localizedText[_currentLanguage].ContainsKey(key))
{
return key; // 如果找不到对应的键,返回键本身
}
string localizedString = _localizedText[_currentLanguage][key];
return string.Format(localizedString, args);
}
public static string getISOCode(SystemLanguage code)
{
if (code == SystemLanguage.English)
{
return "en";
}
else if (code == SystemLanguage.French)
{
return "fr";
}
else if (code == SystemLanguage.German)
{
return "de";
}
else if (code == SystemLanguage.Spanish)
{
return "es";
}
else if (code == SystemLanguage.Portuguese)
{
return "pt";
}
else if (code == SystemLanguage.Japanese)
{
return "ja";
}
else if (code == SystemLanguage.Korean)
{
return "ko";
}
else if (code == SystemLanguage.Russian)
{
return "ru";
}
return "en";
}
public static SystemLanguage GetSystemLanguageCode(string ISO_Code)
{
if (ISO_Code == "fr") {
return SystemLanguage.French;
} else if (ISO_Code == "de") {
return SystemLanguage.German;
} else if (ISO_Code == "es") {
return SystemLanguage.Spanish;
} else if (ISO_Code == "ja") {
return SystemLanguage.Japanese;
} else if (ISO_Code == "ko") {
return SystemLanguage.Korean;
} else if (ISO_Code == "ru") {
return SystemLanguage.Russian;
} else if (ISO_Code == "pt") {
return SystemLanguage.Portuguese;
} else {
return SystemLanguage.English;
}
}
}