mirror of
https://github.com/discourse/discourse.git
synced 2026-08-09 21:45:25 +08:00
Adds a generic Users tool that lets AI agents list forum users with safe account status fields. Agents can filter by query, groups, account status (staged, suspended, etc).
1138 lines
66 KiB
YAML
Vendored
1138 lines
66 KiB
YAML
Vendored
en:
|
|
activerecord:
|
|
attributes:
|
|
llm_model:
|
|
name: "Model ID"
|
|
max_prompt_tokens: "Context window"
|
|
dashboard:
|
|
problem:
|
|
ai_llm_status:
|
|
one: "<a href='%{base_path}/admin/plugins/discourse-ai/ai-llms/%{target}/edit'>%{model_name}</a> needs attention. In the past hour, it failed to respond %{failed_calls} out of %{total_calls} times."
|
|
other: "<a href='%{base_path}/admin/plugins/discourse-ai/ai-llms/%{target}/edit'>%{model_name}</a> needs attention. Over the last %{count} hours, it failed to respond %{failed_calls} out of %{total_calls} times."
|
|
ai_credit_soft_limit: "%{model_name} has only %{percentage_remaining}% of credits remaining. Credits will reset at %{reset_date}. <a href='%{url}'>View AI models</a>"
|
|
ai_credit_hard_limit: "You have run out of AI credits for %{model_name}. AI features will be unavailable until %{reset_date}. <a href='%{url}'>View AI models</a>"
|
|
ai_image_caption_agent: "AI image captions are enabled, but the selected image caption agent is not ready: %{reason}. <a href='%{url}'>Review the image caption agent</a>."
|
|
ai_image_caption_agent_reasons:
|
|
agent_missing: "the selected agent does not exist"
|
|
agent_vision_disabled: "the agent cannot include image uploads"
|
|
llm_missing: "the agent does not resolve to an LLM"
|
|
llm_vision_disabled: "the resolved LLM does not support image input"
|
|
discourse_automation:
|
|
ai:
|
|
flag_types:
|
|
review: "Add post to review queue"
|
|
review_hide: "Add post to review queue and hide post"
|
|
review_delete: "Add post to review queue and delete post"
|
|
review_delete_silence: "Add post to review queue, delete post and silence user"
|
|
spam: "Flag as spam and hide post"
|
|
spam_silence: "Flag as spam, hide post and silence user"
|
|
scriptables:
|
|
ai_tool_action:
|
|
title: AI Tool Action
|
|
description: Execute an AI tool when the automation triggers
|
|
llm_agent_triage:
|
|
title: Triage posts using AI Agent
|
|
description: "Respond to posts using a specific AI agent"
|
|
llm_triage:
|
|
title: Triage posts using AI
|
|
description: "Triage posts using a large language model"
|
|
flagged_post: |
|
|
%{score_reason}
|
|
%{response}
|
|
flagged_post_response: "Response from the model: %{llm_response}"
|
|
flagged_post_score_reason: |
|
|
<b>Triggered by the <a href="%{base_path}/admin/plugins/automation/%{automation_id}">%{automation_name}</a> rule.</b>
|
|
notify_author_pm:
|
|
subject: "Your post was temporarily removed for review"
|
|
body: |
|
|
Hi @%{username},
|
|
|
|
Your post in “%{topic_title}” was temporarily removed and placed in our review queue for a moderator to look at. If approved, it will be restored automatically.
|
|
|
|
Reference: %{post_url}
|
|
llm_report:
|
|
title: Periodic report using AI
|
|
description: "Periodic report based on a large language model"
|
|
llm_tagger:
|
|
title: Tag topics using AI
|
|
description: "Automatically tag topics using AI"
|
|
site_settings:
|
|
discourse_ai_enabled: "Enable the discourse AI plugin."
|
|
enable_ai_bot_starred_conversations: "Allow users to star AI bot conversations and show them in a Starred sidebar section."
|
|
ai_default_llm_model: "The default LLM model to use for all AI features"
|
|
ai_artifact_security: "The AI artifact system generates IFRAMEs with runnable code. Strict mode forces an extra click to run code. Lax mode runs code immediately. Hybrid mode allows user to supply data-ai-artifact-autorun to show right away. Disabled mode disables the artifact system."
|
|
ai_toxicity_enabled: "Enable the toxicity module."
|
|
ai_toxicity_inference_service_api_endpoint: "URL where the API is running for the toxicity module"
|
|
ai_toxicity_inference_service_api_key: "API key for the toxicity API"
|
|
ai_toxicity_inference_service_api_model: "Model to use for inference. Multilingual model works with Italian, French, Russian, Portuguese, Spanish and Turkish."
|
|
ai_toxicity_flag_automatically: "Automatically flag posts / chat messages that are above the configured thresholds."
|
|
ai_toxicity_flag_threshold_toxicity: "Toxicity: a rude, disrespectful, or unreasonable comment that is somewhat likely to make you leave a discussion or give up on sharing your perspective"
|
|
ai_toxicity_flag_threshold_severe_toxicity: "Severe Toxicity: a very hateful, aggressive, or disrespectful comment that is very likely to make you leave a discussion or give up on sharing your perspective"
|
|
ai_toxicity_flag_threshold_obscene: "Obscene"
|
|
ai_toxicity_flag_threshold_identity_attack: "Identity Attack"
|
|
ai_toxicity_flag_threshold_insult: "Insult"
|
|
ai_toxicity_flag_threshold_threat: "Threat"
|
|
ai_toxicity_flag_threshold_sexual_explicit: "Sexual Explicit"
|
|
ai_toxicity_groups_bypass: "Users on those groups will not have their posts classified by the toxicity module."
|
|
|
|
ai_sentiment_enabled: "Enable the sentiment module."
|
|
ai_sentiment_inference_service_api_endpoint: "URL where the API is running for the sentiment module"
|
|
ai_sentiment_inference_service_api_key: "API key for the sentiment API"
|
|
ai_sentiment_model_configs: "Classification model endpoints to use for inference. Sentiment classifies posts as positive, neutral, or negative. Emotion classifies posts across supported emotion labels."
|
|
ai_sentiment_models: "Classification model endpoints to use for inference. Sentiment classifies posts as positive, neutral, or negative. Emotion classifies posts across supported emotion labels."
|
|
ai_sentiment_sentiment_classification_strategy: "Sentiment classification backend."
|
|
ai_sentiment_sentiment_agent: "Agent to use for sentiment classification when the sentiment backend is agent."
|
|
ai_sentiment_emotion_classification_strategy: "Emotion classification backend."
|
|
ai_sentiment_emotion_agent: "Agent to use for emotion classification when the emotion backend is agent."
|
|
|
|
ai_nsfw_detection_enabled: "Enable the NSFW module."
|
|
ai_nsfw_inference_service_api_endpoint: "URL where the API is running for the NSFW module"
|
|
ai_nsfw_inference_service_api_key: "API key for the NSFW API"
|
|
ai_nsfw_flag_automatically: "Automatically flag NSFW posts that are above the configured thresholds."
|
|
ai_nsfw_flag_threshold_general: "General Threshold for an image to be considered NSFW."
|
|
ai_nsfw_flag_threshold_drawings: "Threshold for a drawing to be considered NSFW."
|
|
ai_nsfw_flag_threshold_hentai: "Threshold for an image classified as hentai to be considered NSFW."
|
|
ai_nsfw_flag_threshold_porn: "Threshold for an image classified as porn to be considered NSFW."
|
|
ai_nsfw_flag_threshold_sexy: "Threshold for an image classified as sexy to be considered NSFW."
|
|
ai_nsfw_models: "Models to use for NSFW inference."
|
|
|
|
ai_spam_detection_enabled: "Enable the AI spam detection module"
|
|
ai_spam_detection_max_post_count: "Maximum number of posts a user can have before they are no longer scanned for spam"
|
|
ai_spam_detection_max_trust_level: "Maximum trust level of users to scan for spam"
|
|
|
|
ai_openai_api_key: "API key for OpenAI API. ONLY used for Image creation and edits. For GPT use the LLM config tab"
|
|
|
|
ai_helper_enabled: "Enable the AI helper."
|
|
composer_ai_helper_allowed_groups: "Users on these groups will see the AI helper button in the composer."
|
|
ai_helper_allowed_in_pm: "Enable the composer's AI helper in PMs."
|
|
ai_helper_automatic_chat_thread_title_delay: "Delay in minutes before the AI helper automatically sets the chat thread title."
|
|
ai_helper_automatic_chat_thread_title: "Automatically set the chat thread titles based on thread contents."
|
|
ai_helper_enabled_features: "Select the features to enable in the AI helper."
|
|
ai_image_caption_agent: "The agent to use for AI image captions. Custom agents must have image uploads enabled and use a vision-capable LLM."
|
|
ai_post_image_captions_enabled: "Enable AI captions for post images. Generating missing captions requires a configured {{setting:ai_image_caption_agent}}."
|
|
ai_post_image_captions_per_post_limit: "Maximum number of post images to caption per post."
|
|
ai_post_image_captions_backfill_hourly_rate: "Maximum number of posts per hour to backfill with AI-generated image captions. Set to 0 to disable backfill."
|
|
ai_post_image_captions_backfill_max_age_days: "Maximum age in days of posts to backfill with AI-generated image captions."
|
|
post_ai_helper_allowed_groups: "User groups allowed to access AI Helper features in posts"
|
|
ai_helper_post_illustrator_agent: "The agent to use for the AI helper's illustrate post feature. Note: you must also create an image generation tool (Admin > Plugins > Discourse AI > Tools) for this feature to work."
|
|
ai_helper_chat_thread_title_agent: "The agent to use for generating chat thread titles."
|
|
|
|
ai_embeddings_selected_model: "Use the selected model for generating embeddings."
|
|
ai_embeddings_generate_for_pms: "Generate embeddings for personal messages."
|
|
ai_embeddings_semantic_related_topics_enabled: "Use Semantic Search for related topics."
|
|
ai_embeddings_semantic_related_topics: "Maximum number of topics to show in related topic section."
|
|
ai_embeddings_backfill_batch_size: "Number of embeddings to backfill every 15 minutes."
|
|
ai_embeddings_semantic_search_enabled: "Enable full-page semantic search."
|
|
ai_embeddings_semantic_search_use_hyde: "Use HyDE for semantic full page search. Uses an LLM to create an hypothetical post from the user search term to help with matches."
|
|
ai_embeddings_semantic_quick_search_enabled: "Enable semantic search option in search menu popup."
|
|
ai_embeddings_semantic_related_include_closed_topics: "Include closed topics in semantic search results"
|
|
ai_embeddings_semantic_related_age_penalty: "Apply exponential age penalty to topics in semantic search results. 0.0 = no penalty, 0.3 = gentle bias toward recently active content, 1.0+ = strong recency bias."
|
|
ai_embeddings_semantic_related_age_time_scale: "Time scale in days for age penalty calculation. Topics inactive this many days receive ~50% penalty with penalty=1.0. Use 365 for yearly scale, 90 for quarterly scale."
|
|
ai_embeddings_per_post_enabled: Generate embeddings for each post
|
|
|
|
ai_admin_dashboard_enabled: "Enable AI features on the admin dashboard."
|
|
ai_admin_dashboard_highlights_agent: "Agent that explains notable community shifts on the admin dashboard."
|
|
ai_admin_dashboard_highlights_category_scope: "Choose which categories AI highlights can use. Include and exclude options use {{setting:ai_admin_dashboard_highlights_categories}}. Personal messages are always excluded."
|
|
ai_admin_dashboard_highlights_categories: "Categories used when the AI highlights category scope is set to <strong>include</strong> or <strong>exclude</strong>."
|
|
ai_summarization_enabled: "Enable the summarize feature"
|
|
ai_summarization_agent: "Agent to use for summarize feature"
|
|
ai_pm_summarization_allowed_groups: "Groups allowed to create and view summaries in PMs."
|
|
ai_summary_gists_enabled: "Generate brief summaries of latest replies in topics automatically"
|
|
ai_summary_gists_agent: "Agent used to generate brief topic summaries. Gist generation always uses the built-in final-summary tool; other tools and structured response formats configured on the agent are ignored."
|
|
ai_summary_backfill_maximum_topics_per_hour: "Number of topic summaries to backfill per hour. Each localized gist counts toward this limit."
|
|
|
|
ai_bot_enabled: "Enable the AI Bot module."
|
|
ai_bot_enabled_llms: "LLMs available to select for AI bot conversations"
|
|
ai_bot_enable_chat_warning: "Display a warning when PM chat is initiated. Can be overridden by editing the translation string: discourse_ai.ai_bot.pm_warning"
|
|
ai_bot_allowed_groups: "When the GPT Bot has access to the PM, it will reply to members of these groups."
|
|
ai_bot_debugging_allowed_groups: "Allow these groups to see a debug button on posts which displays the raw AI request and response"
|
|
ai_bot_public_sharing_allowed_groups: "Allow these groups to share AI personal messages with the public via a unique publicly available link. Note: if your site requires login, shares will also require login."
|
|
ai_bot_add_to_header: "Display a button in the header to start a PM with an AI Bot"
|
|
ai_bot_add_to_community_section: "Display a link in the sidebar community section to start a PM with an AI Bot"
|
|
ai_bot_github_access_token: "GitHub access token for use with GitHub AI tools (required for search support)"
|
|
ai_bot_enable_docked_composer: "Enable the docked chat-style composer for AI bot conversations instead of the standard floating composer."
|
|
|
|
ai_discover_enabled: "Enable the discovery search feature"
|
|
ai_discover_agent: "Agent to use for discovery search feature"
|
|
|
|
ai_google_custom_search_api_key: "API key for the Google Custom Search API see: https://developers.google.com/custom-search"
|
|
ai_google_custom_search_cx: "CX for Google Custom Search API"
|
|
|
|
ai_discord_search_enabled: "Enables the Discord search feature"
|
|
ai_discord_app_id: "The ID of the Discord application you would like to connect Discord search to"
|
|
ai_discord_app_public_key: "The public key of the Discord application you would like to connect Discord search to"
|
|
ai_discord_search_mode: "Select the search mode to use for Discord search"
|
|
ai_discord_search_agent: "The agent to use for Discord search."
|
|
ai_discord_allowed_guilds: "Discord guilds (servers) where the bot is allowed to search"
|
|
|
|
ai_translation_enabled: "Enable the AI translation feature"
|
|
ai_translation_category_scope: "Choose which categories AI translation can use. Include and exclude options use {{setting:ai_translation_categories}}. Personal messages are controlled by {{setting:ai_translation_personal_messages}}."
|
|
ai_translation_categories: "Categories used when the AI translation category scope is set to <strong>include</strong> or <strong>exclude</strong>."
|
|
ai_translation_personal_messages: "Controls which personal messages are translated. 'none' disables PM translation. 'group' translates only group PMs. 'all' translates all PMs."
|
|
ai_translation_include_bot_content: "When enabled, content written by bots (user IDs below 0) will also be sent for translation."
|
|
ai_translation_backfill_start_date: "The UTC date from which historical posts and topics will be sent for translation backfilling. Leave blank to disable backfilling. New content will continue to be translated."
|
|
ai_translation_backfill_hourly_rate: "The number of posts and topics to translate per hour during backfill operations. Set to 0 to disable automatic backfilling of translations for existing content."
|
|
ai_translation_backfill_parallel_jobs: "The number of parallel post localization jobs to run per backfill cycle. Higher values increase throughput but consume more resources."
|
|
ai_usage_rollup_after_days: "Number of days to keep per-request AI usage stats before rolling them into daily aggregates. Set to 0 to disable rollups."
|
|
ai_audit_logs_purge_after_days: "Delete AI API audit logs older than this many days. Defaults to about 6 months. Set to 0 to keep indefinitely."
|
|
|
|
reviewables:
|
|
reasons:
|
|
flagged_by_toxicity: The AI plugin flagged this after classifying it as toxic.
|
|
flagged_by_nsfw: The AI plugin flagged this after classifying at least one of the attached images as NSFW.
|
|
|
|
reports:
|
|
sentiment_analysis:
|
|
title: "Sentiment analysis"
|
|
description: "This report provides sentiment analysis for posts, grouped by category, with positive, negative, and neutral scores for each post and category."
|
|
overall_sentiment:
|
|
title: "Overall sentiment"
|
|
description: "The chart compares the number of posts classified as either positive or negative. These are calculated when positive or negative scores > the set threshold score. This means neutral posts are not shown. Personal messages (PMs) are also excluded. Depending on the selected sentiment classification method, posts are classified with either the configured sentiment classification model ('cardiffnlp/twitter-roberta-base-sentiment-latest') or the configured sentiment classification agent."
|
|
xaxis: "Positive(%)"
|
|
yaxis: "Date"
|
|
emotion_admiration:
|
|
title: 🤩 Admiration
|
|
description: "Posts classified with the emotion admiration via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_amusement:
|
|
title: 😄 Amusement
|
|
description: "Posts classified with the emotion amusement via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_anger:
|
|
title: 😠 Anger
|
|
description: "Posts classified with the emotion anger via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_annoyance:
|
|
title: 😒 Annoyance
|
|
description: "Posts classified with the emotion annoyance via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_approval:
|
|
title: 👍 Approval
|
|
description: "Posts classified with the emotion approval via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_caring:
|
|
title: 🤗 Caring
|
|
description: "Posts classified with the emotion caring via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_confusion:
|
|
title: 😕 Confusion
|
|
description: "Posts classified with the emotion confusion via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_curiosity:
|
|
title: 🤔 Curiosity
|
|
description: "Posts classified with the emotion curiosity via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_desire:
|
|
title: 😍 Desire
|
|
description: "Posts classified with the emotion desire via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_disappointment:
|
|
title: 😞 Disappointment
|
|
description: "Posts classified with the emotion disappointment via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_disapproval:
|
|
title: 👎 Disapproval
|
|
description: "Posts classified with the emotion disapproval via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_disgust:
|
|
title: 🤢 Disgust
|
|
description: "Posts classified with the emotion disgust via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_embarrassment:
|
|
title: 😳 Embarrassment
|
|
description: "Posts classified with the emotion embarrassment via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_excitement:
|
|
title: 🤪 Excitement
|
|
description: "Posts classified with the emotion excitement via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_fear:
|
|
title: 😨 Fear
|
|
description: "Posts classified with the emotion fear via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_gratitude:
|
|
title: 🙏 Gratitude
|
|
description: "Posts classified with the emotion gratitude via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_grief:
|
|
title: 😢 Grief
|
|
description: "Posts classified with the emotion grief via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_joy:
|
|
title: 😊 Joy
|
|
description: "Posts classified with the emotion joy via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_love:
|
|
title: ❤️ Love
|
|
description: "Posts classified with the emotion love via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_nervousness:
|
|
title: 😰 Nervousness
|
|
description: "Posts classified with the emotion nervousness via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_neutral:
|
|
title: 😐 Neutral
|
|
description: "Posts classified with the emotion neutral via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_optimism:
|
|
title: 🌟 Optimism
|
|
description: "Posts classified with the emotion optimism via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_pride:
|
|
title: 🦁 Pride
|
|
description: "Posts classified with the emotion pride via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_realization:
|
|
title: 💡 Realization
|
|
description: "Posts classified with the emotion realization via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_relief:
|
|
title: 😌 Relief
|
|
description: "Posts classified with the emotion relief via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_remorse:
|
|
title: 😔 Remorse
|
|
description: "Posts classified with the emotion remorse via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_sadness:
|
|
title: 😭 Sadness
|
|
description: "Posts classified with the emotion sadness via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
emotion_surprise:
|
|
title: 😲 Surprise
|
|
description: "Posts classified with the emotion surprise via AI, using the model 'SamLowe/roberta-base-go_emotions'."
|
|
|
|
discourse_ai:
|
|
ai_artifact:
|
|
errors:
|
|
max_keys_exceeded:
|
|
one: "You can only have %{count} key in the artifact."
|
|
other: "You can only have %{count} keys in the artifact."
|
|
link: "Show in new tab"
|
|
copy_embed: "Copy embed"
|
|
view_source: "View Source"
|
|
view_changes: "View Changes"
|
|
change_description: "Change Description"
|
|
copied: "Copied to clipboard"
|
|
unknown_model: "Unknown AI model"
|
|
|
|
discourse_workflows:
|
|
ai_agent:
|
|
errors:
|
|
invalid_mode: "'%{mode}' is not a supported AI agent execution mode."
|
|
locked_default_llm_missing: "Agent '%{agent}' is locked to its default LLM, but no valid default LLM is configured"
|
|
llm_not_found: "LLM model with id %{llm_model_id} not found"
|
|
no_llm_configured: "No LLM is configured for agent '%{agent}'. Select an LLM model or configure an agent/site default LLM."
|
|
|
|
tools:
|
|
custom_name: "%{name} (custom)"
|
|
presets:
|
|
browse_web_jina:
|
|
name: "Browse web (jina.ai)"
|
|
exchange_rate:
|
|
name: "Exchange rate"
|
|
stock_quote:
|
|
name: "Stock quote (AlphaVantage)"
|
|
image_generation_category:
|
|
name: "Image generation..."
|
|
image_generation_custom:
|
|
name: "Custom"
|
|
image_generation_openai:
|
|
name: "OpenAI"
|
|
image_generation_gemini:
|
|
name: "Nano Banana"
|
|
image_generation_flux:
|
|
name: "FLUX 1.1 Pro"
|
|
image_generation_flux2:
|
|
name: "FLUX 2 Pro"
|
|
empty_tool:
|
|
name: "Start from blank..."
|
|
name:
|
|
characters: "must only include numbers, letters, and underscores"
|
|
secret_contracts:
|
|
invalid_payload: "Secret contracts must be an array."
|
|
invalid_contract: "Secret contract at index %{index} is invalid."
|
|
alias_required: "Secret contract at index %{index} must include an alias."
|
|
alias_too_long: "Secret alias `%{alias}` is too long."
|
|
alias_invalid: "Secret alias `%{alias}` must only include numbers, letters, and underscores."
|
|
alias_not_unique: "Secret alias `%{alias}` is duplicated."
|
|
secret_bindings:
|
|
invalid_payload: "Secret bindings must be an array."
|
|
secret_not_found: "The selected credential does not exist."
|
|
alias_not_declared: "Alias `%{alias}` is not declared in this tool."
|
|
secret_runtime:
|
|
alias_not_declared: "Credential alias `%{alias}` is not declared for this tool."
|
|
missing_binding: "Credential alias `%{alias}` is required but not bound."
|
|
missing_required_aliases: "Missing required credential bindings for aliases: %{aliases}."
|
|
secret_not_found: "Credential alias `%{alias}` is bound to a missing credential."
|
|
unknown_error: "Unable to resolve the requested credential."
|
|
|
|
mcp_servers:
|
|
secret_not_found: "The selected credential does not exist."
|
|
invalid_url_not_https: "must be a valid HTTPS URL"
|
|
invalid_url_not_reachable: "must resolve to a publicly accessible address"
|
|
oauth_client_id_required: "OAuth client ID is required for manual client registration."
|
|
errors:
|
|
invalid_response: "The MCP server returned an invalid response."
|
|
request_failed: "The MCP server request failed with status %{status}."
|
|
session_expired: "The MCP session expired."
|
|
timeout: "The MCP server request timed out."
|
|
oauth_authorization_required: "OAuth authorization is required before this MCP server can be used. Connect it to %{issuer} from the admin UI."
|
|
oauth_discovery_failed: "Unable to discover OAuth authorization details for this MCP server."
|
|
oauth_discovery_failed_with_status: "OAuth discovery failed with status %{status}."
|
|
oauth_not_configured: "OAuth is not configured for this MCP server."
|
|
oauth_refresh_token_missing: "The OAuth refresh token is missing. Reconnect this MCP server."
|
|
oauth_save_before_connect: "Save the MCP server before testing the OAuth connection."
|
|
oauth_state_invalid: "The OAuth authorization state is invalid or has expired. Start the connection again."
|
|
oauth_token_exchange_failed: "The OAuth token exchange failed with status %{status}."
|
|
oauth_https_required: "OAuth requires your site to be served over HTTPS."
|
|
oauth_callback_failed: "OAuth connection failed: %{message}"
|
|
oauth_refresh_token_required: "The OAuth authorization server did not return a refresh token. Adjust the advanced OAuth options and reconnect this MCP server."
|
|
oauth_client_metadata_public_https_required: "Client metadata document registration requires a public HTTPS site URL. Current client metadata URL: %{url}"
|
|
oauth_registration_endpoint_missing: "The OAuth authorization server does not advertise a registration endpoint."
|
|
oauth_manual_client_registration_required: "The OAuth authorization server %{issuer} does not advertise dynamic client registration. Switch this MCP server to Manual client credentials and provide a registered OAuth client ID."
|
|
oauth_client_secret_required: "The OAuth authorization server %{issuer} requires token endpoint client authentication (%{methods}). Configure manual client credentials with a client secret."
|
|
oauth_token_endpoint_auth_method_unsupported: "The OAuth authorization server %{issuer} only advertises unsupported token endpoint client authentication methods (%{methods}). This MCP server currently supports none, client_secret_basic, and client_secret_post."
|
|
oauth_client_registration_failed: "Dynamic client registration failed with status %{status}."
|
|
oauth_client_registration_failed_no_id: "Dynamic client registration succeeded but no client_id was returned."
|
|
oauth_authorization_params_invalid: "OAuth authorization params must be a JSON object."
|
|
oauth_token_params_invalid: "OAuth token params must be a JSON object."
|
|
|
|
ai_helper:
|
|
errors:
|
|
completion_request_failed: "Something went wrong while trying to provide suggestions. Please, try again."
|
|
no_illustrator_agent: "Post Illustrator agent is not configured. Please check your site settings."
|
|
no_image_generation_tool: "Post Illustrator agent must have an image generation tool attached. Please configure an image generation tool for this agent in the admin panel."
|
|
no_image_generated: "Failed to generate image. Please try again or check your tool configuration."
|
|
llm_model_not_configured: "No language model is configured for image generation. Please configure a default language model in your site settings."
|
|
unknown_error: "An unexpected error occurred while generating thumbnails. Please try again."
|
|
prompts:
|
|
translate: Translate to %{language}
|
|
generate_titles: Suggest topic titles
|
|
proofread: Proofread text
|
|
markdown_table: Generate Markdown table
|
|
custom_prompt: "Custom Prompt"
|
|
explain: "Explain"
|
|
illustrate_post: "Illustrate Post"
|
|
replace_dates: "Smart dates"
|
|
image_caption:
|
|
aria_description: "%{description} (Captioned by AI)"
|
|
image_caption:
|
|
configuration:
|
|
agent_missing: "Select an existing agent for AI image captions."
|
|
agent_vision_disabled: "The AI image caption agent must have image uploads enabled."
|
|
llm_missing: "The AI image caption agent must use an LLM."
|
|
llm_vision_disabled: "The AI image caption agent must use a vision-capable LLM."
|
|
post_image_captions:
|
|
errors:
|
|
description_blank: "Caption can't be blank."
|
|
description_too_long:
|
|
one: "Caption must be %{count} character or fewer."
|
|
other: "Caption must be %{count} characters or fewer."
|
|
|
|
share_ai:
|
|
read_more: "Read full transcript"
|
|
onebox_title: "AI Conversation with %{llm_name}"
|
|
formatted_excerpt: "AI Conversation with %{llm_name}:\n %{excerpt}"
|
|
title: "%{title} - AI Conversation - %{site_name}"
|
|
errors:
|
|
not_allowed: "You are not allowed to share this topic"
|
|
other_people_in_pm: "Personal messages with other humans cannot be shared publicly"
|
|
other_content_in_pm: "Personal messages containing posts from other people cannot be shared publicly"
|
|
failed_to_share: "Failed to share the conversation"
|
|
conversation_deleted: "Conversation share deleted successfully"
|
|
spam_detection:
|
|
flag_reason: "Flagged as spam by <a href='%{url}'>Discourse AI</a>"
|
|
silence_reason: "User silenced automatically by <a href='%{url}'>Discourse AI</a>"
|
|
invalid_error_type: "Invalid error type provided"
|
|
unexpected: "An unexpected error occurred"
|
|
bot_user_update_failed: "Failed to update the spam scanning bot user"
|
|
configuration_missing: "The AI spam detection configuration is missing. Add configuration in the 'Admin > Plugins > Discourse AI > Spam' before enabling."
|
|
logging_subject: "Spam detection"
|
|
|
|
ai_bot:
|
|
errors:
|
|
invalid_agent_id: "The specified AI agent does not exist or you do not have access to it"
|
|
cannot_send_pm_to_agent: "You cannot send personal messages to this AI agent"
|
|
reply_error: "Sorry, it looks like our system encountered an unexpected issue while trying to reply.\n\n[details='Error details']\n%{details}\n[/details]"
|
|
default_pm_prefix: "[Untitled AI bot PM]"
|
|
thinking: "Thinking"
|
|
tool_pending_approval: "This action requires moderator approval before it can be executed."
|
|
chat_tool_approval:
|
|
approved: "Approved by @%{username}."
|
|
rejected: "Rejected by @%{username}."
|
|
failed: "Could not complete the action: %{error}"
|
|
unexpected_error: "an unexpected error occurred"
|
|
agents:
|
|
default_llm_required: "Default LLM model is required prior to enabling Chat"
|
|
cannot_delete_system_agent: "System agents cannot be deleted, please disable it instead"
|
|
cannot_edit_system_agent: "System agents can only be renamed, you may not edit tools or system prompt, instead disable and make a copy"
|
|
cannot_have_duplicate_tools: "Can not have duplicate tools"
|
|
native_tool_requires_forced_llm: "Provider-native tools require a default LLM with \"Force default LLM\" enabled"
|
|
native_tool_unsupported_by_llm: "The selected default LLM does not support one of the enabled provider-native tools"
|
|
admin_dashboard_highlights:
|
|
name: "Admin Dashboard Highlights"
|
|
description: "Writes the brief readout shown at the top of the admin dashboard, explaining what changed and what deserves attention this period"
|
|
github_helper:
|
|
name: "GitHub Helper"
|
|
description: "AI Bot specialized in assisting with GitHub-related tasks and questions"
|
|
general:
|
|
name: Forum Helper
|
|
description: "General purpose AI Bot capable of performing various tasks"
|
|
artist:
|
|
name: Artist
|
|
description: "AI Bot specialized in generating images"
|
|
designer:
|
|
name: Designer
|
|
description: "AI Bot specialized in generating and editing images"
|
|
forum_researcher:
|
|
name: Forum Researcher
|
|
description: "AI Bot specialized in deep research for the forum"
|
|
sql_helper:
|
|
name: SQL Helper
|
|
description: "AI Bot specialized in helping craft SQL queries on this Discourse instance"
|
|
settings_explorer:
|
|
name: Settings Explorer
|
|
description: "AI Bot specialized in helping explore Discourse site settings"
|
|
researcher:
|
|
name: Web Researcher
|
|
description: "AI Bot with Google access that can both search and read web pages"
|
|
creative:
|
|
name: Creative
|
|
description: "AI Bot with no external integrations specialized in creative tasks"
|
|
dall_e3:
|
|
name: "DALL-E 3"
|
|
description: "AI Bot specialized in generating images using DALL-E 3"
|
|
discourse_helper:
|
|
name: "Discourse Helper"
|
|
description: "AI Bot specialized in helping with Discourse related tasks"
|
|
discourse_admin_assistant:
|
|
name: "Discourse Admin Assistant"
|
|
description: "AI Bot that answers Discourse questions and helps administrators manage site settings"
|
|
web_artifact_creator:
|
|
name: "Web Artifact Creator"
|
|
description: "AI Bot specialized in creating interactive web artifacts"
|
|
summarizer:
|
|
name: "Summarizer"
|
|
description: "Default agent used to power AI summaries"
|
|
short_summarizer:
|
|
name: "Summarizer (short form)"
|
|
description: "Default agent used to power AI short summaries for topic lists' items"
|
|
concept_finder:
|
|
name: "Concept Finder"
|
|
description: "AI Bot specialized in identifying concepts and themes in content"
|
|
concept_matcher:
|
|
name: "Concept Matcher"
|
|
description: "AI Bot specialized in matching content against existing concepts"
|
|
concept_deduplicator:
|
|
name: "Concept Deduplicator"
|
|
description: "AI Bot specialized in deduplicating concepts"
|
|
custom_prompt:
|
|
name: "Custom prompt"
|
|
description: "Default agent powering the Helper's custom prompt feature"
|
|
smart_dates:
|
|
name: "Smart dates"
|
|
description: "Default agent powering the Helper's smart dates feature"
|
|
markdown_table_generator:
|
|
name: "Markdown table generator"
|
|
description: "Default agent powering the Helper's generate Markdown table feature"
|
|
post_illustrator:
|
|
name: "Post illustrator"
|
|
description: "Generates images to illustrate posts using available image generation tools"
|
|
proofreader:
|
|
name: "Proofreader"
|
|
description: "Default agent powering the Helper's proofread text feature"
|
|
titles_generator:
|
|
name: "Titles generator"
|
|
description: "Default agent powering the Helper's suggest topic titles feature"
|
|
tutor:
|
|
name: "Tutor"
|
|
description: "Default agent powering the Helper's explain feature"
|
|
translator:
|
|
name: "Translator"
|
|
description: "Default agent powering the Helper's translator feature"
|
|
image_captioner:
|
|
name: "Image captions"
|
|
description: "Default agent powering the image caption feature"
|
|
locale_detector:
|
|
name: "Locale detector"
|
|
description: "Powers the translation feature by detecting the locale of a given text (posts, titles, etc.)"
|
|
post_raw_translator:
|
|
name: "Post translator"
|
|
description: "Powers the translation feature by translating posts containing Discourse Markdown"
|
|
topic_title_translator:
|
|
name: "Topic title translator"
|
|
description: "Powers the translation feature by translating topic titles"
|
|
short_text_translator:
|
|
name: "Short text translator"
|
|
description: "Powers the translation feature by as a generic text translator, used for short texts like category names or tags"
|
|
spam_detector:
|
|
name: "Spam detector"
|
|
description: "Default agent powering our Spam detection feature"
|
|
content_creator:
|
|
name: "Content creator"
|
|
description: "Default agent powering HyDE search"
|
|
report_runner:
|
|
name: "Report runner"
|
|
description: "Default agent used in the report automation script"
|
|
discover:
|
|
name: "Discover"
|
|
description: "Default agent used in the discoveries feature (complimentary search)"
|
|
chat_thread_titler:
|
|
name: "Chat Thread Titler"
|
|
description: "Default agent powering automatic chat thread title generation"
|
|
sentiment_classifier:
|
|
name: "Sentiment classifier"
|
|
description: "Default agent powering sentiment classification"
|
|
emotion_classifier:
|
|
name: "Emotion classifier"
|
|
description: "Default agent powering emotion classification"
|
|
|
|
topic_not_found: "Summary unavailable, topic not found!"
|
|
summarizing: "Summarizing topic"
|
|
searching: "Searching for: '%{query}'"
|
|
tool_options:
|
|
researcher:
|
|
researcher_llm:
|
|
name: "LLM"
|
|
description: "Language model to use for research (default to current agent's LLM)"
|
|
max_tokens_per_batch:
|
|
name: "Maximum tokens per batch"
|
|
description: "Maximum number of tokens to use for each batch in the research"
|
|
max_tokens_per_post:
|
|
name: "Maximum tokens per post"
|
|
description: "Maximum number of tokens to use for each post in the research"
|
|
max_results:
|
|
name: "Maximum number of results"
|
|
description: "Maximum number of results to include in a filter"
|
|
include_private:
|
|
name: "Include private"
|
|
description: "Include private topics in the filters"
|
|
create_artifact:
|
|
creator_llm:
|
|
name: "LLM"
|
|
description: "Language model to use for artifact creation"
|
|
update_artifact:
|
|
editor_llm:
|
|
name: "LLM"
|
|
description: "Language model to use for artifact edits"
|
|
update_algorithm:
|
|
name: "Update Algorithm"
|
|
description: "Ask LLM to fully replace, or use diff to update"
|
|
do_not_echo_artifact:
|
|
name: "Do Not Echo Artifact"
|
|
description: "Will limit costs however effectiveness of Artifact updates will be reduced"
|
|
google:
|
|
base_query:
|
|
name: "Base Search Query"
|
|
description: "Base query to use when searching. Examples: 'site:example.com' will only include results from example.com, before:2022-01-01 will only includes results from 2021 and earlier. This text is prepended to the search query."
|
|
read:
|
|
read_private:
|
|
name: "Read Private"
|
|
description: "Allow access to all topics user has access to (by default only public topics are included)"
|
|
search:
|
|
search_private:
|
|
name: "Search Private"
|
|
description: "Include all topics user has access to in search results (by default only public topics are included)"
|
|
max_results:
|
|
name: "Maximum number of results"
|
|
description: "Maximum number of results to include in the search - if empty default rules will be used and count will be scaled depending on model used. Highest value is 100."
|
|
base_query:
|
|
name: "Base Search Query"
|
|
description: "Base query to use when searching. Example: '#urgent' will prepend '#urgent' to the search query and only include topics with the urgent category or tag."
|
|
flag_post:
|
|
flag_type:
|
|
name: "Flag Type"
|
|
description: "Controls whether the post is reviewed, hidden, deleted, or treated as spam."
|
|
native_tools:
|
|
web_search:
|
|
name: "Web Search (native)"
|
|
help: "Lets the model search the web using the provider's built-in search, when the agent is forced to a supported LLM."
|
|
web_fetch:
|
|
name: "Web Fetch (native)"
|
|
help: "Lets the model open and read web pages using the provider's built-in web access, when the agent is forced to a supported LLM."
|
|
google_maps:
|
|
name: "Google Maps (native)"
|
|
help: "Lets the model use current Google Maps place and location data, when the agent is forced to a supported Gemini LLM."
|
|
code_execution:
|
|
name: "Code execution (native)"
|
|
help: "Lets the model write and run Python code in the provider's sandbox, when the agent is forced to a supported Gemini LLM."
|
|
tool_summary:
|
|
read_artifact: "Read a web artifact"
|
|
search_uploaded_documents: "Search uploaded documents"
|
|
update_artifact: "Update a web artifact"
|
|
create_artifact: "Create web artifact"
|
|
web_browser: "Browse Web"
|
|
github_search_files: "GitHub search files"
|
|
github_search_code: "GitHub code search"
|
|
github_file_content: "GitHub file content"
|
|
github_diff: "GitHub diff"
|
|
random_picker: "Random Picker"
|
|
categories: "List categories"
|
|
users: "List users"
|
|
flag_post: "Flag post"
|
|
close_topic: "Close topic"
|
|
suspend_user: "Suspend user"
|
|
silence_user: "Silence user"
|
|
unlist_topic: "Unlist topic"
|
|
lock_post: "Lock post"
|
|
delete_topic: "Delete topic"
|
|
edit_post: "Edit post"
|
|
edit_tags: "Edit tags"
|
|
edit_category: "Edit category"
|
|
set_topic_timer: "Set topic timer"
|
|
set_slow_mode: "Set slow mode"
|
|
move_posts: "Move posts"
|
|
grant_badge: "Grant badge"
|
|
list_reviewables: "List review queue"
|
|
perform_reviewable_action: "Review queue action"
|
|
add_reviewable_note: "Add review queue note"
|
|
assign: "Assign topic"
|
|
mark_as_solved: "Mark as solved"
|
|
search: "Search"
|
|
tags: "List tags"
|
|
time: "Time"
|
|
summarize: "Summarize"
|
|
set_topic_summary: "Set topic summary"
|
|
image: "Generate image"
|
|
google: "Search Google"
|
|
read: "Read topic"
|
|
setting_context: "Look up site setting context"
|
|
schema: "Look up database schema"
|
|
search_settings: "Searching site settings"
|
|
read_site_setting: "Read site setting"
|
|
change_site_setting: "Change site setting"
|
|
dall_e: "Generate image"
|
|
search_meta_discourse: "Search Meta Discourse"
|
|
javascript_evaluator: "Evaluate JavaScript"
|
|
create_image: "Creating image"
|
|
edit_image: "Editing image"
|
|
researcher: "Researching"
|
|
researcher_dry_run: "Preparing research"
|
|
tool_help:
|
|
read_artifact: "Read a web artifact using the AI Bot"
|
|
search_uploaded_documents: "Search documents uploaded to this agent"
|
|
update_artifact: "Update a web artifact using the AI Bot"
|
|
create_artifact: "Create a web artifact using the AI Bot"
|
|
web_browser: "Browse web page using the AI Bot"
|
|
github_search_code: "Search for code in a GitHub repository"
|
|
github_search_files: "Search for files in a GitHub repository"
|
|
github_file_content: "Retrieve content of files from a GitHub repository"
|
|
github_diff: "Retrieve a GitHub pull request or commit diff"
|
|
random_picker: "Pick a random number or a random element of a list"
|
|
categories: "List all publicly visible categories on the forum"
|
|
users: "List users on the forum"
|
|
flag_post: "Flag the current post for staff review"
|
|
close_topic: "Close or open a topic"
|
|
suspend_user: "Suspend (ban) a user, blocking them from logging in or posting"
|
|
silence_user: "Silence a user, blocking them from posting while they can still read"
|
|
unlist_topic: "List or unlist a topic"
|
|
lock_post: "Lock or unlock a post"
|
|
delete_topic: "Delete a topic"
|
|
edit_post: "Edit the content of a post"
|
|
edit_tags: "Edit the tags on a topic"
|
|
edit_category: "Move a topic to a different category"
|
|
set_topic_timer: "Set a timer on a topic to close, open, delete, or bump it"
|
|
set_slow_mode: "Enable or disable slow mode on a topic"
|
|
move_posts: "Move posts to a new or existing topic"
|
|
grant_badge: "Grant a badge to a user"
|
|
list_reviewables: "List pending review queue items with optional filtering"
|
|
perform_reviewable_action: "Perform an action on a review queue item"
|
|
add_reviewable_note: "Add a note to a review queue item"
|
|
assign: "Assign or unassign a topic to a user or group"
|
|
mark_as_solved: "Mark or unmark a post as the accepted solution"
|
|
search: "Search all public topics on the forum"
|
|
tags: "List all tags on the forum"
|
|
time: "Find time in various time zones"
|
|
summary: "Summarize a topic"
|
|
set_topic_summary: "Set the final short topic summary"
|
|
image: "Generate image using Stable Diffusion"
|
|
create_image: "Generate image using Open AI GPT image model"
|
|
edit_image: "Edit image using Open AI GPT image model"
|
|
google: "Search Google for a query"
|
|
read: "Read public topic on the forum"
|
|
setting_context: "Look up site setting context"
|
|
schema: "Look up database schema"
|
|
search_settings: "Search site settings"
|
|
read_site_setting: "Read the current value of a site setting"
|
|
change_site_setting: "Change the value of a site setting"
|
|
dall_e: "Generate image using DALL-E 3"
|
|
search_meta_discourse: "Search Meta Discourse"
|
|
javascript_evaluator: "Evaluate JavaScript"
|
|
researcher: "Research forum information using the AI Bot"
|
|
tool_description:
|
|
read_artifact: "Read a web artifact using the AI Bot"
|
|
search_uploaded_documents:
|
|
one: "Found %{count} uploaded document excerpt for '%{query}'"
|
|
other: "Found %{count} uploaded document excerpts for '%{query}'"
|
|
update_artifact: "Updated a web artifact using the AI Bot"
|
|
create_artifact: "Created a web artifact: %{name} - %{specification}"
|
|
web_browser: "Reading <a href='%{url}'>%{url}</a>"
|
|
github_search_files: "Searched for '%{keywords}' in %{repo}/%{branch}"
|
|
github_search_code: "Searched for '%{query}' in %{repo}"
|
|
github_diff: "<a href='%{url}'>%{repo} %{ref}</a>"
|
|
github_file_content: "Retrieved content of %{file_paths} from %{repo_name}@%{branch}"
|
|
random_picker: "Picking from %{options}, picked: %{result}"
|
|
flag_post: "Flagging post %{post_id} (flag_post: %{flag_post})"
|
|
close_topic: "Closing topic %{topic_id} (closed: %{closed})"
|
|
suspend_user: "Suspending %{username} for %{duration_days} day(s)"
|
|
silence_user: "Silencing %{username} for %{duration_days} day(s)"
|
|
unlist_topic: "Unlisting topic %{topic_id} (unlisted: %{unlisted})"
|
|
lock_post: "Locking post %{post_id} (locked: %{locked})"
|
|
delete_topic: "Deleting topic %{topic_id} (deleted: %{deleted})"
|
|
edit_post: "Editing post %{post_id}"
|
|
edit_tags: "Editing tags on topic %{topic_id}: %{tags}"
|
|
edit_category: "Moving topic %{topic_id} to category %{category_id}"
|
|
set_topic_timer: "Setting %{timer_type} timer on topic %{topic_id} (%{duration_hours}h)"
|
|
set_slow_mode: "Setting slow mode on topic %{topic_id} (%{slow_mode_seconds}s)"
|
|
move_posts: "Moving posts %{post_ids} from topic %{topic_id}"
|
|
grant_badge: "Granting badge '%{badge_name}' to %{username}"
|
|
list_reviewables: "Listing review queue items (type: %{type})"
|
|
perform_reviewable_action: "Performing %{action} on reviewable %{reviewable_id}"
|
|
add_reviewable_note: "Adding note to reviewable %{reviewable_id}"
|
|
assign: "Assigning topic %{topic_id} (assigned: %{assigned})"
|
|
mark_as_solved: "Marking post %{post_id} as solved (solved: %{solved})"
|
|
read: "Reading: <a href='%{url}'>%{title}</a>"
|
|
time: "Time in %{timezone} is %{time}"
|
|
summarize: "Summarized <a href='%{url}'>%{title}</a>"
|
|
set_topic_summary: "Set the final short topic summary"
|
|
dall_e: "%{prompt}"
|
|
create_image: "%{prompt}"
|
|
edit_image: "%{prompt}"
|
|
image: "%{prompt}"
|
|
categories:
|
|
one: "Found %{count} category"
|
|
other: "Found %{count} categories"
|
|
users:
|
|
one: "Found %{count} user"
|
|
other: "Found %{count} users"
|
|
tags:
|
|
one: "Found %{count} tag"
|
|
other: "Found %{count} tags"
|
|
search:
|
|
one: "Found %{count} <a href='%{url}'>result</a> for '%{query}'"
|
|
other: "Found %{count} <a href='%{url}'>results</a> for '%{query}'"
|
|
search_meta_discourse:
|
|
one: "Found %{count} <a href='%{url}'>result</a> for '%{query}'"
|
|
other: "Found %{count} <a href='%{url}'>results</a> for '%{query}'"
|
|
google:
|
|
one: "Found %{count} <a href='%{url}'>result</a> for '%{query}'"
|
|
other: "Found %{count} <a href='%{url}'>results</a> for '%{query}'"
|
|
setting_context: "Reading context for: %{setting_name}"
|
|
schema: "%{tables}"
|
|
researcher_dry_run:
|
|
one: "Proposed goals: %{goals}\n\nFound %{count} post matching '%{filter}'"
|
|
other: "Proposed goals: %{goals}\n\nFound %{count} posts matching '%{filter}'"
|
|
researcher:
|
|
one: "Researching: %{goals}\n\nFound %{count} post matching '%{filter}'"
|
|
other: "Researching: %{goals}\n\nFound %{count} posts matching '%{filter}'"
|
|
search_settings:
|
|
one: "Found %{count} result for '%{query}'"
|
|
other: "Found %{count} results for '%{query}'"
|
|
read_site_setting: "Reading site setting %{setting_name}"
|
|
change_site_setting: "Changing site setting %{setting_name} to '%{value}'"
|
|
discoveries:
|
|
continue_conversation:
|
|
title: "Discovery conversation: Search for %{query}"
|
|
raw: "In my search for %{query}, you showed me the following information:\n\n%{context}\n\nLet's continue the conversation."
|
|
|
|
flag_post:
|
|
errors:
|
|
no_context: "No post context available for flagging."
|
|
no_reason: "A reason is required to flag a post."
|
|
invalid_flag_type: "Invalid flag type."
|
|
skipped: "Verdict was false; no flag was created."
|
|
already_flagged: "Post is already flagged for review."
|
|
flagged: "Post flagged for review."
|
|
reason: "AI bot flagged this post.\n\nReason: %{reason}"
|
|
score_reason: "AI bot flagged this post."
|
|
|
|
close_topic:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to close or open this topic."
|
|
no_reason: "A reason is required to close or open a topic."
|
|
success: "Topic updated successfully."
|
|
|
|
suspend_user:
|
|
errors:
|
|
not_found: "User not found."
|
|
not_allowed: "You are not allowed to suspend this user."
|
|
no_reason: "A reason is required to suspend a user."
|
|
invalid_duration: "Duration must be a positive whole number of days, up to %{max}."
|
|
failed: "Failed to suspend user."
|
|
success: "User %{username} has been suspended."
|
|
|
|
silence_user:
|
|
errors:
|
|
not_found: "User not found."
|
|
not_allowed: "You are not allowed to silence this user."
|
|
no_reason: "A reason is required to silence a user."
|
|
invalid_duration: "Duration must be a positive whole number of days, up to %{max}."
|
|
failed: "Failed to silence user."
|
|
success: "User %{username} has been silenced."
|
|
|
|
unlist_topic:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to unlist or list this topic."
|
|
no_reason: "A reason is required to unlist or list a topic."
|
|
success: "Topic updated successfully."
|
|
|
|
lock_post:
|
|
errors:
|
|
not_found: "Post not found."
|
|
not_allowed: "You are not allowed to lock or unlock this post."
|
|
no_reason: "A reason is required to lock or unlock a post."
|
|
success: "Post updated successfully."
|
|
|
|
delete_topic:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to delete or recover this topic."
|
|
no_reason: "A reason is required to delete or recover a topic."
|
|
success: "Topic updated successfully."
|
|
|
|
edit_post:
|
|
errors:
|
|
not_found: "Post not found."
|
|
not_allowed: "You are not allowed to edit this post."
|
|
nothing_to_edit: "Either raw or title must be provided."
|
|
no_reason: "An edit reason is required."
|
|
revision_failed: "Failed to revise the post."
|
|
success: "Post edited successfully."
|
|
|
|
edit_tags:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to edit tags on this topic."
|
|
no_reason: "A reason is required to edit tags."
|
|
tagging_disabled: "Tagging is not enabled on this site."
|
|
success: "Tags updated successfully."
|
|
|
|
edit_category:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to move this topic."
|
|
category_not_found: "Category not found."
|
|
no_reason: "A reason is required to move a topic."
|
|
revision_failed: "Failed to move the topic."
|
|
success: "Topic moved successfully."
|
|
|
|
set_topic_timer:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to set a timer on this topic."
|
|
no_reason: "A reason is required to set a topic timer."
|
|
invalid_timer_type: "Invalid timer type. Must be one of: close, open, delete, silent_close, bump."
|
|
success: "Topic timer updated successfully."
|
|
|
|
set_slow_mode:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to set slow mode on this topic."
|
|
no_reason: "A reason is required to set slow mode."
|
|
success: "Slow mode updated successfully."
|
|
|
|
move_posts:
|
|
errors:
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to move posts in this topic."
|
|
no_reason: "A reason is required to move posts."
|
|
no_posts: "No post IDs provided."
|
|
no_destination: "Either destination_topic_id or new_title must be provided."
|
|
move_failed: "Failed to move posts."
|
|
success: "Posts moved successfully."
|
|
|
|
grant_badge:
|
|
errors:
|
|
user_not_found: "User not found."
|
|
badge_not_found: "Badge not found."
|
|
not_allowed: "You are not allowed to grant badges."
|
|
no_reason: "A reason is required to grant a badge."
|
|
badge_disabled: "Badge is not enabled."
|
|
grant_failed: "Failed to grant badge."
|
|
success: "Badge granted successfully."
|
|
|
|
assign:
|
|
errors:
|
|
plugin_not_installed: "The discourse-assign plugin is not installed."
|
|
not_found: "Topic not found."
|
|
not_allowed: "You are not allowed to assign this topic."
|
|
no_reason: "A reason is required to assign or unassign a topic."
|
|
assignee_not_found: "User or group not found."
|
|
assign_failed: "Failed to assign topic."
|
|
success: "Topic assignment updated successfully."
|
|
|
|
mark_as_solved:
|
|
errors:
|
|
plugin_not_installed: "The discourse-solved plugin is not installed."
|
|
no_reason: "A reason is required to mark or unmark a post as solved."
|
|
action_failed: "Failed to update the solved status."
|
|
success: "Solved status updated successfully."
|
|
|
|
list_reviewables:
|
|
errors:
|
|
not_allowed: "You are not allowed to view the review queue"
|
|
invalid_type: "Invalid reviewable type"
|
|
invalid_status: "Invalid status. Must be one of: pending, approved, rejected, ignored, deleted, reviewed, all."
|
|
empty: "No review queue items found matching the given filters"
|
|
found:
|
|
one: "Found %{count} review queue item"
|
|
other: "Found %{count} review queue items"
|
|
|
|
perform_reviewable_action:
|
|
errors:
|
|
not_allowed: "You are not allowed to access the review queue"
|
|
not_found: "Review queue item not found"
|
|
no_reason: "A reason is required to perform an action on a review queue item"
|
|
invalid_action: "Invalid action '%{action}'. Available actions: %{available}"
|
|
conflict: "This review queue item was updated by someone else. Please try again"
|
|
action_failed: "Failed to perform the action"
|
|
success: "Successfully performed '%{action}' on review queue item %{reviewable_id}"
|
|
|
|
add_reviewable_note:
|
|
errors:
|
|
not_allowed: "You are not allowed to access the review queue"
|
|
not_found: "Review queue item not found"
|
|
no_note: "A note is required to add a note to a review queue item"
|
|
failed: "Failed to add the note"
|
|
success: "Successfully added a note to review queue item %{reviewable_id}"
|
|
|
|
change_site_setting:
|
|
errors:
|
|
no_reason: "A reason is required to change a site setting."
|
|
not_found: "Site setting '%{setting_name}' does not exist."
|
|
not_allowed: "You are not allowed to change site settings."
|
|
hidden: "Site setting '%{setting_name}' is hidden and cannot be changed here."
|
|
secret: "Site setting '%{setting_name}' contains a secret and cannot be changed here."
|
|
themeable: "Site setting '%{setting_name}' requires a theme and cannot be changed here."
|
|
deprecated: "Site setting '%{setting_name}' is deprecated; use '%{new_name}' instead."
|
|
shadowed: "Site setting '%{setting_name}' is overridden globally and cannot be changed."
|
|
unconfigurable: "Site setting '%{setting_name}' belongs to a plugin that cannot be configured."
|
|
unsupported_type: "Site settings of type '%{type}' cannot be changed by the AI bot."
|
|
invalid_value: "Invalid value: %{error}"
|
|
failed: "Failed to change the site setting."
|
|
success: "Site setting %{setting_name} has been changed to '%{value}'."
|
|
read_site_setting:
|
|
errors:
|
|
not_allowed: "You are not allowed to read site settings."
|
|
not_found: "Site setting '%{setting_name}' does not exist."
|
|
hidden: "Site setting '%{setting_name}' is hidden and cannot be read here."
|
|
secret: "Site setting '%{setting_name}' contains a secret and cannot be read here."
|
|
themeable: "Site setting '%{setting_name}' requires a theme and cannot be read here."
|
|
|
|
reviewables:
|
|
ai_tool_action:
|
|
title: "AI Tool Action"
|
|
approve:
|
|
title: "Approve"
|
|
reject:
|
|
title: "Reject"
|
|
target_missing: "The tool action target no longer exists."
|
|
tool_not_found: "Tool '%{tool_name}' is no longer available."
|
|
bot_user_missing: "The bot user no longer exists."
|
|
performer_not_human: "This action must be approved or rejected by a real person, not a bot."
|
|
post_mismatch: "This approval card does not belong to this post."
|
|
execution_error: "Tool execution failed: %{error}"
|
|
execution_error_unknown: "an unexpected error occurred"
|
|
|
|
summarization:
|
|
configuration_hint:
|
|
one: "Configure the `%{setting}` setting first."
|
|
other: "Configure these settings first: %{settings}"
|
|
chat:
|
|
no_targets: "There were no messages during the selected period."
|
|
|
|
sentiment:
|
|
reports:
|
|
overall_sentiment: "Overall sentiment (Positive - Negative)"
|
|
post_emotion:
|
|
sadness: "Sadness 😢"
|
|
surprise: "Surprise 😱"
|
|
neutral: "Neutral 😐"
|
|
fear: "Fear 😨"
|
|
anger: "Anger 😡"
|
|
joy: "Joy 😀"
|
|
disgust: "Disgust 🤢"
|
|
sentiment_analysis:
|
|
positive: "Positive"
|
|
negative: "Negative"
|
|
neutral: "Neutral"
|
|
|
|
discord:
|
|
configuration:
|
|
agent_user_required: "The Discord search agent must have an associated user before Discord agent mode can be enabled."
|
|
|
|
llm:
|
|
configuration:
|
|
create_llm: "You need to setup an LLM before enabling this feature"
|
|
disable_modules_first: "You must disable these modules first: %{settings}"
|
|
set_llm_first: "Set %{setting} first"
|
|
model_unreachable: "We couldn't get a response from this model. Check your settings first."
|
|
empty_response: "The model returned an empty response."
|
|
invalid_seeded_model: "You can't use this model with this feature"
|
|
invalid_agent_response_format: "The selected agent must have a response format with a boolean field names \"spam\""
|
|
must_select_model: "You must select a LLM first"
|
|
invalid_llm_id: "The selected LLM model is not valid"
|
|
endpoints:
|
|
not_configured: "%{display_name} (not configured)"
|
|
configuration_hint:
|
|
one: "Make sure the `%{settings}` setting was configured."
|
|
other: "Make sure these settings were configured: %{settings}"
|
|
|
|
delete_failed:
|
|
one: "We couldn't delete this model because %{settings} is using it. Update the setting and try again."
|
|
other: "We couldn't delete this model because %{settings} are using it. Update the settings and try again."
|
|
cannot_edit_builtin: "You can't edit a built-in model."
|
|
|
|
agents:
|
|
malformed_examples: "The given examples have the wrong format."
|
|
|
|
embeddings:
|
|
delete_failed: "This model is currently in use. Update the `ai embeddings selected model` first."
|
|
cannot_edit_builtin: "You can't edit a built-in model."
|
|
secret_required: "A credential must be selected"
|
|
secret_not_found: "The selected credential does not exist"
|
|
configuration:
|
|
disable_embeddings: "You have to disable 'ai embeddings enabled' first."
|
|
choose_model: "Set 'ai embeddings selected model' first."
|
|
model_test_failed: "We failed to generate a test embedding with this model. Check it's correctly configured."
|
|
|
|
secrets:
|
|
delete_failed_in_use: "This credential is currently in use by one or more LLMs, embeddings, or tools and cannot be deleted."
|
|
|
|
llm_models:
|
|
missing_provider_param: "%{param} can't be blank"
|
|
invalid_provider_param: "%{param} has an invalid format"
|
|
reasoning_mode_requirements: "Pro reasoning mode requires the Responses API"
|
|
secret_required: "A credential must be selected"
|
|
secret_not_found: "The selected credential does not exist"
|
|
bedrock_invalid_url: "Please complete all the fields to use this model."
|
|
bedrock_missing_auth: "AWS Bedrock requires either Access Key ID or Role ARN to be configured"
|
|
|
|
ai_staff_action_logger:
|
|
updated: "updated"
|
|
set: "set"
|
|
removed: "removed"
|
|
|
|
translation:
|
|
errors:
|
|
disabled: "The AI translation feature is not fully configured."
|
|
all_posts_translated: "All posts in this topic are already translated."
|
|
|
|
llm_credit_allocation:
|
|
limit_exceeded_user: "This community has reached its AI credit limit for today. Please try again after %{reset_time} or contact your site administrator for more information."
|
|
limit_exceeded_admin: "You have reached your AI credit limit. Please try again after %{reset_time}."
|
|
|
|
errors:
|
|
quota_exceeded: "You have exceeded the quota for this model. Please try again in %{relative_time}."
|
|
quota_required: "You must specify maximum tokens, uses, or cost for this model"
|
|
no_query_specified: The query parameter is required, please specify it.
|
|
no_user_for_agent: The agent specified does not have a user associated with it.
|
|
agent_not_found: "The agent specified does not exist. Check the agent_name or agent_id params (legacy: persona_name or persona_id)."
|
|
no_user_specified: The username or the user_unique_id parameter is required, please specify it.
|
|
user_not_found: The user specified does not exist. Check the username param.
|
|
agent_disabled: "The agent specified is disabled. Check the agent_name or agent_id params (legacy: persona_name or persona_id)."
|
|
no_default_llm: The agent must have a default_llm defined.
|
|
user_not_allowed: The user is not allowed to participate in the topic.
|
|
invalid_stream_resume_token: The resume_token is invalid or has expired.
|
|
no_tool_results_specified: The tool_results parameter is required when resuming a stream.
|
|
invalid_custom_tools: "The custom_tools parameter is invalid: %{details}"
|
|
duplicate_custom_tools: "The custom_tools parameter contains duplicate tool names: %{names}"
|
|
too_many_custom_tools: "The custom_tools parameter can include at most %{max} tools."
|
|
custom_tool_definition_too_large: "Each custom tool definition must be at most %{max} bytes."
|
|
invalid_stream_param: "The %{key} parameter is invalid: %{details}"
|
|
expected_array: "expected an array"
|
|
expected_object: "expected an object"
|
|
ambiguous_tool_results: "Specify either tool_results or tool_result, not both."
|
|
invalid_tool_results: "The tool_results parameter is invalid: %{details}"
|
|
too_many_tool_results: "The tool_results parameter can include at most %{max} items."
|
|
no_pending_tool_calls: There are no pending tool calls for this resume token.
|
|
missing_tool_results: "Missing tool results for tool_call_id(s): %{ids}"
|
|
unexpected_tool_results: "Unexpected tool results for tool_call_id(s): %{ids}"
|
|
invalid_tool_result_content: "The tool result for %{id} must include content"
|
|
tool_result_content_too_large: "Each tool result content payload must be at most %{max} bytes."
|
|
stream_reply_max_resume_rounds_reached: Reached maximum custom tool resume rounds (%{max}).
|
|
stream_reply_state_too_large: "The stream state is too large to persist (max %{max} bytes)."
|
|
stream_reply_unexpected_error: An unexpected error occurred while streaming the reply.
|
|
prompt_message_length: The message %{idx} is over the 1000 character limit.
|
|
agent_already_exists: Agent with the name %{name} already exists.
|
|
custom_tool_exists:
|
|
one: "Custom tool with the name %{names} already exists."
|
|
other: "Custom tools with the names %{names} already exist."
|
|
mcp_server_missing: "The following MCP servers are not configured on this site: %{names}."
|
|
mcp_server_tools_not_found: "No matching tools from MCP server %{name} are available on this site."
|