//------------------------------------------------------------// Game Framework v3.x// Copyright © 2013-2017 Jiang Yin. All rights reserved.// Homepage: http://gameframework.cn/// Feedback: mailto:jiangyin@gameframework.cn//------------------------------------------------------------using GameFramework;using GameFramework.Localization;using System;using UnityEngine;namespace UnityGameFramework.Runtime{/// <summary>/// 默认本地化辅助器。/// </summary>public class DefaultLocalizationHelper : LocalizationHelperBase{private static readonly string[] ColumnSplit = new string[] { "\t" };private const int ColumnCount = 4;private ResourceComponent m_ResourceComponent = null;private ILocalizationManager m_LocalizationManager = null;/// <summary>/// 获取系统语言。/// </summary>public override Language SystemLanguage{get{switch (Application.systemLanguage){case UnityEngine.SystemLanguage.Afrikaans: return Language.Afrikaans;case UnityEngine.SystemLanguage.Arabic: return Language.Arabic;case UnityEngine.SystemLanguage.Basque: return Language.Basque;case UnityEngine.SystemLanguage.Belarusian: return Language.Belarusian;case UnityEngine.SystemLanguage.Bulgarian: return Language.Bulgarian;case UnityEngine.SystemLanguage.Catalan: return Language.Catalan;case UnityEngine.SystemLanguage.Chinese: return Language.ChineseSimplified;case UnityEngine.SystemLanguage.ChineseSimplified: return Language.ChineseSimplified;case UnityEngine.SystemLanguage.ChineseTraditional: return Language.ChineseTraditional;case UnityEngine.SystemLanguage.Czech: return Language.Czech;case UnityEngine.SystemLanguage.Danish: return Language.Danish;case UnityEngine.SystemLanguage.Dutch: return Language.Dutch;case UnityEngine.SystemLanguage.English: return Language.English;case UnityEngine.SystemLanguage.Estonian: return Language.Estonian;case UnityEngine.SystemLanguage.Faroese: return Language.Faroese;case UnityEngine.SystemLanguage.Finnish: return Language.Finnish;case UnityEngine.SystemLanguage.French: return Language.French;case UnityEngine.SystemLanguage.German: return Language.German;case UnityEngine.SystemLanguage.Greek: return Language.Greek;case UnityEngine.SystemLanguage.Hebrew: return Language.Hebrew;case UnityEngine.SystemLanguage.Hungarian: return Language.Hungarian;case UnityEngine.SystemLanguage.Icelandic: return Language.Icelandic;case UnityEngine.SystemLanguage.Indonesian: return Language.Indonesian;case UnityEngine.SystemLanguage.Italian: return Language.Italian;case UnityEngine.SystemLanguage.Japanese: return Language.Japanese;case UnityEngine.SystemLanguage.Korean: return Language.Korean;case UnityEngine.SystemLanguage.Latvian: return Language.Latvian;case UnityEngine.SystemLanguage.Lithuanian: return Language.Lithuanian;case UnityEngine.SystemLanguage.Norwegian: return Language.Norwegian;case UnityEngine.SystemLanguage.Polish: return Language.Polish;case UnityEngine.SystemLanguage.Portuguese: return Language.PortuguesePortugal;case UnityEngine.SystemLanguage.Romanian: return Language.Romanian;case UnityEngine.SystemLanguage.Russian: return Language.Russian;case UnityEngine.SystemLanguage.SerboCroatian: return Language.SerboCroatian;case UnityEngine.SystemLanguage.Slovak: return Language.Slovak;case UnityEngine.SystemLanguage.Slovenian: return Language.Slovenian;case UnityEngine.SystemLanguage.Spanish: return Language.Spanish;case UnityEngine.SystemLanguage.Swedish: return Language.Swedish;case UnityEngine.SystemLanguage.Thai: return Language.Thai;case UnityEngine.SystemLanguage.Turkish: return Language.Turkish;case UnityEngine.SystemLanguage.Ukrainian: return Language.Ukrainian;case UnityEngine.SystemLanguage.Unknown: return Language.Unspecified;case UnityEngine.SystemLanguage.Vietnamese: return Language.Vietnamese;default: return Language.Unspecified;}}}/// <summary>/// 加载字典。/// </summary>/// <param name="dictionaryName">字典名称。</param>/// <param name="dictionaryAsset">字典资源。</param>/// <param name="userData">用户自定义数据。</param>/// <returns>加载是否成功。</returns>public override bool LoadDictionary(string dictionaryName, object dictionaryAsset, object userData){TextAsset textAsset = dictionaryAsset as TextAsset;if (textAsset == null){Log.Warning("Dictionary asset '{0}' is invalid.", dictionaryName);return false;}bool retVal = m_LocalizationManager.ParseDictionary(textAsset.text, userData);if (!retVal){Log.Warning("Dictionary asset '{0}' parse failure.", dictionaryName);}return retVal;}/// <summary>/// 解析字典。/// </summary>/// <param name="text">要解析的字典文本。</param>/// <param name="userData">用户自定义数据。</param>/// <returns>是否解析字典成功。</returns>public override bool ParseDictionary(string text, object userData){try{string[] rowTexts = Utility.Text.SplitToLines(text);for (int i = 0; i < rowTexts.Length; i++){if (rowTexts[i].Length <= 0 || rowTexts[i][0] == '#'){continue;}string[] splitLine = rowTexts[i].Split(ColumnSplit, StringSplitOptions.None);if (splitLine.Length != ColumnCount){Log.Warning("Can not parse dictionary '{0}'.", text);return false;}if (!AddRawString(splitLine[1], splitLine[3])){Log.Warning("Can not add raw string with key '{0}' which may be invalid or duplicate.", splitLine[1]);return false;}}return true;}catch (Exception exception){Log.Warning("Can not parse dictionary '{0}' with exception '{1}'.", text, string.Format("{0}\n{1}", exception.Message, exception.StackTrace));return false;}}/// <summary>/// 释放字典资源。/// </summary>/// <param name="dictionaryAsset">要释放的字典资源。</param>public override void ReleaseDictionaryAsset(object dictionaryAsset){m_ResourceComponent.UnloadAsset(dictionaryAsset);}/// <summary>/// 增加字典。/// </summary>/// <param name="key">字典主键。</param>/// <param name="value">字典内容。</param>/// <returns>是否增加字典成功。</returns>protected bool AddRawString(string key, string value){return m_LocalizationManager.AddRawString(key, value);}private void Start(){m_ResourceComponent = GameEntry.GetComponent<ResourceComponent>();if (m_ResourceComponent == null){Log.Fatal("Resource component is invalid.");return;}m_LocalizationManager = GameFrameworkEntry.GetModule<ILocalizationManager>();if (m_LocalizationManager == null){Log.Fatal("Localization manager is invalid.");return;}}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。