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("修复完成"));
    }