Files
ai-rpg/frontend/src/i18n/en.json
Mikan 7cbe8da103 fix
2026-06-21 07:52:25 +03:00

392 lines
16 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 (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."
}
},
"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"
}
}