Пример #1
0
    void AddLanguageGUI()
    {
        EditorGUI.indentLevel = 0;

        isFoldAddLanguage = EditorGUILayout.Foldout(isFoldAddLanguage, "新增语言");

        if (isFoldAddLanguage)
        {
            EditorGUI.indentLevel = 1;

            m_selectLanguage = (SystemLanguage)EditorGUILayout.EnumPopup("语言类型", m_selectLanguage);

            if (!s_languageList.Contains(m_selectLanguage.ToString()))
            {
                if (GUILayout.Button("新增"))
                {
                    s_languageList.Add(m_selectLanguage.ToString());
                    LoadLanguage(m_selectLanguage.ToString());
                    isFoldAddLanguage = false;
                }
            }
            else
            {
                EditorGUILayout.LabelField("已存在该语言", EditorGUIStyleData.WarnMessageLabel);
            }
        }

        EditorGUILayout.Space();
    }
Пример #2
0
        public void CreateWorkspace(bool bOpenRoot = true)
        {
            if (!WorkspaceExists())
            {
                Directory.CreateDirectory(Localizator.Path.WorkspaceRootPath);
                Directory.CreateDirectory(Localizator.Path.DatabaseRootPath);
                Directory.CreateDirectory(Localizator.Path.BackupRootPath);
                Directory.CreateDirectory(Localizator.Path.GeneratedFilesRootPath);
                Directory.CreateDirectory(Localizator.Path.ScriptRootPath);

                DefaultLanguage = _currentDefaultLanguage;

                _localizationDatabaseFiles = new Dictionary <SystemLanguage, string>();
                _localizationDatabaseFiles.Add(DefaultLanguage, DefaultLanguage.ToString() + ".csv");

                SaveRootFile();
                SaveLocalizationFile(DefaultLanguage.ToString());
                SaveWorkspace();

                LanguageManager.CreateInstance();

                if (bOpenRoot)
                {
                    EditorWindow.GetWindow <CustomEditorWindow_Localizator_EditRoot>("Edit Root", true, typeof(CustomEditorWindow_Localizator));
                }
            }
            AssetDatabase.Refresh();
        }
Пример #3
0
    public static void SetCurrentLocalization(SystemLanguage language)
    {
        if (currentLanguage == language)
        {
            return;
        }
        currentLanguage         = language;
        currentLocalizationText = Resources.Load(LOCALIZATION_FOLDER + language.ToString(), typeof(TextAsset)) as TextAsset;
        if (currentLocalizationText == null)
        {
            Debug.LogFormat("Missing locale {0}", language.ToString());
            SetCurrentLocalization(SystemLanguage.English);
        }
        else
        {
            string[] lines = currentLocalizationText.text.Split(new string[] { "\r\n", "\n\r", "\n" }, System.StringSplitOptions.RemoveEmptyEntries);
            CurrentLanguageStrings.Clear();
            for (int i = 0; i < lines.Length; i++)
            {
                string[] pairs = lines[i].Split(new char[] { '\t', '=' }, 2);
                if (pairs.Length == 2)
                {
                    CurrentLanguageStrings.Add(pairs[0].Trim(), pairs[1].Trim());
                }
            }

            LocalizeText[] texts = localizeTexts.ToArray();
            for (int i = 0; i < texts.Length; i++)
            {
                texts[i].UpdateLocale();
            }
        }
    }
Пример #4
0
    private void UpdateLang(SystemLanguage lang)
    {
        _currentLang = lang;

        _spriteAtlas = Resources.Load <SpriteAtlas>(STR_LOCALIZATION_PREFIX + _currentLang.ToString());
        if (_spriteAtlas == null)
        {
            Debug.Log(_currentLang + " language not exist, change Language to English ");
            _currentLang = SystemLanguage.English;
            _spriteAtlas = Resources.Load <SpriteAtlas>(STR_LOCALIZATION_PREFIX + _currentLang.ToString());
        }

        if (_spriteAtlas == null)
        {
            Debug.Log("SpriteAltas not exist" + STR_LOCALIZATION_PREFIX + _currentLang.ToString());
        }

        var currentAsset = Resources.Load <TextAsset>(STR_LOCALIZATION_TEXT + _currentLang.ToString() + "_local");
        var tellAsset    = Resources.Load <TextAsset>(STR_TELLOUT_TEXT + _currentLang.ToString() + "_local");

        currentTextsDict = MTJSON.Deserialize(currentAsset.ToString()).dict;
        if (tellAsset != null)
        {
            var tellDict = MTJSON.Deserialize(tellAsset.ToString()).dict;
            foreach (var p in tellDict)
            {
                if (currentTextsDict.ContainsKey(p.Key))
                {
                    currentTextsDict[p.Key] = p.Value;
                }
            }
        }
    }
Пример #5
0
    public static void LoadStrings(SystemLanguage language)
    {
        Debug.Log("Carregando Strings para: " + language.ToString());

        TextAsset text;

        text = Resources.Load(RESOURCES_PATH + language.ToString(), typeof(TextAsset)) as TextAsset;

        if (text == null)
        {
            Debug.Log("Arquivo não encontrado! Carregando arquivo padrão...");
            text = Resources.Load(RESOURCES_PATH + SystemLanguage.English.ToString(), typeof(TextAsset)) as TextAsset;
        }

        Debug.Log("Arquivo carregado! preenchendo dicionário...");
        string[] lines = text.text.Split(new string[] { "\r\n", "\n\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
        currentLanguageStrings.Clear();
        for (int i = 0; i < lines.Length; i++)
        {
            string   line  = lines[i];
            string[] pairs = line.Split(new char[] { '=' }, 2);

            currentLanguageStrings.Add(pairs[0].Trim(), pairs[1].Trim());
        }

        IsLanguagesStringsLoaded = true;

        Debug.Log("Strings Carregadas para " + language.ToString() + "(Total de " + currentLanguageStrings.Count + " palavras");
    }
Пример #6
0
        private static void Init()
        {
            if (!_isLoaded)
            {
                var fallback = Resources.Load <TextAsset>("Languages/" + FALLBACK_LANGUAGE.ToString());
                if (fallback == null)
                {
                    // Make sure the fallback language was not missing
                    throw new System.NullReferenceException("Fallback language (" + FALLBACK_LANGUAGE.ToString() + ") is missing!");
                }

                _manager = new LanguageManager(CreateContainer(fallback));

                _manager.OnCurrentLanguageChanged += () => { if (OnLanguageChanged != null)
                                                             {
                                                                 OnLanguageChanged();
                                                             }
                };

                // Add languages
                var textAssets = Resources.LoadAll <TextAsset>("Languages/");
                foreach (var asset in textAssets)
                {
                    if (asset.name != fallback.name)
                    {
                        _manager.AddLanguage(CreateContainer(asset));
                    }
                }

                _isLoaded = true;
            }
        }
Пример #7
0
    void SaveConfig()
    {
        Dictionary <string, SingleField> config = new Dictionary <string, SingleField>();

        //保存默认语言
        config.Add(LanguageManager.c_defaultLanguageKey, new SingleField(m_defaultLanguage.ToString()));

        //保存语言列表
        List <string> languageList = new List <string>();

        foreach (var item in s_languageList)
        {
            if (item != "None")
            {
                languageList.Add(item);
            }
        }
        config.Add(LanguageManager.c_languageListKey, new SingleField(languageList));

        //保存模块列表
        List <string> moduleList = new List <string>();

        foreach (var item in s_languageKeyDict)
        {
            moduleList.Add(item.Key);
        }
        config.Add(LanguageManager.c_moduleListKey, new SingleField(moduleList));

        ConfigEditorWindow.SaveData(LanguageManager.c_configFileName, config);
    }
Пример #8
0
    private static void getTranslations(SystemLanguage language, bool fallback = false)
    {
        TranslationsFile file = JsonUtility.FromJson <TranslationsFile>("{\"translations\":" + ((TextAsset)Resources.Load("i18n/" + language.ToString())).text.TrimEnd('\r', '\n') + "}");

        if (file.translations == null)
        {
            Debug.LogError("Translation file for " + language.ToString() + " is invalid");
            return;
        }

        if (!fallback)
        {
            translationFile = file;
        }

        foreach (PhraseTranslation phrase in file.translations)
        {
            try {
                if (fallback)
                {
                    fallbackTranslation.Add(phrase.key, phrase.translation);
                }
                else
                {
                    translation.Add(phrase.key, phrase.translation);
                }
            } catch (Exception) {
                Debug.LogError("Duplicated key " + phrase.key + " for " + language.ToString());
            }
        }
    }
Пример #9
0
 void LoadLanguageInfo()
 {
     languageDic = JsonFile.ReadFromFile <LanguageDic>(dataPath, languageType.ToString());
     if (languageDic == null)
     {
         languageDic = new LanguageDic();
     }
 }
Пример #10
0
        static void DeleteLocalizationFile(SystemLanguage lang)
        {
            _localizationDatabaseFiles.Remove(lang);
            CustomEditorWindow_Localizator_EditLang.Backup(lang.ToString());
            File.Delete(Localizator.Path.DatabaseRootPath + lang.ToString() + ".csv");

            SaveWorkspace();
        }
Пример #11
0
        public static string ToIdentifier(this SystemLanguage systemLanguage)
        {
            switch (systemLanguage)
            {
            case SystemLanguage.Basque:
                return("eu");

            case SystemLanguage.Chinese:
                return("zh-cn");

            case SystemLanguage.ChineseSimplified:
                return("zh-chs");

            case SystemLanguage.ChineseTraditional:
                return("zh-cht");

            case SystemLanguage.Czech:
                return("cs");

            case SystemLanguage.Dutch:
                return("nl");

            case SystemLanguage.Spanish:
                return("es");

            case SystemLanguage.SerboCroatian:
                return("hr");

            case SystemLanguage.Swedish:
                return("sv");

            case SystemLanguage.German:
                return("de");

            case SystemLanguage.Greek:
                return("el");

            case SystemLanguage.Icelandic:
                return("is");

            case SystemLanguage.Slovak:
                return("sk");

            case SystemLanguage.Estonian:
            case SystemLanguage.Indonesian:
            case SystemLanguage.Lithuanian:
            case SystemLanguage.Polish:
            case SystemLanguage.Turkish:
                return(systemLanguage.ToString().Substring(0, 3).Remove(1, 1).ToLower());

            case SystemLanguage.Faroese:
            case SystemLanguage.Latvian:
            case SystemLanguage.Portuguese:
            case SystemLanguage.Bulgarian:
                return(systemLanguage.ToString().Substring(0, 4).Remove(1, 2).ToLower());
            }
            return(systemLanguage.ToString().Substring(0, 2).ToLowerInvariant());
        }
Пример #12
0
        /// <summary>
        /// Method that uses System.XML to parse from XMLs localization files
        /// </summary>
        /// <param name="asset"></param>
        void ParseTexts(TextAsset asset)
        {
            Dictionary <string, PC_TextItem> m_vTempDictionary = new Dictionary <string, PC_TextItem>();

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(asset.text);

            string      language  = m_currentLanguage.ToString();
            XmlNodeList langTable = xmlDoc.GetElementsByTagName("Language");

            foreach (XmlNode lang in langTable)
            {
                language = lang.InnerText;
                try
                {
                    SystemLanguage parsedLanguage = (SystemLanguage)System.Enum.Parse(typeof(SystemLanguage), language);
                    m_activelanguages.Add(parsedLanguage);
                }
                catch (System.Exception error)
                {
                    Debug.LogError("Can't parse " + language + " to enum. Exiting the program...");
                    Application.Quit();
                }
            }

            if (m_texts.ContainsKey(language))
            {
                Debug.LogError("[Text Manager] Error! The Language should always be unique");
                Debug.LogError("Name: " + language);
                return;
            }

            XmlNodeList globalTable = xmlDoc.GetElementsByTagName("Table1");

            foreach (XmlNode TableNode in globalTable)
            {
                string newItemContext = TableNode.ChildNodes[0].InnerText;
                if (newItemContext != "")
                {
                    if (m_vTempDictionary.ContainsKey(newItemContext))
                    {
                        Debug.LogError("[UHMLXMLParse] Error! The context should always be unique (Script line " + TableNode.ChildNodes[0] + ")");
                        Debug.LogError("Name: " + newItemContext);
                    }
                    else
                    {
                        PC_TextItem newInfoText = null;
                        //(string _key, string _text, string _audioName, bool _hasOptions, bool _showOptions)
                        newInfoText = new PC_TextItem(newItemContext, TableNode.ChildNodes[1].InnerText);
                        m_vTempDictionary.Add(newItemContext, newInfoText);
                    }
                }
            }

            m_texts.Add(language, m_vTempDictionary);
        }
        /// <summary>
        /// 按优先级枚举所有符合要求的语言包;
        /// </summary>
        private IEnumerable <LanguagePackInfo> EnumerateLanguagePask(LocalizationConfig?config, IEnumerable <LanguagePackInfo> languagePacks)
        {
            //语言优先级排列顺序
            string[] spareLanguages;

            if (config.HasValue)
            {
                //匹配语言包信息,并且返回;
                LocalizationConfig _config = config.Value;
                foreach (var info in languagePacks)
                {
                    if (_config.Language == info.Description.Language && _config.Name == info.Description.Name)
                    {
                        yield return(info);
                    }
                }

                spareLanguages = new string[]
                {
                    _config.Language,
                    SystemLanguage.ToString(),
                    defaultLanguage.ToString(),
                };
            }
            else
            {
                spareLanguages = new string[]
                {
                    SystemLanguage.ToString(),
                        defaultLanguage.ToString(),
                };
            }

            //按语言优先级返回合适的语言包;
            for (int i = 0; i < spareLanguages.Length; i++)
            {
                string language = spareLanguages[i];

                foreach (var fileInfo in LanguagePacks)
                {
                    if (fileInfo.Description.Language == language)
                    {
                        yield return(fileInfo);
                    }
                }
            }

            //若之前都未成功,则再次返回所有语言包;
            foreach (var fileInfo in LanguagePacks)
            {
                yield return(fileInfo);
            }
        }
Пример #14
0
 static Culture()
 {
     if (!Translate.Present)
     {
         m_languageNamesArray = new string[] { DEFAULT_LANGUAGE.ToString() };
         m_languageMapping    = new Dictionary <string, SystemLanguage>
         {
             { DEFAULT_LANGUAGE.ToString(), DEFAULT_LANGUAGE }
         };
         m_selectedLangIndex = 0;
     }
     Language = DEFAULT_LANGUAGE;
 }
Пример #15
0
    /// <summary>
    /// Initialize level dialogue by the specified language.
    /// if
    /// </summary>
    public static void InitializeLevelDialogue(string LevelName, SystemLanguage? _language)
    {
        TargetLanguage = _language == null ? SystemLanguage.English :
                          (SupportLanguage.Contains(_language.Value.ToString()) ? _language.Value : SystemLanguage.English);

        string DialogFilePath = DialogAssetRootFolder + "/" + LevelName + "/" + TargetLanguage.ToString() + "/" + TargetLanguage.ToString();
        TextAsset dialogFile = Resources.Load(DialogFilePath, typeof(TextAsset)) as TextAsset;
        TextAsset characterXMLFile = Resources.Load(CharacterAssetRootFolder, typeof(TextAsset)) as TextAsset;
        CharacterDict.Clear();
        DialogueDict.Clear();
        CharacterDict = ParseCharacterLocalizationXMLFile(ParseTextAssetToXMLDocument(characterXMLFile), TargetLanguage);
        DialogueDict = ParseDialogLocalizationXMLFile(ParseTextAssetToXMLDocument(dialogFile));
    }
Пример #16
0
        IEnumerator InitLocalizationData(SystemLanguage newLanguage = SystemLanguage.Unknown, bool notify = false)
        {
            // clear the vocabulary
            vocabulary      = new Dictionary <string, string>();
            currentLanguage = ConformSystemLanguage(newLanguage);
            string languageName = currentLanguage.ToString();

            //Debug.Log("Application language is " + languageName);
            if (availableLocalizations.Contains(currentLanguage))
            {
                int    entriesRead          = 0;
                string localizationFileName = LocalizationFileName(currentLanguage);
                StartCoroutine(LoadStreamableAsset(localizationFileName, (stream, exists) =>
                {
                    if (!exists)
                    {
                        //Debug.Log("No localization files for " + languageName + " found");
                    }
                    else
                    {
                        stream.BaseStream.Seek(0, SeekOrigin.Begin);
                        while (!stream.EndOfStream)
                        {
                            string srcline = stream.ReadLine();
                            if (srcline != null)
                            {
                                // explicit JSON parsing
                                LocalizationEntry entry = JsonUtility.FromJson <LocalizationEntry>(srcline);
                                if (entry.language == languageName)
                                {
                                    if (!vocabulary.ContainsKey(entry.id))
                                    {
                                        vocabulary.Add(entry.id, NormalizeString(entry.value));
                                        entriesRead++;
                                    }
                                    else
                                    {
                                        //Debug.Log("Entry " + entry.id + " is already in vocabulary!");
                                    }
                                }
                            }
                        }
                    }
                }));
                while (!IsLoaded)
                {
                    yield return(null);
                }
                //Debug.Log(entriesRead.ToString() + " entries read for " + languageName + " language");
                if (notify)
                {
                    GlobalManager.MInstantMessage.DeliverMessage(InstantMessageType.LanguageChanged, this, currentLanguage);
                }
            }
            else
            {
                //Debug.Log("No localization files for " + languageName + " found");
            }
            processFlag = true;
        }
Пример #17
0
    private void LoadLanguage()
    {
        //加载文件
        TextAsset textAsset = Resources.Load <TextAsset>(language.ToString());

        if (textAsset == null)
        {
            Debug.LogError("没有该语言的本地化文件!");
            return;
        }
        //通过\n分割每行内容
        string[] lines = textAsset.text.Split('\n');
        //获取key,value
        for (int i = 0; i < lines.Length; i++)
        {
            //检测,如果为空串直接跳过
            if (string.IsNullOrEmpty(lines[i]))
            {
                continue;
            }
            //获取key,value
            string[] kv = lines[i].Split(':');
            //保存键值对
            dict.Add(kv[0], kv[1]);
        }
    }
Пример #18
0
    public static Dictionary <string, string> Load(SystemLanguage language)
    {
        XmlDocument document = new XmlDocument();
        Dictionary <string, string> result = new Dictionary <string, string>();

        if (Application.isEditor)
        {
            if (!(new FileInfo(string.Format(filepath, language)).Exists))
            {
                return(result);
            }
            document.Load(string.Format(filepath, language));
        }
        else
        {
            TextAsset text = Resources.Load("Languages/" + language.ToString()) as TextAsset;
            if (text == null || string.IsNullOrEmpty(text.text))
            {
                return(result);
            }
            document.LoadXml(text.text);
        }
        XmlElement root = document.DocumentElement;

        foreach (XmlNode node in root.ChildNodes)
        {
            if (node.Name == "phrase")
            {
                result[node.Attributes[0].Value] = node.Attributes[1].Value;
            }
        }

        return(result);
    }
Пример #19
0
    /// <summary>
    /// 加載預翻譯的語言
    /// </summary>
    private void loadLanguage()
    {
        //加載文件
        TextAsset ta = Resources.Load <TextAsset>(language.ToString());

        if (ta == null)
        {
            Debug.LogWarning("沒有這個語言的翻譯文件");
            return;
        }
        //獲取每一行
        string[] lines = ta.text.Split('\n');
        //獲取key value
        for (int i = 0; i < lines.Length; i++)
        {
            //檢測
            if (string.IsNullOrEmpty(lines[i]))
            {
                continue;
            }
            //獲取 key:kv[0] value kv[1]
            string[] kv = lines[i].Split(':');
            //保存到字典
            dict.Add(kv[0], kv[1]);
            Debug.Log(string.Format("key:{0}, value:{1}", kv[0], kv[1]));
        }
    }
Пример #20
0
    public static void CreateMissingTranslationFilesForSupportedLanguages()
    {
        log.Info(_Logger.User.Msaw, "Creating missing translation files for supported languages...");

        // default language is always English
        SystemLanguage defaultLanguage     = SystemLanguage.English;
        string         locaPath            = Application.dataPath + "/Resources/" + locaFileBasePath;
        string         defaultLanguageFile = locaPath + defaultLanguage.ToString().ToLower() + locaFileExtension;

        // if the default translation file does not exist, create an empty one
        if (System.IO.File.Exists(defaultLanguageFile) == false)
        {
            log.Warn(_Logger.User.Msaw, "Default translation file does not exist - creating an empty one: " + defaultLanguageFile);
            System.IO.File.Create(defaultLanguageFile);
        }

        if (SupportedLanguages != null)
        {
            SupportedLanguages.ForEach(language =>
            {
                if (language != defaultLanguage)
                {
                    // if the translation file does not exist, copy the default language file
                    string languageFile = locaPath + language.ToString().ToLower() + locaFileExtension;
                    if (System.IO.File.Exists(languageFile) == false)
                    {
                        log.Info(_Logger.User.Msaw, "Creating a translation file for " + language.ToString());
                        System.IO.File.Copy(defaultLanguageFile, languageFile);
                    }
                }
            });
        }
    }
Пример #21
0
        private static void Init()
        {
            if (!_inited)
            {
                _settings = DB.Get <LocalizationSettingsDBEntry>();

                _defaultLanguage = DB.Get <LanguageItem>(_defaultSystemLanguage.ToString());

                var localizationSettingsData = PlayerPrefsLocalData.GetDataNode(LOCALIZATION_SETTINGS_KEY);
                var savedLanguageString      = localizationSettingsData.ContainsKey(LOCALIZATION_SAVED_LANGUAGE_KEY)
                    ? localizationSettingsData.GetString(LOCALIZATION_SAVED_LANGUAGE_KEY)
                    : null;

                if (string.IsNullOrEmpty(savedLanguageString))
                {
                    ChangeLanguage(_currentSystemLanguage.ToString());
                }
                else
                {
                    var savedLanguage = DB.Get <LanguageItem>(savedLanguageString);
                    if (savedLanguage != null)
                    {
                        ChangeLanguage(savedLanguage);
                    }
                    else
                    {
                        Debug.LogWarning(string.Format("Language not found: {0}", savedLanguageString));
                    }
                }

                _inited = true;
            }
        }
Пример #22
0
    IEnumerator SpriteShapeOut()
    {
        SystemLanguage lenguaje = Application.systemLanguage;

        yield return(new WaitForSeconds(3f));

        //COMPRUEBA COMPATIBILIDAD DE DISPOSITIVO
        if (SpeechRecognizer.ExistsOnDevice())
        {
            //VERIFICA LENGUAJE ACTIVO DEL DISPOSITIVO
            if (lenguaje.ToString() == "Spanish")
            {
                SceneManager.LoadScene("NewMenu");
            }
            else
            {
                resultErrores.text = "DEBE HABILITAR EL IDIOMA ESPAÑOL EN SU DISPOSITIVO";
                contenedor.SetActive(true);
            }
        }
        else
        {
            resultErrores.text = "SU DISPOSITIVO NO ES COMPATIBLE CON LA APLICACION";
            contenedor.SetActive(true);
        }
    }
Пример #23
0
        public void LoadLocalizedText(SystemLanguage language)
        {
            localizedText = new Dictionary <string, string>();

            string fileName = language.ToString() + ".json";
            string filePath = Path.Combine(Application.streamingAssetsPath, fileName);

            string dataAsJson;

            if (Application.platform == RuntimePlatform.Android)
            {
                UnityWebRequest reader = new UnityWebRequest(filePath);

                dataAsJson = reader.downloadHandler.text;
            }
            else
            {
                dataAsJson = File.ReadAllText(filePath);
            }

            LocalizationData loadedData = JsonUtility.FromJson <LocalizationData>(dataAsJson);

            for (int i = 0; i < loadedData.items.Length; i++)
            {
                localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
            }

            isReady = true;
        }
Пример #24
0
        // https://new-translate-web-staging.unity3d.jp/api/file-api/upload-translation-file
        private static void SendTranslationFileToServer(string localFilePath, SystemLanguage targetLanguage, TranslateProject projectSettings)
        {
            var uploadFile          = new Dictionary <string, object>();
            var translationFilePath = Path.ChangeExtension(localFilePath, ".po");

            uploadFile["name"]     = translationFilePath;
            uploadFile["mimeType"] = "application/x-po";
            var fileContent = GetFileDataInPoFormat(localFilePath, targetLanguage, projectSettings);

            uploadFile["text"] = fileContent;

            var data = new Dictionary <string, object>();

            data["projectID"]  = projectSettings.id;
            data["branch"]     = projectSettings.currentBranch;
            data["languageID"] = serverLanguageCodes[targetLanguage.ToString()];
            var sourceFilePath = GetServerPathForLocalPath(localFilePath);

            data["filename"]   = sourceFilePath;
            data["uploadFile"] = uploadFile;

            var jsonData = Json.Serialize(data);

            Downloader.Response response;
            Downloader.SendGetPostData(serverUrl + "/v1/files/translation-file"
                                       , jsonData, out response);
        }
Пример #25
0
        private void InitLanguagePack()
        {
            SystemLanguage systemLanguage = Application.systemLanguage;

            //Debug.Log(systemLanguage.ToString());
            //Localization.language = ENGLISH; return;
            switch (systemLanguage)
            {
            case SystemLanguage.Chinese:
#if UNITY_IOS
                Localization.language = SystemLanguage.ChineseSimplified.ToString();
#elif UNITY_ANDROID
                Localization.language = SystemLanguage.ChineseSimplified.ToString();
#elif UNITY_EDITOR
                Localization.language = SystemLanguage.ChineseSimplified.ToString();
#endif
                break;

            case SystemLanguage.ChineseSimplified:
                Localization.language = SystemLanguage.ChineseSimplified.ToString();
                break;

            case SystemLanguage.ChineseTraditional:
                Localization.language = SystemLanguage.ChineseTraditional.ToString();
                break;

            case SystemLanguage.English:
                Localization.language = SystemLanguage.English.ToString();
                break;

            default:
                Localization.language = systemLanguage.ToString();
                break;
            }
        }
Пример #26
0
        /// <summary>
        /// Loads a language pack and returns it, or null.
        /// </summary>
        /// <param name="name">Name of the lang pack.</param>
        /// <param name="language">Language of the lang pack.</param>
        /// <returns>A language pack with the name and language, or null</returns>
        public static LanguagePack Load(string name, SystemLanguage language)
        {
            string filename = name + "." + language.ToString();

#if UNITY_EDITOR
            string[] guids = AssetDatabase.FindAssets(filename);
            if (guids == null || guids.Length < 1)
            {
                return(null);
            }
#endif

            string path = null;

#if UNITY_EDITOR
            // Find the first match
            foreach (var guid in guids)
            {
                string p = AssetDatabase.GUIDToAssetPath(guid);
                if (p.EndsWith("." + PWConst.LANG_PK_EXTENSION))
                {
                    path = p;
                    break;
                }
            }
#endif

            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }

            return(LanguagePack.Load(path));
        }
Пример #27
0
 public bool GetLanguageMap(SystemLanguage language, Dictionary <string, string> map)
 {
     try {
         var path = Util.CombinePaths(RootPath, language.ToString() + ".txt");
         if (!Util.FileExists(path))
         {
             return(false);
         }
         map.Clear();
         using (var reader = new StreamReader(path, true)) {
             string key = null, value = null;
             string line = null;
             while ((line = reader.ReadLine()) != null)
             {
                 int i = line.IndexOf(':');
                 if (i >= 0)
                 {
                     key   = line.Substring(0, i);
                     value = line.Substring(i + 1, line.Length - i - 1);
                     if (!string.IsNullOrEmpty(key) && !map.ContainsKey(key))
                     {
                         map.Add(key, value);
                     }
                 }
             }
         }
     } catch { }
     return(true);
 }
Пример #28
0
    /// <summary>
    /// Set the current language, downloading missing language files.
    /// </summary>
    /// <param name="_Language">The new language.</param>
    static public void Set(SystemLanguage _Language, ChangeCallback _Callback)
    {
        if (!Ready)
        {
            return;
        }

        Current = _Language;

        if (!CurrentData.Load(Current))
        {
            Debug.Log("Language: Missing language file, requesting.");

            Ready         = false;
            ReadyCallback = _Callback;

            GameObject          go = new GameObject("Download");
            GetTextFromInternet dl = go.AddComponent <GetTextFromInternet>();
            dl.Request("?language=" + _Language.ToString(), RequestCallback);
        }

        if (Ready && _Callback != null)
        {
            _Callback();
        }
    }
    /// <summary>
    /// 加载预翻译的语言
    /// </summary>
    private void loadLocalizationText()
    {
        //从resours文件中加载text
        TextAsset ta = Resources.Load <TextAsset>(language.ToString());

        if (ta == null)
        {
            Debug.LogWarning("没有这个语言的翻译文件");
            return;
        }

        //获取每一行
        string[] lines = ta.text.Split('\n');
        //获取key value
        for (int i = 0; i < lines.Length; i++)
        {
            //检测
            if (string.IsNullOrEmpty(lines[i]))
            {
                continue;
            }
            //获取 key:kv[0] value kv[1]
            string[] kv = lines[i].Split(':');
            //保存到字典
            dict.Add(kv[0], kv[1]);

            Debug.Log(string.Format("key:{0}, value:{1}", kv[0], kv[1]));
        }
    }
Пример #30
0
    private IEnumerator CoProcParse_Locale(SystemLanguage eLocale)
    {
        _pStrBuilder.Length = 0;
//#if UNITY_EDITOR
//		_pStrBuilder.Append("file://");
//#endif
        _pStrBuilder.Append(Application.streamingAssetsPath).Append("/").Append(const_strLocalePath).Append("/")
        .Append(eLocale.ToString()).Append(const_strLocaleFileExtension);

        WWW pReader = null;

        if (System.IO.File.Exists(_pStrBuilder.ToString()))
        {
            pReader = new WWW(_pStrBuilder.ToString());
            yield return(pReader);
        }

        if (++_iParsingFinishCount >= (int)SystemLanguage.Unknown + 1)
        {
            p_bIsFinishParse = true;
        }

        if (pReader == null || pReader.error != null || pReader.bytes.Length == 0)
        {
            if (p_bIsFinishParse)
            {
                ExcuteFinishEvent();
            }

            yield break;
        }


        //EventSet_LocalizeParsing(eLocale, pReader.text, pReader.bytes, p_bIsFinishParse);
    }
Пример #31
0
    /// <summary>
    /// 加载预翻译语言
    /// </summary>
    private void LoadLanguage()
    {
        TextAsset ta = Resources.Load <TextAsset>(language.ToString());

        if (ta == null)
        {
            Debug.LogWarning("没有此语言的预编译"); return;
        }

        //分割行,,
        string[] lines = ta.text.Split('\n');

        //读取key : value,并存到上面字典中
        for (int i = 0; i < lines.Length; i++)
        {
            if (string.IsNullOrEmpty(lines[i]))
            {
                continue;
            }
            else
            {
                string[] kv = lines[i].Split(':');

                //存到字典中
                dict.Add(kv[0], kv[1]);

                Debug.Log("Key:" + kv[0] + "Value:" + kv[1]);
            }
        }
    }
Пример #32
0
        public static string GetLocalizedDynamicSoundGroupFileName(SystemLanguage localLanguage, bool useLocalization,
            string resourceFileName) {
            if (!useLocalization) {
                return resourceFileName;
            }

            if (MasterAudio.Instance != null) {
                // ReSharper disable once ConditionIsAlwaysTrueOrFalse
                return GetLocalizedFileName(useLocalization, resourceFileName);
            }

            return localLanguage.ToString() + "/" + resourceFileName;
        }
Пример #33
0
    public static void SetLanguage(SystemLanguage l_lang)
    {
        s_currentLanguage = l_lang;

        string languageDataName = c_DataFilePrefix + l_lang.ToString();

        if(DataManager.GetIsExistData(languageDataName))
        {
            s_languageData = DataManager.GetData(languageDataName);
        }
        else
        {
            string defaultLanguage = ConfigManager.GetData(c_configFileName)[c_defaultLanguageKey].GetString();
            s_languageData = DataManager.GetData(defaultLanguage);
        }
    }
Пример #34
0
 /// <summary>
 /// Parses the character localization XML file.
 /// </summary>
 static IDictionary<string, LocalizeCharacter> ParseCharacterLocalizationXMLFile(XmlDocument xmlDoc, SystemLanguage language)
 {
     IDictionary<string, LocalizeCharacter> ret = new Dictionary<string, LocalizeCharacter>();
     XmlElement root = xmlDoc.DocumentElement;
     XmlNodeList xmlNodeList = root.GetElementsByTagName("character");
     foreach (XmlNode node in xmlNodeList)
     {
         XmlElement characterElement = (XmlElement)node;
         LocalizeCharacter localization_Character = new LocalizeCharacter();
         localization_Character.CharacterID = characterElement.GetAttribute("id"); ;
         localization_Character.CharacterName = characterElement.GetAttribute(language.ToString());
         ///CharacterIconPath can be empty
         localization_Character.CharacterIconPath = characterElement.HasAttribute("imagepath") ? characterElement.GetAttribute("imagepath") : string.Empty;
         ///the image can be null
         localization_Character.PortraitIconTexture = localization_Character.CharacterIconPath != string.Empty ? (Texture2D)Resources.Load(localization_Character.CharacterIconPath, typeof(Texture2D)) : null;
         ret.Add(localization_Character.CharacterID, localization_Character);
     }
     return ret;
 }
Пример #35
0
		private static void LoadCollection(string moduleName,string format,
			SystemLanguage lan,
			System.Action<Collection> onDone,
			ILoader loader = null){

			if(!_decoderMap.ContainsKey(format)){
				throw new System.Exception("there is no decoder for this format : "+format);
			}
			var decoder = _decoderMap[format];
			var filePath = lan.ToString()+"/"+moduleName+"."+format;
			if(loader == null){
				loader = _defaultLoader;
			}
			loader.StartLoad(filePath,delegate(TextAsset txt) {
				Collection col = null;
				if(txt != null){
					col = decoder.Invoke(txt.text);
				}else{
					Debug.LogError("[Localize] Load failed:"+filePath);
				}
				onDone(col);
			});
		}
Пример #36
0
 public static void SetPlayerLanguage(SystemLanguage language)
 {
     PlayerPrefs.SetString(Language, language.ToString());
 }
Пример #37
0
		private static void LoadCollection(string moduelName,SystemLanguage lan,System.Action<Collection> onDone,ILoader loader = null){
			var filePath = lan.ToString()+"/"+moduelName;
			if(loader == null){
				loader = _defaultLoader;
			}
			loader.StartLoad(filePath,delegate(TextAsset txt) {
				Collection col = null;
				if(txt != null){
					col = JsonMapper.ToObject<Collection>(txt.text);
				}else{
					Debug.LogError("[Localize] Load failed:"+filePath);
				}
				onDone(col);
			});
		}