public override void OnInspectorGUI() { if (m_lc == null) { m_lc = (LanguageComponent)target; } if (m_lc.m_text == null) { m_lc.m_text = m_lc.GetComponent <Text>(); if (m_lc.m_text == null) { EditorGUILayout.LabelField("没有找到Text组件!", EditorGUIStyleData.ErrorMessageLabel); return; } } if (m_languageList == null) { m_languageList = LanguageDataEditorUtils.GetLanguageLayersKeyList(); } GUILayout.Space(6); m_lc.languageKey = EditorDrawGUIUtil.DrawBaseValue("多语言key", m_lc.languageKey).ToString(); GUILayout.Space(6); m_lc.languageKey = EditorDrawGUIUtil.DrawPopup("多语言key", m_lc.languageKey, m_languageList); m_lc.ResetLanguage(); GUILayout.Space(8); if (GUILayout.Button("刷新多语言key")) { m_languageList = LanguageDataEditorUtils.GetLanguageLayersKeyList(); } }
private void Init() { win = this; config= LanguageDataUtils.LoadEditorConfig(); if(config == null) { return; } if (!config.gameExistLanguages.Contains(currentLanguage)) { currentLanguage = config.defaultLanguage; } s_languageFullKeyFileNameList= LanguageDataEditorUtils.LoadLangusgeAllFileNames(currentLanguage); if (!string.IsNullOrEmpty(selectFullFileName)) { currentFileDataTable = LanguageDataUtils.LoadFileData(currentLanguage, selectFullFileName); } if (treeViewState == null) treeViewState = new TreeViewState(); treeView = new FolderTreeView(treeViewState); treeView.SetData(s_languageFullKeyFileNameList); treeView.dblclickItemCallBack = ModuleFileDblclickItemCallBack; treeView.selectCallBack = ModuleFileFolderSelectCallBack; }
/// <summary> /// 检查修复多语言完整性 /// </summary> private void CheckAllLanguageFileIntact() { List <string> defaultFullKeyNameList = LanguageDataEditorUtils.LoadLangusgeAllFileNames(config.defaultLanguage); StringBuilder logBuider = new StringBuilder(); logBuider.Append("开始修复多语言完整....\n"); logBuider.Append("基准语言:" + config.defaultLanguage + "\n"); foreach (var nowLan in config.gameExistLanguages) { if (nowLan == config.defaultLanguage) { continue; } logBuider.Append("开始检查语言:" + nowLan + "\n"); List <string> nowFullKeyNameList = LanguageDataEditorUtils.LoadLangusgeAllFileNames(nowLan); foreach (var fullKeyFileName in defaultFullKeyNameList) { DataTable dt = LanguageDataUtils.LoadFileData(config.defaultLanguage, fullKeyFileName); if (!nowFullKeyNameList.Contains(fullKeyFileName)) { Dictionary <string, string> dic = new Dictionary <string, string>(); foreach (var id in dt.TableIDs) { dic.Add(id, ""); } CreateLanguageNewFile(nowLan, fullKeyFileName, dic); logBuider.Append(nowLan + "缺少文件:" + fullKeyFileName + " 已添加!\n"); } else { DataTable nowDT = LanguageDataUtils.LoadFileData(nowLan, fullKeyFileName); List <string> addKeys = new List <string>(); foreach (var id in dt.TableIDs) { if (!nowDT.TableIDs.Contains(id)) { addKeys.Add(id); } } AddNewKey(nowLan, fullKeyFileName, addKeys.ToArray()); if (addKeys.Count > 0) { logBuider.Append(nowLan + "=>" + fullKeyFileName + "缺少字段:\n"); foreach (var item in addKeys) { logBuider.Append("\t" + item + "\n"); } logBuider.Append("\n"); } } } } logBuider.Append("多语言完整性修复完成!\n"); AssetDatabase.Refresh(); Debug.Log(logBuider.ToString()); ShowNotification(new GUIContent("修复完成")); }
private void DeleteKey(string fullKeyFileName, string key) { foreach (var language in config.gameExistLanguages) { DataTable data = LanguageDataUtils. LoadFileData(language, fullKeyFileName); data.RemoveData(key); LanguageDataEditorUtils.SaveData(language, fullKeyFileName, data); } }
void SaveData() { LanguageDataUtils. SaveEditorConfig(config); LanguageDataEditorUtils.SaveData(currentLanguage, selectFullFileName, currentFileDataTable); LanguageManager.IsInit = false; LanguageManager.Release(); GlobalEvent.DispatchEvent(EditorEvent.LanguageDataEditorChange); }
private void AddNewKey(string fullKeyFileName, string key) { foreach (var language in config.gameExistLanguages) { DataTable data = LanguageDataUtils.LoadFileData(language, fullKeyFileName); SingleData sd = new SingleData(); sd.Add(LanguageManager.c_mainKey, key); sd.Add(LanguageManager.c_valueKey, ""); data.AddData(sd); LanguageDataEditorUtils.SaveData(language, fullKeyFileName, data); } }
static void LoadEditorConfig() { s_languageKeyList.Clear(); s_languageKeyDict.Clear(); s_languageKeyDict = LanguageDataEditorUtils.LoadEditorConfig(c_EditorConfigName, ref s_languageKeyList); s_languageFullKeyList.Clear(); foreach (var item in s_languageKeyDict) { string ss = item.Key.Replace("_", "/"); s_languageFullKeyList.Add(ss); } }
void SaveData() { LanguageDataUtils.SaveEditorConfig(config); LanguageDataEditorUtils.SaveData(currentLanguage, selectFullFileName, currentFileDataTable); LanguageManager.Release(); LanguageManager.SetLanguage(currentLanguage); GlobalEvent.DispatchEvent(EditorEvent.LanguageDataEditorChange); UnityEditor.AssetDatabase.Refresh(); }
void OnEnable() { EditorGUIStyleData.Init(); FindAllDataName(); langKeys = LanguageDataEditorUtils.GetLanguageLayersKeyList(); if (!string.IsNullOrEmpty(chooseFileName)) { LoadData(chooseFileName); } configFileNames.Clear(); string m_directoryPath = Application.dataPath + "/Resources/" + DataManager.c_directoryName; configFileNames.AddRange(PathUtils.GetDirectoryFileNames(m_directoryPath, new string[] { ".txt" }, false, false)); }
void MergeLanguage(string path, SystemLanguage language) { Debug.Log("MergeLanguage " + path); string languageKey = FileTool.GetFileNameByPath(FileTool.RemoveExpandName(path)).Replace(LanguageManager.c_DataFilePrefix + language + "_", "").Replace("_", "/"); Debug.Log("languageKey " + languageKey); string content = ResourceIOTool.ReadStringByFile(path); DataTable aimLanguage = DataTable.Analysis(content); DataTable localLanguage = LanguageDataUtils.LoadFileData(language, languageKey); foreach (var key in aimLanguage.TableIDs) { string value = aimLanguage[key].GetString(LanguageManager.c_valueKey); SingleData sd = new SingleData(); sd.Add(LanguageManager.c_mainKey, key); sd.Add(LanguageManager.c_valueKey, value); if (!localLanguage.TableIDs.Contains(key)) { Debug.Log("新增字段 " + key + " -> " + value); localLanguage.AddData(sd); } else { if (localLanguage[key].GetString(LanguageManager.c_valueKey) != value) { Debug.Log("更新字段 key" + key + " Value >" + localLanguage[key].GetString(LanguageManager.c_valueKey) + "< newValue >" + value + "<"); localLanguage[key] = sd; } } } LanguageDataEditorUtils.SaveData(language, languageKey, localLanguage); }
public Dictionary<string, string> CreateLanguageNewFile(SystemLanguage language, string fullKeyFileName, Dictionary<string, string> contentDic) { Dictionary<string, string> keyPaths = new Dictionary<string, string>(); DataTable data = new DataTable(); data.TableKeys.Add(LanguageManager.c_mainKey); data.TableKeys.Add(LanguageManager.c_valueKey); data.SetDefault(LanguageManager.c_valueKey, "NoValue"); if (contentDic != null) { foreach (var item in contentDic) { SingleData sd = new SingleData(); sd.Add(LanguageManager.c_mainKey, item.Key); sd.Add(LanguageManager.c_valueKey, item.Value); data.AddData(sd); keyPaths.Add(item.Key, fullKeyFileName + "/" + item.Key); } } LanguageDataEditorUtils.SaveData(language, fullKeyFileName, data); return keyPaths; }
private void AddNewKey(SystemLanguage language, string fullKeyFileName, string[] keys) { if (keys == null || keys.Length == 0) { return; } DataTable data = LanguageDataUtils.LoadFileData(language, fullKeyFileName); foreach (var key in keys) { if (data.ContainsKey(key)) { continue; } SingleData sd = new SingleData(); sd.Add(LanguageManager.c_mainKey, key); sd.Add(LanguageManager.c_valueKey, ""); data.AddData(sd); } LanguageDataEditorUtils.SaveData(language, fullKeyFileName, data); UnityEditor.AssetDatabase.Refresh(); }
static void LoadEditorConfig() { s_languageKeyList.Clear(); s_languageKeyDict.Clear(); s_languageKeyDict = LanguageDataEditorUtils.LoadEditorConfig(c_EditorConfigName, ref s_languageKeyList); }