private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromPath) { if (CheckResModified(importedAssets) || CheckResModified(deletedAssets) || CheckResModified(movedAssets)) { string path = System.IO.Path.Combine(EW_RESOURCE_MULTILANGUAGE_FOLDER, "LanguageText.xml"); TextReader tr = new StreamReader(path); string text = tr.ReadToEnd(); if (text == null) { Debug.LogError("language file not exist"); return; } else { XmlSpreadSheetReader.ReadSheet(text); XmlSpreadSheet sheet = XmlSpreadSheetReader.Output; int langCount = XmlSpreadSheetReader.Keys.Length - 1; string[] keys = XmlSpreadSheetReader.Keys; object[] textIds = sheet[keys[0]]; for (int i = 0; i < langCount; i++) { string lang = keys[i + 1]; List <LanguageTextEntry> tempList = new List <LanguageTextEntry>(); for (int j = 0; j < textIds.Length; j++) { if (null == textIds[j]) { Debug.LogError("invalid ids in line: " + j.ToString()); } if (null == sheet[lang][j]) { Debug.LogError("invalid text for language of " + lang + " in line: " + j.ToString()); } LanguageTextEntry textEntry = new LanguageTextEntry(); textEntry.key = textIds[j].ToString(); textEntry.text = sheet[lang][j].ToString(); tempList.Add(textEntry); } if (lang != null) { CreateLanguageDataBase(lang.ToUpper(), tempList); } } } } }
public void ReadXml(string fileName) { string sheetName = "Sheet1"; Workbook workbook = Workbook.CreatWorkbook(fileName, sheetName); Sheet sheet = workbook._sheet; if (sheet == null) { Debug.LogError("Can't find " + sheetName + " in " + fileName); return; } Dictionary <string, List <LanguageTextEntry> > languages = new Dictionary <string, List <LanguageTextEntry> >(); List <string> langKeys = sheet._rows[0]._cells; for (int i = 1; i < langKeys.Count; i++) { string lang = langKeys[i]; languages.Add(lang, new List <LanguageTextEntry>()); } for (int i = 1; i < sheet._rows.Count; i++) { Row row = sheet._rows[i]; string IDS = row._cells[0]; for (int j = 1; j < row._cells.Count; j++) { LanguageTextEntry textEntry = new LanguageTextEntry(); textEntry.key = IDS; textEntry.text = row._cells[j]; string lang = row._key[j]; List <LanguageTextEntry> textEntryList = languages[lang]; textEntryList.Add(textEntry); } } for (int i = 1; i < langKeys.Count; i++) { string lang = langKeys[i]; List <LanguageTextEntry> textEntryList = languages[lang]; string path = MultiLanguageAssetPostProcessor.MULTILANGUAGE_ASSETS_FOLDER; LocalizationEditorUtils.CreateDirectoryIfNotExist(path, "Fonts", lang); // Create config file that contain key-value strings. CreateLanguageDataBase(lang, textEntryList); // Create config file that contain uv and size information. CreateLanguageDictionary(lang, textEntryList); } }