コード例 #1
0
    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();
        }
    }
コード例 #2
0
    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;
    }
コード例 #3
0
    /// <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("修复完成"));
    }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
    void SaveData()
    {
        LanguageDataUtils. SaveEditorConfig(config);
        LanguageDataEditorUtils.SaveData(currentLanguage, selectFullFileName, currentFileDataTable);

        LanguageManager.IsInit = false;

        LanguageManager.Release();
        GlobalEvent.DispatchEvent(EditorEvent.LanguageDataEditorChange);
    }
コード例 #6
0
    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);
        }
    }
コード例 #7
0
    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);
        }
    }
コード例 #8
0
    void SaveData()
    {
        LanguageDataUtils.SaveEditorConfig(config);
        LanguageDataEditorUtils.SaveData(currentLanguage, selectFullFileName, currentFileDataTable);



        LanguageManager.Release();
        LanguageManager.SetLanguage(currentLanguage);

        GlobalEvent.DispatchEvent(EditorEvent.LanguageDataEditorChange);
        UnityEditor.AssetDatabase.Refresh();
    }
コード例 #9
0
    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));
    }
コード例 #10
0
    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);
    }
コード例 #11
0
    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;
    }
コード例 #12
0
    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();
    }
コード例 #13
0
 static void LoadEditorConfig()
 {
     s_languageKeyList.Clear();
     s_languageKeyDict.Clear();
     s_languageKeyDict = LanguageDataEditorUtils.LoadEditorConfig(c_EditorConfigName, ref s_languageKeyList);
 }