Files
ai-rpg/frontend/src/i18n/en.json

392 lines
16 KiB
JSON
Raw Normal View History

2026-06-20 19:13:05 +03:00
{
"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",
2026-06-21 02:41:48 +03:00
"session_expired": "Session expired, please sign in again.",
"username_hint": "Letters, numbers, and underscores only. No @ or other special characters.",
2026-06-21 06:12:28 +03:00
"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"
2026-06-20 19:13:05 +03:00
},
"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",
2026-06-21 07:52:25 +03:00
"default_name": "New World",
2026-06-20 19:13:05 +03:00
"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",
2026-06-21 02:41:48 +03:00
"status_archived": "Archived",
"restore": "Restore",
2026-06-21 04:11:38 +03:00
"continue_setup": "Continue setup",
2026-06-21 02:41:48 +03:00
"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."
2026-06-20 19:13:05 +03:00
},
"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.",
2026-06-21 07:52:25 +03:00
"setting": "Setting",
"setting_help": "Describe the world setting (e.g. 'post-apocalyptic underground bunker').",
"setting_placeholder": "post-apocalyptic underground bunker",
2026-06-20 19:13:05 +03:00
"world_name": "World name",
"player_name": "Player character name",
2026-06-21 07:52:25 +03:00
"name_random_tip": "Roll a random name",
"name_random_failed": "Failed to fetch a random name.",
2026-06-20 19:13:05 +03:00
"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",
2026-06-21 04:11:38 +03:00
"entities_generated": "Entities generated",
"retry_disabled": "Cannot retry — no world was created yet."
2026-06-20 19:13:05 +03:00
},
"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",
2026-06-21 07:52:25 +03:00
"assistant": "Assistant",
2026-06-20 19:13:05 +03:00
"apply_changes": "Apply changes",
"discard_changes": "Discard changes",
"changes_applied": "Changes applied.",
"changes_discarded": "Changes discarded.",
"edit_world": "Edit world",
"submit_instruction": "Submitting…",
2026-06-21 04:11:38 +03:00
"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"
2026-06-20 19:13:05 +03:00
},
"play": {
"title": "Play",
"environment": "Environment",
"location": "Location",
"time_of_day": "Time of day",
"weather": "Weather",
"player": "Player",
"hp": "HP",
2026-06-21 07:52:25 +03:00
"health": "Health",
"mana": "Mana",
"strength": "Strength",
2026-06-20 19:13:05 +03:00
"level": "Level",
"inventory": "Inventory",
"conditions": "Conditions",
"npcs": "NPCs",
"items": "Items",
"plot_rails": "Plot rails",
2026-06-21 07:52:25 +03:00
"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",
2026-06-20 19:13:05 +03:00
"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.",
2026-06-21 04:11:38 +03:00
"not_ready": "This world is not ready yet. Generate the intro scene first.",
2026-06-21 02:41:48 +03:00
"no_steps_to_retry": "No steps to retry yet.",
"no_steps_to_rollback": "No steps to rollback yet.",
2026-06-20 19:13:05 +03:00
"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.",
2026-06-21 07:52:25 +03:00
"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.",
2026-06-21 02:41:48 +03:00
"group_llm": "LLM Configuration",
2026-06-20 19:13:05 +03:00
"group_embeddings": "Embeddings",
"group_qdrant": "Qdrant",
2026-06-21 02:41:48 +03:00
"group_context": "Context Manager",
"group_ui": "UI Settings",
"group_game": "Game Settings",
2026-06-20 19:13:05 +03:00
"logs_filter_world": "World ID",
"logs_filter_stage": "Stage",
"logs_filter_status": "Status",
"logs_filter_apply": "Apply filters",
"logs_stage": "Stage",
"logs_status": "Status",
2026-06-21 06:12:28 +03:00
"logs_world": "World",
"logs_filtered": "filtered",
2026-06-20 19:13:05 +03:00
"logs_latency": "Latency",
"logs_tokens": "Tokens",
"logs_created": "Created",
"logs_detail": "Log detail",
"logs_prompt": "Prompt",
"logs_response": "Response",
"logs_error": "Error",
2026-06-21 07:52:25 +03:00
"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).",
2026-06-20 19:13:05 +03:00
"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",
2026-06-21 02:41:48 +03:00
"stats_active_worlds": "Active Worlds",
"stats_archived": "Archived",
"stats_total_worlds": "Total Worlds",
2026-06-20 19:13:05 +03:00
"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",
2026-06-21 07:52:25 +03:00
"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.",
2026-06-20 19:13:05 +03:00
"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.",
2026-06-21 04:11:38 +03:00
"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.",
2026-06-21 06:12:28 +03:00
"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",
2026-06-21 07:52:25 +03:00
"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 (02).",
"llm.temperature_writer": "Sampling temperature for the scene writer phase (02).",
"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 <title> 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."
}
2026-06-20 19:13:05 +03:00
},
"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"
}
}