private void OnGUI() { var languages = Localizator.GetAvailableLanguages(); var localizationPercentages = Localizator.GetLocalizationPercentages(); EditorScriptingUtils.BeginCenter(); GUILayout.Label("Current Language(s)", EditorStyles.largeLabel); EditorScriptingUtils.EndCenter(); EditorScriptingUtils.HorizontalLine(3); var languageButtonStyle = new GUIStyle(EditorStyles.miniButton) { fixedHeight = 30f, fixedWidth = position.width * .3f, fontSize = 12, padding = new RectOffset(10, 10, 5, 5), alignment = TextAnchor.MiddleCenter, richText = true }; scrollPos = GUILayout.BeginScrollView(scrollPos, false, true); foreach (var language in languages) { EditorScriptingUtils.BeginCenter(); GUILayout.BeginHorizontal(); var localizationPercentage = localizationPercentages[language]; // Label GUILayout.Label($"<color={(localizationPercentage > 90f ? "green" : "red")}><b>{language.ToString()}</b>, {localizationPercentage}% Localized</color>", languageButtonStyle); // Switch to the language if (GUILayout.Button($"Switch", languageButtonStyle)) { Localizator.UpdateLanguage(language); Debug.Log($"Switched to the {language} language."); } // Remove the language if (GUILayout.Button($"Remove", languageButtonStyle)) { var dialogOutput = EditorUtility.DisplayDialog( $"{language} language will be removed from the project permanently", $"Are you sure you want to remove {language} language from your project?", "Yes", "No"); if (dialogOutput) { Localizator.RemoveLanguage(language); ((KeyBrowser)GetWindow(typeof(KeyBrowser))).UpdateArrays(); } } GUILayout.EndHorizontal(); EditorScriptingUtils.EndCenter(); } GUILayout.EndScrollView(); EditorScriptingUtils.HorizontalLine(3); // Language GUILayout.BeginHorizontal(); GUILayout.Label("Language to add: "); languageToAdd = (SystemLanguage)EditorGUILayout.EnumPopup(languageToAdd, GUILayout.Width(200f)); GUILayout.EndHorizontal(); // File Name GUILayout.BeginHorizontal(); GUILayout.Label("File Name: "); languageFileName = GUILayout.TextField(languageFileName, GUILayout.Width(200f)); languageFileName = languageFileName.Replace(' ', '_').ToLower(); GUILayout.EndHorizontal(); // Language Name GUILayout.BeginHorizontal(); GUILayout.Label("Language Name: "); languageName = GUILayout.TextField(languageName, GUILayout.Width(200f)); GUILayout.EndHorizontal(); // Localization Error Message GUILayout.BeginHorizontal(); GUILayout.Label("Localization Error Message: "); localizationErrorMessage = GUILayout.TextField(localizationErrorMessage, GUILayout.Width(200f)); GUILayout.EndHorizontal(); bool canCreateLanguage = Array.IndexOf(Localizator.GetCurrentLanguageFiles(), languageFileName.Trim()) == -1 && !string.IsNullOrWhiteSpace(languageFileName) && Array.IndexOf(Localizator.GetAvailableLanguages(), languageToAdd) == -1; if (canCreateLanguage) { if (GUILayout.Button($"Add {languageToAdd} language")) { var dialogOutput = EditorUtility.DisplayDialog( $"{languageToAdd} language file will be created", "Are you sure you want to add this language ?", "Add", "Cancel"); if (dialogOutput) { Localizator.CreateLanguage(languageToAdd, languageFileName.Replace('.', '_'), languageName, localizationErrorMessage); ((KeyBrowser)GetWindow(typeof(KeyBrowser))).UpdateArrays(); } } } else { EditorGUILayout.HelpBox("The file name entered or the desired language is invalid", MessageType.Warning); } }