public static bool ApplyAsset(LocalizeAssetExcel localize, ref string error) { var excelParser = new SpreadsheetParser.ExcelParser(localize.excelFilePath); if (excelParser.sheetCount == 0) { error = "No sheets are found."; return(false); } var tableList = new List <LocalizeAsset.TableData>(); var dataLookup = excelParser.DeserializeAllSheets <Item>(null); foreach (var pair in dataLookup) { string language = pair.Key; List <Item> items = pair.Value; var table = new LocalizeAsset.TableData(); //TODO: check if platform table.name = language; table.entryType = LocalizeAsset.TableEntryType.Language; //Populate entries var entryList = new List <LocalizeAsset.Entry>(); foreach (var item in items) { entryList.Add(new LocalizeAsset.Entry() { key = item.Key, text = item.Value, param = item.Params }); } table.entries = entryList.ToArray(); tableList.Add(table); } localize.tables = tableList.ToArray(); EditorUtility.SetDirty(localize); AssetDatabase.SaveAssets(); return(true); }
public static bool ApplyAsset(LoLLocalize localize, ref string error) { var excelParser = new M8.SpreadsheetParser.ExcelParser(localize.editorExcelPath); if (excelParser.sheetCount == 0) { error = "No sheets are found."; return(false); } var dataLookup = excelParser.DeserializeAllSheets <Item>(null); var extraInfoLookup = new Dictionary <string, LoLLocalize.LanguageExtraInfo>(); var jsonStringBuffer = new System.Text.StringBuilder(); //populate meta data var metaLookup = new Dictionary <string, MetaItem>(); foreach (var pair in dataLookup) { List <Item> items = pair.Value; foreach (var item in items) { if (metaLookup.ContainsKey(item.Key)) { metaLookup[item.Key] = new MetaItem(item); } else { metaLookup.Add(item.Key, new MetaItem(item)); } } } int counter = 0; //fill JSON jsonStringBuffer.Append("{\n"); //fill in meta data to JSON jsonStringBuffer.Append(" \"_meta\": {\n"); //max chars jsonStringBuffer.Append(" \"maxChars\": {"); counter = 0; foreach (var pair in metaLookup) { if (pair.Value.maxChar <= 0) //ignore { continue; } if (counter > 0 && counter < metaLookup.Count - 1) { jsonStringBuffer.Append(','); } jsonStringBuffer.Append('\n'); jsonStringBuffer.Append(" \"").Append(pair.Key).Append("\": \"").Append(pair.Value.maxChar).Append('"'); counter++; } jsonStringBuffer.Append('\n').Append(" }\n"); // jsonStringBuffer.Append(" }"); // //fill in languages foreach (var pair in dataLookup) { jsonStringBuffer.Append(",\n"); jsonStringBuffer.Append(" \"").Append(pair.Key).Append("\": {"); //fill in items counter = 0; List <Item> items = pair.Value; foreach (var item in items) { //add extra info if (item.IsExtraInfoValid()) { if (extraInfoLookup.ContainsKey(item.Key)) { extraInfoLookup[item.Key] = item.CreateExtraInfo(); } else { extraInfoLookup.Add(item.Key, item.CreateExtraInfo()); } } //fill item jsonStringBuffer.Append('\n'); jsonStringBuffer.Append(" \"").Append(item.Key).Append("\": \"").Append(item.Value).Append('"'); counter++; if (counter < items.Count) { jsonStringBuffer.Append(','); } } jsonStringBuffer.Append('\n').Append(" }"); } // jsonStringBuffer.Append('\n').Append('}'); //save json System.IO.File.WriteAllText(localize.editorLanguagePath, jsonStringBuffer.ToString()); if (!string.IsNullOrEmpty(localize.editorLanguagePathExtra)) { System.IO.File.WriteAllText(localize.editorLanguagePathExtra, jsonStringBuffer.ToString()); } //save extra info var languageExtraInfoList = new List <LoLLocalize.LanguageExtraInfo>(); foreach (var pair in extraInfoLookup) { languageExtraInfoList.Add(pair.Value); } localize.languageExtraInfos = languageExtraInfoList.ToArray(); // localize.ClearEntries(); //this will refresh lookup for keys EditorUtility.SetDirty(localize); AssetDatabase.SaveAssets(); return(true); }