{ "common": { "app_name": "AI-RPG", "loading": "Loading…", "save": "Save", "cancel": "Cancel", "delete": "Delete", "edit": "Edit", "create": "Create", "back": "Back", "next": "Next", "previous": "Previous", "submit": "Submit", "retry": "Retry", "close": "Close", "yes": "Yes", "no": "No", "search": "Search", "no_data": "No data", "actions": "Actions", "status": "Status", "name": "Name", "description": "Description", "language": "Language", "type": "Type", "preview": "Preview", "details": "Details" }, "nav": { "worlds": "Worlds", "create_world": "Create World", "admin": "Admin", "play": "Play", "logout": "Logout", "profile": "Profile" }, "theme": { "toggle": "Toggle theme", "dark": "Dark", "light": "Light" }, "lang": { "switch": "Switch language", "en": "English", "ru": "Русский" }, "auth": { "login_title": "Sign in", "register_title": "Create account", "admin_register_title": "Create admin account", "email": "Email", "username": "Username", "password": "Password", "password_confirm": "Confirm password", "login_field": "Email or username", "login_button": "Sign in", "register_button": "Register", "admin_token": "Admin invitation token", "have_account": "Already have an account? Sign in", "no_account": "No account? Register", "logged_out": "You have been signed out.", "login_success": "Signed in.", "register_success": "Account created. You can sign in now.", "admin_register_success": "Admin account created. You can sign in now.", "login_failed": "Sign-in failed", "register_failed": "Registration failed", "session_expired": "Session expired, please sign in again.", "username_hint": "Letters, numbers, and underscores only. No @ or other special characters.", "username_invalid_chars": "Username can only contain letters, numbers, and underscores (a-z, A-Z, 0-9, _). @ and other special characters are not allowed.", "recover_title": "Recover admin access", "recover_help": "Disaster-recovery: creates a new admin account using the setup token. Use this when all admins have lost access.", "recover_token_hint": "The setup token from the server config (admin.setup_token).", "recover_button": "Create admin", "recover_success": "Admin created. You can now log in.", "recover_failed": "Recovery failed", "recover_link": "Lost admin access? Recover here" }, "worlds": { "title": "Your Worlds", "create_new": "Create new world", "empty": "No worlds yet. Create your first one!", "last_played": "Last played", "never_played": "Not played yet", "current_time": "Current time", "player": "Player", "default_name": "New World", "delete_confirm": "Delete this world? This cannot be undone.", "deleted": "World deleted.", "delete_failed": "Failed to delete world.", "load_failed": "Failed to load worlds.", "play": "Play", "edit": "Edit", "not_found": "World not found.", "status_draft": "Draft", "status_building": "Building", "status_ready": "Ready", "status_failed": "Failed", "status_archived": "Archived", "restore": "Restore", "continue_setup": "Continue setup", "restored": "World restored.", "restore_failed": "Failed to restore world.", "delete_permanent": "Delete permanently", "delete_permanent_confirm": "Permanently delete this world? This action cannot be undone and removes all steps, entities, and logs." }, "builder": { "title": "World Builder", "step_choose_mode": "Choose creation mode", "step_preset": "Pick a preset", "step_form": "Configure details", "step_building": "Building world…", "mode_preset": "From preset", "mode_form": "Custom form", "preset_help": "Start from a pre-configured world template.", "form_help": "Configure the world yourself with custom rules.", "setting": "Setting", "setting_help": "Describe the world setting (e.g. 'post-apocalyptic underground bunker').", "setting_placeholder": "post-apocalyptic underground bunker", "world_name": "World name", "player_name": "Player character name", "name_random_tip": "Roll a random name", "name_random_failed": "Failed to fetch a random name.", "notes": "Notes (optional)", "notes_help": "Additional instructions for the Game Master.", "language_en": "English", "language_ru": "Russian", "create_button": "Create world", "creating": "Creating…", "build_progress": "Build progress", "phase": "Phase", "step": "Step", "of": "of", "intro_scene": "Intro scene", "build_complete": "World built successfully!", "build_failed": "World build failed.", "tool_call": "Tool call", "llm_call": "LLM call", "schema_generated": "World schema generated", "environment_generated": "Environment generated", "entities_generated": "Entities generated", "retry_disabled": "Cannot retry — no world was created yet." }, "editor": { "title": "World Editor", "instruction": "Instruction", "instruction_placeholder": "Describe what to change about the world…", "send": "Send", "world_json": "World JSON", "json_saved": "World JSON updated.", "json_invalid": "Invalid JSON.", "clarification": "Clarification needed", "change_proposed": "Change proposed", "comment": "Comment", "assistant": "Assistant", "apply_changes": "Apply changes", "discard_changes": "Discard changes", "changes_applied": "Changes applied.", "changes_discarded": "Changes discarded.", "edit_world": "Edit world", "submit_instruction": "Submitting…", "streaming": "Streaming…", "accept": "Accept", "reject": "Reject", "your_answer": "Your answer", "answer_placeholder": "Type your answer…", "apply_failed": "Failed to apply changes.", "discard_failed": "Failed to discard changes.", "answer_failed": "Failed to submit answer.", "cannot_play_draft": "Generate the intro scene first.", "generate_intro_title": "Generate Intro Scene", "generate_intro_help": "This world is still a draft. Generate the intro scene to make it playable.", "generate_intro_button": "Generate Intro Scene", "intro_generating": "Generating intro scene…", "intro_complete": "Intro scene generated.", "intro_failed": "Failed to generate intro scene.", "intro_scene": "Intro scene", "world_ready": "World is ready! You can now play.", "regenerate_intro": "Regenerate intro scene" }, "play": { "title": "Play", "environment": "Environment", "location": "Location", "time_of_day": "Time of day", "weather": "Weather", "player": "Player", "hp": "HP", "health": "Health", "mana": "Mana", "strength": "Strength", "level": "Level", "inventory": "Inventory", "conditions": "Conditions", "npcs": "NPCs", "items": "Items", "plot_rails": "Plot rails", "hooks": "Hooks", "current_goals": "Current goals", "completed_goals": "Completed goals", "no_env_data": "No environment data yet.", "no_intro_scene": "This world has no intro scene yet. Go to Edit to generate one.", "go_to_edit": "Go to Edit", "edit_world": "Edit world", "chat": "Chat", "scene": "Scene", "you": "You", "game_master": "Game Master", "action_placeholder": "What do you do?", "send_action": "Send", "sending": "Sending…", "suggested_actions": "Suggested actions", "no_suggestions": "No suggestions yet.", "retry_last": "Retry last step", "rollback": "Rollback one step", "rollback_confirm": "Rollback the last step?", "rolled_back": "Rolled back one step.", "not_ready": "This world is not ready yet. Generate the intro scene first.", "no_steps_to_retry": "No steps to retry yet.", "no_steps_to_rollback": "No steps to rollback yet.", "streaming": "AI is responding…", "scene_chunk": "Scene", "iteration_complete": "Step complete", "trigger_fired": "Trigger fired", "summary_generated": "Summary generated", "load_failed": "Failed to load session.", "no_actions_yet": "Take an action to begin." }, "sse": { "connecting": "Connecting…", "connected": "Connected", "disconnected": "Disconnected", "error": "Connection error", "reconnecting": "Reconnecting…" }, "admin": { "title": "Admin Dashboard", "tab_settings": "Settings", "tab_logs": "LLM Logs", "tab_users": "Users", "tab_stats": "Stats", "tab_test": "Diagnostics", "tab_icons": "Icons", "not_admin": "You do not have admin access.", "settings_saved": "Settings saved.", "settings_save_failed": "Failed to save settings.", "settings_load_failed": "Failed to load settings.", "settings_hint": "Each card saves independently. Secret values (api_key) are masked after save.", "expand_all": "Expand all", "collapse_all": "Collapse all", "no_changes": "No changes to save.", "group_llm": "LLM Configuration", "group_embeddings": "Embeddings", "group_qdrant": "Qdrant", "group_context": "Context Manager", "group_ui": "UI Settings", "group_game": "Game Settings", "logs_filter_world": "World ID", "logs_filter_stage": "Stage", "logs_filter_status": "Status", "logs_filter_apply": "Apply filters", "logs_stage": "Stage", "logs_status": "Status", "logs_world": "World", "logs_filtered": "filtered", "logs_latency": "Latency", "logs_tokens": "Tokens", "logs_created": "Created", "logs_detail": "Log detail", "logs_prompt": "Prompt", "logs_response": "Response", "logs_error": "Error", "logs_new_count": "{{count}} new", "logs_pause": "Pause", "logs_resume": "Resume", "logs_auto_refresh_on": "Auto-refresh active (page 1, 5s).", "logs_auto_refresh_off": "Auto-refresh paused.", "logs_auto_refresh_tip": "Toggle auto-refresh (5s polling on page 1).", "users_email": "Email", "users_username": "Username", "users_admin": "Admin", "users_active": "Active", "users_created": "Created", "users_last_login": "Last login", "users_make_admin": "Make admin", "users_remove_admin": "Remove admin", "users_activate": "Activate", "users_deactivate": "Deactivate", "stats_users": "Users", "stats_worlds": "Worlds", "stats_active_worlds": "Active Worlds", "stats_archived": "Archived", "stats_total_worlds": "Total Worlds", "stats_steps": "Steps", "stats_avg_latency": "Avg LLM latency", "test_llm": "Test LLM", "test_llm_tools": "Test LLM tools", "test_embeddings": "Test embeddings", "probe_dimension": "Probe dimension", "recreate_collections": "Recreate collections", "recreate_collections_hint": "Drops and recreates Qdrant collections based on current embeddings dimension.", "recreate_dropped": "Dropped", "recreate_created": "Created", "test_provider_hint": "If provider=openai and api_url is empty, the system falls back to llm.api_url.", "api_url": "API URL", "api_key": "API key", "model": "Model", "provider": "Provider", "run_test": "Run test", "running": "Running…", "result": "Result", "elapsed_ms": "Elapsed (ms)", "dimension": "Dimension", "ok": "OK", "failed": "Failed", "icons_favicon": "Favicon", "icons_logo": "Logo", "icons_og": "Open Graph image", "icons_upload": "Upload", "icons_uploaded": "Icon uploaded.", "icons_upload_failed": "Failed to upload icon.", "choose_file": "Choose file", "tool_calls_detected": "Tool calls detected", "no_tool_calls_warning_title": "No tool calls returned", "no_tool_calls_warning": "Model did not return tool calls. This may mean the model doesn't support function calling, or uses a non-standard format.", "raw_response": "Raw LLM response", "fetch_models": "Fetch models", "fetched_models": "Available models", "pick_model": "Pick a model…", "fetch_models_failed": "Could not fetch model list. Enter the model name manually.", "text_replacements_title": "Text Replacements", "text_replacements_help": "These replacements are applied to all LLM scene text output. Use empty 'To' to remove a word/phrase entirely.", "text_replacements_empty": "No replacement rules yet. Click 'Add rule' to create one.", "text_replacements_from": "From", "text_replacements_to": "To", "text_replacements_add": "Add rule", "setting_desc": { "llm.api_url": "Chat completions endpoint URL for the LLM provider.", "llm.api_key": "API key for the LLM provider (stored as string).", "llm.model": "Default model name used for all LLM calls.", "llm.max_tokens": "Maximum number of tokens to generate per response.", "llm.timeout_seconds": "Request timeout in seconds.", "llm.temperature_orchestrator": "Sampling temperature for the orchestrator phase (0–2).", "llm.temperature_writer": "Sampling temperature for the scene writer phase (0–2).", "llm.text_replacements": "JSON list of {from, to} text replacements applied to all LLM scene output.", "embeddings.provider": "Embeddings provider: 'offline_hash' (no API) or 'openai'.", "embeddings.api_url": "Embeddings API URL. If empty, falls back to llm.api_url.", "embeddings.api_key": "Embeddings API key. If empty, falls back to llm.api_key.", "embeddings.model": "Embeddings model name (default: text-embedding-3-small).", "embeddings.dimension": "Vector dimension used by the Qdrant collection.", "embeddings.batch_size": "Number of texts to embed per API request.", "embeddings.timeout_seconds": "Embeddings API request timeout in seconds.", "embeddings.cache_ttl_seconds": "Time-to-live for the in-memory embeddings cache.", "embeddings.max_text_chars": "Maximum characters of text passed to the embeddings API per call.", "qdrant.url": "Qdrant server URL.", "qdrant.api_key": "Qdrant API key (optional — only if the server requires auth).", "qdrant.collection_name": "Name of the Qdrant collection used for entity vectors.", "context.guaranteed_messages": "Number of recent chat messages always kept in the LLM context window.", "context.compression_threshold_messages": "When recent message count exceeds this, older messages are summarized.", "context.compression_threshold_tokens": "When estimated token count exceeds this, older messages are summarized.", "context.scene_text_truncate_tokens": "Maximum tokens of scene_text retained per step.", "context.safety_margin_tokens": "Reserved token budget kept between context and model max_tokens.", "context.auto_rag_on_entity_mention": "If true, automatically retrieve entity context when an entity is mentioned.", "game.max_substeps_per_iteration": "Maximum number of tool-call sub-steps per player iteration.", "game.max_suggested_actions": "Maximum number of suggested actions returned to the player.", "game.deferred_triggers_enabled": "If true, deferred triggers may fire on subsequent iterations.", "ui.page_title": "Page shown in the browser tab.", "ui.header_title": "Title shown in the navbar (falls back to page_title).", "ui.favicon_url": "URL of the favicon.", "ui.logo_url": "URL of the navbar logo image.", "ui.og_image_url": "URL of the Open Graph image used for social previews.", "ui.character_names.en": "Comma-separated list of English character names for the random-name button.", "ui.character_names.ru": "Comma-separated list of Russian character names for the random-name button.", "admin.setup_token": "Token required to create the first admin account." } }, "errors": { "generic": "Something went wrong.", "network": "Network error. Check your connection.", "unauthorized": "Unauthorized.", "not_found": "Not found.", "server_error": "Server error.", "forbidden": "Forbidden.", "validation": "Validation error." }, "toast": { "error_title": "Error", "success_title": "Success", "warning_title": "Warning", "info_title": "Info" } }