コード例 #1
0
    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);
                    }
                }
            }
        }
    }
コード例 #2
0
    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);
        }
    }