diff --git a/internal/i18n/locales/de.json b/internal/i18n/locales/de.json index 716ddffc..0263a63f 100644 --- a/internal/i18n/locales/de.json +++ b/internal/i18n/locales/de.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen: %v), teilweise Antwort: %s", "openai_unexpected_status_code_read_error": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen der Antwort: %v)", "openai_unable_to_parse_models_response": "Modell-Antwort konnte nicht geparst werden; rohe Antwort: %s", + "openai_warning_model_no_image_generation": "Warnung: Modell '%s' unterstützt keine Bildgenerierung. Unterstützte Modelle: %s. Erwägen Sie die Verwendung von -m gpt-5.2 für Bildgenerierung.\n", + "openai_model_no_image_generation": "Modell '%s' unterstützt keine Bildgenerierung. Unterstützte Modelle: %s", "scraping_not_configured": "Scraping-Funktionalität ist nicht konfiguriert. Bitte richte Jina ein, um Scraping zu aktivieren", "could_not_determine_home_dir": "konnte Benutzer-Home-Verzeichnis nicht bestimmen: %w", "could_not_stat_env_file": "konnte .env-Datei nicht überprüfen: %w", diff --git a/internal/i18n/locales/en.json b/internal/i18n/locales/en.json index 8f89bd34..087f165e 100644 --- a/internal/i18n/locales/en.json +++ b/internal/i18n/locales/en.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "unexpected status code: %d from provider %s (error reading body: %v), partial response: %s", "openai_unexpected_status_code_read_error": "unexpected status code: %d from provider %s (failed to read response body: %v)", "openai_unable_to_parse_models_response": "unable to parse models response; raw response: %s", + "openai_warning_model_no_image_generation": "Warning: Model '%s' does not support image generation. Supported models: %s. Consider using -m gpt-5.2 for image generation.\n", + "openai_model_no_image_generation": "model '%s' does not support image generation. Supported models: %s", "scraping_not_configured": "scraping functionality is not configured. Please set up Jina to enable scraping", "could_not_determine_home_dir": "could not determine user home directory: %w", "could_not_stat_env_file": "could not stat .env file: %w", diff --git a/internal/i18n/locales/es.json b/internal/i18n/locales/es.json index 8d4fab73..72060986 100644 --- a/internal/i18n/locales/es.json +++ b/internal/i18n/locales/es.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "código de estado inesperado: %d del proveedor %s (error al leer cuerpo: %v), respuesta parcial: %s", "openai_unexpected_status_code_read_error": "código de estado inesperado: %d del proveedor %s (error al leer cuerpo de respuesta: %v)", "openai_unable_to_parse_models_response": "no se pudo analizar la respuesta de modelos; respuesta cruda: %s", + "openai_warning_model_no_image_generation": "Advertencia: El modelo '%s' no soporta generación de imágenes. Modelos soportados: %s. Considere usar -m gpt-5.2 para generación de imágenes.\n", + "openai_model_no_image_generation": "el modelo '%s' no soporta generación de imágenes. Modelos soportados: %s", "scraping_not_configured": "la funcionalidad de extracción no está configurada. Por favor configura Jina para habilitar la extracción", "could_not_determine_home_dir": "no se pudo determinar el directorio home del usuario: %w", "could_not_stat_env_file": "no se pudo verificar el archivo .env: %w", diff --git a/internal/i18n/locales/fa.json b/internal/i18n/locales/fa.json index ddb05182..698ef924 100644 --- a/internal/i18n/locales/fa.json +++ b/internal/i18n/locales/fa.json @@ -34,6 +34,8 @@ "openai_unexpected_status_code_read_error_partial": "کد وضعیت غیرمنتظره: %d از ارائه‌دهنده %s (خطا در خواندن: %v)، پاسخ جزئی: %s", "openai_unexpected_status_code_read_error": "کد وضعیت غیرمنتظره: %d از ارائه‌دهنده %s (خطا در خواندن پاسخ: %v)", "openai_unable_to_parse_models_response": "تجزیه پاسخ مدل‌ها ناموفق بود; پاسخ خام: %s", + "openai_warning_model_no_image_generation": "هشدار: مدل '%s' از تولید تصویر پشتیبانی نمی‌کند. مدل‌های پشتیبانی شده: %s. استفاده از -m gpt-5.2 برای تولید تصویر را در نظر بگیرید.\n", + "openai_model_no_image_generation": "مدل '%s' از تولید تصویر پشتیبانی نمی‌کند. مدل‌های پشتیبانی شده: %s", "scraping_not_configured": "قابلیت استخراج داده پیکربندی نشده است. لطفاً Jina را برای فعال‌سازی استخراج تنظیم کنید", "could_not_determine_home_dir": "نتوانست دایرکتوری خانه کاربر را تعیین کند: %w", "could_not_stat_env_file": "نتوانست وضعیت فایل .env را بررسی کند: %w", diff --git a/internal/i18n/locales/fr.json b/internal/i18n/locales/fr.json index 3ba1c1e4..0cf1d527 100644 --- a/internal/i18n/locales/fr.json +++ b/internal/i18n/locales/fr.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "code d'état inattendu : %d du fournisseur %s (erreur de lecture : %v), réponse partielle : %s", "openai_unexpected_status_code_read_error": "code d'état inattendu : %d du fournisseur %s (échec de lecture du corps de réponse : %v)", "openai_unable_to_parse_models_response": "impossible d'analyser la réponse des modèles ; réponse brute : %s", + "openai_warning_model_no_image_generation": "Avertissement : Le modèle '%s' ne prend pas en charge la génération d'images. Modèles pris en charge : %s. Envisagez d'utiliser -m gpt-5.2 pour la génération d'images.\n", + "openai_model_no_image_generation": "le modèle '%s' ne prend pas en charge la génération d'images. Modèles pris en charge : %s", "scraping_not_configured": "la fonctionnalité de scraping n'est pas configurée. Veuillez configurer Jina pour activer le scraping", "could_not_determine_home_dir": "impossible de déterminer le répertoire home de l'utilisateur : %w", "could_not_stat_env_file": "impossible de vérifier le fichier .env : %w", diff --git a/internal/i18n/locales/it.json b/internal/i18n/locales/it.json index eaddfcd8..7dbfba7a 100644 --- a/internal/i18n/locales/it.json +++ b/internal/i18n/locales/it.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "codice di stato imprevisto: %d dal provider %s (errore lettura corpo: %v), risposta parziale: %s", "openai_unexpected_status_code_read_error": "codice di stato imprevisto: %d dal provider %s (errore lettura corpo risposta: %v)", "openai_unable_to_parse_models_response": "impossibile analizzare risposta modelli; risposta grezza: %s", + "openai_warning_model_no_image_generation": "Avviso: Il modello '%s' non supporta la generazione di immagini. Modelli supportati: %s. Considera di usare -m gpt-5.2 per la generazione di immagini.\n", + "openai_model_no_image_generation": "il modello '%s' non supporta la generazione di immagini. Modelli supportati: %s", "scraping_not_configured": "la funzionalità di scraping non è configurata. Per favore configura Jina per abilitare lo scraping", "could_not_determine_home_dir": "impossibile determinare la directory home dell'utente: %w", "could_not_stat_env_file": "impossibile verificare il file .env: %w", diff --git a/internal/i18n/locales/ja.json b/internal/i18n/locales/ja.json index 6ff05f3b..121dbc76 100644 --- a/internal/i18n/locales/ja.json +++ b/internal/i18n/locales/ja.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "予期しないステータスコード: プロバイダー %s から %d (本文読み取りエラー: %v)、部分的なレスポンス: %s", "openai_unexpected_status_code_read_error": "予期しないステータスコード: プロバイダー %s から %d (レスポンス本文の読み取りに失敗: %v)", "openai_unable_to_parse_models_response": "モデルレスポンスの解析に失敗しました; 生のレスポンス: %s", + "openai_warning_model_no_image_generation": "警告: モデル '%s' は画像生成をサポートしていません。サポートされているモデル: %s。画像生成には -m gpt-5.2 の使用を検討してください。\n", + "openai_model_no_image_generation": "モデル '%s' は画像生成をサポートしていません。サポートされているモデル: %s", "scraping_not_configured": "スクレイピング機能が設定されていません。スクレイピングを有効にするためにJinaを設定してください", "could_not_determine_home_dir": "ユーザーのホームディレクトリを特定できませんでした: %w", "could_not_stat_env_file": ".envファイルの状態を確認できませんでした: %w", diff --git a/internal/i18n/locales/pt-BR.json b/internal/i18n/locales/pt-BR.json index c2389068..b8631563 100644 --- a/internal/i18n/locales/pt-BR.json +++ b/internal/i18n/locales/pt-BR.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "código de status inesperado: %d do provedor %s (erro ao ler corpo: %v), resposta parcial: %s", "openai_unexpected_status_code_read_error": "código de status inesperado: %d do provedor %s (falha ao ler corpo da resposta: %v)", "openai_unable_to_parse_models_response": "não foi possível analisar a resposta de modelos; resposta bruta: %s", + "openai_warning_model_no_image_generation": "Aviso: O modelo '%s' não suporta geração de imagens. Modelos suportados: %s. Considere usar -m gpt-5.2 para geração de imagens.\n", + "openai_model_no_image_generation": "o modelo '%s' não suporta geração de imagens. Modelos suportados: %s", "scraping_not_configured": "funcionalidade de scraping não está configurada. Por favor configure o Jina para ativar o scraping", "could_not_determine_home_dir": "não foi possível determinar o diretório home do usuário: %w", "could_not_stat_env_file": "não foi possível verificar o arquivo .env: %w", diff --git a/internal/i18n/locales/pt-PT.json b/internal/i18n/locales/pt-PT.json index ff4c4f47..dc4b0e63 100644 --- a/internal/i18n/locales/pt-PT.json +++ b/internal/i18n/locales/pt-PT.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "código de estado inesperado: %d do fornecedor %s (erro ao ler corpo: %v), resposta parcial: %s", "openai_unexpected_status_code_read_error": "código de estado inesperado: %d do fornecedor %s (falha ao ler corpo da resposta: %v)", "openai_unable_to_parse_models_response": "não foi possível analisar a resposta de modelos; resposta bruta: %s", + "openai_warning_model_no_image_generation": "Aviso: O modelo '%s' não suporta geração de imagens. Modelos suportados: %s. Considere usar -m gpt-5.2 para geração de imagens.\n", + "openai_model_no_image_generation": "o modelo '%s' não suporta geração de imagens. Modelos suportados: %s", "scraping_not_configured": "funcionalidade de scraping não está configurada. Por favor configure o Jina para ativar o scraping", "could_not_determine_home_dir": "não foi possível determinar o diretório home do utilizador: %w", "could_not_stat_env_file": "não foi possível verificar o ficheiro .env: %w", diff --git a/internal/i18n/locales/zh.json b/internal/i18n/locales/zh.json index 471ca2a3..7e3076d0 100644 --- a/internal/i18n/locales/zh.json +++ b/internal/i18n/locales/zh.json @@ -42,6 +42,8 @@ "openai_unexpected_status_code_read_error_partial": "意外的状态码:来自提供商 %s 的 %d(读取主体错误:%v),部分响应:%s", "openai_unexpected_status_code_read_error": "意外的状态码:来自提供商 %s 的 %d(读取响应主体失败:%v)", "openai_unable_to_parse_models_response": "无法解析模型响应;原始响应:%s", + "openai_warning_model_no_image_generation": "警告:模型 '%s' 不支持图像生成。支持的模型:%s。请考虑使用 -m gpt-5.2 进行图像生成。\n", + "openai_model_no_image_generation": "模型 '%s' 不支持图像生成。支持的模型:%s", "scraping_not_configured": "抓取功能未配置。请设置 Jina 以启用抓取功能", "could_not_determine_home_dir": "无法确定用户主目录: %w", "could_not_stat_env_file": "无法获取 .env 文件状态: %w", diff --git a/internal/plugins/ai/openai/openai.go b/internal/plugins/ai/openai/openai.go index 85d848dc..a49efc35 100644 --- a/internal/plugins/ai/openai/openai.go +++ b/internal/plugins/ai/openai/openai.go @@ -11,6 +11,7 @@ import ( "github.com/danielmiessler/fabric/internal/chat" "github.com/danielmiessler/fabric/internal/domain" + "github.com/danielmiessler/fabric/internal/i18n" debuglog "github.com/danielmiessler/fabric/internal/log" "github.com/danielmiessler/fabric/internal/plugins" openai "github.com/openai/openai-go" @@ -75,8 +76,8 @@ func (o *Client) SetResponsesAPIEnabled(enabled bool) { // checkImageGenerationCompatibility warns if the model doesn't support image generation func checkImageGenerationCompatibility(model string) { if !supportsImageGeneration(model) { - fmt.Fprintf(os.Stderr, "Warning: Model '%s' does not support image generation. Supported models: %s. Consider using -m gpt-5.2 for image generation.\n", - model, strings.Join(ImageGenerationSupportedModels, ", ")) + fmt.Fprintf(os.Stderr, "%s", fmt.Sprintf(i18n.T("openai_warning_model_no_image_generation"), + model, strings.Join(ImageGenerationSupportedModels, ", "))) } } @@ -170,7 +171,7 @@ func (o *Client) sendResponses(ctx context.Context, msgs []*chat.ChatCompletionM // Validate model supports image generation if image file is specified if opts.ImageFile != "" && !supportsImageGeneration(opts.Model) { - return "", fmt.Errorf("model '%s' does not support image generation. Supported models: %s", opts.Model, strings.Join(ImageGenerationSupportedModels, ", ")) + return "", fmt.Errorf("%s", fmt.Sprintf(i18n.T("openai_model_no_image_generation"), opts.Model, strings.Join(ImageGenerationSupportedModels, ", "))) } req := o.buildResponseParams(msgs, opts)