{ "o_Toggle_Sidebar": "Show/Hide", "o_Context_RAG": "RAG", "o_Context_Direct": "Direct", "o_Context_Mode": "RAG: uses summary, recent messages, code context, and relevant past chunks.\nDirect: sends only the current message and selected references.", "o_Add_Model": "Add Model", "o_AI_Models_Empty": "The model list in config is empty. At least one model must be defined.", "o_Delete_Model": "Delete Model", "o_Delete_Model_Confirm": "Do you want to delete this model?\n\n{model_id}", "o_Min_Model_Title": "Model can't be deleted", "o_Min_Model_Error": "At least one model must remain. You cannot delete the last model.", "o_New_Chat": "New Chat", "o_Options": "Options", "o_Toggle_Dark_Mode": "Toggle Dark Mode", "o_Settings": "Settings", "o_Suggestions_Title": "Try asking something", "o_Suggestion_1": "Tell me a joke", "o_Suggestion_2": "Summarize this text", "o_Suggestion_3": "Give me an idea for a project", "o_Suggestion_4": "Explain a topic simply", "o_Suggestion_5": "Help me write an email", "o_Select_File": "Select File", "o_Attachments": "Take photo, Attach file", "o_Prompt_Chooser": "Prompt Chooser", "o_PC_Copyable": "Copyable Content", "o_PC_Apply": "Apply Changes to Files", "o_PC_FileCreate": "Create New Files (DOCX / XLSX)", "o_PC_WebSearch": "Web search", "o_PC_Structured": "Structured Output", "o_PC_Code": "Code Generation / Editing", "o_PC_PDFText": "PDF Text", "o_PC_PDFImage": "PDF Image", "o_PC_PDFTextImage": "PDF Text + Image", "o_PDF_Mode_Required": "You must select a PDF mode from the Prompt Chooser:\n- PDF Text\n- PDF Image\n- PDF Text + Image", "o_PDF_Text_Edited": "PDF text was edited and the file was created.", "o_PDF_Image_Edited": "PDF image was edited and converted to PDF.", "o_PDF_Image_Block_Edited": "PDF image block was edited and the PDF was created.", "o_PDF_Mixed_Edited": "Mixed PDF was edited and the file was created.", "o_PDF_Convert_Failed": "PDF could not be converted to images. Check the PDF conversion setup.", "o_PDF_Has_Text_Select_Text_Model": "This PDF contains extractable text. Please select PDF Text mode instead of PDF Image mode.", "o_PDF_No_Images_Found": "No images were found in this PDF.", "o_PDF_Text_Extract_Failed": "PDF text could not be extracted.\nDo not ask for the file path.\nUse OCR or PDF Image mode.", "o_Microphone": "Dictate", "o_Stop_Recording": "Stop Recording", "o_Send_Button": "Send", "o_Stop_Button": "Stop", "o_Scroll_Left": "Scroll left", "o_Scroll_Right": "Scroll right", "o_Clear_Selection": "Clear selection", "o_Image": "Image", "o_Image_Could_Not_Be_Loaded": "Image could not be loaded:\n{path}", "o_Zoom_Attachments": "Zoom in", "o_Close_Attachments": "Close", "o_Scroll_Down": "Scroll down", "o_AI_Models": "AI Models", "o_Chats": "Chats", "o_Delete_Chat": "Delete chat", "o_Delete_Chat_Confirm": "Do you want to delete this chat?\nThis action cannot be undone.", "o_Rename": "Rename", "o_New_Name": "New Name:", "o_Rename_Hint": "(This will be used as the file name)", "o_Pin": "Pin", "o_Unpin": "Unpin", "o_OpenRouter-Tavily_API_Key": "πŸ”‘ OpenRouter/Tavily Key", "o_OpenRouter_API_Key": "πŸ”‘ OpenRouter API Key", "o_Tavily_API_Key": "πŸ”‘ Tavily Key", "o_Response_Style": "🧠 Response style", "o_Personalization": "🎨 Personalization", "o_Language": "πŸ‡¬πŸ‡§ Language", "o_RAG_Settings": "🧩 RAG Settings", "o_AI_Settings": "πŸ€– Local AI Settings", "o_STT_Settings": "πŸŽ™οΈ STT Settings", "o_Input_Tokens": "Input tokens", "o_Output_Tokens": "Output tokens", "o_Total_Tokens": "Total", "o_Copy": "Copy", "o_Download": "Download", "o_Image_Created": "Image created.", "o_File_Saved": "File saved.", "o_File_Not_Found": "File not found.", "o_Thinking": "Thinking", "o_AI_Process_Failed": "AI process failed.", "o_Take_Photo": "Take Photo", "o_Attach_File": "Attach File", "o_Reference_Message": "message selected as reference", "o_Apply": "Apply", "o_Apply_Mode_replace": "Replacing", "o_Apply_Mode_before": "Inserting before", "o_Apply_Mode_after": "Inserting after", "o_Reject": "Reject", "o_Save": "Save", "o_Cancel": "Cancel", "o_Search": "Search", "o_Empty_Search_Query": "Empty search query.", "o_Web_Search_Request": "Web search request", "o_Web_Searching": "Searching...", "o_Web_Search_Searched": "Searched", "o_Web_Search_Cancelled": "Web search cancelled", "o_Web_Search_Request_With_Query": "AI wants to search the web:\n{query}", "o_Web_Search_API_Key_Invalid": "Web search API key is invalid.", "o_Web_Search_API_Error": "Web search API error ({status_code}).", "o_Web_Search_Failed": "Search failed", "o_Web_Search_Error_With_Detail": "Search failed: {error}", "o_OK": "OK", "o_Add": "Add", "o_Delete": "Delete", "o_File_Created": "File created.", "o_File_Changed": "File modified", "o_Cancelled": "Operation cancelled", "o_Generation_Failed": "Failed to generate response", "o_OpenRouter_Placeholder": "Enter OpenRouter API Key...", "o_Tavily_Placeholder": "Enter Tavily API Key...", "o_Response_Style_Placeholder": "Example: Speak in a friendly and humorous tone", "o_Window_BG": "Window background", "o_Input_BG": "Input background", "o_User_BG": "User bubble background", "o_User_Text": "User text color", "o_Bot_BG": "Bot bubble background", "o_Bot_Text": "Bot text color", "o_Sidebar_Text": "Sidebar text color", "o_Local_Model_Color": "Local model highlight color", "o_Token_Usage": "Token Usage", "o_Use_Token_Value": "Show Token Value", "o_Token_Value": "Token Value", "o_Token_Value_Hint": "Price per 1M tokens", "o_Total_Token_Price": "Total Token Price", "o_Color_Edit_Hint": "You are editing {mode_name} colors.\nUse hex format: e.g. #303643", "o_Background_Hint": "Chat Background Image", "o_Background_Path_Placeholder": "/file-path/photo.png", "o_Clear": "Clear", "o_Select_Image": "Select Image", "o_Reset_Default": "Reset to default", "o_RAG_Context_System_Message": "The following information is provided for conversation continuity. Do not respond to it directly; use it only to understand the latest user message.", "o_RAG_Recent_Messages_System_Message": "The following messages are the most recent part of the conversation. Do not respond to them individually; use them only to understand the latest user message.", "o_RAG_Recent_Count": "Recent message count", "o_RAG_Recent_Count_Hint": "Number of recent conversation messages sent to the model in RAG mode.", "o_RAG_Retrieved_Count": "Relevant old message count", "o_RAG_Retrieved_Count_Hint": "Number of relevant old chunks retrieved from previous conversation.", "o_RAG_Summary_Every": "Summary update interval", "o_RAG_Summary_Every_Hint": "How often the conversation summary is updated.", "o_RAG_Memory_Chunk_Max": "Memory chunk max length", "o_RAG_Memory_Chunk_Max_Hint": "Maximum character length of a single saved memory chunk.", "o_RAG_Summary_Max": "Summary max length", "o_RAG_Summary_Max_Hint": "Maximum character length of the conversation summary.", "o_RAG_Code_Context_Max": "Code context max length", "o_RAG_Code_Context_Max_Hint": "Maximum character length of code context sent to the model.", "o_RAG_Use_Summary": "Use summary", "o_RAG_Use_Summary_Hint": "Adds the conversation summary to the context when enabled.", "o_RAG_Use_Recent": "Use recent messages", "o_RAG_Use_Recent_Hint": "Adds recent messages to the context when enabled.", "o_RAG_Use_Retrieval": "Use relevant old messages", "o_RAG_Use_Retrieval_Hint": "Retrieves relevant old chunks from previous conversation when enabled.", "o_RAG_Use_Code_Context": "Use code context", "o_RAG_Use_Code_Context_Hint": "Adds summaries of attached code files to the context when enabled.", "o_RAG_Recent_Attachments": "Send attachments in recent messages", "o_RAG_Recent_Attachments_Hint": "When disabled, only text from recent messages is sent; old files/images are not resent.", "o_Force_Language_Text": "Use UI Language for Responses", "o_Force_Language_Hint": "AI should always respond in the selected language.", "o_Ask_Web_Search": "Ask before web search", "o_Ask_Web_Search_Hint": "The AI must ask for your permission before it performs a web search.", "o_AI_Providers": "AI Providers", "o_Selected_Provider": "Selected Provider", "o_Add_Provider": "Add Provider", "o_Stop_Provider": "Stop Provider", "o_Provider_Cant_Be_Deleted": "Provider can't be deleted", "o_Provider_Min_One_Required": "At least one provider must remain.", "o_Delete_Provider": "Delete Provider", "o_Delete_Provider_Confirm": "Do you want to delete this provider?\n\n{provider}", "o_Provider_Name": "Provider Name", "o_Enable_Provider": "Enable Provider", "o_Enable_Provider_Hint": "Enable this AI provider for local models.", "o_Run_Startup": "Run Startup", "o_Run_Startup_Placeholder": "Enter a command or a script path to start the provider.", "o_Stop_Command": "Stop Command", "o_Stop_Command_Placeholder": "Exp: pkill -f 'ollama serve'", "o_Custom_Error": "Custom Error Message", "o_Custom_Error_Placeholder": "Write a custom error message that will be displayed if the provider cannot respond.", "o_System_Prompt": "System Prompt", "o_Online_STT_Text": "Online STT", "o_Online_STT_Hint": "If enabled, speech-to-text is processed via OpenRouter.", "o_Use_Desktop_Audio_Text": "Use Desktop Audio", "o_Use_Desktop_Audio_Hint": "If enabled, system audio will be recorded instead of the microphone.", "o_Online_STT_Model": "Online STT Model", "o_Binary_Path": "Binary Path", "o_Model_Path": "Model Path", "o_Active_Chat": "Active Chat", "o_Active_Model": "Active Model", "o_Context_Mode_Text": "Context Mode", "o_Current": "Current", "o_Pending_Attachments": "Pending attachments", "o_image": "image", "o_file": "file", "o_Pin_Current_Chat": "Pin Current Chat", "o_Unpin_Current_Chat": "Unpin Current Chat", "o_Send_Message": "Send Message", "o_sub_Send_Message": "Type your message. Press Enter on an empty line to finish.", "o_Empty_Message": "Empty message was not sent.", "o_AI_Response": "Sent. Waiting for AI response...", "o_Drag_Drop": "Enter a file path or drag and drop the file", "o_to_Menu": "Press Enter to return to the menu...", "o_Empty_Input": "You cannot enter an empty value.", "o_Type_ESC": "To cancel, type β€œesc” on the first line and press Enter.", "o_Press_ESC": "You can cancel the selection by pressing ESC.", "o_Change_Chat": "Change Chat", "o_Rename_Chat": "Chat to be renamed", "o_New_Value": "Please enter a new value:", "o_Chat_Rename_Fail": "The new name must be different from the current name.", "o_AI_Model": "AI Model", "o_Change_AI_Model": "Change AI Model", "o_Available_Languages": "Available languages", "o_Language_Select_Hint": "You can choose one of the language codes below.", "o_Invalid_Language_Code": "Invalid language code. This language was not found in the config.", "o_Saved": "Saved", "o_Go_Back": "Go Back", "o_Exit": "Exit", "o_Selection": "Selection", "o_Error": "Error", "o_Timeout": "Timeout", "o_Failed": "Failed", "o_Error_With_Detail": "❌ Error:\n{error}", "o_Config_Not_Found": "Config file not found.", "o_Config_Read_Error": "Config could not be read: {error}", "o_Chat_Read_Error": "Chat could not be read: {error}", "o_OpenRouter_Key_Missing": "OpenRouter API Key not found.", "o_Tavily_API_Key_Missing": "Tavily API key is not found.", "o_Local_Model": "Local Model", "o_Local": "Local", "o_Online": "Online", "o_Invalid_Value": "Invalid value", "o_Invalid_Local_Model_Format": "Invalid local model format: {model}. Expected: provider/model", "o_Local_Provider_Not_Found": "Local provider not found: {provider}", "o_Local_Provider_Disabled": "Local provider is disabled: {provider}", "o_On": "ON", "o_Off": "OFF", "o_Yes": "yes", "o_No": "no", "o_Unsupported_Local_Provider": "Unsupported local provider: {provider}", "o_OpenRouter_API_Error": "OpenRouter API error ({status_code}): {details}", "o_OpenRouter_Empty_Stream": "OpenRouter returned an empty stream.", "o_Request_Timeout": "The request timed out.", "o_Internet_Connection_Error": "Connection error. Check your internet connection.", "o_Local_Connection_Error": "{provider} connection error.\nThe local AI server could not be reached.\nExpected address: {base_url}\nThe {provider} server may not be running.", "o_Ollama_API_Error": "Ollama API error ({status_code}): {details}", "o_Ollama_JSON_Parse_Error": "Ollama JSON parse error: {error}", "o_Ollama_Empty_Response": "Ollama returned an empty response.", "o_Script_Not_Found": "Script not found: {path}", "o_Photo_Capture_Error": "Photo capture error: {error}", "o_STT_Error": "STT error: {error}", "o_No_Speech_Detected": "No speech detected.", "o_OpenRouter_STT_Key_Missing": "open_router_key is missing", "o_Whisper_Bin_Not_Found": "whisper_cpp_bin not found: {path}", "o_Whisper_Model_Not_Found": "whisper_cpp_model not found: {path}", "o_Whisper_Failed": "whisper.cpp failed", "o_Desktop_Audio_Monitor_Not_Found": "Monitor source for desktop audio was not found.", "o_Microphone_Source_Not_Found": "Microphone source was not found.", "o_Desktop_Audio_Requires_PWRecord": "pw-record is required for desktop audio capture.", "o_Microphone_Device_Not_Found": "Microphone device was not found.", "o_Audio_Recorder_Not_Found": "pw-record or arecord was not found.", "o_Audio_Record_Start_Failed": "Audio recording could not be started: {error}", "o_Unknown_Error": "unknown error", "o_Apply_Changes_Request": "File changes need approval", "o_Apply_Failed_Input": "❌ APPLY FAILED: {error}", "o_Apply_No_Ops": "no ops to apply", "o_Apply_File_Not_Found": "file not found: {path}", "o_Apply_Find_Failed": "find failed: anchor not found in {name}", "o_Apply_Unknown_Mode": "unknown mode: {mode}", "o_Apply_No_Changes": "no changes produced (maybe identical content?)", "o_Apply_Exception": "exception: {error}", "o_Provider_Command_No_Command": "{provider}\n\nNo command is set.", "o_Provider_Command_Timeout": "{provider}\n\nCommand timed out:\n{command}", "o_Provider_Command_Error": "{provider}\n\n{error}", "o_Provider_Command_Success": "{provider}\n\nCommand executed successfully.\n\n{command}", "o_Provider_Command_Failed": "{provider}\n\nCommand failed.\n\n{command}\n\nExit code: {code}", "o_Start_Local_Server_From_App": "Start the local server from the {provider} app.", "o_Base_System_Prompt": "This message is a set of instructions.\nDo not respond to this message.\nOnly respond to user messages.\nOnly respond to the most recent user message.", "o_Prompt_Copyable": "In this conversation, you may be asked to generate emails, code, commands, configuration files, or text that needs to be copied exactly.\n\nFORMAT RULE:\nIf the user's request requires generating directly copyable content (such as code, scripts, terminal commands, configuration files, etc.), use the following format:\n\ntitle\n\ntitle\ncopy\n\ncopy\n\nRules:\n- The words 'title' and 'copy' must be on their own lines.\n- The 'title' block must appear before the code block.\n- Do not use this format if there is no code.\n- Do not use this format in normal conversational responses.\n- Only use this format when the content is genuinely meant to be copied.", "o_Prompt_Apply": "[FILE] BLOCKS:\n- If the user has attached a file, its content is already provided in this message in the format [FILE] ... [CONTENT] ... [/CONTENT].\n- Do not ask the user to paste code or re-upload the file.\n- If changes are required, read and operate on the [CONTENT].\n- Do not request the file content again.\n- Use the path value exactly as provided in the [FILE] block.\n\nFILE MODIFICATION RULE:\n- If 'editable: true', you may suggest modifications.\n- If 'editable: false', NEVER suggest changes.\n- Do not generate an apply block for editable:false files.\n- If no changes are needed, do not generate an apply block.\n\nAPPLY (AUTOMATIC PATCH) PROTOCOL:\nIf and only if the user requests changes to an editable:true file,\nappend the following block at the END of your response:\n\napply\n[\n {\n \"path\": \"/absolute/path/to/file\",\n \"find\": \"EXACT ANCHOR TEXT FOUND IN FILE\",\n \"mode\": \"before|after|replace\",\n \"text\": \"TEXT TO INSERT OR REPLACE\"\n }\n]\napply\n\nRules:\n- The apply block must contain ONLY JSON.\n- mode must be one of: before, after, replace.\n- path MUST be an absolute path.\n- find must be a short/medium anchor that exists exactly in the file.\n\nAPPLY SUMMARY LINE RULE:\n- If you generate an apply block, NEVER use definitive/finished statements.\n- Write exactly ONE summary line before the apply block.", "o_Prompt_File_Create": "[FILE] BLOCKS:\n- If previous assistant messages contain a [GENERATED_FILES] block, and the user refers to 'the last file', 'the file you created', etc., use those path values.\n- Do not ask the user to upload the file again.\n- If file content is already provided in a [FILE] block, do not request it again.\n\nFILE_CREATE PROTOCOL:\nIf the user wants to edit an editable:true DOCX, XLSX, or text-based file and receive it as a new file, append the following block at the END of your response:\n\nfile_create\n[\n {\n \"source_path\": \"/absolute/path/to/source.docx\",\n \"format\": \"docx\",\n \"output_name\": \"edited-file.docx\",\n \"content\": \"New file content\"\n }\n]\nfile_create\n\nRules:\n- Do not include explanations outside JSON.\n- format must be one of: docx, xlsx, txt, md.\n- For DOCX, content must be plain text.\n- For XLSX, content must be a JSON table or supported operation object.\n- The content must be a 2D JSON array whenever possible.\n- Each inner array represents one row in Excel.\n- Avoid rewriting large XLSX files row by row.\n- Do not wrap the entire table inside one row.\n- Each row must be separate.", "o_Prompt_Web_Search": "If current or unknown information is needed, do not answer normally. Instead, return only this JSON format:\n{\"tool\":\"web_search\",\"query\":\"search query\"}\n\nRules:\n- Use this only when current information is really needed.\n- Use it for match scores, current prices, latest news, new versions, today's information, etc.\n- If web results are provided to you, answer normally using only those results.\n- When web search results are provided, include a short 'Sources' section at the end of your answer. Use the source titles and URLs exactly as provided. Do not invent sources.\n- When web search results are used, write source URLs as full https:// links.", "o_Prompt_Structured": "When needed, provide responses in a clean, structured, and parseable format. If JSON is requested, return only valid JSON.", "o_Prompt_Code": "When writing code, produce clean, directly usable code without unnecessary explanation. If modifying existing code, preserve the original structure as much as possible.", "o_Prompt_PDF_Text_Only_To_DOCX_Rule": "PDF TEXT REWRITE RULE:\nThe PDF text is already provided inside [CONTENT].\nDo not request file paths.\nDo not ask the user to upload the file again.\n\nRules:\n- Do not generate images.\n- Do not use HTML, markdown, or image placeholders.\n- Output plain text only.\n- Rewrite according to the request while preserving meaning.\n- Do not invent new content.\n\nReturn ONLY in file_create DOCX format:\nfile_create\n[\n {\n \"source_path\": \"/absolute/path/to/source.pdf\",\n \"format\": \"docx\",\n \"output_name\": \"edited-document.docx\",\n \"content\": \"Final rewritten text\"\n }\n]\nfile_create", "o_Prompt_PDF_Mixed_Text_Only_Rule": "PDF MIXED TEXT-ONLY RULE:\nThe PDF contains both text and images, but only text should be modified.\nDo not modify images.\n\nRules:\n- Rewrite text only.\n- Do not invent new content.\n- Do not modify images.\n\nReturn ONLY JSON:\n{\n \"type\": \"pdf_mixed_rewrite\",\n \"content\": \"File created.\",\n \"text_replacements\": {\n \"TEXT_BLOCK_ID\": \"new text\"\n },\n \"image_replacements\": {}\n}" }