L10N = { "en": { "app_title": "Whyx-PROmpTea", "input_label": "Your Prompt", "input_placeholder": "Paste your prompt here...\nExample: masterpiece, best quality, 1girl, hatsune miku, vocaloid, smile, blue hair, twintails", "input_desc": "Enter any text prompt. Include a subject (1girl, 1boy) for best results. Artist tags like artist:hews are supported.", "model_label": "Model", "model_desc": "Anima: anime-style SD model. Illustrious XL: high-quality versatile SDXL model.", "anima": "Anima", "illustrious": "Illustrious XL", "rating_label": "Rating", "rating_desc": "Content safety level. PG-PG13 is SFW. R-R+ allows suggestive/NSFW content.", "rating_pg": "PG (SFW)", "rating_pg13": "PG-13", "rating_pg16": "PG-16+", "rating_r": "R", "rating_rplus": "R+", "variations_label": "Variations", "variations_desc": "Number of prompt variations to generate (1-10). More = more diverse outputs.", "creativity_label": "Creativity", "creativity_desc": "6 levels: Very Low (1 tag/cat, 10% replacement of your tags, no shuffle) → Extreme (5-10 tags/cat, 60% replacement, cross-category injection via rewrite_map, up to 3 wildcard categories, 30% synonym substitution, full shuffle, low diversity threshold). Controls how many new tags are added and how aggressively existing ones are replaced or substituted.", "creativity_very_low": "Very Low", "creativity_low": "Low", "creativity_medium": "Medium", "creativity_high": "High", "creativity_very_high": "Very High", "creativity_extreme": "Extreme", "weight_label": "Tag Weights", "weight_desc": "Off: plain tags. Light: quality tags (masterpiece, best quality), artists (1.2-1.4x) and impactful effects (bloom, depth of field, dramatic lighting, etc.) get boosted. On: all tags get random weights (0.9-1.1x).", "weight_off": "Off", "weight_light": "Light", "weight_on": "On", "categories_label": "Enhancement Categories", "categories_desc": "Select which tag categories to enhance your prompt with. Each category injects context-aware tags that are automatically filtered for conflicts, deduplicated (exact + synonym + fuzzy), and optionally enriched via web search (Danbooru). Creativity level controls how many tags per category and how aggressively existing tags are replaced.", "enable_cat": "Enable {}", "quality": "Quality", "quality_desc": "Quality & rating: masterpiece, best quality, score_9", "lighting": "Lighting", "lighting_desc": "Lighting styles: sunlight, neon glow, god rays", "composition": "Composition", "composition_desc": "Shot framing: dutch angle, aerial shot", "effects": "Visual Effects", "effects_desc": "Post-processing FX: bloom, depth of field, glitch", "atmosphere": "Atmosphere", "atmosphere_desc": "Mood & tone: dreamy, foreboding, nostalgic", "framing": "Framing", "framing_desc": "Camera angles: from above, rule of thirds", "style": "Style", "style_desc": "Art genres: ukiyo-e, ghibli, oil painting", "colors": "Colors", "colors_desc": "Color grading: teal & orange, sepia, duotone", "background": "Background", "background_desc": "Locations: city street, castle ruins, shrine", "pose": "Pose", "pose_desc": "Character poses: fighting stance, mid-air, meditating", "expression": "Expression", "expression_desc": "Expressions & archetypes: blush, smug, tsundere", "clothing": "Clothing", "clothing_desc": "Outfits: hoodie, kimono, armor", "special_fx": "Special FX", "special_fx_desc": "Magic & elemental FX: magic circle, portal, lightning aura", "nsfw": "NSFW", "nsfw_desc": "Adult tags: ahegao, nude, bondage", "year_meta": "Year / Meta", "year_meta_desc": "Temporal & technical: year 2025, highres, absurdres", "animal": "Animals", "animal_desc": "Creature features: cat ears, wings, dragon", "furry": "Furry", "furry_desc": "Furry & anthro: nekomimi, fluffy tail, paw pads", "object": "Objects", "object_desc": "Props & weapons: sword, glasses, umbrella", "food": "Food", "food_desc": "Food & drinks: sushi, ramen, cake", "vehicle": "Vehicles", "vehicle_desc": "Cars, ships, mecha & transport", "weapon": "Weapons", "weapon_desc": "Swords, bows, guns & armaments", "architecture": "Architecture", "architecture_desc": "Castles, towers, ruins & buildings", "demon": "Demon", "demon_desc": "Demonic auras, hellfire, dark magic & infernal themes", "angelic": "Angelic", "angelic_desc": "Holy auras, divine light, angel wings & sacred themes", "hair": "Hair", "hair_desc": "Hair colors, styles & accessories: twintails, ahoge, kanzashi", "body": "Body", "body_desc": "Body parts & details: collarbone, navel, freckles, abs", "accessory": "Accessory", "accessory_desc": "Jewelry & wearables: earrings, choker, goggles, sash", "season": "Season", "season_desc": "Seasons, holidays & weather: cherry blossoms, snow, christmas", "artist_section": "Artist Style", "artist_label": "Artist", "artist_style_placeholder": "Filter by style...", "artist_style_desc": "Filter artists by their art style: vibrant, dark, cute, elegant, etc.", "artist_all": "All", "artist_select": "Select Artists", "artist_search_label": "Search Artists", "artist_search_placeholder": "Type artist name, style or tag...", "artist_search_desc": "Search by artist name, style or signature tags. Top 50 popular artists shown by default.", "artist_preview_title": "Artist Preview", "artist_preview_empty": "Select an artist to see description, similar artists and Danbooru preview link.", "artist_select_desc": "Pick specific Danbooru artists. Their signature style tags will be injected. Up to 3 recommended.", "artist_placeholder": "Pick artists...", "tandem_section": "Artist Tandems", "tandem_label": "Tandems", "tandem_random": "Random Tandem", "tandem_random_desc": "Enable to randomly pick a compatible artist pair each generation.", "tandem_select": "Select Tandem", "tandem_select_desc": "Choose a pre-matched artist pair with compatible styles.", "tandem_placeholder": "Pick a tandem...", "tandem_blend": "Style Blend", "presets_label": "Quick Presets", "presets_desc": "One-click preset combinations for common styles.", "preset_cinematic": "Cinematic", "preset_cinematic_desc": "Film-like quality with dramatic lighting and atmosphere.", "preset_dreamy": "Dreamy", "preset_dreamy_desc": "Soft, ethereal, pastel colors with dreamy atmosphere.", "preset_vibrant": "Vibrant", "preset_vibrant_desc": "Bold colors, flat color, thick outlines for pop art style.", "preset_natural": "Natural", "preset_natural_desc": "Realistic lighting, natural colors, minimal effects.", "preset_dramatic": "Dramatic", "preset_dramatic_desc": "High contrast, dramatic lighting, bold compositions.", "preset_kawaii": "Kawaii", "preset_kawaii_desc": "Cute, soft, pastel colors with kawaii style tags.", "preset_gothic": "Gothic", "preset_gothic_desc": "Dark, moody atmosphere with gothic style elements.", "preset_cyberpunk": "Cyberpunk", "preset_cyberpunk_desc": "Neon, futuristic, tech-noir atmosphere.", "preset_watercolor": "Watercolor", "preset_watercolor_desc": "Soft, painterly watercolor aesthetic.", "preset_portrait": "Portrait", "preset_portrait_desc": "Portrait framing with detailed face and soft lighting.", "preset_landscape": "Landscape", "preset_landscape_desc": "Wide shot, detailed background, nature or cityscape.", "preset_mecha": "Mecha", "preset_mecha_desc": "Mechanical elements, detailed robots, sci-fi style.", "preset_fantasy": "Fantasy", "preset_fantasy_desc": "Magical effects, fantasy atmosphere, mythical creatures.", "preset_noir": "Noir", "preset_noir_desc": "Dark noir aesthetic with dramatic shadows.", "preset_sakura": "Sakura", "preset_sakura_desc": "Japanese aesthetic with cherry blossoms, traditional elements.", "preset_underwater": "Underwater", "preset_underwater_desc": "Underwater effects, aquatic atmosphere, blue tones.", "preset_space": "Space", "preset_space_desc": "Cosmic background, stars, planets, sci-fi atmosphere.", "preset_detailed_art": "Detailed Art", "preset_detailed_art_desc": "High detail tags: highres, absurdres, incredibly absurdres.", "preset_moe_blobs": "Moe Blobs", "preset_moe_blobs_desc": "Chibi, cute, soft Moe aesthetic with big eyes.", "preset_warrior": "Warrior", "preset_warrior_desc": "Action poses, armor, weapons, dynamic combat style.", "preset_retro": "Retro", "preset_retro_desc": "Vintage retro style with film grain and warm nostalgic colors.", "preset_steampunk": "Steampunk", "preset_steampunk_desc": "Brass gears, steam tech and Victorian sci-fi atmosphere.", "preset_magical_girl": "Magical Girl", "preset_magical_girl_desc": "Sparkles, magical outfits, transformation effects and cute expressions.", "preset_horror": "Horror", "preset_horror_desc": "Dark scary atmosphere, harsh lighting and frightening expressions.", "preset_winter": "Winter", "preset_winter_desc": "Snowy landscapes, cold colors and warm winter clothing.", "preset_summer": "Summer", "preset_summer_desc": "Bright sunny scenes, beach or meadow backgrounds and vibrant colors.", "preset_angelic": "Angelic", "preset_angelic_desc": "Holy ethereal glow, soft divine lighting and pure atmosphere.", "preset_slice_of_life": "Slice of Life", "preset_slice_of_life_desc": "Casual everyday scenes with natural poses and warm mood.", "preset_action": "Action", "preset_action_desc": "Dynamic movement, speed lines, impact sparks and energetic poses.", "preset_romantic": "Romantic", "preset_romantic_desc": "Soft romantic lighting, tender expressions and warm colors.", "preset_demon": "Demon", "preset_demon_desc": "Dark infernal aura, fiery effects and menacing expressions.", "preset_fantasy_creature": "Fantasy Creature", "preset_fantasy_creature_desc": "Mythical beasts, magical habitats and creature effects.", "preset_pirate": "Pirate / Nautical", "preset_pirate_desc": "Swashbuckling adventure, naval gear, ocean backgrounds.", "preset_sci_fi": "Sci-Fi Commander", "preset_sci_fi_desc": "Futuristic gear, energy weapons, neon and hologram effects.", "preset_medieval": "Medieval / Renaissance", "preset_medieval_desc": "Castles, knights, royal attire and torchlit atmosphere.", "preset_mecha_pilot": "Mecha Pilot", "preset_mecha_pilot_desc": "Cockpit view, pilot suits, giant robot controls.", "preset_maid_cafe": "Maid Cafe", "preset_maid_cafe_desc": "Maid outfits, cafe setting, sweet treats and warm colors.", "preset_holiday": "Holiday / Christmas", "preset_holiday_desc": "Festive decorations, holiday outfits, seasonal atmosphere.", "preset_furry_anthro": "Furry / Anthro", "preset_furry_anthro_desc": "Anthro characters, animal ears, fluffy tails, feral expressions.", "preset_school": "School / Uniform", "preset_school_desc": "School uniforms, classroom settings, youthful expressions.", "generate_btn": "✨ Generate", "generate_btn_loading": "⏳ Generating...", "mode_label": "Mode", "mode_desc": "Standard Vary: add category tags to your prompt. Full Rewrite: rebuild prompt from scratch using your concepts.", "mode_standard": "Standard Vary", "mode_rewrite": "Full Rewrite", "fx_label": "Effects Layer", "fx_desc": "Add an effects/lighting layer on top of the variations (off / light / rich).", "fx_off": "Off", "fx_light": "Light", "fx_rich": "Rich", "results_label": "Generated Prompts", "results_desc": "Enhanced prompt variations. Click 📋 to copy.", "copy_btn": "Copy", "copied_btn": "Copied!", "hotkeys_hint": "Hotkeys: Ctrl+Shift+Enter = Generate, Ctrl+Shift+X = Clear prompt", "seed_label": "Seed", "seed_info": "Leave empty for random", "reload_btn": "🔄 Reload Data", "result_placeholder": "Click '✨ Generate' to create variations", "neg_placeholder": "Negative prompt (auto-generated)", "no_results": "Click '✨ Generate' to create prompt variations", "error_parse": "Could not parse prompt. Include a subject (e.g. 1girl, 1boy).", "language_label": "Language", "lang_en": "EN", "lang_ru": "RU", "similar_artists": "Similar artists", "top_artists_in_style": "Top artists in this style", "danbooru_link": "\U0001f5bc\ufe0f Danbooru \u2197", "generation_error": "Generation error: {exc}", "analyzer_section": "Prompt Analysis", "analyzer_desc": "Live analysis of your prompt structure and recommendations.", "history_section": "History & Favorites", "history_desc": "Recent generations and your liked prompts.", "history_empty": "No generations yet. Generate some prompts first!", "history_prompt": "Prompt", "history_restore": "Restore", "history_liked": "Liked prompts", "history_no_likes": "No liked prompts yet. Click ♥ on a result to favorite it.", "like_btn": "♥", "liked_btn": "♥", "favorites_label": "Favorites", "web_search_label": "🌐 Web Tag Search", "web_search_desc": "Search Danbooru for related tags, or browse local tags by keyword.", "web_search_placeholder": "Search tags (e.g. 1girl, sunset, blue_hair)...", "web_search_btn": "Search", "web_search_offline": "Local results (offline)", "web_search_online": "Danbooru results", "web_search_error": "Search error: {exc}", "web_search_empty": "Enter a keyword to search tags.", "web_enrich_label": "🌐 Web Enrich", "web_enrich_desc": "Auto-enrich prompt with tags fetched from Danbooru. Falls back to offline co-occurrence data.", "web_enrich_on": "On", "web_enrich_off": "Off", "web_enrich_no_results": "No enrichment tags found.", "web_enrich_applied": "+{n} enrichment tags applied", "analyzer_parse_error": "Could not parse prompt.", "analyzer_subject": "Subject", "analyzer_character": "Character", "analyzer_series": "Series", "analyzer_artists": "Artists", "analyzer_tags": "Tags", "analyzer_quality": "Quality", "analyzer_meta": "Meta", "analyzer_general": "General", "analyzer_tokens": "Tokens", "analyzer_natural_lang": "\U0001f310 Natural Language", "analyzer_status_good": "\u2705 Good", "analyzer_status_missing": "\u274c Missing", "analyzer_status_conflict": "\u26a0\ufe0f Conflict", "analyzer_status_low": "\u26a0\ufe0f Low", "analyzer_conflict": "(conflict)", "analyzer_duplicate": "(duplicate)", "rec_missing_subject": "Add a subject tag (1girl, 1boy, etc.)", "rec_unrecognized": "Could not recognize prompt structure", "rec_nl_only": "Natural language detected — consider adding comma-separated tags for better results", "rec_quality_missing": "No quality tags — add masterpiece, best quality", "rec_quality_conflict": "Mixed positive & negative quality tags", "rec_quality_low": "Consider adding masterpiece / best quality", "rec_safety_missing": "No safety tag (safe/sensitive/nsfw/explicit)", "rec_artist_missing": "Consider adding an artist tag (artist:name)", "rec_token_clip": "Prompt exceeds ~{n} CLIP tokens — may be truncated", "rec_token_t5": "Prompt exceeds ~{n} T5 tokens", "rec_tag_conflicts": "Conflicting tags detected", "rec_duplicate_tags": "Duplicate tags detected", "rec_too_many_tags": "Too many general tags — consider being more selective", "rec_character_series_missing": "Consider adding a character and series name", "rec_too_many_artists": "More than 3 artists may confuse the model", "analyzer_category_overload": "(category overload)", "analyzer_theme_overload": "(theme overload)", "analyzer_intent_mismatch": "(intent mismatch)", "rec_theme_overload": "Too many tags from one theme group — consider diversifying", "rec_intent_mismatches": "Some tags conflict with detected intent", "rec_low_core_ratio": "Too few core tags (subject, character, body) — add fundamental descriptors first", "rec_high_core_ratio": "Mostly core tags — add decorative elements for richness", "tagger_section": "Image Tagger", "tagger_desc": "Upload an image to automatically recognize Danbooru-style tags using WD EVA02-Large model.", "tagger_image": "Upload Image", "tagger_gen_threshold": "General Threshold", "tagger_gen_threshold_desc": "Tags below this confidence are skipped (default: 0.35)", "tagger_char_threshold": "Character Threshold", "tagger_char_threshold_desc": "Higher threshold for character tags (default: 0.75)", "tagger_btn": "Tag Image", "tagger_no_image": "Please upload an image first.", "tagger_unavailable": "Image tagger is unavailable. Install the optional dependencies (torch, timm) and set WHYX_ENABLE_TAGGER=1 to enable it.", "tagger_error": "Tagging error: {exc}", "tagger_processing": "Analyzing image…", "tagger_results": "Recognized Tags", "tagger_ratings": "Ratings", "tagger_characters": "Characters", "tagger_apply_btn": "Apply Tags to Prompt", "tagger_ratings_label": "Classifying…", "tagger_confidence": "Conf.", "tagger_top_general": "Top General Tags", "tagger_no_tags": "No tags above threshold. Try lowering the confidence threshold.", "output_format_label": "Tag output format", "output_format_desc": "Prompt: spaces, e.g. 'animal ears' (Anima/Illustrious ready). Booru: underscores, e.g. 'animal_ears'. score_N always keeps its underscore.", "advanced_desc": "Optional hygiene layer applied to every generation: strip quality/artist/LoRA/metadata tags, blacklist unwanted tags (mirrored to negatives), and top up short prompts. Expand to configure.", "app_subtitle": "Prompt Enhancement Studio — Anima & Illustrious XL", "theme_label": "Theme", "theme_dark": "Dark", "theme_light": "Light", "output_format_prompt": "Prompt (spaces)", "output_format_booru": "Booru (underscores)", "tagger_format_label": "Tag format", "tagger_format_desc": "Prompt-ready escapes parentheses; Raw keeps booru underscores.", "tagger_format_prompt": "Prompt-ready", "tagger_format_raw": "Raw (booru)", "tagger_model_label": "Model", "tagger_mode_label": "Ensemble mode", "tagger_pose_toggle_label": "Pose analysis", "tagger_pose_toggle_info": "Enable YOLO pose detection (adds people/pose metadata)", "tagger_mode_info": "Combine multiple WD14 taggers for broader coverage", "tagger_mode_ensemble": "Ensemble (best)", "tagger_mode_eva": "WD14 EVA02", "tagger_mode_swinv2": "WD14 SwinV2", # --- tagger / ensemble --- # --- tagger / ensemble --- "tagger_mode_vit": "WD14 ViT", "tagger_mode_qwen": "Qwen3-VL (NL caption)", "tagger_mode_qwen_desc": "Qwen3-VL (Natural-language caption)", "tagger_pose_label": "Pose", "tagger_pose_single": "{n} person detected", "tagger_pose_many": "{n} people detected", "tagger_caption_label": "Natural-language caption", "tagger_chips_label": "Detected tags (click to toggle)", "tagger_chars_label": "Detected characters", "tagger_tags_label": "Tags to use", "tagger_tags_desc": "Edit the list, then Apply or Copy. Built from the toggled tags above.", "tagger_tags_ph": "Recognized tags will appear here…", "tagger_copy": "Copy", "tab_generate": "Generate", "tab_tagger": "Tagger", "tab_tools": "Tools", "tab_history": "History", "advanced_label": "Advanced & Cleanup", "cleanup_label": "Cleanup & Blacklist", "blacklist_label": "Tags to remove (blacklist)", "blacklist_desc": "Comma- or newline-separated tags excluded from every variation (mirrors Booru Prompt Gallery' Tags to remove').", "blacklist_ph": "e.g. simple background, watermark, patreon logo", "blacklist_mirror": "Also add blacklisted tags to the negative prompt", "strip_quality": "Strip quality tags", "strip_artist": "Strip artist tags", "strip_lora": "Strip LoRA / embedding triggers", "strip_meta": "Strip meta tags", "min_tags_label": "Minimum tag count", "min_tags_desc": "Top up each variation to at least this many general tags by pulling safe pool tags.", "user_presets_label": "My Presets", "user_preset_name": "Preset name", "user_preset_name_ph": "e.g. my_style", "user_preset_tags": "Preset tags", "user_preset_tags_ph": "comma-separated tags to store, e.g. neon glow, lens flare, cyberpunk", "user_preset_save": "Save preset", "user_preset_delete": "Delete preset", "user_preset_select": "Saved presets", "user_preset_apply": "Apply to generation", "user_preset_need_name": "Enter a preset name first.", "user_preset_saved": "Preset '{name}' saved.", "user_preset_pick": "Pick a saved preset first.", "user_preset_applied": "Preset '{name}' added to generation.", "user_preset_deleted": "Preset '{name}' deleted.", }, "ru": { "app_title": "Whyx-PROmpTea", "app_subtitle": "Студия улучшения промптов — Anima & Illustrious XL", "input_label": "Ваш промпт", "input_placeholder": "Вставьте промпт сюда...\nПример: masterpiece, best quality, 1girl, hatsune miku, vocaloid, smile, blue hair, twintails", "input_desc": "Введите текстовый промпт. Для лучшего результата укажите subject (1girl, 1boy). Поддерживаются теги художников: artist:hews.", "model_label": "Модель", "model_desc": "Anima: SD модель для аниме-стиля. Illustrious XL: универсальная SDXL модель высокого качества.", "anima": "Anima", "illustrious": "Illustrious XL", "rating_label": "Рейтинг", "rating_desc": "Уровень безопасности контента. PG-PG13 — безобидный. R-R+ допускает откровенный контент.", "rating_pg": "PG (SFW)", "rating_pg13": "PG-13", "rating_pg16": "PG-16+", "rating_r": "R", "rating_rplus": "R+", "variations_label": "Вариации", "variations_desc": "Количество вариаций промпта (1-10). Больше = разнообразнее результаты.", "creativity_label": "Креативность", "creativity_desc": "6 уровней: Very Low (1 тег/кат, 10% замены ваших тегов, без перемешивания) → Extreme (5-10 тегов/кат, 60% замены, межкатегор. инъекция через rewrite_map, до 3 случайных категорий, 30% замена синонимов, полное перемешивание, низкий порог разнообразия). Влияет на количество новых тегов и агрессивность замены существующих.", "creativity_very_low": "Очень низкая", "creativity_low": "Низкая", "creativity_medium": "Средняя", "creativity_high": "Высокая", "creativity_very_high": "Очень высокая", "creativity_extreme": "Экстрим", "weight_label": "Веса тегов", "weight_desc": "Выкл: обычные теги. Легкие: качественные теги (masterpiece, best quality), художники (1.2-1.4x) и значимые эффекты (bloom, depth of field, dramatic lighting и др.) получают усиление. Вкл: все теги получают случайные веса (0.9-1.1x).", "weight_off": "Выкл", "weight_light": "Легкие", "weight_on": "Вкл", "categories_label": "Категории улучшения", "categories_desc": "Выберите категории тегов для улучшения промпта. Каждая категория добавляет контекстно-зависимые теги с авто-фильтрацией конфликтов, дедупликацией (точная + синонимы + нечёткая) и опциональным обогащением через Danbooru. Уровень креативности определяет количество тегов на категорию и агрессивность замены существующих тегов.", "enable_cat": "Включить {}", "quality": "Качество", "quality_desc": "Качество и рейтинг: masterpiece, best quality, score_9", "lighting": "Освещение", "lighting_desc": "Типы освещения: sunlight, neon glow, god rays", "composition": "Композиция", "composition_desc": "Типы кадров: dutch angle, aerial shot", "effects": "Визуальные эффекты", "effects_desc": "Пост-обработка FX: bloom, depth of field, glitch", "atmosphere": "Атмосфера", "atmosphere_desc": "Настроение: dreamy, foreboding, nostalgic", "framing": "Кадр", "framing_desc": "Ракурсы: from above, rule of thirds", "style": "Стиль", "style_desc": "Жанры: ukiyo-e, ghibli, oil painting", "colors": "Цвета", "colors_desc": "Цветокоррекция: teal & orange, sepia, duotone", "background": "Фон", "background_desc": "Локации: city street, castle ruins, shrine", "pose": "Поза", "pose_desc": "Позы: fighting stance, mid-air, meditating", "expression": "Выражение", "expression_desc": "Выражения: blush, smug, tsundere", "clothing": "Одежда", "clothing_desc": "Одежда: hoodie, kimono, armor", "special_fx": "Спецэффекты", "special_fx_desc": "Магия и FX: magic circle, portal, lightning aura", "nsfw": "NSFW", "nsfw_desc": "Взрослые теги: ahegao, nude, bondage", "year_meta": "Год / Мета", "year_meta_desc": "Год и мета: year 2025, highres, absurdres", "animal": "Животные", "animal_desc": "Черты: cat ears, wings, dragon", "furry": "Фурри", "furry_desc": "Фурри: nekomimi, fluffy tail, paw pads", "object": "Предметы", "object_desc": "Предметы: sword, glasses, umbrella", "food": "Еда", "food_desc": "Еда: sushi, ramen, cake", "vehicle": "Транспорт", "vehicle_desc": "Машины, корабли, меха и транспорт", "weapon": "Оружие", "weapon_desc": "Мечи, луки, пушки и вооружение", "architecture": "Архитектура", "architecture_desc": "Замки, башни, руины и строения", "demon": "Демон", "demon_desc": "Демонические ауры, адский огонь, тёмная магия и темы преисподней", "angelic": "Ангельское", "angelic_desc": "Священные ауры, божественный свет, крылья ангелов и святые темы", "hair": "Волосы", "hair_desc": "Цвета, стили и аксессуары: twintails, ahoge, kanzashi", "body": "Тело", "body_desc": "Части тела: collarbone, navel, freckles, abs", "accessory": "Аксессуары", "accessory_desc": "Украшения: earrings, choker, goggles, sash", "season": "Сезон", "season_desc": "Сезоны, праздники, погода: cherry blossoms, snow, christmas", "artist_section": "Стиль художника", "artist_label": "Художник", "artist_style_placeholder": "Фильтр по стилю...", "artist_style_desc": "Фильтр художников по стилю: vibrant, dark, cute, elegant и др.", "artist_all": "Все", "artist_select": "Выбрать художников", "artist_search_label": "Поиск художников", "artist_search_placeholder": "Введите имя, стиль или тег...", "artist_search_desc": "Поиск по имени, стилю или signature-тегам. По умолчанию показаны топ-50 популярных.", "artist_preview_title": "Превью художника", "artist_preview_empty": "Выберите художника, чтобы увидеть описание, похожих авторов и ссылку на Danbooru.", "artist_select_desc": "Выберите конкретных художников Danbooru. Их signature style теги будут добавлены. Рекомендуется до 3.", "artist_placeholder": "Выберите...", "tandem_section": "Тандемы художников", "tandem_label": "Тандемы", "tandem_random": "Случайный тандем", "tandem_random_desc": "Включите для случайного выбора совместимой пары художников при каждой генерации.", "tandem_select": "Выбрать тандем", "tandem_select_desc": "Выберите готовую пару художников с совместимыми стилями.", "tandem_placeholder": "Выбрать...", "tandem_blend": "Смешение стилей", "presets_label": "Быстрые пресеты", "presets_desc": "Готовые комбинации для популярных стилей одним нажатием.", "preset_cinematic": "Кино", "preset_cinematic_desc": "Кинематографическое качество с драматичным освещением и атмосферой.", "preset_dreamy": "Мечта", "preset_dreamy_desc": "Мягкая, эфирная, пастельная атмосфера с мечтательным настроением.", "preset_vibrant": "Яркий", "preset_vibrant_desc": "Яркие цвета, flat color, толстые контуры в стиле поп-арт.", "preset_natural": "Натурал", "preset_natural_desc": "Реалистичное освещение, натуральные цвета, минимум эффектов.", "preset_dramatic": "Драма", "preset_dramatic_desc": "Высокий контраст, драматичное освещение, смелые композиции.", "preset_kawaii": "Кавай", "preset_kawaii_desc": "Милый, мягкий, пастельные цвета в кавай-стиле.", "preset_gothic": "Готика", "preset_gothic_desc": "Тёмная, мрачная атмосфера с готическими элементами.", "preset_cyberpunk": "Киберпанк", "preset_cyberpunk_desc": "Неон, футуризм, техно-нуар атмосфера.", "preset_watercolor": "Акварель", "preset_watercolor_desc": "Мягкая художественная акварельная эстетика.", "preset_portrait": "Портрет", "preset_portrait_desc": "Портретный кадр с детализированным лицом и мягким освещением.", "preset_landscape": "Пейзаж", "preset_landscape_desc": "Широкий кадр, детализированный фон, природа или городской пейзаж.", "preset_mecha": "Меха", "preset_mecha_desc": "Механические элементы, детализированные роботы, sci-fi стиль.", "preset_fantasy": "Фэнтези", "preset_fantasy_desc": "Магические эффекты, фэнтези-атмосфера, мифические существа.", "preset_noir": "Нуар", "preset_noir_desc": "Тёмная нуарная эстетика с драматичными тенями.", "preset_sakura": "Сакура", "preset_sakura_desc": "Японская эстетика с сакурой, традиционные элементы.", "preset_underwater": "Подводный", "preset_underwater_desc": "Подводные эффекты, водная атмосфера, синие тона.", "preset_space": "Космос", "preset_space_desc": "Космический фон, звёзды, планеты, sci-fi атмосфера.", "preset_detailed_art": "Детализированное", "preset_detailed_art_desc": "Теги высокой детализации: highres, absurdres, incredibly absurdres.", "preset_moe_blobs": "Моэ", "preset_moe_blobs_desc": "Чиби, милое, мягкое моэ-эстетика с большими глазами.", "preset_warrior": "Воин", "preset_warrior_desc": "Динамичные позы, броня, оружие, боевой стиль.", "preset_retro": "Ретро", "preset_retro_desc": "Винтажный ретро-стиль с фильм-грейном и тёплыми ностальгическими цветами.", "preset_steampunk": "Стимпанк", "preset_steampunk_desc": "Латунные шестерёнки, паровые технологии и викторианская sci-fi атмосфера.", "preset_magical_girl": "Девочка-волшебница", "preset_magical_girl_desc": "Блёстки, волшебные наряды, эффекты трансформации и милые выражения.", "preset_horror": "Хоррор", "preset_horror_desc": "Тёмная страшная атмосфера, жёсткое освещение и пугающие выражения.", "preset_winter": "Зима", "preset_winter_desc": "Снежные пейзажи, холодные цвета и тёплая зимняя одежда.", "preset_summer": "Лето", "preset_summer_desc": "Яркие солнечные сцены, пляж или луг на фоне и насыщенные цвета.", "preset_angelic": "Ангельский", "preset_angelic_desc": "Священное эфирное сияние, мягкое божественное освещение и чистая атмосфера.", "preset_slice_of_life": "Повседневность", "preset_slice_of_life_desc": "Повседневные сцены с естественными позами и тёплым настроением.", "preset_action": "Экшн", "preset_action_desc": "Динамичное движение, линии скорости, искры удара и энергичные позы.", "preset_romantic": "Романтика", "preset_romantic_desc": "Мягкое романтическое освещение, нежные выражения и тёплые цвета.", "preset_demon": "Демон", "preset_demon_desc": "Тёмная преисподняя аура, огненные эффекты и угрожающие выражения.", "preset_fantasy_creature": "Фэнтези-создание", "preset_fantasy_creature_desc": "Мифические звери, волшебные места обитания и эффекты существ.", "preset_pirate": "Пират / Море", "preset_pirate_desc": "Приключения, морская амуниция, океанские фоны.", "preset_sci_fi": "Научная фантастика", "preset_sci_fi_desc": "Футуристическая экипировка, энергетическое оружие, неон и голограммы.", "preset_medieval": "Средневековье", "preset_medieval_desc": "Замки, рыцари, королевские одежды и атмосфера факелов.", "preset_mecha_pilot": "Пилот меха", "preset_mecha_pilot_desc": "Вид из кабины, костюмы пилота, управление гигантскими роботами.", "preset_maid_cafe": "Мейд-кафе", "preset_maid_cafe_desc": "Формы горничных, кафе, десерты и тёплые цвета.", "preset_holiday": "Праздник", "preset_holiday_desc": "Праздничные украшения, наряды, сезонная атмосфера.", "preset_furry_anthro": "Фурри", "preset_furry_anthro_desc": "Антропоморфные персонажи, уши, хвосты, звериные выражения.", "preset_school": "Школа", "preset_school_desc": "Школьная форма, классы, юные выражения.", "generate_btn": "✨ Создать", "generate_btn_loading": "⏳ Создание...", "mode_label": "Режим", "mode_desc": "Стандартная вариация: добавляет теги категорий к вашему промпту. Полная пересборка: перестраивает промпт с нуля, используя ваши концепты.", "mode_standard": "Стандартная вариация", "mode_rewrite": "Полная пересборка", "fx_label": "Слой эффектов", "fx_desc": "Добавить слой эффектов/освещения поверх вариаций (выкл / легко / насыщенно).", "fx_off": "Выкл", "fx_light": "Легко", "fx_rich": "Насыщенно", "results_label": "Готовые промпты", "results_desc": "Улучшенные вариации промпта. Нажмите 📋 для копирования.", "copy_btn": "Копировать", "copied_btn": "Скопировано!", "hotkeys_hint": "Горячие клавиши: Ctrl+Shift+Enter — Создать, Ctrl+Shift+X — Очистить промпт", "seed_label": "Зерно (Seed)", "seed_info": "Оставьте пустым для случайного значения", "reload_btn": "🔄 Обновить данные", "result_placeholder": "Нажмите «✨ Создать» для генерации", "neg_placeholder": "Негативный промпт (авто-генерация)", "no_results": "Нажмите «✨ Создать» для генерации вариаций", "error_parse": "Ошибка разбора. Укажите тему (1girl, 1boy и т.д.).", "language_label": "Язык", "lang_en": "EN", "lang_ru": "RU", "similar_artists": "Похожие художники", "top_artists_in_style": "Топ художников в этом стиле", "danbooru_link": "\U0001f5bc\ufe0f Danbooru \u2197", "generation_error": "Ошибка генерации: {exc}", "analyzer_section": "Анализ промпта", "analyzer_desc": "Анализ структуры промпта в реальном времени и рекомендации.", "history_section": "История и избранное", "history_desc": "Последние генерации и отмеченные промпты.", "history_empty": "История пуста. Сначала сгенерируйте промпты!", "history_prompt": "Промпт", "history_restore": "Восстановить", "history_liked": "Понравившиеся промпты", "history_no_likes": "Пока нет понравившихся промптов. Нажмите ♥ на результате, чтобы добавить в избранное.", "like_btn": "♥", "liked_btn": "♥", "favorites_label": "Избранное", "web_search_label": "🌐 Поиск тегов", "web_search_desc": "Поиск тегов на Danbooru или в локальном пуле по ключевым словам.", "web_search_placeholder": "Поиск тегов (например: 1girl, sunset, blue_hair)...", "web_search_btn": "Искать", "web_search_offline": "Локальные результаты", "web_search_online": "Результаты Danbooru", "web_search_error": "Ошибка поиска: {exc}", "web_search_empty": "Введите ключевое слово для поиска тегов.", "web_enrich_label": "🌐 Веб-обогащение", "web_enrich_desc": "Автоматическое обогащение промпта тегами с Danbooru. При ошибке сети — локальная база co-occurrence.", "web_enrich_on": "Вкл", "web_enrich_off": "Выкл", "web_enrich_no_results": "Теги для обогащения не найдены.", "web_enrich_applied": "+{n} тегов обогащения добавлено", "analyzer_parse_error": "Не удалось разобрать промпт.", "analyzer_subject": "Субъект", "analyzer_character": "Персонаж", "analyzer_series": "Серия", "analyzer_artists": "Художники", "analyzer_tags": "Теги", "analyzer_quality": "Качество", "analyzer_meta": "Мета", "analyzer_general": "Общие", "analyzer_tokens": "Токены", "analyzer_natural_lang": "\U0001f310 Естественный язык", "analyzer_status_good": "\u2705 Хорошо", "analyzer_status_missing": "\u274c Отсутствуют", "analyzer_status_conflict": "\u26a0\ufe0f Конфликт", "analyzer_status_low": "\u26a0\ufe0f Низкое", "analyzer_conflict": "(конфликт)", "analyzer_duplicate": "(дубликат)", "rec_missing_subject": "Добавьте тег субъекта (1girl, 1boy и т.д.)", "rec_unrecognized": "Не удалось распознать структуру промпта", "rec_nl_only": "Обнаружен естественный язык — добавьте теги через запятую для лучшего результата", "rec_quality_missing": "Нет тегов качества — добавьте masterpiece, best quality", "rec_quality_conflict": "Смешаны положительные и отрицательные теги качества", "rec_quality_low": "Рекомендуется добавить masterpiece / best quality", "rec_safety_missing": "Нет тега безопасности (safe/sensitive/nsfw/explicit)", "rec_artist_missing": "Рекомендуется добавить тег художника (artist:name)", "rec_token_clip": "Промпт превышает ~{n} токенов CLIP — может быть обрезан", "rec_token_t5": "Промпт превышает ~{n} токенов T5", "rec_tag_conflicts": "Обнаружены конфликтующие теги", "rec_duplicate_tags": "Обнаружены дублирующиеся теги", "rec_too_many_tags": "Слишком много общих тегов — будьте избирательнее", "rec_character_series_missing": "Рекомендуется добавить персонажа и название серии", "rec_too_many_artists": "Более 3 художников могут запутать модель", "analyzer_category_overload": "(перегрузка категории)", "analyzer_theme_overload": "(перегрузка темы)", "analyzer_intent_mismatch": "(несоответствие интенту)", "rec_theme_overload": "Слишком много тегов из одной темы — добавьте разнообразие", "rec_intent_mismatches": "Некоторые теги противоречат определённому интенту сцены", "rec_low_core_ratio": "Слишком мало основных тегов (subject, character, body) — сначала добавьте базовые дескрипторы", "rec_high_core_ratio": "Преимущественно базовые теги — добавьте декоративные элементы для насыщенности", "tagger_section": "Теги изображения", "tagger_desc": "Загрузите изображение для автоматического распознавания тегов в стиле Danbooru с помощью модели WD EVA02-Large.", "tagger_image": "Загрузить изображение", "tagger_gen_threshold": "Общий порог", "tagger_gen_threshold_desc": "Теги ниже этого порога пропускаются (по умолчанию: 0.35)", "tagger_char_threshold": "Порог персонажей", "tagger_char_threshold_desc": "Более высокий порог для тегов персонажей (по умолчанию: 0.75)", "tagger_btn": "Распознать теги", "tagger_no_image": "Сначала загрузите изображение.", "tagger_unavailable": "Имидж-теггер недоступен. Установите опциональные зависимости (torch, timm) и задайте WHYX_ENABLE_TAGGER=1, чтобы включить его.", "tagger_error": "Ошибка распознавания: {exc}", "tagger_processing": "Анализ изображения…", "tagger_results": "Распознанные теги", "tagger_ratings": "Рейтинги", "tagger_characters": "Персонажи", "tagger_apply_btn": "Применить теги в промпт", "tagger_ratings_label": "Классификация…", "tagger_confidence": "Увер.", "tagger_top_general": "Основные теги", "tagger_no_tags": "Нет тегов выше порога. Попробуйте снизить порог уверенности.", "output_format_label": "Формат вывода тегов", "output_format_desc": "Промпт: пробелы, напр. «animal ears» (для Anima/Illustrious). Booru: подчёркивания, напр. «animal_ears». score_N всегда сохраняет подчёркивание.", "output_format_prompt": "Промпт (пробелы)", "output_format_booru": "Booru (подчёркивания)", "tagger_format_label": "Формат тегов", "tagger_format_desc": "Prompt-ready экранирует скобки; Raw сохраняет booru-подчёркивания.", "tagger_format_prompt": "Для промпта", "tagger_format_raw": "Исходный (booru)", "tagger_model_label": "Модель", "tagger_mode_label": "Режим ансамбля", "tagger_pose_toggle_label": "Определение позы", "tagger_pose_toggle_info": "Включает YOLO-распознавание поз (добавляет метаданные людей/поз)", "tagger_mode_info": "Комбинируйте несколько WD14-теггеров для большего покрытия", "tagger_mode_ensemble": "Ансамбль (лучший)", "tagger_mode_eva": "WD14 EVA02", "tagger_mode_swinv2": "WD14 SwinV2", "tagger_mode_vit": "WD14 ViT", "tagger_mode_qwen": "Qwen3-VL (NL описание)", "tagger_mode_qwen_desc": "Qwen3-VL (Подробное описание изображения)", "tagger_pose_label": "Поза", "tagger_pose_single": "Обнаружен {n} человек", "tagger_pose_many": "Обнаружено {n} человек", "tagger_caption_label": "Языковое описание сцены", "tagger_chips_label": "Распознанные теги (клик — вкл/выкл)", "tagger_chars_label": "Распознанные персонажи", "tagger_tags_label": "Теги для использования", "tagger_tags_desc": "Отредактируйте список, затем «Применить» или «Копировать». Собран из отмеченных выше тегов.", "tagger_tags_ph": "Здесь появятся распознанные теги…", "tagger_copy": "Копировать", "tab_generate": "Генерация", "tab_tagger": "Теггер", "tab_tools": "Инструменты", "tab_history": "История", "advanced_desc": "Необязательный слой гигиены, применяемый к каждой генерации: убрать теги качества/художника/LoRA/метаданных, чёрный список ненужных тегов (зеркалится в негатив) и добор коротких промптов. Раскройте для настройки.", "theme_label": "Тема", "theme_dark": "Тёмная", "theme_light": "Светлая", "advanced_label": "Дополнительно и очистка", "cleanup_label": "Очистка и чёрный список", "blacklist_label": "Теги для удаления (чёрный список)", "blacklist_desc": "Теги через запятую или с новой строки, исключаемые из каждой вариации (как «Tags to remove» в Booru Prompt Gallery).", "blacklist_ph": "напр. simple background, watermark, patreon logo", "blacklist_mirror": "Также добавить удаляемые теги в негативный промпт", "strip_quality": "Убрать теги качества", "strip_artist": "Убрать теги художников", "strip_lora": "Убрать триггеры LoRA / эмбеддингов", "strip_meta": "Убрать мета-теги", "min_tags_label": "Минимальное число тегов", "min_tags_desc": "Дополнить каждую вариацию до как минимум такого числа общих тегов из пулов.", "user_presets_label": "Мои пресеты", "user_preset_name": "Название пресета", "user_preset_name_ph": "напр. my_style", "user_preset_tags": "Теги пресета", "user_preset_tags_ph": "теги через запятую, напр. neon glow, lens flare, cyberpunk", "user_preset_save": "Сохранить пресет", "user_preset_delete": "Удалить пресет", "user_preset_select": "Сохранённые пресеты", "user_preset_apply": "Применить к генерации", "user_preset_need_name": "Сначала введите название пресета.", "user_preset_saved": "Пресет «{name}» сохранён.", "user_preset_pick": "Сначала выберите сохранённый пресет.", "user_preset_applied": "Пресет «{name}» добавлен к генерации.", "user_preset_deleted": "Пресет «{name}» удалён.", }, } def t(key: str, lang: str = "en") -> str: return L10N.get(lang, L10N["en"]).get(key, key)