Exemple #1
0
        /// <summary>
        /// Draws the GUI for when the automatic translator is initialized and available for translation
        /// </summary>
        void DrawAvailableAutoTranslationGUI(float fullWindowWidth, Rect newPosition)
        {
            newPosition.width          = fullWindowWidth * 0.69f;
            translateFromLanguageValue = EditorGUI.Popup(newPosition, "Translate From", translateFromLanguageValue, availableTranslateLangEnglishNames);
            newPosition.x += fullWindowWidth * 0.7f;

            if (oldTranslateFromLanguageValue != translateFromLanguageValue)
            {
                oldTranslateFromLanguageValue = translateFromLanguageValue;
                //The value have been changed, load the language file of the other language that you want to translate from
                //I load it like this to show the translate buttons only on the ones that can be translated i.e some values
                //in the "from" language could be an empty string - no use in translating that
                if (translateFromDictionary != null)
                {
                    translateFromDictionary.Clear();
                    translateFromDictionary = null;
                }
                if (translateFromLanguageValue != 0)
                {
                    string englishName = availableTranslateLangEnglishNames[translateFromLanguageValue];
                    foreach (SmartCultureInfo info in availableTranslateFromLanguages)
                    {
                        if (info.englishName == englishName)
                        {
                            translateFromDictionary = LanguageHandlerEditor.LoadParsedLanguageFile(info.languageCode, false);
                            translateFromLanguage   = info.languageCode;
                            break;
                        }
                    }
                }
            }

            newPosition.width = fullWindowWidth * 0.14f;
            if (translateFromLanguageValue != 0)
            {
                if (GUI.Button(newPosition, "Перевести весь текст"))
                {
                    if (translateFromLanguageValue != 0)
                    {
                        TranslateAllText();
                    }
                }
                newPosition.x += fullWindowWidth * 0.15f;
            }
            if (GUI.Button(newPosition, "Обновить"))
            {
                CheckIfCanBeTranslated();
            }
        }
        void ExportToCSV(string chosenExportFolder)
        {
            string name  = chosenCulture.englishName + " - " + chosenCulture.languageCode + ".csv";
            var    input = new List <List <string> >();
            Dictionary <string, LocalizedObject> languageItems = LanguageHandlerEditor.LoadParsedLanguageFile(chosenCulture.languageCode, false);

            foreach (var item in languageItems)
            {
                var row = new List <string>();
                row.Add(item.Key);
                row.Add(item.Value.TextValue);
                input.Add(row);
            }
            CSVParser.Write(chosenExportFolder + "/" + name, CSVParser.GetDelimiter(delimiter), input);
        }
Exemple #3
0
        void SaveRootLanguageFile()
        {
            var changeNewRootKeys   = new Dictionary <string, string>();
            var changeNewRootValues = new Dictionary <string, string>();

            for (int i = 0; i < changedRootKeys.Count; i++)
            {
                SerializableStringPair             rootKey   = changedRootKeys[i];
                SerializableLocalizationObjectPair rootValue = changedRootValues[i];
                //Check for possible duplicates and rename them
                string newKeyValue = LanguageDictionaryHelper.AddNewKeyPersistent(changeNewRootKeys,
                                                                                  rootKey.originalValue,
                                                                                  rootValue.changedValue.GetFullKey(rootKey.changedValue));

                //Check for possible duplicates and rename them(same as above)
                LanguageDictionaryHelper.AddNewKeyPersistent(changeNewRootValues, newKeyValue, rootValue.changedValue.TextValue);
            }

            //Add the full values before saving
            var changeNewRootKeysToSave   = new Dictionary <string, string>();
            var changeNewRootValuesToSave = new Dictionary <string, string>();

            foreach (var rootKey in changeNewRootKeys)
            {
                LocalizedObject thisLocalizedObject = parsedRootValues[rootKey.Key];
                changeNewRootKeysToSave.Add(thisLocalizedObject.GetFullKey(rootKey.Key), rootKey.Value);
                changeNewRootValuesToSave.Add(thisLocalizedObject.GetFullKey(rootKey.Key), changeNewRootValues[rootKey.Key]);
            }



            SmartCultureInfoCollection allCultures = SmartCultureInfoEx.Deserialize(LocalizationWorkspace.CultureInfoCollectionFilePath());

            LanguageHandlerEditor.SaveRootLanguageFile(changeNewRootKeysToSave, changeNewRootValuesToSave, LanguageHandlerEditor.CheckAndSaveAvailableLanguages(allCultures));

            //Fire the root language changed event
            if (OnRootFileChanged != null)
            {
                OnRootFileChanged();
            }

            //Reload the window(in case of duplicate keys)
            SetRootValues(LanguageHandlerEditor.LoadParsedLanguageFile(null, true));
        }
Exemple #4
0
        /// <summary>
        /// Refreshes the list containing the selectable keys
        /// </summary>
        /// <param name="sort">If the refreshed list should be sorted and filtered with a certain key type</param>
        /// <param name="sortType">The key type to use as filter</param>
        public static void RefreshList(bool sort, LocalizedObjectType sortType)
        {
            if (!Application.isPlaying)
            {
                parsedRootValues.Clear();

                Dictionary <string, LocalizedObject> values = LanguageHandlerEditor.LoadParsedLanguageFile(null, true);
                if (sort)
                {
                    loadedObjectType = sortType;
                    foreach (KeyValuePair <string, LocalizedObject> pair in values)
                    {
                        if (pair.Value.ObjectType == sortType)
                        {
                            parsedRootValues.Add(pair.Key);
                        }
                    }
                }
                else
                {
                    //Use invalid for showing all
                    loadedObjectType = LocalizedObjectType.INVALID;

                    parsedRootValues.AddRange(values.Keys);
                }

                if (parsedRootValues.Count > 0)
                {
                    parsedRootValues.Insert(0, "--- Ключ не выбран ---");               //No key selected
                }
                else
                {
                    parsedRootValues.Add("--- Нет локализованных ключей ---");               //No localized keys available
                }
            }
        }
Exemple #5
0
        void Initialize()
        {
            if (undoManager == null)
            {
                // Instantiate Undo Manager
                undoManager = new HOEditorUndoManager(this, "GGLocalization - Окно редактирования корневого языка");
            }
            if (keyTypes == null)
            {
                //Get the different key types
                List <string> enumNames = new List <string>(Enum.GetNames(typeof(LocalizedObjectType)));
                if (enumNames.Contains("INVALID"))
                {
                    enumNames.Remove("INVALID");
                }
                keyTypes = enumNames.ToArray();
            }

            if (changedRootKeys == null)
            {
                changedRootKeys = new List <SerializableStringPair>();
            }
            if (changedRootValues == null)
            {
                changedRootValues = new List <SerializableLocalizationObjectPair>();
            }
            if (parsedRootValues == null)
            {
                parsedRootValues = new Dictionary <string, LocalizedObject>();
            }

            if (parsedRootValues.Count < 1)
            {
                SetRootValues(LanguageHandlerEditor.LoadParsedLanguageFile(null, true));
            }

            settingsList.Clear();
            settingsList.Add("CONVERTLINEBREAK");
            settingsList.Add("GENERAL");
            settingsList.Add("SEARCH");

            settingsAdaptor     = new SettingsListAdaptor(settingsList, DrawSettingsItem, 20);
            settingsContextMenu = new SettingsMenuControl();

            localizedObjectAdaptor = new LocalizedObjectListAdaptor(changedRootValues, changedRootKeys, DrawRootPair, 17);

            if (localizedObjectContextMenu != null)
            {
                localizedObjectContextMenu.ClearEvents();
            }

            localizedObjectContextMenu = new LocalizedObjectMenuControl(OnKeyDeleted, OnKeyAdded);

            listColumns = new EditorColumns(0.1f);
            listColumns.AddColumn("Type", 0.1f);
            listColumns.AddColumn("Key", 0.45f);
            listColumns.AddColumn("Comment", 0.45f);
            listColumns.RecalculateColumnWidths();

            if (EditorPrefs.HasKey(CollapseMultilineSaveKey))
            {
                collapseMultilineFields = EditorPrefs.GetBool(CollapseMultilineSaveKey);
            }

            GUIUtility.keyboardControl = 0;
        }
Exemple #6
0
        public void Initialize(SmartCultureInfo thisCultureInfo, bool forceNewLanguage = false)
        {
            if (thisCultureInfo != null)
            {
                if (undoManager == null)
                {
                    // Instantiate Undo Manager
                    undoManager = new HOEditorUndoManager(this, "GGLocalization - Translate Language Window");              //Smart Localization - Translate Language Window
                }

                if (thisCultureInfo != null)
                {
                    bool newLanguage = thisCultureInfo != this.currentCultureInfo ? true : false;

                    if (Application.isPlaying || forceNewLanguage)
                    {
                        newLanguage = true;
                    }

                    this.currentCultureInfo = thisCultureInfo;
                    if (loadedLanguageValues == null || loadedLanguageValues.Count < 1 || newLanguage)
                    {
                        InitializeLanguage(thisCultureInfo,
                                           LanguageHandlerEditor.LoadParsedLanguageFile(null, true),
                                           LanguageHandlerEditor.LoadParsedLanguageFile(thisCultureInfo.languageCode,
                                                                                        false));
                    }
                }

                settingsList.Clear();
                settingsList.Add("SETTINGS");
                settingsList.Add("CONVERTLINEBREAK");
                settingsList.Add("WATCHFILE");
                settingsList.Add("AUTOTRANSLATE");
                settingsList.Add("GENERAL");

#if UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3
                if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WebPlayer &&
                    EditorUserBuildSettings.activeBuildTarget != BuildTarget.WebPlayerStreamed)
#endif
                {
                    settingsList.Add("SORT");
                }

                settingsList.Add("SEARCH");

                settingsAdaptor     = new SettingsListAdaptor(settingsList, DrawSettingsItem, 20);
                settingsContextMenu = new SettingsMenuControl();

                listColumns = new EditorColumns(0.02f, true);
                listColumns.AddColumn("Копия", 0.1f);           // Copy
                listColumns.AddColumn("Перевод", 0.1f);         // Translate
                listColumns.AddColumn("Ключ", 0.21f);           // Key
                listColumns.AddColumn("Комментарий", 0.21f);    // Comment
                listColumns.AddColumn("Переопределить", 0.07f); //Override
                listColumns.AddColumn("Значение", 0.25f);       // Value
                listColumns.RecalculateColumnWidths();

                if (EditorPrefs.HasKey(CollapseMultilineSaveKey))
                {
                    collapseMultilineFields = EditorPrefs.GetBool(CollapseMultilineSaveKey);
                }

                GUIUtility.keyboardControl = 0;

                SmartCultureInfoCollection allCultures       = SmartCultureInfoEx.Deserialize(LocalizationWorkspace.CultureInfoCollectionFilePath());
                SmartCultureInfoCollection availableCultures = LanguageHandlerEditor.CheckAndSaveAvailableLanguages(allCultures);
                otherAvailableLanguageCodes.Clear();
                otherAvailableLanguageCodesArray = null;
                foreach (SmartCultureInfo otherCulture in availableCultures.cultureInfos)
                {
                    if (otherCulture.languageCode != thisCultureInfo.languageCode)
                    {
                        otherAvailableLanguageCodes.Add(otherCulture.languageCode);
                    }
                }

                if (otherAvailableLanguageCodes.Count > 0)
                {
                    otherAvailableLanguageCodesArray = otherAvailableLanguageCodes.ToArray();
                }
            }
        }
Exemple #7
0
 public void ReloadLanguage()
 {
     InitializeLanguage(currentCultureInfo, LanguageHandlerEditor.LoadParsedLanguageFile(null, true), LanguageHandlerEditor.LoadParsedLanguageFile(currentCultureInfo.languageCode, false));
 }
 void OnRootEditClick()
 {
     ShowRootEditWindow(LanguageHandlerEditor.LoadParsedLanguageFile(null, true));
 }