chore: add DigitalOcean error i18n strings and sort locale keys alphabetically

- Add three new DigitalOcean error message translation keys across all locales
- Add plugin registry vendor and setup default translation keys
- Move misplaced locale entries into correct alphabetical order
- Replace hardcoded English error strings with `i18n.T()` calls in DigitalOcean client
- Sort Go import statements alphabetically in YouTube tool
This commit is contained in:
Kayvan Sylvan 2026-02-21 15:55:50 -08:00
parent e84edd935b
commit 9514f6cdfe
12 changed files with 65 additions and 46 deletions

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Standard-KI-Anbieter und -Modell",
"digitalocean_failed_parse_control_plane_url": "DigitalOcean Control Plane URL konnte nicht geparst werden: %w",
"digitalocean_model_list_unavailable": "DigitalOcean-Modellliste nicht verfügbar. Setzen Sie DIGITALOCEAN_TOKEN, um Modelle von der Control Plane abzurufen",
"digitalocean_model_list_unavailable_with_error": "DigitalOcean-Modellliste nicht verfügbar: %w. Setzen Sie DIGITALOCEAN_TOKEN, um Modelle von der Control Plane abzurufen",
"digitalocean_models_request_failed_read_error": "DigitalOcean-Modellanfrage fehlgeschlagen mit Status %d: %w",
"digitalocean_models_request_failed_with_status": "DigitalOcean-Modellanfrage fehlgeschlagen mit Status %d: %s",
"disable_openai_responses_api": "OpenAI Responses API deaktivieren (Standard: false)",
"disable_pattern_variable_replacement": "Mustervariablenersetzung deaktivieren",
"enable_web_search_tool": "Web-Such-Tool für unterstützte Modelle aktivieren (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, leer lassen für '%s' oder '%v' eingeben, um den Wert zu entfernen):",
"plugin_question_optional": "%v%v (leer lassen zum Überspringen):",
"plugin_question_with_default": "%v%v (leer lassen für '%s' oder '%v' eingeben, um den Wert zu entfernen):",
"plugin_registry_could_not_find_vendor": "Anbieter konnte nicht gefunden werden",
"plugin_registry_error_configuring_custom_patterns": "Fehler beim Konfigurieren von CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "Modell %s nicht verfügbar für Anbieter %s",
"plugin_registry_run_setup_select_defaults": "bitte führen Sie 'fabric --setup' aus und wählen Sie Standardmodell und -anbieter",
"plugin_setting_not_valid": "%v=%v ist nicht gültig",
"plugin_setup_configured": "[%v] konfiguriert",
"plugin_setup_skipped": "[%v] übersprungen\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "URL ist eine Playlist, kein Video",
"youtube_video_id_title_header": "VideoID: Titel",
"youtube_ytdlp_not_found": "yt-dlp wurde nicht in PATH gefunden. Bitte installiere yt-dlp, um die YouTube-Transkript-Funktionalität zu nutzen",
"youtube_ytdlp_stderr_error": "fehler beim Lesen von yt-dlp stderr",
"plugin_registry_run_setup_select_defaults": "bitte führen Sie 'fabric --setup' aus und wählen Sie Standardmodell und -anbieter",
"plugin_registry_could_not_find_vendor": "Anbieter konnte nicht gefunden werden"
"youtube_ytdlp_stderr_error": "fehler beim Lesen von yt-dlp stderr"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Default AI Vendor and Model",
"digitalocean_failed_parse_control_plane_url": "failed to parse DigitalOcean control plane URL: %w",
"digitalocean_model_list_unavailable": "DigitalOcean model list unavailable. Set DIGITALOCEAN_TOKEN to fetch models from the control plane",
"digitalocean_model_list_unavailable_with_error": "DigitalOcean model list unavailable: %w. Set DIGITALOCEAN_TOKEN to fetch models from the control plane",
"digitalocean_models_request_failed_read_error": "DigitalOcean models request failed with status %d: %w",
"digitalocean_models_request_failed_with_status": "DigitalOcean models request failed with status %d: %s",
"disable_openai_responses_api": "Disable OpenAI Responses API (default: false)",
"disable_pattern_variable_replacement": "Disable pattern variable replacement",
"enable_web_search_tool": "Enable web search tool for supported models (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, leave empty for '%s' or type '%v' to remove the value):",
"plugin_question_optional": "%v%v (leave empty to skip):",
"plugin_question_with_default": "%v%v (leave empty for '%s' or type '%v' to remove the value):",
"plugin_registry_could_not_find_vendor": "could not find vendor",
"plugin_registry_error_configuring_custom_patterns": "error configuring CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "model %s not available for vendor %s",
"plugin_registry_run_setup_select_defaults": "please run 'fabric --setup' and select default model and vendor",
"plugin_setting_not_valid": "%v=%v, is not valid",
"plugin_setup_configured": "[%v] configured",
"plugin_setup_skipped": "[%v] skipped\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "URL is a playlist, not a video",
"youtube_video_id_title_header": "VideoID: Title",
"youtube_ytdlp_not_found": "yt-dlp not found in PATH. Please install yt-dlp to use YouTube transcript functionality",
"youtube_ytdlp_stderr_error": "error reading yt-dlp stderr",
"plugin_registry_run_setup_select_defaults": "please run 'fabric --setup' and select default model and vendor",
"plugin_registry_could_not_find_vendor": "could not find vendor"
"youtube_ytdlp_stderr_error": "error reading yt-dlp stderr"
}

View file

@ -20,12 +20,12 @@
"azure_api_version_question": "Ingrese la versión de la API de Azure (deje en blanco para el valor predeterminado)",
"azure_base_url_question": "URL base de la API",
"azure_base_url_required": "se requiere la URL base de Azure",
"azure_credential_failure": "no se pudo crear la credencial de Azure",
"azure_deployments_question": "Ingrese los nombres de sus implementaciones de Azure (separados por comas)",
"azure_deployments_required": "se requiere al menos un nombre de implementación de Azure",
"azure_failed_extract_deployment": "no se pudo extraer el nombre de la implementación de la solicitud",
"azure_model_field_empty": "el campo de modelo está vacío en el cuerpo de la solicitud",
"azure_request_body_nil": "el cuerpo de la solicitud es nil",
"azure_credential_failure": "no se pudo crear la credencial de Azure",
"background_type_help": "Tipo de fondo: opaque, transparent (predeterminado: opaque, solo para PNG/WebP)",
"bedrock_aws_region_label": "Región de AWS",
"bedrock_converse_failed": "bedrock converse falló para el modelo %s: %w",
@ -94,6 +94,9 @@
"defaults_setup_description": "Proveedor y modelo de IA predeterminados",
"digitalocean_failed_parse_control_plane_url": "No se pudo analizar la URL del plano de control de DigitalOcean: %w",
"digitalocean_model_list_unavailable": "lista de modelos de DigitalOcean no disponible. Configure DIGITALOCEAN_TOKEN para obtener modelos del plano de control",
"digitalocean_model_list_unavailable_with_error": "lista de modelos de DigitalOcean no disponible: %w. Configure DIGITALOCEAN_TOKEN para obtener modelos del plano de control",
"digitalocean_models_request_failed_read_error": "solicitud de modelos de DigitalOcean falló con estado %d: %w",
"digitalocean_models_request_failed_with_status": "solicitud de modelos de DigitalOcean falló con estado %d: %s",
"disable_openai_responses_api": "Deshabilitar API de Respuestas de OpenAI (predeterminado: false)",
"disable_pattern_variable_replacement": "Deshabilitar reemplazo de variables de patrón",
"enable_web_search_tool": "Habilitar herramienta de búsqueda web para modelos soportados (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, deja vacío para '%s' o escribe '%v' para eliminar el valor):",
"plugin_question_optional": "%v%v (deja vacío para omitir):",
"plugin_question_with_default": "%v%v (deja vacío para '%s' o escribe '%v' para eliminar el valor):",
"plugin_registry_could_not_find_vendor": "no se pudo encontrar el proveedor",
"plugin_registry_error_configuring_custom_patterns": "Error al configurar CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "Modelo %s no disponible para el proveedor %s",
"plugin_registry_run_setup_select_defaults": "ejecute 'fabric --setup' y seleccione el modelo y proveedor predeterminados",
"plugin_setting_not_valid": "%v=%v no es válido",
"plugin_setup_configured": "[%v] configurado",
"plugin_setup_skipped": "[%v] omitido\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "la URL es una lista de reproducción, no un video",
"youtube_video_id_title_header": "VideoID: Título",
"youtube_ytdlp_not_found": "yt-dlp no encontrado en PATH. Por favor instala yt-dlp para usar la funcionalidad de transcripción de YouTube",
"youtube_ytdlp_stderr_error": "error al leer stderr de yt-dlp",
"plugin_registry_run_setup_select_defaults": "ejecute 'fabric --setup' y seleccione el modelo y proveedor predeterminados",
"plugin_registry_could_not_find_vendor": "no se pudo encontrar el proveedor"
"youtube_ytdlp_stderr_error": "error al leer stderr de yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "ارائه‌دهنده و مدل هوش مصنوعی پیش‌فرض",
"digitalocean_failed_parse_control_plane_url": "تجزیه URL صفحه کنترل DigitalOcean ناموفق بود: %w",
"digitalocean_model_list_unavailable": "لیست مدل‌های DigitalOcean در دسترس نیست. DIGITALOCEAN_TOKEN را تنظیم کنید تا مدل‌ها از صفحه کنترل دریافت شوند",
"digitalocean_model_list_unavailable_with_error": "لیست مدل‌های DigitalOcean در دسترس نیست: %w. برای دریافت مدل‌ها از کنترل پلین، DIGITALOCEAN_TOKEN را تنظیم کنید",
"digitalocean_models_request_failed_read_error": "درخواست مدل‌های DigitalOcean با وضعیت %d ناموفق بود: %w",
"digitalocean_models_request_failed_with_status": "درخواست مدل‌های DigitalOcean با وضعیت %d ناموفق بود: %s",
"disable_openai_responses_api": "غیرفعال کردن API OpenAI Responses (پیش‌فرض: false)",
"disable_pattern_variable_replacement": "غیرفعال کردن جایگزینی متغیرهای الگو",
"enable_web_search_tool": "فعال‌سازی ابزار جستجوی وب برای مدل‌های پشتیبانی شده (Anthropic، OpenAI، Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false، برای '%s' خالی بگذارید یا '%v' را برای حذف مقدار بنویسید):",
"plugin_question_optional": "%v%v (برای رد کردن خالی بگذارید):",
"plugin_question_with_default": "%v%v (برای '%s' خالی بگذارید یا '%v' را برای حذف مقدار بنویسید):",
"plugin_registry_could_not_find_vendor": "ارائه‌دهنده پیدا نشد",
"plugin_registry_error_configuring_custom_patterns": "خطا در پیکربندی CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "مدل %s برای ارائه‌دهنده %s در دسترس نیست",
"plugin_registry_run_setup_select_defaults": "لطفاً 'fabric --setup' را اجرا کنید و مدل و ارائه‌دهنده پیش‌فرض را انتخاب کنید",
"plugin_setting_not_valid": "%v=%v معتبر نیست",
"plugin_setup_configured": "[%v] پیکربندی شد",
"plugin_setup_skipped": "[%v] رد شد\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "URL یک فهرست پخش است، نه یک ویدیو",
"youtube_video_id_title_header": "شناسه ویدیو: عنوان",
"youtube_ytdlp_not_found": "yt-dlp در PATH یافت نشد. لطفاً yt-dlp را نصب کنید تا از قابلیت رونویسی یوتیوب استفاده کنید",
"youtube_ytdlp_stderr_error": "خطا در خواندن stderr yt-dlp",
"plugin_registry_run_setup_select_defaults": "لطفاً 'fabric --setup' را اجرا کنید و مدل و ارائه‌دهنده پیش‌فرض را انتخاب کنید",
"plugin_registry_could_not_find_vendor": "ارائه‌دهنده پیدا نشد"
"youtube_ytdlp_stderr_error": "خطا در خواندن stderr yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Fournisseur et modèle d'IA par défaut",
"digitalocean_failed_parse_control_plane_url": "Impossible d'analyser l'URL du plan de contrôle DigitalOcean : %w",
"digitalocean_model_list_unavailable": "liste des modèles DigitalOcean non disponible. Définissez DIGITALOCEAN_TOKEN pour récupérer les modèles depuis le plan de contrôle",
"digitalocean_model_list_unavailable_with_error": "liste des modèles DigitalOcean non disponible : %w. Définissez DIGITALOCEAN_TOKEN pour récupérer les modèles depuis le plan de contrôle",
"digitalocean_models_request_failed_read_error": "échec de la requête de modèles DigitalOcean avec le statut %d : %w",
"digitalocean_models_request_failed_with_status": "échec de la requête de modèles DigitalOcean avec le statut %d : %s",
"disable_openai_responses_api": "Désactiver l'API OpenAI Responses (par défaut : false)",
"disable_pattern_variable_replacement": "Désactiver le remplacement des variables de motif",
"enable_web_search_tool": "Activer l'outil de recherche web pour les modèles pris en charge (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, laissez vide pour '%s' ou tapez '%v' pour supprimer la valeur) :",
"plugin_question_optional": "%v%v (laissez vide pour passer) :",
"plugin_question_with_default": "%v%v (laissez vide pour '%s' ou tapez '%v' pour supprimer la valeur) :",
"plugin_registry_could_not_find_vendor": "fournisseur introuvable",
"plugin_registry_error_configuring_custom_patterns": "Erreur lors de la configuration de CustomPatterns : %w",
"plugin_registry_model_not_available_for_vendor": "Modèle %s non disponible pour le fournisseur %s",
"plugin_registry_run_setup_select_defaults": "veuillez exécuter 'fabric --setup' et sélectionner le modèle et le fournisseur par défaut",
"plugin_setting_not_valid": "%v=%v n'est pas valide",
"plugin_setup_configured": "[%v] configuré",
"plugin_setup_skipped": "[%v] ignoré\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "l'URL est une liste de lecture, pas une vidéo",
"youtube_video_id_title_header": "VideoID : Titre",
"youtube_ytdlp_not_found": "yt-dlp introuvable dans PATH. Veuillez installer yt-dlp pour utiliser la fonctionnalité de transcription YouTube",
"youtube_ytdlp_stderr_error": "erreur lors de la lecture du stderr de yt-dlp",
"plugin_registry_run_setup_select_defaults": "veuillez exécuter 'fabric --setup' et sélectionner le modèle et le fournisseur par défaut",
"plugin_registry_could_not_find_vendor": "fournisseur introuvable"
"youtube_ytdlp_stderr_error": "erreur lors de la lecture du stderr de yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Fornitore e modello AI predefiniti",
"digitalocean_failed_parse_control_plane_url": "Impossibile analizzare l'URL del piano di controllo DigitalOcean: %w",
"digitalocean_model_list_unavailable": "lista modelli DigitalOcean non disponibile. Impostare DIGITALOCEAN_TOKEN per recuperare i modelli dal piano di controllo",
"digitalocean_model_list_unavailable_with_error": "lista modelli DigitalOcean non disponibile: %w. Impostare DIGITALOCEAN_TOKEN per recuperare i modelli dal piano di controllo",
"digitalocean_models_request_failed_read_error": "richiesta modelli DigitalOcean fallita con stato %d: %w",
"digitalocean_models_request_failed_with_status": "richiesta modelli DigitalOcean fallita con stato %d: %s",
"disable_openai_responses_api": "Disabilita API OpenAI Responses (predefinito: false)",
"disable_pattern_variable_replacement": "Disabilita sostituzione variabili pattern",
"enable_web_search_tool": "Abilita strumento di ricerca web per modelli supportati (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, lascia vuoto per '%s' o digita '%v' per rimuovere il valore):",
"plugin_question_optional": "%v%v (lascia vuoto per saltare):",
"plugin_question_with_default": "%v%v (lascia vuoto per '%s' o digita '%v' per rimuovere il valore):",
"plugin_registry_could_not_find_vendor": "impossibile trovare il fornitore",
"plugin_registry_error_configuring_custom_patterns": "Errore nella configurazione di CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "Modello %s non disponibile per il fornitore %s",
"plugin_registry_run_setup_select_defaults": "eseguire 'fabric --setup' e selezionare modello e fornitore predefiniti",
"plugin_setting_not_valid": "%v=%v non è valido",
"plugin_setup_configured": "[%v] configurato",
"plugin_setup_skipped": "[%v] saltato\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "l'URL è una playlist, non un video",
"youtube_video_id_title_header": "VideoID: Titolo",
"youtube_ytdlp_not_found": "yt-dlp non trovato in PATH. Per favore installa yt-dlp per usare la funzionalità di trascrizione YouTube",
"youtube_ytdlp_stderr_error": "errore durante la lettura dello stderr di yt-dlp",
"plugin_registry_run_setup_select_defaults": "eseguire 'fabric --setup' e selezionare modello e fornitore predefiniti",
"plugin_registry_could_not_find_vendor": "impossibile trovare il fornitore"
"youtube_ytdlp_stderr_error": "errore durante la lettura dello stderr di yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "デフォルトのAIプロバイダーとモデル",
"digitalocean_failed_parse_control_plane_url": "DigitalOceanコントロールプレーンURLの解析に失敗しました: %w",
"digitalocean_model_list_unavailable": "DigitalOceanモデルリストが利用できません。DIGITALOCEAN_TOKENを設定してコントロールプレーンからモデルを取得してください",
"digitalocean_model_list_unavailable_with_error": "DigitalOceanモデルリストが利用できません: %w。コントロールプレーンからモデルを取得するにはDIGITALOCEAN_TOKENを設定してください",
"digitalocean_models_request_failed_read_error": "DigitalOceanモデルリクエストがステータス%dで失敗しました: %w",
"digitalocean_models_request_failed_with_status": "DigitalOceanモデルリクエストがステータス%dで失敗しました: %s",
"disable_openai_responses_api": "OpenAI Responses APIを無効化デフォルトfalse",
"disable_pattern_variable_replacement": "パターン変数の置換を無効化",
"enable_web_search_tool": "サポートされているモデルAnthropic、OpenAI、Geminiでウェブ検索ツールを有効化",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false、'%s' を使うには空欄のまま、値を削除するには '%v' と入力):",
"plugin_question_optional": "%v%v (スキップするには空欄のまま):",
"plugin_question_with_default": "%v%v ('%s' を使うには空欄のまま、値を削除するには '%v' と入力):",
"plugin_registry_could_not_find_vendor": "ベンダーが見つかりません",
"plugin_registry_error_configuring_custom_patterns": "CustomPatternsの設定エラー: %w",
"plugin_registry_model_not_available_for_vendor": "モデル%sはベンダー%sでは利用できません",
"plugin_registry_run_setup_select_defaults": "'fabric --setup' を実行して、デフォルトのモデルとベンダーを選択してください",
"plugin_setting_not_valid": "%v=%v は無効です",
"plugin_setup_configured": "[%v] 設定済み",
"plugin_setup_skipped": "[%v] スキップされました\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "URLはプレイリストであり、動画ではありません",
"youtube_video_id_title_header": "動画ID: タイトル",
"youtube_ytdlp_not_found": "PATHにyt-dlpが見つかりません。YouTubeトランスクリプト機能を使用するにはyt-dlpをインストールしてください",
"youtube_ytdlp_stderr_error": "yt-dlp stderrの読み取りエラー",
"plugin_registry_run_setup_select_defaults": "'fabric --setup' を実行して、デフォルトのモデルとベンダーを選択してください",
"plugin_registry_could_not_find_vendor": "ベンダーが見つかりません"
"youtube_ytdlp_stderr_error": "yt-dlp stderrの読み取りエラー"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Provedor e modelo de IA padrão",
"digitalocean_failed_parse_control_plane_url": "Falha ao analisar a URL do plano de controle do DigitalOcean: %w",
"digitalocean_model_list_unavailable": "lista de modelos do DigitalOcean indisponível. Defina DIGITALOCEAN_TOKEN para buscar modelos do plano de controle",
"digitalocean_model_list_unavailable_with_error": "lista de modelos do DigitalOcean indisponível: %w. Defina DIGITALOCEAN_TOKEN para buscar modelos do plano de controle",
"digitalocean_models_request_failed_read_error": "requisição de modelos do DigitalOcean falhou com status %d: %w",
"digitalocean_models_request_failed_with_status": "requisição de modelos do DigitalOcean falhou com status %d: %s",
"disable_openai_responses_api": "Desabilitar API OpenAI Responses (padrão: false)",
"disable_pattern_variable_replacement": "Desabilitar substituição de variáveis de padrão",
"enable_web_search_tool": "Habilitar ferramenta de busca web para modelos suportados (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, deixe em branco para '%s' ou digite '%v' para remover o valor):",
"plugin_question_optional": "%v%v (deixe em branco para pular):",
"plugin_question_with_default": "%v%v (deixe em branco para '%s' ou digite '%v' para remover o valor):",
"plugin_registry_could_not_find_vendor": "não foi possível encontrar o fornecedor",
"plugin_registry_error_configuring_custom_patterns": "Erro ao configurar CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "Modelo %s não disponível para o fornecedor %s",
"plugin_registry_run_setup_select_defaults": "execute 'fabric --setup' e selecione o modelo e fornecedor padrão",
"plugin_setting_not_valid": "%v=%v não é válido",
"plugin_setup_configured": "[%v] configurado",
"plugin_setup_skipped": "[%v] ignorado\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "a URL é uma playlist, não um vídeo",
"youtube_video_id_title_header": "VideoID: Título",
"youtube_ytdlp_not_found": "yt-dlp não encontrado no PATH. Por favor instale o yt-dlp para usar a funcionalidade de transcrição do YouTube",
"youtube_ytdlp_stderr_error": "erro ao ler stderr do yt-dlp",
"plugin_registry_run_setup_select_defaults": "execute 'fabric --setup' e selecione o modelo e fornecedor padrão",
"plugin_registry_could_not_find_vendor": "não foi possível encontrar o fornecedor"
"youtube_ytdlp_stderr_error": "erro ao ler stderr do yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "Fornecedor e modelo de IA padrão",
"digitalocean_failed_parse_control_plane_url": "Falha ao analisar o URL do plano de controlo do DigitalOcean: %w",
"digitalocean_model_list_unavailable": "lista de modelos do DigitalOcean indisponível. Defina DIGITALOCEAN_TOKEN para obter modelos do plano de controlo",
"digitalocean_model_list_unavailable_with_error": "lista de modelos do DigitalOcean indisponível: %w. Defina DIGITALOCEAN_TOKEN para obter modelos do plano de controlo",
"digitalocean_models_request_failed_read_error": "pedido de modelos do DigitalOcean falhou com estado %d: %w",
"digitalocean_models_request_failed_with_status": "pedido de modelos do DigitalOcean falhou com estado %d: %s",
"disable_openai_responses_api": "Desabilitar API OpenAI Responses (por omissão: false)",
"disable_pattern_variable_replacement": "Desabilitar substituição de variáveis de padrão",
"enable_web_search_tool": "Habilitar ferramenta de pesquisa web para modelos suportados (Anthropic, OpenAI, Gemini)",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%v (true/false, deixe em branco para '%s' ou escreva '%v' para remover o valor):",
"plugin_question_optional": "%v%v (deixe em branco para ignorar):",
"plugin_question_with_default": "%v%v (deixe em branco para '%s' ou escreva '%v' para remover o valor):",
"plugin_registry_could_not_find_vendor": "não foi possível encontrar o fornecedor",
"plugin_registry_error_configuring_custom_patterns": "Erro ao configurar CustomPatterns: %w",
"plugin_registry_model_not_available_for_vendor": "Modelo %s não disponível para o fornecedor %s",
"plugin_registry_run_setup_select_defaults": "execute 'fabric --setup' e selecione o modelo e fornecedor padrão",
"plugin_setting_not_valid": "%v=%v não é válido",
"plugin_setup_configured": "[%v] configurado",
"plugin_setup_skipped": "[%v] ignorado\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "o URL é uma lista de reprodução, não um vídeo",
"youtube_video_id_title_header": "VideoID: Título",
"youtube_ytdlp_not_found": "yt-dlp não encontrado no PATH. Por favor instale o yt-dlp para usar a funcionalidade de transcrição do YouTube",
"youtube_ytdlp_stderr_error": "erro ao ler stderr do yt-dlp",
"plugin_registry_run_setup_select_defaults": "execute 'fabric --setup' e selecione o modelo e fornecedor padrão",
"plugin_registry_could_not_find_vendor": "não foi possível encontrar o fornecedor"
"youtube_ytdlp_stderr_error": "erro ao ler stderr do yt-dlp"
}

View file

@ -94,6 +94,9 @@
"defaults_setup_description": "默认 AI 提供商和模型",
"digitalocean_failed_parse_control_plane_url": "解析DigitalOcean控制面板URL失败%w",
"digitalocean_model_list_unavailable": "DigitalOcean模型列表不可用。请设置DIGITALOCEAN_TOKEN以从控制面板获取模型",
"digitalocean_model_list_unavailable_with_error": "DigitalOcean模型列表不可用%w。请设置DIGITALOCEAN_TOKEN以从控制面板获取模型",
"digitalocean_models_request_failed_read_error": "DigitalOcean模型请求失败状态码 %d%w",
"digitalocean_models_request_failed_with_status": "DigitalOcean模型请求失败状态码 %d%s",
"disable_openai_responses_api": "禁用 OpenAI 响应 API默认false",
"disable_pattern_variable_replacement": "禁用模式变量替换",
"enable_web_search_tool": "为支持的模型启用网络搜索工具Anthropic、OpenAI、Gemini",
@ -395,8 +398,10 @@
"plugin_question_bool": "%v%vtrue/false留空表示使用 '%s',或输入 '%v' 清除值):",
"plugin_question_optional": "%v%v留空以跳过",
"plugin_question_with_default": "%v%v留空表示使用 '%s',或输入 '%v' 清除值):",
"plugin_registry_could_not_find_vendor": "找不到供应商",
"plugin_registry_error_configuring_custom_patterns": "配置CustomPatterns错误%w",
"plugin_registry_model_not_available_for_vendor": "模型%s对供应商%s不可用",
"plugin_registry_run_setup_select_defaults": "请运行 'fabric --setup' 并选择默认模型和供应商",
"plugin_setting_not_valid": "%v=%v 无效",
"plugin_setup_configured": "[%v] 已配置",
"plugin_setup_skipped": "[%v] 已跳过\\n",
@ -650,7 +655,5 @@
"youtube_url_is_playlist_not_video": "URL 是播放列表,而不是视频",
"youtube_video_id_title_header": "视频ID: 标题",
"youtube_ytdlp_not_found": "在 PATH 中未找到 yt-dlp。请安装 yt-dlp 以使用 YouTube 转录功能",
"youtube_ytdlp_stderr_error": "读取 yt-dlp stderr 时出错",
"plugin_registry_run_setup_select_defaults": "请运行 'fabric --setup' 并选择默认模型和供应商",
"plugin_registry_could_not_find_vendor": "找不到供应商"
"youtube_ytdlp_stderr_error": "读取 yt-dlp stderr 时出错"
}

View file

@ -59,10 +59,7 @@ func (c *Client) ListModels() ([]string, error) {
return models, nil
}
if err != nil {
return nil, fmt.Errorf(
"DigitalOcean model list unavailable: %w. Set DIGITALOCEAN_TOKEN to fetch models from the control plane",
err,
)
return nil, fmt.Errorf(i18n.T("digitalocean_model_list_unavailable_with_error"), err)
}
return nil, errors.New(i18n.T("digitalocean_model_list_unavailable"))
}
@ -101,17 +98,9 @@ func (c *Client) fetchModelsFromControlPlane(ctx context.Context) ([]string, err
if resp.StatusCode != http.StatusOK {
bodyBytes, readErr := io.ReadAll(io.LimitReader(resp.Body, errorResponseLimit))
if readErr != nil {
return nil, fmt.Errorf(
"DigitalOcean models request failed with status %d: %w",
resp.StatusCode,
readErr,
)
return nil, fmt.Errorf(i18n.T("digitalocean_models_request_failed_read_error"), resp.StatusCode, readErr)
}
return nil, fmt.Errorf(
"DigitalOcean models request failed with status %d: %s",
resp.StatusCode,
string(bodyBytes),
)
return nil, fmt.Errorf(i18n.T("digitalocean_models_request_failed_with_status"), resp.StatusCode, string(bodyBytes))
}
bodyBytes, err := io.ReadAll(io.LimitReader(resp.Body, maxResponseSize+1))

View file

@ -14,8 +14,8 @@ import (
"bytes"
"context"
"encoding/csv"
"flag"
"errors"
"flag"
"fmt"
"io"
"log"