/// <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, "Translate all text")) { if (translateFromLanguageValue != 0) { TranslateAllText(); } } newPosition.x += fullWindowWidth * 0.15f; } if (GUI.Button(newPosition, "Refresh")) { 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); }
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)); }
/// <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 ---"); } } }
void OnRootEditClick() { ShowRootEditWindow(LanguageHandlerEditor.LoadParsedLanguageFile(null, true)); }
void Initialize() { if (undoManager == null) { // Instantiate Undo Manager undoManager = new HOEditorUndoManager(this, "Smart Localization - Edit Root Language Window"); } 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"); settingsList.Add("IMPORT"); 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; }
public void Initialize(SmartCultureInfo thisCultureInfo, bool forceNewLanguage = false) { if (thisCultureInfo != null) { if (undoManager == null) { // Instantiate Undo Manager undoManager = new HOEditorUndoManager(this, "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("Copy", 0.1f); listColumns.AddColumn("Translate", 0.1f); listColumns.AddColumn("Key", 0.21f); listColumns.AddColumn("Comment", 0.21f); listColumns.AddColumn("Override", 0.07f); listColumns.AddColumn("Value", 0.25f); 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(); } } }
public void ReloadLanguage() { InitializeLanguage(currentCultureInfo, LanguageHandlerEditor.LoadParsedLanguageFile(null, true), LanguageHandlerEditor.LoadParsedLanguageFile(currentCultureInfo.languageCode, false)); }