Editor/UltimateLightManagerToolLocalization.cs

Editor localization and migration for the Ultimate Light Manager tool. Defines available languages, migrates builder state defaults across versions, and provides localized text entries and helper methods to fetch/format labels and preset names for multiple languages.

File Access
using System.Collections.Generic;
using Dreams.UltimateLightManager;

namespace Dreams.UltimateLightManager.Editor;

public enum UltimateLightManagerToolLanguage
{
    French,
    English,
    Spanish,
    German,
    Russian
}

internal static class UltimateLightManagerToolStateMigration
{
    public static void ApplyDefaults( UltimateLightManagerBuilderState state )
    {
        if ( state == null )
        {
            return;
        }

        if ( state.ToolSettingsVersion < 1 )
        {
            state.ToolLanguage = UltimateLightManagerToolLanguage.French;
            state.ShowHelpTexts = true;
            state.ShowShortcutSection = true;
        }

        if ( state.ToolSettingsVersion < 2 )
        {
            state.LoadedPresetKey ??= string.Empty;
        }

        state.ToolSettingsVersion = 2;
    }
}

internal sealed class UltimateLightManagerToolTexts
{
    private readonly Dictionary<string, string> _entries;
    private readonly UltimateLightManagerToolLanguage _language;

    private UltimateLightManagerToolTexts( UltimateLightManagerToolLanguage language, Dictionary<string, string> entries )
    {
        _language = language;
        _entries = entries;
    }

    public string this[string key] => _entries.TryGetValue( key, out var value ) ? value : key;

    public string Format( string key, params object[] args )
    {
        return string.Format( this[key], args );
    }

    public string GetLanguageName( UltimateLightManagerToolLanguage language )
    {
        return language switch
        {
            UltimateLightManagerToolLanguage.French => "Français",
            UltimateLightManagerToolLanguage.English => "English",
            UltimateLightManagerToolLanguage.Spanish => "Español",
            UltimateLightManagerToolLanguage.German => "Deutsch",
            UltimateLightManagerToolLanguage.Russian => "Русский",
            _ => "Français"
        };
    }

    public string GetPresetName( UltimateLightManager.LightPreset preset )
    {
        return preset switch
        {
            UltimateLightManager.LightPreset.Custom => this["preset.custom"],
            UltimateLightManager.LightPreset.Candle => this["preset.candle"],
            UltimateLightManager.LightPreset.Torch => this["preset.torch"],
            UltimateLightManager.LightPreset.Neon => this["preset.neon"],
            UltimateLightManager.LightPreset.Alarm => this["preset.alarm"],
            UltimateLightManager.LightPreset.BrokenLamp => this["preset.broken_lamp"],
            UltimateLightManager.LightPreset.SciFi => this["preset.scifi"],
            UltimateLightManager.LightPreset.StreetLight => this["preset.street_light"],
            _ => preset.ToString()
        };
    }

    public string GetBuiltInPresetLabel( UltimateLightManager.LightPreset preset )
    {
        return Format( "preset.builtin_format", GetPresetName( preset ) );
    }

    public string GetCustomPresetLabel( string presetName )
    {
        return Format( "preset.custom_format", presetName );
    }

    public static UltimateLightManagerToolTexts For( UltimateLightManagerToolLanguage language )
    {
        return new UltimateLightManagerToolTexts( language, language switch
        {
            UltimateLightManagerToolLanguage.English => CreateEnglish(),
            UltimateLightManagerToolLanguage.Spanish => CreateSpanish(),
            UltimateLightManagerToolLanguage.German => CreateGerman(),
            UltimateLightManagerToolLanguage.Russian => CreateRussian(),
            _ => CreateFrench()
        } );
    }

    private static Dictionary<string, string> CreateFrench()
    {
        return new()
        {
            ["window.title"] = "Ultimate Light Manager",
            ["tab.creation"] = "Création",
            ["tab.selection"] = "Sélection",
            ["tab.groups"] = "Groupes",
            ["tab.settings"] = "Paramètres",
            ["group.creation"] = "Création",
            ["group.manipulation"] = "Manipulation",
            ["group.selection"] = "Sélection",
            ["group.parameters"] = "Paramètres",
            ["group.groups"] = "Groupes",
            ["group.gameplay"] = "Gameplay",
            ["group.settings"] = "Paramètres",
            ["group.display"] = "Affichage",
            ["label.preset"] = "Preset",
            ["label.language"] = "Langue",
            ["label.help_texts"] = "Descriptions et aides",
            ["label.shortcuts_panel"] = "Bloc raccourcis",
            ["label.group_format"] = "Groupe : {0}",
            ["label.power_grid_format"] = "Power Grid : {0}",
            ["label.active_mode_format"] = "Mode actif : {0}",
            ["button.from_selection"] = "Depuis la sélection",
            ["button.save"] = "Enregistrer",
            ["button.duplicate"] = "Dupliquer",
            ["button.rename"] = "Renommer",
            ["button.delete"] = "Supprimer",
            ["button.revert"] = "Revenir au preset",
            ["button.reset"] = "Réinitialiser",
            ["button.move"] = "Déplacer",
            ["button.rotate"] = "Rotation",
            ["button.scale"] = "Échelle",
            ["button.apply_draft_selection"] = "Appliquer le brouillon à la sélection",
            ["button.on"] = "Allumer",
            ["button.off"] = "Éteindre",
            ["button.toggle"] = "Inverser",
            ["button.assign_group"] = "Créer / Assigner groupe...",
            ["button.assign_power_grid"] = "Assigner Power Grid...",
            ["button.select_same_group"] = "Sélectionner même groupe",
            ["button.select_same_grid"] = "Sélectionner même grid",
            ["hint.creation_intro"] = "Choisis un preset, ajuste les réglages de base, puis crée une point light ou une spot light directement prête avec Ultimate Light Manager.",
            ["hint.preset_workflow"] = "Enregistrer met a jour le preset custom charge. Dupliquer cree une nouvelle copie. Revenir au preset annule les changements non sauvegardes.",
            ["hint.create_center"] = "Avec ce tool actif, fais un clic droit dans la scène puis \"Créer une light ici\" pour la poser exactement à l'endroit voulu.",
            ["hint.manipulation"] = "Les gizmos restent actifs dans ce mode pour déplacer, rotate ou scale tes lights comme avec Object Select.",
            ["hint.no_selection"] = "Sélectionne une ou plusieurs lights pour voir l'inspecteur complet du component et appliquer tes groupes ou presets en masse.",
            ["hint.parameters"] = "Tu retrouves ici le component complet, y compris ses groupes, onglets et options avancées, directement dans le tool scène.",
            ["hint.groups"] = "Sélectionne plusieurs lights puis assigne-leur le même groupe pour piloter une pièce entière depuis ton gameplay.",
            ["hint.gameplay"] = "Une fois les groupes posés, tu peux allumer ou éteindre toute une zone avec le LightGroup depuis ton gameplay.",
            ["hint.settings"] = "Personnalise l'interface du tool sans toucher à la langue globale de l'éditeur.",
            ["summary.none_selected"] = "Aucune light Ultimate Light Manager sélectionnée.",
            ["summary.one_selected"] = "1 light sélectionnée.",
            ["summary.many_selected"] = "{0} lights sélectionnées.",
            ["mode.move"] = "Déplacer",
            ["mode.rotate"] = "Rotation",
            ["mode.scale"] = "Échelle",
            ["example.group_state"] = "Exemple : UltimateLightManager.SetGroupState( \"Pièce 1\", false );",
            ["shortcut.activate_tool"] = "Activer le tool",
            ["shortcut.move_gizmo"] = "Gizmo déplacer",
            ["shortcut.rotate_gizmo"] = "Gizmo rotation",
            ["shortcut.scale_gizmo"] = "Gizmo échelle",
            ["shortcut.create_here"] = "Créer ici",
            ["shortcut.right_click"] = "Clic droit",
            ["dialog.save_preset.prompt"] = "Nom du preset :",
            ["dialog.save_preset.ok"] = "Enregistrer",
            ["dialog.save_preset.title"] = "Enregistrer un preset",
            ["dialog.duplicate_preset.prompt"] = "Nom du nouveau preset :",
            ["dialog.duplicate_preset.ok"] = "Dupliquer",
            ["dialog.duplicate_preset.title"] = "Dupliquer le preset",
            ["dialog.rename_preset.prompt"] = "Nouveau nom du preset :",
            ["dialog.rename_preset.ok"] = "Renommer",
            ["dialog.rename_preset.title"] = "Renommer le preset",
            ["dialog.delete_preset.message"] = "Supprimer le preset \"{0}\" ?",
            ["dialog.delete_preset.title"] = "Supprimer le preset",
            ["dialog.delete_preset.ok"] = "Supprimer",
            ["dialog.cancel"] = "Annuler",
            ["dialog.assign_group.prompt"] = "Nom du groupe :",
            ["dialog.assign_group.ok"] = "Assigner",
            ["dialog.assign_group.title"] = "Créer / Assigner groupe",
            ["dialog.assign_grid.prompt"] = "Nom du Power Grid :",
            ["dialog.assign_grid.ok"] = "Assigner",
            ["dialog.assign_grid.title"] = "Assigner Power Grid",
            ["scene.create_here"] = "Créer une light ici",
            ["settings.help_on"] = "Affichées",
            ["settings.help_off"] = "Masquées",
            ["settings.shortcuts_on"] = "Affiché",
            ["settings.shortcuts_off"] = "Masqué",
            ["settings.current_language_format"] = "Langue actuelle : {0}",
            ["status.preset_free"] = "Brouillon libre. Enregistre-le pour creer un preset complet.",
            ["status.preset_clean_format"] = "Preset courant : {0}",
            ["status.preset_modified_format"] = "Preset courant : {0} (modifie)",
            ["preset.builtin_format"] = "Builtin - {0}",
            ["preset.custom_format"] = "Custom - {0}",
            ["preset.custom"] = "Custom",
            ["preset.candle"] = "Bougie",
            ["preset.torch"] = "Torche",
            ["preset.neon"] = "Néon",
            ["preset.alarm"] = "Alarme",
            ["preset.broken_lamp"] = "Lampe cassée",
            ["preset.scifi"] = "Sci-Fi",
            ["preset.street_light"] = "Lampadaire"
        };
    }

    private static Dictionary<string, string> CreateEnglish()
    {
        return new()
        {
            ["window.title"] = "Ultimate Light Manager",
            ["tab.creation"] = "Creation",
            ["tab.selection"] = "Selection",
            ["tab.groups"] = "Groups",
            ["tab.settings"] = "Settings",
            ["group.creation"] = "Creation",
            ["group.manipulation"] = "Manipulation",
            ["group.selection"] = "Selection",
            ["group.parameters"] = "Parameters",
            ["group.groups"] = "Groups",
            ["group.gameplay"] = "Gameplay",
            ["group.settings"] = "Settings",
            ["group.display"] = "Display",
            ["label.preset"] = "Preset",
            ["label.language"] = "Language",
            ["label.help_texts"] = "Descriptions and hints",
            ["label.shortcuts_panel"] = "Shortcuts panel",
            ["label.group_format"] = "Group: {0}",
            ["label.power_grid_format"] = "Power Grid: {0}",
            ["label.active_mode_format"] = "Active mode: {0}",
            ["button.from_selection"] = "From selection",
            ["button.save"] = "Save",
            ["button.duplicate"] = "Duplicate",
            ["button.rename"] = "Rename",
            ["button.delete"] = "Delete",
            ["button.revert"] = "Revert preset",
            ["button.reset"] = "Reset",
            ["button.move"] = "Move",
            ["button.rotate"] = "Rotate",
            ["button.scale"] = "Scale",
            ["button.apply_draft_selection"] = "Apply draft to selection",
            ["button.on"] = "Turn on",
            ["button.off"] = "Turn off",
            ["button.toggle"] = "Toggle",
            ["button.assign_group"] = "Create / Assign group...",
            ["button.assign_power_grid"] = "Assign Power Grid...",
            ["button.select_same_group"] = "Select same group",
            ["button.select_same_grid"] = "Select same grid",
            ["hint.creation_intro"] = "Pick a preset, tweak the base settings, then create a point light or a spot light that is already configured with Ultimate Light Manager.",
            ["hint.preset_workflow"] = "Save updates the loaded custom preset. Duplicate creates a new copy. Revert preset rolls back unsaved changes.",
            ["hint.create_center"] = "With this tool active, right-click in the scene and use \"Create Light Here\" to place a light exactly where you want it.",
            ["hint.manipulation"] = "Gizmos stay active in this mode so you can move, rotate, or scale your lights just like Object Select.",
            ["hint.no_selection"] = "Select one or more lights to see the full component inspector and batch-apply your groups or presets.",
            ["hint.parameters"] = "You can access the full component here, including its groups, tabs, and advanced options, directly inside the scene tool.",
            ["hint.groups"] = "Select multiple lights and assign them to the same group to control an entire room from gameplay.",
            ["hint.gameplay"] = "Once your groups are set, you can turn an entire zone on or off with its LightGroup from gameplay.",
            ["hint.settings"] = "Customize the tool interface without changing the editor's global language.",
            ["summary.none_selected"] = "No Ultimate Light Manager light selected.",
            ["summary.one_selected"] = "1 light selected.",
            ["summary.many_selected"] = "{0} lights selected.",
            ["mode.move"] = "Move",
            ["mode.rotate"] = "Rotate",
            ["mode.scale"] = "Scale",
            ["example.group_state"] = "Example: UltimateLightManager.SetGroupState( \"Room 1\", false );",
            ["shortcut.activate_tool"] = "Activate tool",
            ["shortcut.move_gizmo"] = "Move gizmo",
            ["shortcut.rotate_gizmo"] = "Rotate gizmo",
            ["shortcut.scale_gizmo"] = "Scale gizmo",
            ["shortcut.create_here"] = "Create here",
            ["shortcut.right_click"] = "Right Click",
            ["dialog.save_preset.prompt"] = "Preset name:",
            ["dialog.save_preset.ok"] = "Save",
            ["dialog.save_preset.title"] = "Save preset",
            ["dialog.duplicate_preset.prompt"] = "New preset name:",
            ["dialog.duplicate_preset.ok"] = "Duplicate",
            ["dialog.duplicate_preset.title"] = "Duplicate preset",
            ["dialog.rename_preset.prompt"] = "New preset name:",
            ["dialog.rename_preset.ok"] = "Rename",
            ["dialog.rename_preset.title"] = "Rename preset",
            ["dialog.delete_preset.message"] = "Delete preset \"{0}\"?",
            ["dialog.delete_preset.title"] = "Delete preset",
            ["dialog.delete_preset.ok"] = "Delete",
            ["dialog.cancel"] = "Cancel",
            ["dialog.assign_group.prompt"] = "Group name:",
            ["dialog.assign_group.ok"] = "Assign",
            ["dialog.assign_group.title"] = "Create / Assign group",
            ["dialog.assign_grid.prompt"] = "Power Grid name:",
            ["dialog.assign_grid.ok"] = "Assign",
            ["dialog.assign_grid.title"] = "Assign Power Grid",
            ["scene.create_here"] = "Create Light Here",
            ["settings.help_on"] = "Shown",
            ["settings.help_off"] = "Hidden",
            ["settings.shortcuts_on"] = "Shown",
            ["settings.shortcuts_off"] = "Hidden",
            ["settings.current_language_format"] = "Current language: {0}",
            ["status.preset_free"] = "Free draft. Save it to create a complete preset.",
            ["status.preset_clean_format"] = "Current preset: {0}",
            ["status.preset_modified_format"] = "Current preset: {0} (modified)",
            ["preset.builtin_format"] = "Builtin - {0}",
            ["preset.custom_format"] = "Custom - {0}",
            ["preset.custom"] = "Custom",
            ["preset.candle"] = "Candle",
            ["preset.torch"] = "Torch",
            ["preset.neon"] = "Neon",
            ["preset.alarm"] = "Alarm",
            ["preset.broken_lamp"] = "Broken Lamp",
            ["preset.scifi"] = "Sci-Fi",
            ["preset.street_light"] = "Street Light"
        };
    }

    private static Dictionary<string, string> CreateSpanish()
    {
        return new()
        {
            ["window.title"] = "Ultimate Light Manager",
            ["tab.creation"] = "Creación",
            ["tab.selection"] = "Selección",
            ["tab.groups"] = "Grupos",
            ["tab.settings"] = "Parámetros",
            ["group.creation"] = "Creación",
            ["group.manipulation"] = "Manipulación",
            ["group.selection"] = "Selección",
            ["group.parameters"] = "Parámetros",
            ["group.groups"] = "Grupos",
            ["group.gameplay"] = "Gameplay",
            ["group.settings"] = "Parámetros",
            ["group.display"] = "Visualización",
            ["label.preset"] = "Preset",
            ["label.language"] = "Idioma",
            ["label.help_texts"] = "Descripciones y ayudas",
            ["label.shortcuts_panel"] = "Bloque de atajos",
            ["label.group_format"] = "Grupo: {0}",
            ["label.power_grid_format"] = "Power Grid: {0}",
            ["label.active_mode_format"] = "Modo activo: {0}",
            ["button.from_selection"] = "Desde la selección",
            ["button.save"] = "Guardar",
            ["button.duplicate"] = "Duplicar",
            ["button.rename"] = "Renombrar",
            ["button.delete"] = "Eliminar",
            ["button.revert"] = "Volver al preset",
            ["button.reset"] = "Restablecer",
            ["button.move"] = "Mover",
            ["button.rotate"] = "Rotar",
            ["button.scale"] = "Escalar",
            ["button.apply_draft_selection"] = "Aplicar borrador a la selección",
            ["button.on"] = "Encender",
            ["button.off"] = "Apagar",
            ["button.toggle"] = "Alternar",
            ["button.assign_group"] = "Crear / Asignar grupo...",
            ["button.assign_power_grid"] = "Asignar Power Grid...",
            ["button.select_same_group"] = "Seleccionar mismo grupo",
            ["button.select_same_grid"] = "Seleccionar misma grid",
            ["hint.creation_intro"] = "Elige un preset, ajusta la configuración base y luego crea una point light o una spot light ya preparada con Ultimate Light Manager.",
            ["hint.preset_workflow"] = "Guardar actualiza el preset custom cargado. Duplicar crea una nueva copia. Volver al preset deshace los cambios no guardados.",
            ["hint.create_center"] = "Con esta herramienta activa, haz clic derecho en la escena y usa \"Crear luz aquí\" para colocar una luz exactamente donde quieras.",
            ["hint.manipulation"] = "Los gizmos siguen activos en este modo para mover, rotar o escalar tus luces igual que con Object Select.",
            ["hint.no_selection"] = "Selecciona una o varias luces para ver el inspector completo del componente y aplicar grupos o presets en lote.",
            ["hint.parameters"] = "Aquí recuperas el componente completo, incluidos sus grupos, pestañas y opciones avanzadas, directamente en la herramienta de escena.",
            ["hint.groups"] = "Selecciona varias luces y asígnales el mismo grupo para controlar una habitación completa desde el gameplay.",
            ["hint.gameplay"] = "Una vez creados los grupos, puedes encender o apagar una zona completa con su LightGroup desde el gameplay.",
            ["hint.settings"] = "Personaliza la interfaz de la herramienta sin cambiar el idioma global del editor.",
            ["summary.none_selected"] = "No hay ninguna luz Ultimate Light Manager seleccionada.",
            ["summary.one_selected"] = "1 luz seleccionada.",
            ["summary.many_selected"] = "{0} luces seleccionadas.",
            ["mode.move"] = "Mover",
            ["mode.rotate"] = "Rotar",
            ["mode.scale"] = "Escalar",
            ["example.group_state"] = "Ejemplo: UltimateLightManager.SetGroupState( \"Habitación 1\", false );",
            ["shortcut.activate_tool"] = "Activar herramienta",
            ["shortcut.move_gizmo"] = "Gizmo mover",
            ["shortcut.rotate_gizmo"] = "Gizmo rotar",
            ["shortcut.scale_gizmo"] = "Gizmo escalar",
            ["shortcut.create_here"] = "Crear aquí",
            ["shortcut.right_click"] = "Clic derecho",
            ["dialog.save_preset.prompt"] = "Nombre del preset:",
            ["dialog.save_preset.ok"] = "Guardar",
            ["dialog.save_preset.title"] = "Guardar preset",
            ["dialog.duplicate_preset.prompt"] = "Nombre del nuevo preset:",
            ["dialog.duplicate_preset.ok"] = "Duplicar",
            ["dialog.duplicate_preset.title"] = "Duplicar preset",
            ["dialog.rename_preset.prompt"] = "Nuevo nombre del preset:",
            ["dialog.rename_preset.ok"] = "Renombrar",
            ["dialog.rename_preset.title"] = "Renombrar preset",
            ["dialog.delete_preset.message"] = "¿Eliminar el preset \"{0}\"?",
            ["dialog.delete_preset.title"] = "Eliminar preset",
            ["dialog.delete_preset.ok"] = "Eliminar",
            ["dialog.cancel"] = "Cancelar",
            ["dialog.assign_group.prompt"] = "Nombre del grupo:",
            ["dialog.assign_group.ok"] = "Asignar",
            ["dialog.assign_group.title"] = "Crear / Asignar grupo",
            ["dialog.assign_grid.prompt"] = "Nombre del Power Grid:",
            ["dialog.assign_grid.ok"] = "Asignar",
            ["dialog.assign_grid.title"] = "Asignar Power Grid",
            ["scene.create_here"] = "Crear luz aquí",
            ["settings.help_on"] = "Mostradas",
            ["settings.help_off"] = "Ocultas",
            ["settings.shortcuts_on"] = "Mostrado",
            ["settings.shortcuts_off"] = "Oculto",
            ["settings.current_language_format"] = "Idioma actual: {0}",
            ["status.preset_free"] = "Borrador libre. Guardalo para crear un preset completo.",
            ["status.preset_clean_format"] = "Preset actual: {0}",
            ["status.preset_modified_format"] = "Preset actual: {0} (modificado)",
            ["preset.builtin_format"] = "Builtin - {0}",
            ["preset.custom_format"] = "Custom - {0}",
            ["preset.custom"] = "Custom",
            ["preset.candle"] = "Vela",
            ["preset.torch"] = "Antorcha",
            ["preset.neon"] = "Neón",
            ["preset.alarm"] = "Alarma",
            ["preset.broken_lamp"] = "Lámpara rota",
            ["preset.scifi"] = "Sci-Fi",
            ["preset.street_light"] = "Farola"
        };
    }

    private static Dictionary<string, string> CreateGerman()
    {
        return new()
        {
            ["window.title"] = "Ultimate Light Manager",
            ["tab.creation"] = "Erstellung",
            ["tab.selection"] = "Auswahl",
            ["tab.groups"] = "Gruppen",
            ["tab.settings"] = "Einstellungen",
            ["group.creation"] = "Erstellung",
            ["group.manipulation"] = "Manipulation",
            ["group.selection"] = "Auswahl",
            ["group.parameters"] = "Parameter",
            ["group.groups"] = "Gruppen",
            ["group.gameplay"] = "Gameplay",
            ["group.settings"] = "Einstellungen",
            ["group.display"] = "Anzeige",
            ["label.preset"] = "Preset",
            ["label.language"] = "Sprache",
            ["label.help_texts"] = "Beschreibungen und Hilfen",
            ["label.shortcuts_panel"] = "Shortcut-Bereich",
            ["label.group_format"] = "Gruppe: {0}",
            ["label.power_grid_format"] = "Power Grid: {0}",
            ["label.active_mode_format"] = "Aktiver Modus: {0}",
            ["button.from_selection"] = "Aus Auswahl",
            ["button.save"] = "Speichern",
            ["button.duplicate"] = "Duplizieren",
            ["button.rename"] = "Umbenennen",
            ["button.delete"] = "Löschen",
            ["button.revert"] = "Preset wiederherstellen",
            ["button.reset"] = "Zurücksetzen",
            ["button.move"] = "Verschieben",
            ["button.rotate"] = "Drehen",
            ["button.scale"] = "Skalieren",
            ["button.apply_draft_selection"] = "Entwurf auf Auswahl anwenden",
            ["button.on"] = "Einschalten",
            ["button.off"] = "Ausschalten",
            ["button.toggle"] = "Umschalten",
            ["button.assign_group"] = "Gruppe erstellen / zuweisen...",
            ["button.assign_power_grid"] = "Power Grid zuweisen...",
            ["button.select_same_group"] = "Gleiche Gruppe wählen",
            ["button.select_same_grid"] = "Gleiches Grid wählen",
            ["hint.creation_intro"] = "Wähle ein Preset, passe die Grundeinstellungen an und erstelle dann ein Point Light oder Spot Light, das bereits mit Ultimate Light Manager vorbereitet ist.",
            ["hint.preset_workflow"] = "Speichern aktualisiert das geladene Custom-Preset. Duplizieren erstellt eine neue Kopie. Preset wiederherstellen verwirft ungespeicherte Anderungen.",
            ["hint.create_center"] = "Wenn dieses Tool aktiv ist, klicke mit der rechten Maustaste in die Szene und nutze \"Licht hier erstellen\", um ein Licht genau dort zu platzieren, wo du es brauchst.",
            ["hint.manipulation"] = "Die Gizmos bleiben in diesem Modus aktiv, damit du deine Lichter wie bei Object Select verschieben, drehen oder skalieren kannst.",
            ["hint.no_selection"] = "Wähle ein oder mehrere Lichter aus, um den vollständigen Komponenten-Inspector zu sehen und Gruppen oder Presets gesammelt anzuwenden.",
            ["hint.parameters"] = "Hier findest du die komplette Komponente mit Gruppen, Tabs und erweiterten Optionen direkt im Szenen-Tool.",
            ["hint.groups"] = "Wähle mehrere Lichter aus und weise ihnen dieselbe Gruppe zu, um einen ganzen Raum aus dem Gameplay heraus zu steuern.",
            ["hint.gameplay"] = "Sobald deine Gruppen gesetzt sind, kannst du eine ganze Zone über ihren LightGroup-Namen im Gameplay ein- oder ausschalten.",
            ["hint.settings"] = "Passe die Tool-Oberfläche an, ohne die globale Sprache des Editors zu ändern.",
            ["summary.none_selected"] = "Kein Ultimate Light Manager-Licht ausgewählt.",
            ["summary.one_selected"] = "1 Licht ausgewählt.",
            ["summary.many_selected"] = "{0} Lichter ausgewählt.",
            ["mode.move"] = "Verschieben",
            ["mode.rotate"] = "Drehen",
            ["mode.scale"] = "Skalieren",
            ["example.group_state"] = "Beispiel: UltimateLightManager.SetGroupState( \"Raum 1\", false );",
            ["shortcut.activate_tool"] = "Tool aktivieren",
            ["shortcut.move_gizmo"] = "Verschiebe-Gizmo",
            ["shortcut.rotate_gizmo"] = "Rotations-Gizmo",
            ["shortcut.scale_gizmo"] = "Skalierungs-Gizmo",
            ["shortcut.create_here"] = "Hier erstellen",
            ["shortcut.right_click"] = "Rechtsklick",
            ["dialog.save_preset.prompt"] = "Preset-Name:",
            ["dialog.save_preset.ok"] = "Speichern",
            ["dialog.save_preset.title"] = "Preset speichern",
            ["dialog.duplicate_preset.prompt"] = "Name des neuen Presets:",
            ["dialog.duplicate_preset.ok"] = "Duplizieren",
            ["dialog.duplicate_preset.title"] = "Preset duplizieren",
            ["dialog.rename_preset.prompt"] = "Neuer Preset-Name:",
            ["dialog.rename_preset.ok"] = "Umbenennen",
            ["dialog.rename_preset.title"] = "Preset umbenennen",
            ["dialog.delete_preset.message"] = "Preset \"{0}\" löschen?",
            ["dialog.delete_preset.title"] = "Preset löschen",
            ["dialog.delete_preset.ok"] = "Löschen",
            ["dialog.cancel"] = "Abbrechen",
            ["dialog.assign_group.prompt"] = "Gruppenname:",
            ["dialog.assign_group.ok"] = "Zuweisen",
            ["dialog.assign_group.title"] = "Gruppe erstellen / zuweisen",
            ["dialog.assign_grid.prompt"] = "Name des Power Grid:",
            ["dialog.assign_grid.ok"] = "Zuweisen",
            ["dialog.assign_grid.title"] = "Power Grid zuweisen",
            ["scene.create_here"] = "Licht hier erstellen",
            ["settings.help_on"] = "Sichtbar",
            ["settings.help_off"] = "Ausgeblendet",
            ["settings.shortcuts_on"] = "Sichtbar",
            ["settings.shortcuts_off"] = "Ausgeblendet",
            ["settings.current_language_format"] = "Aktuelle Sprache: {0}",
            ["status.preset_free"] = "Freier Entwurf. Speichere ihn als komplettes Preset.",
            ["status.preset_clean_format"] = "Aktuelles Preset: {0}",
            ["status.preset_modified_format"] = "Aktuelles Preset: {0} (geandert)",
            ["preset.builtin_format"] = "Builtin - {0}",
            ["preset.custom_format"] = "Custom - {0}",
            ["preset.custom"] = "Custom",
            ["preset.candle"] = "Kerze",
            ["preset.torch"] = "Fackel",
            ["preset.neon"] = "Neon",
            ["preset.alarm"] = "Alarm",
            ["preset.broken_lamp"] = "Defekte Lampe",
            ["preset.scifi"] = "Sci-Fi",
            ["preset.street_light"] = "Straßenlampe"
        };
    }

    private static Dictionary<string, string> CreateRussian()
    {
        return new()
        {
            ["window.title"] = "Ultimate Light Manager",
            ["tab.creation"] = "Создание",
            ["tab.selection"] = "Выбор",
            ["tab.groups"] = "Группы",
            ["tab.settings"] = "Настройки",
            ["group.creation"] = "Создание",
            ["group.manipulation"] = "Манипуляция",
            ["group.selection"] = "Выбор",
            ["group.parameters"] = "Параметры",
            ["group.groups"] = "Группы",
            ["group.gameplay"] = "Геймплей",
            ["group.settings"] = "Настройки",
            ["group.display"] = "Отображение",
            ["label.preset"] = "Пресет",
            ["label.language"] = "Язык",
            ["label.help_texts"] = "Описания и подсказки",
            ["label.shortcuts_panel"] = "Блок сочетаний",
            ["label.group_format"] = "Группа: {0}",
            ["label.power_grid_format"] = "Power Grid: {0}",
            ["label.active_mode_format"] = "Активный режим: {0}",
            ["button.from_selection"] = "Из выделения",
            ["button.save"] = "Сохранить",
            ["button.duplicate"] = "Дублировать",
            ["button.rename"] = "Переименовать",
            ["button.delete"] = "Удалить",
            ["button.revert"] = "Вернуть пресет",
            ["button.reset"] = "Сбросить",
            ["button.move"] = "Переместить",
            ["button.rotate"] = "Повернуть",
            ["button.scale"] = "Масштаб",
            ["button.apply_draft_selection"] = "Применить черновик к выделению",
            ["button.on"] = "Включить",
            ["button.off"] = "Выключить",
            ["button.toggle"] = "Переключить",
            ["button.assign_group"] = "Создать / назначить группу...",
            ["button.assign_power_grid"] = "Назначить Power Grid...",
            ["button.select_same_group"] = "Выбрать ту же группу",
            ["button.select_same_grid"] = "Выбрать ту же grid",
            ["hint.creation_intro"] = "Выбери пресет, настрой базовые параметры, затем создай point light или spot light, уже подготовленный для Ultimate Light Manager.",
            ["hint.preset_workflow"] = "Сохранение обновляет загруженный custom-пресет. Дубликат создает новую копию. Возврат пресета отменяет несохраненные изменения.",
            ["hint.create_center"] = "Когда инструмент активен, щёлкни правой кнопкой по сцене и используй \"Создать свет здесь\", чтобы поставить свет точно в нужную точку.",
            ["hint.manipulation"] = "В этом режиме gizmo остаются активными, поэтому ты можешь перемещать, вращать и масштабировать свет так же, как в Object Select.",
            ["hint.no_selection"] = "Выбери один или несколько источников света, чтобы увидеть полный инспектор компонента и массово применить группы или пресеты.",
            ["hint.parameters"] = "Здесь доступен полный компонент со всеми группами, вкладками и расширенными параметрами прямо внутри инструмента сцены.",
            ["hint.groups"] = "Выдели несколько источников света и назначь им одну группу, чтобы управлять всей комнатой из геймплея.",
            ["hint.gameplay"] = "Когда группы настроены, ты можешь включать и выключать целую зону по имени LightGroup из геймплея.",
            ["hint.settings"] = "Настрой интерфейс инструмента, не меняя глобальный язык редактора.",
            ["summary.none_selected"] = "Не выбран ни один свет Ultimate Light Manager.",
            ["summary.one_selected"] = "Выбран 1 свет.",
            ["summary.many_selected"] = "Выбрано светов: {0}.",
            ["mode.move"] = "Перемещение",
            ["mode.rotate"] = "Поворот",
            ["mode.scale"] = "Масштаб",
            ["example.group_state"] = "Пример: UltimateLightManager.SetGroupState( \"Комната 1\", false );",
            ["shortcut.activate_tool"] = "Активировать инструмент",
            ["shortcut.move_gizmo"] = "Gizmo перемещения",
            ["shortcut.rotate_gizmo"] = "Gizmo поворота",
            ["shortcut.scale_gizmo"] = "Gizmo масштаба",
            ["shortcut.create_here"] = "Создать здесь",
            ["shortcut.right_click"] = "Правый клик",
            ["dialog.save_preset.prompt"] = "Имя пресета:",
            ["dialog.save_preset.ok"] = "Сохранить",
            ["dialog.save_preset.title"] = "Сохранить пресет",
            ["dialog.duplicate_preset.prompt"] = "Имя нового пресета:",
            ["dialog.duplicate_preset.ok"] = "Дублировать",
            ["dialog.duplicate_preset.title"] = "Дублировать пресет",
            ["dialog.rename_preset.prompt"] = "Новое имя пресета:",
            ["dialog.rename_preset.ok"] = "Переименовать",
            ["dialog.rename_preset.title"] = "Переименовать пресет",
            ["dialog.delete_preset.message"] = "Удалить пресет \"{0}\"?",
            ["dialog.delete_preset.title"] = "Удалить пресет",
            ["dialog.delete_preset.ok"] = "Удалить",
            ["dialog.cancel"] = "Отмена",
            ["dialog.assign_group.prompt"] = "Имя группы:",
            ["dialog.assign_group.ok"] = "Назначить",
            ["dialog.assign_group.title"] = "Создать / назначить группу",
            ["dialog.assign_grid.prompt"] = "Имя Power Grid:",
            ["dialog.assign_grid.ok"] = "Назначить",
            ["dialog.assign_grid.title"] = "Назначить Power Grid",
            ["scene.create_here"] = "Создать свет здесь",
            ["settings.help_on"] = "Показаны",
            ["settings.help_off"] = "Скрыты",
            ["settings.shortcuts_on"] = "Показан",
            ["settings.shortcuts_off"] = "Скрыт",
            ["settings.current_language_format"] = "Текущий язык: {0}",
            ["status.preset_free"] = "Свободный черновик. Сохраните его как полный пресет.",
            ["status.preset_clean_format"] = "Текущий пресет: {0}",
            ["status.preset_modified_format"] = "Текущий пресет: {0} (изменен)",
            ["preset.builtin_format"] = "Builtin - {0}",
            ["preset.custom_format"] = "Custom - {0}",
            ["preset.custom"] = "Custom",
            ["preset.candle"] = "Свеча",
            ["preset.torch"] = "Факел",
            ["preset.neon"] = "Неон",
            ["preset.alarm"] = "Тревога",
            ["preset.broken_lamp"] = "Сломанная лампа",
            ["preset.scifi"] = "Sci-Fi",
            ["preset.street_light"] = "Уличный фонарь"
        };
    }
}