mirror of
https://github.com/danielmiessler/fabric.git
synced 2026-09-10 07:36:44 -04:00
feat: replace hardcoded error strings with i18n translation keys
- Replace hardcoded error messages with `i18n.T()` calls across Go source files - Add ~80 new translation keys to all locale files (en, de, es, fa, fr, it, ja, pt-BR, pt-PT, zh) - Internationalize error strings in chat, attachment, storage, and template packages - Internationalize error strings in plugin registry, server, and utility modules - Internationalize githelper, notifications, patterns, and sessions modules - Add i18n support for DigitalOcean, Gemini, and OpenAI-compatible providers - Sort existing locale keys alphabetically in JSON files - chore: incoming 2019 changelog entry
This commit is contained in:
parent
95766ff342
commit
e9b1b88d86
7
cmd/generate_changelog/incoming/2019.txt
Normal file
7
cmd/generate_changelog/incoming/2019.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
### PR [#2019](https://github.com/danielmiessler/Fabric/pull/2019) by [ksylvan](https://github.com/ksylvan): feat: replace hardcoded error strings with i18n translation keys
|
||||
|
||||
- Replace hardcoded error messages with `i18n.T()` calls across Go source files
|
||||
- Add ~80 new translation keys to all locale files (en, de, es, fa, fr, it, ja, pt-BR, pt-PT, zh)
|
||||
- Internationalize error strings in chat, attachment, storage, template, plugin registry, server, and utility modules
|
||||
- Add i18n support for DigitalOcean, Gemini, and OpenAI-compatible providers
|
||||
- Sort existing locale keys alphabetically in JSON files
|
||||
|
|
@ -3,6 +3,8 @@ package chat
|
|||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -14,7 +16,7 @@ const (
|
|||
ChatMessageRoleDeveloper = "developer"
|
||||
)
|
||||
|
||||
var ErrContentFieldsMisused = errors.New("can't use both Content and MultiContent properties simultaneously")
|
||||
var ErrContentFieldsMisused = errors.New(i18n.T("chat_error_content_fields_misused"))
|
||||
|
||||
type ChatMessagePartType string
|
||||
|
||||
|
|
|
|||
|
|
@ -478,7 +478,7 @@ func (o *PluginRegistry) Configure() (err error) {
|
|||
o.ConfigureVendors()
|
||||
_ = o.Defaults.Configure()
|
||||
if err := o.CustomPatterns.Configure(); err != nil {
|
||||
return fmt.Errorf("error configuring CustomPatterns: %w", err)
|
||||
return fmt.Errorf(i18n.T("plugin_registry_error_configuring_custom_patterns"), err)
|
||||
}
|
||||
_ = o.PatternsLoader.Configure()
|
||||
|
||||
|
|
@ -559,7 +559,7 @@ func (o *PluginRegistry) GetChatter(model string, modelContextLength int, vendor
|
|||
return strings.EqualFold(name, vendorName)
|
||||
})
|
||||
if ret.vendor == nil || !vendorAvailable {
|
||||
err = fmt.Errorf("model %s not available for vendor %s", model, vendorName)
|
||||
err = fmt.Errorf(i18n.T("plugin_registry_model_not_available_for_vendor"), model, vendorName)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import (
|
|||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/gabriel-vasile/mimetype"
|
||||
)
|
||||
|
||||
|
|
@ -73,7 +74,7 @@ func (a *Attachment) ResolveType() (ret string, err error) {
|
|||
ret = mimetype.Detect(a.Content).String()
|
||||
return
|
||||
}
|
||||
err = fmt.Errorf("attachment has no type and no content to derive it from")
|
||||
err = fmt.Errorf("%s", i18n.T("attachment_no_type_no_content"))
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -99,7 +100,7 @@ func (a *Attachment) ContentBytes() (ret []byte, err error) {
|
|||
}
|
||||
return
|
||||
}
|
||||
err = fmt.Errorf("no content available")
|
||||
err = fmt.Errorf("%s", i18n.T("attachment_no_content_available"))
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -130,7 +131,7 @@ func NewAttachment(value string) (ret *Attachment, err error) {
|
|||
return
|
||||
}
|
||||
if _, err = os.Stat(absPath); os.IsNotExist(err) {
|
||||
err = fmt.Errorf("file %s does not exist", value)
|
||||
err = fmt.Errorf(i18n.T("attachment_file_not_exist"), value)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -153,7 +154,7 @@ func detectMimeTypeFromURL(url string) (string, error) {
|
|||
defer resp.Body.Close()
|
||||
mimeType := resp.Header.Get("Content-Type")
|
||||
if mimeType == "" {
|
||||
return "", fmt.Errorf("could not determine mimetype of URL")
|
||||
return "", fmt.Errorf("%s", i18n.T("attachment_could_not_determine_mimetype"))
|
||||
}
|
||||
return mimeType, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "Abacus-Modell-Endpunkt gab Status %d zurück",
|
||||
"additional_yt_dlp_args": "Zusätzliche Argumente für yt-dlp (z.B. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "Adresse zum Binden der REST API",
|
||||
"anthropic_stream_error": "Stream-Fehler: %v",
|
||||
"api_key_secure_server_routes": "API-Schlüssel zum Sichern der Server-Routen",
|
||||
"application_options_header": "Anwendungsoptionen:",
|
||||
"apply_variables_to_input": "Variablen auf Benutzereingabe anwenden",
|
||||
"attachment_could_not_determine_mimetype": "MIME-Typ der URL konnte nicht ermittelt werden",
|
||||
"attachment_file_not_exist": "Datei %s existiert nicht",
|
||||
"attachment_no_content_available": "Kein Inhalt verfügbar",
|
||||
"attachment_no_type_no_content": "Anhang hat keinen Typ und keinen Inhalt zur Ableitung",
|
||||
"attachment_path_or_url_help": "Anhangspfad oder URL (z.B. für OpenAI-Bilderkennungsnachrichten)",
|
||||
"audio_output_file_specified_but_not_tts_model": "Audio-Ausgabedatei '%s' angegeben, aber Modell '%s' ist kein TTS-Modell. Bitte verwende ein TTS-Modell wie gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Audio- oder Video-Datei zum Transkribieren",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Geben Sie die Azure API-Version ein (leer lassen für Standard)",
|
||||
"azure_base_url_question": "API Basis-URL",
|
||||
"azure_base_url_required": "Azure Basis-URL ist erforderlich",
|
||||
"azure_credential_failure": "Fehler beim Erstellen der Azure-Anmeldeinformationen",
|
||||
"azure_deployments_question": "Geben Sie Ihre Azure-Bereitstellungsnamen ein (kommagetrennt)",
|
||||
"azure_deployments_required": "Mindestens ein Azure-Bereitstellungsname ist erforderlich",
|
||||
"azure_failed_extract_deployment": "Bereitstellungsname konnte nicht aus der Anfrage extrahiert werden",
|
||||
"azure_model_field_empty": "Modellfeld ist im Anfragekörper leer",
|
||||
"azure_request_body_nil": "Anfragekörper ist nil",
|
||||
"azure_credential_failure": "Fehler beim Erstellen der Azure-Anmeldeinformationen",
|
||||
"background_type_help": "Hintergrundtyp: opaque, transparent (Standard: opaque, nur für PNG/WebP)",
|
||||
"bedrock_aws_region_label": "AWS-Region",
|
||||
"bedrock_converse_failed": "Bedrock Converse für Modell %s fehlgeschlagen: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "unbekannter Stream-Event-Typ: %T",
|
||||
"cannot_convert_string": "kann String %q nicht zu %v konvertieren",
|
||||
"change_default_model": "Standardmodell ändern",
|
||||
"chat_error_content_fields_misused": "Content und MultiContent können nicht gleichzeitig verwendet werden",
|
||||
"chatter_error_empty_response": "leere Antwort",
|
||||
"chatter_error_find_context": "Kontext %s konnte nicht gefunden werden: %v",
|
||||
"chatter_error_find_session": "Sitzung %s konnte nicht gefunden werden: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Geben Sie den Pfad zu Ihrem benutzerdefinierten Pattern-Verzeichnis ein",
|
||||
"custom_patterns_label": "Benutzerdefinierte Patterns",
|
||||
"custom_patterns_setup_description": "Benutzerdefinierte Patterns - Verzeichnis für Ihre benutzerdefinierten Patterns festlegen",
|
||||
"custom_patterns_warning_create_directory": "Warnung: Benutzerdefiniertes Musterverzeichnis %s konnte nicht erstellt werden: %v\n",
|
||||
"db_error_loading_env_file": "Fehler beim Laden der .env-Datei: %s",
|
||||
"defaults_model_context_length_question": "Geben Sie die Kontextlänge des Modells ein",
|
||||
"defaults_model_question": "Geben Sie den Index oder den Namen Ihres Standardmodells ein",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Fehler: %v",
|
||||
"gemini_tts_failed": "TTS-Generierung fehlgeschlagen: %w",
|
||||
"gemini_unexpected_data_type": "unerwarteter Datentyp: %s, Audiodaten erwartet",
|
||||
"gemini_voice_not_found": "Stimme '%s' nicht gefunden",
|
||||
"gemini_wav_data_invalid": "generierte WAV-Daten sind ungültig: %d Bytes, mindestens erforderlich: %d",
|
||||
"gemini_wav_generation_failed": "WAV-Datei konnte nicht generiert werden: %w",
|
||||
"githelper_failed_clone_repository": "Repository konnte nicht geklont werden: %w",
|
||||
"githelper_failed_create_dest_directory": "Zielverzeichnis konnte nicht erstellt werden: %w",
|
||||
"githelper_failed_get_commit": "Commit konnte nicht abgerufen werden: %w",
|
||||
"githelper_failed_get_head": "Repository HEAD konnte nicht abgerufen werden: %w",
|
||||
"githelper_failed_get_tree": "Verzeichnisbaum konnte nicht abgerufen werden: %w",
|
||||
"grab_comments_from_youtube": "Kommentare von YouTube-Video abrufen und an Chat senden",
|
||||
"grab_transcript_from_youtube": "Transkript von YouTube-Video abrufen und an Chat senden (wird standardmäßig verwendet).",
|
||||
"grab_transcript_with_timestamps": "Transkript von YouTube-Video mit Zeitstempeln abrufen und an Chat senden",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "Keine Beschreibung verfügbar",
|
||||
"no_items_found": "Keine %s",
|
||||
"no_notification_system_available": "kein Benachrichtigungssystem verfügbar",
|
||||
"notifications_no_provider_available": "Kein Benachrichtigungsanbieter verfügbar",
|
||||
"number_of_latest_patterns": "Anzahl der neuesten Muster zum Auflisten",
|
||||
"ollama_cannot_parse_url": "URL '%s' kann nicht geparst werden: %v",
|
||||
"ollama_chat_request_failed": "Chat-Anfrage fehlgeschlagen: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "Datei konnte nicht in akzeptable Teile aufgeteilt werden",
|
||||
"openai_audio_unsupported_audio_format": "nicht unterstütztes Audioformat '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Verwende Modell %s zur Transkription von Teil %d (Dateiname: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Unbekannte statische Modellliste: %s",
|
||||
"openai_failed_to_create_models_url": "Modell-URL konnte nicht erstellt werden: %w",
|
||||
"openai_image_failed_to_create_directory": "Verzeichnis %s konnte nicht erstellt werden: %w",
|
||||
"openai_image_failed_to_decode_image_data": "Bilddaten konnten nicht dekodiert werden: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Patterns erfolgreich nach %s heruntergeladen und installiert\\n",
|
||||
"patterns_downloaded_temp": "%d Patterns in temporäres Verzeichnis heruntergeladen\\n",
|
||||
"patterns_downloading": "Lade Patterns herunter und befülle %s...\\n",
|
||||
"patterns_error_create_directory": "Musterverzeichnis konnte nicht erstellt werden: %v",
|
||||
"patterns_error_get_home_directory": "Home-Verzeichnis konnte nicht ermittelt werden: %v",
|
||||
"patterns_error_load_from_file": "Muster konnte nicht aus Datei %s geladen werden: %w",
|
||||
"patterns_error_read_pattern_file": "Musterdatei %s konnte nicht gelesen werden: %v",
|
||||
"patterns_error_read_unique_file": "Eindeutige Musterdatei konnte nicht gelesen werden. Bitte --updatepatterns ausführen (%s)",
|
||||
"patterns_error_resolve_file_path": "Dateipfad konnte nicht aufgelöst werden: %v",
|
||||
"patterns_error_save_pattern": "Muster konnte nicht gespeichert werden: %v",
|
||||
"patterns_failed_access_directory": "Fehler beim Zugriff auf den Pattern-Ordner '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "Fehler beim Erstellen des temporären Verzeichnisses: %w",
|
||||
"patterns_failed_create_temp_folder": "Fehler beim Erstellen des temporären Pattern-Ordners: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v ist nicht gültig",
|
||||
"plugin_setup_configured": "[%v] konfiguriert",
|
||||
"plugin_setup_skipped": "[%v] übersprungen\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Desktop-Benachrichtigung senden, wenn Befehl abgeschlossen ist",
|
||||
"serve_fabric_api_ollama_endpoints": "Fabric REST API mit ollama-Endpunkten bereitstellen",
|
||||
"serve_fabric_rest_api": "Fabric REST API bereitstellen",
|
||||
"server_chat_error": "Fehler: %v",
|
||||
"server_error_marshaling_response": "Fehler beim Serialisieren der Antwort: %v",
|
||||
"server_error_writing_response": "Fehler beim Schreiben der Antwort: %v",
|
||||
"server_invalid_request_format": "Ungültiges Anfrageformat: %v",
|
||||
"sessions_creating_new": "Erstelle neue Sitzung: %s\n",
|
||||
"set_debug_level": "Debug-Level festlegen (0=aus, 1=grundlegend, 2=detailliert, 3=Trace)",
|
||||
"set_frequency_penalty": "Häufigkeitsstrafe festlegen",
|
||||
"set_location_web_search": "Standort für Web-Suchergebnisse festlegen (z.B., 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Episoden insgesamt**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Start-Tag für Denk-Abschnitte",
|
||||
"storage_error_delete": "%s konnte nicht gelöscht werden: %v",
|
||||
"storage_error_load": "%s konnte nicht geladen werden: %v",
|
||||
"storage_error_marshal": "%s konnte nicht serialisiert werden: %s",
|
||||
"storage_error_read_directory": "Einträge aus dem Verzeichnis konnten nicht gelesen werden: %v",
|
||||
"storage_error_rename": "%s konnte nicht in %s umbenannt werden: %v",
|
||||
"storage_error_resolve_directory": "Verzeichnispfad konnte nicht aufgelöst werden: %v",
|
||||
"storage_error_save": "%s konnte nicht gespeichert werden: %v",
|
||||
"storage_error_stat_entry": "Eintrag %s konnte nicht abgefragt werden: %v",
|
||||
"storage_error_unmarshal": "%s konnte nicht deserialisiert werden: %s",
|
||||
"strategies_available_header": "Verfügbare Strategien:",
|
||||
"strategies_cloning_repository": "Repository %s wird geklont (Pfad: %s)...\\n",
|
||||
"strategies_download_success": "✅ Strategien erfolgreich nach %s heruntergeladen und installiert\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Erweiterung %s Fehler: %v",
|
||||
"template_file_error_expand_home_dir": "datei: home-verzeichnis konnte nicht erweitert werden: %v",
|
||||
"template_file_error_invalid_line_count": "datei: ungültige zeilenanzahl %q",
|
||||
"template_file_error_line_count_positive": "datei: zeilenanzahl muss positiv sein",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "Datei: größe=%d für Pfad %q",
|
||||
"template_file_log_tail_returning_lines": "Datei: tail gibt %d Zeilen zurück",
|
||||
"template_file_log_validating_path": "Datei: Pfad %q wird validiert",
|
||||
"template_hash_open_file": "Datei öffnen: %w",
|
||||
"template_hash_read_file": "Datei lesen: %w",
|
||||
"template_missing_required_variable": "Erforderliche Variable fehlt: %s",
|
||||
"template_plugin_error": "Plugin %s Fehler: %v",
|
||||
"template_processing_stuck": "Vorlagenverarbeitung blockiert - mögliche Endlosschleife",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Text: Leere Eingabe für Operation %q",
|
||||
"template_text_unknown_operation": "Text: Unbekannte Textoperation %q (unterstützt: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Unbekannter Plugin-Namespace: %s",
|
||||
"template_utils_failed_get_absolute_path": "Absoluter Pfad konnte nicht ermittelt werden: %w",
|
||||
"template_utils_failed_get_home_dir": "Benutzer-Home-Verzeichnis konnte nicht ermittelt werden: %w",
|
||||
"template_utils_path_not_exist": "Pfad existiert nicht: %w",
|
||||
"transcription_model_required": "Transkriptionsmodell ist erforderlich (verwende --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "transparenter Hintergrund kann nur mit PNG- und WebP-Formaten verwendet werden, nicht %s",
|
||||
"tts_audio_generated_successfully": "TTS-Audio erfolgreich generiert und gespeichert unter: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Muster aktualisieren",
|
||||
"usage_header": "Verwendung:",
|
||||
"use_model_defaults_raw_help": "Verwende die Standardwerte des Modells, ohne Chat-Optionen (temperature, top_p usw.) zu senden. Gilt nur für OpenAI-kompatible Anbieter. Anthropic-Modelle verwenden stets eine intelligente Parameterauswahl, um modell-spezifische Anforderungen einzuhalten.",
|
||||
"util_error_accessing_config_path": "Fehler beim Zugriff auf den Standard-Konfigurationspfad: %w",
|
||||
"util_error_determine_home_directory": "Benutzer-Home-Verzeichnis konnte nicht ermittelt werden: %w",
|
||||
"util_error_get_absolute_path": "Absoluter Pfad konnte nicht ermittelt werden",
|
||||
"util_error_path_is_empty": "Pfad ist leer",
|
||||
"util_error_resolve_home_directory": "Home-Verzeichnis konnte nicht aufgelöst werden",
|
||||
"util_error_resolve_symlinks": "Symbolische Links konnten nicht aufgelöst werden: %w",
|
||||
"vendor_no_transcription_support": "Anbieter %s unterstützt keine Audio-Transkription",
|
||||
"vendor_not_configured": "Anbieter %s ist nicht konfiguriert",
|
||||
"vendor_not_found": "Anbieter %s nicht gefunden",
|
||||
|
|
@ -592,4 +651,4 @@
|
|||
"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"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "abacus models endpoint returned status %d",
|
||||
"additional_yt_dlp_args": "Additional arguments to pass to yt-dlp (e.g. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "The address to bind the REST API",
|
||||
"anthropic_stream_error": "Stream error: %v",
|
||||
"api_key_secure_server_routes": "API key used to secure server routes",
|
||||
"application_options_header": "Application Options:",
|
||||
"apply_variables_to_input": "Apply variables to user input",
|
||||
"attachment_could_not_determine_mimetype": "could not determine mimetype of URL",
|
||||
"attachment_file_not_exist": "file %s does not exist",
|
||||
"attachment_no_content_available": "no content available",
|
||||
"attachment_no_type_no_content": "attachment has no type and no content to derive it from",
|
||||
"attachment_path_or_url_help": "Attachment path or URL (e.g. for OpenAI image recognition messages)",
|
||||
"audio_output_file_specified_but_not_tts_model": "audio output file '%s' specified but model '%s' is not a TTS model. Please use a TTS model like gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Audio or video file to transcribe",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Enter the Azure API version (leave blank for default)",
|
||||
"azure_base_url_question": "API Base URL",
|
||||
"azure_base_url_required": "Azure base URL is required",
|
||||
"azure_credential_failure": "Failed to create Azure credential",
|
||||
"azure_deployments_question": "Enter your Azure deployment names (comma-separated)",
|
||||
"azure_deployments_required": "At least one Azure deployment name is required",
|
||||
"azure_failed_extract_deployment": "failed to extract deployment name from request",
|
||||
"azure_model_field_empty": "model field is empty in request body",
|
||||
"azure_request_body_nil": "request body is nil",
|
||||
"azure_credential_failure": "Failed to create Azure credential",
|
||||
"background_type_help": "Background type: opaque, transparent (default: opaque, only for PNG/WebP)",
|
||||
"bedrock_aws_region_label": "AWS Region",
|
||||
"bedrock_converse_failed": "bedrock converse failed for model %s: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "unknown stream event type: %T",
|
||||
"cannot_convert_string": "cannot convert string %q to %v",
|
||||
"change_default_model": "Change default model",
|
||||
"chat_error_content_fields_misused": "can't use both Content and MultiContent properties simultaneously",
|
||||
"chatter_error_empty_response": "empty response",
|
||||
"chatter_error_find_context": "could not find context %s: %v",
|
||||
"chatter_error_find_session": "could not find session %s: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Enter the path to your custom patterns directory",
|
||||
"custom_patterns_label": "Custom Patterns",
|
||||
"custom_patterns_setup_description": "Custom Patterns - Set directory for your custom patterns",
|
||||
"custom_patterns_warning_create_directory": "Warning: Could not create custom patterns directory %s: %v\n",
|
||||
"db_error_loading_env_file": "error loading .env file: %s",
|
||||
"defaults_model_context_length_question": "Enter model context length",
|
||||
"defaults_model_question": "Enter the index or the name of your default model",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Error: %v",
|
||||
"gemini_tts_failed": "TTS generation failed: %w",
|
||||
"gemini_unexpected_data_type": "unexpected data type: %s, expected audio data",
|
||||
"gemini_voice_not_found": "voice '%s' not found",
|
||||
"gemini_wav_data_invalid": "generated WAV data is invalid: %d bytes, minimum required: %d",
|
||||
"gemini_wav_generation_failed": "failed to generate WAV file: %w",
|
||||
"githelper_failed_clone_repository": "failed to clone repository: %w",
|
||||
"githelper_failed_create_dest_directory": "failed to create destination directory: %w",
|
||||
"githelper_failed_get_commit": "failed to get commit: %w",
|
||||
"githelper_failed_get_head": "failed to get repository HEAD: %w",
|
||||
"githelper_failed_get_tree": "failed to get tree: %w",
|
||||
"grab_comments_from_youtube": "Grab comments from YouTube video and send to chat",
|
||||
"grab_transcript_from_youtube": "Grab transcript from YouTube video and send to chat (it is used per default).",
|
||||
"grab_transcript_with_timestamps": "Grab transcript from YouTube video with timestamps and send to chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "No description available",
|
||||
"no_items_found": "No %s",
|
||||
"no_notification_system_available": "no notification system available",
|
||||
"notifications_no_provider_available": "no notification provider available",
|
||||
"number_of_latest_patterns": "Number of latest patterns to list",
|
||||
"ollama_cannot_parse_url": "Cannot parse URL '%s': %v",
|
||||
"ollama_chat_request_failed": "Chat request failed: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "unable to split file into acceptably sized chunks",
|
||||
"openai_audio_unsupported_audio_format": "unsupported audio format '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Using model %s to transcribe part %d (filename: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "unknown static model list: %s",
|
||||
"openai_failed_to_create_models_url": "failed to create models URL: %w",
|
||||
"openai_image_failed_to_create_directory": "failed to create directory %s: %w",
|
||||
"openai_image_failed_to_decode_image_data": "failed to decode image data: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Successfully downloaded and installed patterns to %s\n",
|
||||
"patterns_downloaded_temp": "Downloaded %d patterns to temporary directory\n",
|
||||
"patterns_downloading": "Downloading patterns and Populating %s...\n",
|
||||
"patterns_error_create_directory": "could not create pattern directory: %v",
|
||||
"patterns_error_get_home_directory": "could not get home directory: %v",
|
||||
"patterns_error_load_from_file": "could not load pattern from file %s: %w",
|
||||
"patterns_error_read_pattern_file": "could not read pattern file %s: %v",
|
||||
"patterns_error_read_unique_file": "could not read unique patterns file. Please run --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "could not resolve file path: %v",
|
||||
"patterns_error_save_pattern": "could not save pattern: %v",
|
||||
"patterns_failed_access_directory": "failed to access patterns directory '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "failed to create temp directory: %w",
|
||||
"patterns_failed_create_temp_folder": "failed to create temporary patterns folder: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_error_configuring_custom_patterns": "error configuring CustomPatterns: %w",
|
||||
"plugin_registry_model_not_available_for_vendor": "model %s not available for vendor %s",
|
||||
"plugin_setting_not_valid": "%v=%v, is not valid",
|
||||
"plugin_setup_configured": "[%v] configured",
|
||||
"plugin_setup_skipped": "[%v] skipped\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Send desktop notification when command completes",
|
||||
"serve_fabric_api_ollama_endpoints": "Serve the Fabric Rest API with ollama endpoints",
|
||||
"serve_fabric_rest_api": "Serve the Fabric Rest API",
|
||||
"server_chat_error": "Error: %v",
|
||||
"server_error_marshaling_response": "error marshaling response: %v",
|
||||
"server_error_writing_response": "error writing response: %v",
|
||||
"server_invalid_request_format": "Invalid request format: %v",
|
||||
"sessions_creating_new": "Creating new session: %s\n",
|
||||
"set_debug_level": "Set debug level (0=off, 1=basic, 2=detailed, 3=trace)",
|
||||
"set_frequency_penalty": "Set frequency penalty",
|
||||
"set_location_web_search": "Set location for web search results (e.g., 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Total Episodes**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Start tag for thinking sections",
|
||||
"storage_error_delete": "could not delete %s: %v",
|
||||
"storage_error_load": "could not load %s: %v",
|
||||
"storage_error_marshal": "could not marshal %s: %s",
|
||||
"storage_error_read_directory": "could not read items from directory: %v",
|
||||
"storage_error_rename": "could not rename %s to %s: %v",
|
||||
"storage_error_resolve_directory": "could not resolve directory path: %v",
|
||||
"storage_error_save": "could not save %s: %v",
|
||||
"storage_error_stat_entry": "could not stat entry %s: %v",
|
||||
"storage_error_unmarshal": "could not unmarshal %s: %s",
|
||||
"strategies_available_header": "Available Strategies:",
|
||||
"strategies_cloning_repository": "Cloning repository %s (path: %s)...\n",
|
||||
"strategies_download_success": "✅ Successfully downloaded and installed strategies to %s\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "extension %s error: %v",
|
||||
"template_file_error_expand_home_dir": "file: could not expand home directory: %v",
|
||||
"template_file_error_invalid_line_count": "file: invalid line count %q",
|
||||
"template_file_error_line_count_positive": "file: line count must be positive",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "File: size=%d for path %q",
|
||||
"template_file_log_tail_returning_lines": "File: tail returning %d lines",
|
||||
"template_file_log_validating_path": "File: validating path %q",
|
||||
"template_hash_open_file": "open file: %w",
|
||||
"template_hash_read_file": "read file: %w",
|
||||
"template_missing_required_variable": "missing required variable: %s",
|
||||
"template_plugin_error": "plugin %s error: %v",
|
||||
"template_processing_stuck": "template processing stuck - potential infinite loop",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "text: empty input for operation %q",
|
||||
"template_text_unknown_operation": "text: unknown text operation %q (supported: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "unknown plugin namespace: %s",
|
||||
"template_utils_failed_get_absolute_path": "failed to get absolute path: %w",
|
||||
"template_utils_failed_get_home_dir": "failed to get user home directory: %w",
|
||||
"template_utils_path_not_exist": "path does not exist: %w",
|
||||
"transcription_model_required": "transcription model is required (use --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "transparent background can only be used with PNG and WebP formats, not %s",
|
||||
"tts_audio_generated_successfully": "TTS audio generated successfully and saved to: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Update patterns",
|
||||
"usage_header": "Usage:",
|
||||
"use_model_defaults_raw_help": "Use the defaults of the model without sending chat options (temperature, top_p, etc.). Only affects OpenAI-compatible providers. Anthropic models always use smart parameter selection to comply with model-specific requirements.",
|
||||
"util_error_accessing_config_path": "error accessing default config path: %w",
|
||||
"util_error_determine_home_directory": "could not determine user home directory: %w",
|
||||
"util_error_get_absolute_path": "could not get absolute path",
|
||||
"util_error_path_is_empty": "path is empty",
|
||||
"util_error_resolve_home_directory": "could not resolve home directory",
|
||||
"util_error_resolve_symlinks": "could not resolve symlinks: %w",
|
||||
"vendor_no_transcription_support": "vendor %s does not support audio transcription",
|
||||
"vendor_not_configured": "vendor %s not configured",
|
||||
"vendor_not_found": "vendor %s not found",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "El endpoint de modelos de Abacus devolvió el estado %d",
|
||||
"additional_yt_dlp_args": "Argumentos adicionales para pasar a yt-dlp (ej. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "La dirección para vincular la API REST",
|
||||
"anthropic_stream_error": "Error de transmisión: %v",
|
||||
"api_key_secure_server_routes": "Clave API usada para asegurar rutas del servidor",
|
||||
"application_options_header": "Opciones de la Aplicación:",
|
||||
"apply_variables_to_input": "Aplicar variables a la entrada del usuario",
|
||||
"attachment_could_not_determine_mimetype": "No se pudo determinar el tipo MIME de la URL",
|
||||
"attachment_file_not_exist": "El archivo %s no existe",
|
||||
"attachment_no_content_available": "No hay contenido disponible",
|
||||
"attachment_no_type_no_content": "El adjunto no tiene tipo ni contenido del cual derivarlo",
|
||||
"attachment_path_or_url_help": "Ruta de adjunto o URL (ej. para mensajes de reconocimiento de imagen de OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "se especificó el archivo de salida de audio '%s' pero el modelo '%s' no es un modelo TTS. Por favor usa un modelo TTS como gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Archivo de audio o video para transcribir",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "tipo de evento de stream desconocido: %T",
|
||||
"cannot_convert_string": "no se puede convertir la cadena %q a %v",
|
||||
"change_default_model": "Cambiar modelo predeterminado",
|
||||
"chat_error_content_fields_misused": "No se pueden usar Content y MultiContent simultáneamente",
|
||||
"chatter_error_empty_response": "respuesta vacía",
|
||||
"chatter_error_find_context": "no se pudo encontrar el contexto %s: %v",
|
||||
"chatter_error_find_session": "no se pudo encontrar la sesion %s: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Introduce la ruta a tu directorio de patrones personalizados",
|
||||
"custom_patterns_label": "Patrones personalizados",
|
||||
"custom_patterns_setup_description": "Patrones personalizados - Establecer directorio para tus patrones personalizados",
|
||||
"custom_patterns_warning_create_directory": "Advertencia: No se pudo crear el directorio de patrones personalizados %s: %v\n",
|
||||
"db_error_loading_env_file": "Error al cargar el archivo .env: %s",
|
||||
"defaults_model_context_length_question": "Introduce la longitud del contexto del modelo",
|
||||
"defaults_model_question": "Introduce el índice o el nombre de tu modelo predeterminado",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Error: %v",
|
||||
"gemini_tts_failed": "generación TTS fallida: %w",
|
||||
"gemini_unexpected_data_type": "tipo de dato inesperado: %s, se esperaban datos de audio",
|
||||
"gemini_voice_not_found": "Voz '%s' no encontrada",
|
||||
"gemini_wav_data_invalid": "datos WAV generados inválidos: %d bytes, mínimo requerido: %d",
|
||||
"gemini_wav_generation_failed": "no se pudo generar el archivo WAV: %w",
|
||||
"githelper_failed_clone_repository": "No se pudo clonar el repositorio: %w",
|
||||
"githelper_failed_create_dest_directory": "No se pudo crear el directorio de destino: %w",
|
||||
"githelper_failed_get_commit": "No se pudo obtener el commit: %w",
|
||||
"githelper_failed_get_head": "No se pudo obtener el HEAD del repositorio: %w",
|
||||
"githelper_failed_get_tree": "No se pudo obtener el árbol: %w",
|
||||
"grab_comments_from_youtube": "Obtener comentarios del video de YouTube y enviar al chat",
|
||||
"grab_transcript_from_youtube": "Obtener transcripción del video de YouTube y enviar al chat (se usa por defecto).",
|
||||
"grab_transcript_with_timestamps": "Obtener transcripción del video de YouTube con marcas de tiempo y enviar al chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "No hay descripción disponible",
|
||||
"no_items_found": "No hay %s",
|
||||
"no_notification_system_available": "no hay sistema de notificaciones disponible",
|
||||
"notifications_no_provider_available": "No hay proveedor de notificaciones disponible",
|
||||
"number_of_latest_patterns": "Número de patrones más recientes a listar",
|
||||
"ollama_cannot_parse_url": "No se puede analizar la URL '%s': %v",
|
||||
"ollama_chat_request_failed": "Solicitud de chat fallida: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "no se pudo dividir el archivo en fragmentos de tamaño aceptable",
|
||||
"openai_audio_unsupported_audio_format": "formato de audio no compatible '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Usando el modelo %s para transcribir la parte %d (archivo: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Lista de modelos estática desconocida: %s",
|
||||
"openai_failed_to_create_models_url": "error al crear URL de modelos: %w",
|
||||
"openai_image_failed_to_create_directory": "no se pudo crear el directorio %s: %w",
|
||||
"openai_image_failed_to_decode_image_data": "no se pudieron decodificar los datos de la imagen: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Patrones descargados e instalados correctamente en %s\\n",
|
||||
"patterns_downloaded_temp": "Se descargaron %d patrones al directorio temporal\\n",
|
||||
"patterns_downloading": "Descargando patrones y llenando %s...\\n",
|
||||
"patterns_error_create_directory": "No se pudo crear el directorio de patrones: %v",
|
||||
"patterns_error_get_home_directory": "No se pudo obtener el directorio de inicio: %v",
|
||||
"patterns_error_load_from_file": "No se pudo cargar el patrón del archivo %s: %w",
|
||||
"patterns_error_read_pattern_file": "No se pudo leer el archivo de patrones %s: %v",
|
||||
"patterns_error_read_unique_file": "No se pudo leer el archivo de patrones únicos. Ejecute --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "No se pudo resolver la ruta del archivo: %v",
|
||||
"patterns_error_save_pattern": "No se pudo guardar el patrón: %v",
|
||||
"patterns_failed_access_directory": "error al acceder al directorio de patrones '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "no se pudo crear el directorio temporal: %w",
|
||||
"patterns_failed_create_temp_folder": "no se pudo crear la carpeta temporal de patrones: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v no es válido",
|
||||
"plugin_setup_configured": "[%v] configurado",
|
||||
"plugin_setup_skipped": "[%v] omitido\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Enviar notificación de escritorio cuando se complete el comando",
|
||||
"serve_fabric_api_ollama_endpoints": "Servir la API REST de Fabric con endpoints de ollama",
|
||||
"serve_fabric_rest_api": "Servir la API REST de Fabric",
|
||||
"server_chat_error": "Error: %v",
|
||||
"server_error_marshaling_response": "error al serializar la respuesta: %v",
|
||||
"server_error_writing_response": "error al escribir la respuesta: %v",
|
||||
"server_invalid_request_format": "Formato de solicitud no válido: %v",
|
||||
"sessions_creating_new": "Creando nueva sesión: %s\n",
|
||||
"set_debug_level": "Establecer nivel de depuración (0=apagado, 1=básico, 2=detallado, 3=rastreo)",
|
||||
"set_frequency_penalty": "Establecer penalización de frecuencia",
|
||||
"set_location_web_search": "Establecer ubicación para resultados de búsqueda web (ej., 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Total de episodios**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Etiqueta de inicio para secciones de pensamiento",
|
||||
"storage_error_delete": "No se pudo eliminar %s: %v",
|
||||
"storage_error_load": "No se pudo cargar %s: %v",
|
||||
"storage_error_marshal": "No se pudo serializar %s: %s",
|
||||
"storage_error_read_directory": "No se pudieron leer los elementos del directorio: %v",
|
||||
"storage_error_rename": "No se pudo renombrar %s a %s: %v",
|
||||
"storage_error_resolve_directory": "No se pudo resolver la ruta del directorio: %v",
|
||||
"storage_error_save": "No se pudo guardar %s: %v",
|
||||
"storage_error_stat_entry": "No se pudo obtener información de la entrada %s: %v",
|
||||
"storage_error_unmarshal": "No se pudo deserializar %s: %s",
|
||||
"strategies_available_header": "Estrategias disponibles:",
|
||||
"strategies_cloning_repository": "Clonando el repositorio %s (ruta: %s)...\\n",
|
||||
"strategies_download_success": "✅ Estrategias descargadas e instaladas correctamente en %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Error en extensión %s: %v",
|
||||
"template_file_error_expand_home_dir": "archivo: no se pudo expandir el directorio home: %v",
|
||||
"template_file_error_invalid_line_count": "archivo: número de líneas no válido %q",
|
||||
"template_file_error_line_count_positive": "archivo: el número de líneas debe ser positivo",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "Archivo: tamaño=%d para la ruta %q",
|
||||
"template_file_log_tail_returning_lines": "Archivo: tail devuelve %d líneas",
|
||||
"template_file_log_validating_path": "Archivo: validando ruta %q",
|
||||
"template_hash_open_file": "Abrir archivo: %w",
|
||||
"template_hash_read_file": "Leer archivo: %w",
|
||||
"template_missing_required_variable": "Variable requerida faltante: %s",
|
||||
"template_plugin_error": "Error en plugin %s: %v",
|
||||
"template_processing_stuck": "Procesamiento de plantilla bloqueado - posible bucle infinito",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Texto: entrada vacía para la operación %q",
|
||||
"template_text_unknown_operation": "Texto: operación de texto desconocida %q (soportadas: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Espacio de nombres de plugin desconocido: %s",
|
||||
"template_utils_failed_get_absolute_path": "No se pudo obtener la ruta absoluta: %w",
|
||||
"template_utils_failed_get_home_dir": "No se pudo obtener el directorio de inicio del usuario: %w",
|
||||
"template_utils_path_not_exist": "La ruta no existe: %w",
|
||||
"transcription_model_required": "se requiere un modelo de transcripción (usa --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "el fondo transparente solo puede usarse con formatos PNG y WebP, no %s",
|
||||
"tts_audio_generated_successfully": "Audio TTS generado exitosamente y guardado en: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Actualizar patrones",
|
||||
"usage_header": "Uso:",
|
||||
"use_model_defaults_raw_help": "Utiliza los valores predeterminados del modelo sin enviar opciones de chat (temperature, top_p, etc.). Solo afecta a los proveedores compatibles con OpenAI. Los modelos de Anthropic siempre usan una selección inteligente de parámetros para cumplir los requisitos específicos del modelo.",
|
||||
"util_error_accessing_config_path": "Error al acceder a la ruta de configuración predeterminada: %w",
|
||||
"util_error_determine_home_directory": "No se pudo determinar el directorio de inicio del usuario: %w",
|
||||
"util_error_get_absolute_path": "No se pudo obtener la ruta absoluta",
|
||||
"util_error_path_is_empty": "La ruta está vacía",
|
||||
"util_error_resolve_home_directory": "No se pudo resolver el directorio de inicio",
|
||||
"util_error_resolve_symlinks": "No se pudieron resolver los enlaces simbólicos: %w",
|
||||
"vendor_no_transcription_support": "el proveedor %s no admite transcripción de audio",
|
||||
"vendor_not_configured": "el proveedor %s no está configurado",
|
||||
"vendor_not_found": "proveedor %s no encontrado",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "نقطه پایانی مدلهای Abacus وضعیت %d را برگرداند",
|
||||
"additional_yt_dlp_args": "آرگومانهای اضافی برای ارسال به yt-dlp (مثال: '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "آدرس برای متصل کردن API REST",
|
||||
"anthropic_stream_error": "خطای جریان: %v",
|
||||
"api_key_secure_server_routes": "کلید API برای امنسازی مسیرهای سرور",
|
||||
"application_options_header": "گزینههای برنامه:",
|
||||
"apply_variables_to_input": "اعمال متغیرها به ورودی کاربر",
|
||||
"attachment_could_not_determine_mimetype": "امکان تعیین نوع MIME آدرس URL وجود ندارد",
|
||||
"attachment_file_not_exist": "فایل %s وجود ندارد",
|
||||
"attachment_no_content_available": "محتوایی در دسترس نیست",
|
||||
"attachment_no_type_no_content": "پیوست نوع و محتوایی برای استخراج ندارد",
|
||||
"attachment_path_or_url_help": "مسیر ضمیمه یا URL (مثال برای پیامهای تشخیص تصویر OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "فایل خروجی صوتی '%s' مشخص شده اما مدل '%s' یک مدل TTS نیست. لطفاً از مدل TTS مثل gemini-2.5-flash-preview-tts استفاده کنید",
|
||||
"audio_video_file_transcribe": "فایل صوتی یا ویدیویی برای رونویسی",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "نسخه API Azure را وارد کنید (برای پیشفرض خالی بگذارید)",
|
||||
"azure_base_url_question": "URL پایه API",
|
||||
"azure_base_url_required": "URL پایه Azure الزامی است",
|
||||
"azure_credential_failure": "ایجاد اعتبارنامه Azure ناموفق بود",
|
||||
"azure_deployments_question": "نامهای استقرار Azure خود را وارد کنید (با کاما جدا شده)",
|
||||
"azure_deployments_required": "حداقل یک نام استقرار Azure الزامی است",
|
||||
"azure_failed_extract_deployment": "استخراج نام استقرار از درخواست ناموفق بود",
|
||||
"azure_model_field_empty": "فیلد مدل در بدنه درخواست خالی است",
|
||||
"azure_request_body_nil": "بدنه درخواست خالی است",
|
||||
"azure_credential_failure": "ایجاد اعتبارنامه Azure ناموفق بود",
|
||||
"background_type_help": "نوع پسزمینه: opaque، transparent (پیشفرض: opaque، فقط برای PNG/WebP)",
|
||||
"bedrock_aws_region_label": "منطقه AWS",
|
||||
"bedrock_converse_failed": "bedrock converse برای مدل %s ناموفق بود: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "نوع رویداد جریان ناشناخته: %T",
|
||||
"cannot_convert_string": "نمیتوان رشته %q را به %v تبدیل کرد",
|
||||
"change_default_model": "تغییر مدل پیشفرض",
|
||||
"chat_error_content_fields_misused": "امکان استفاده همزمان از Content و MultiContent وجود ندارد",
|
||||
"chatter_error_empty_response": "پاسخ خالی",
|
||||
"chatter_error_find_context": "زمينه %s پيدا نشد: %v",
|
||||
"chatter_error_find_session": "نشست %s پيدا نشد: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "مسیر دایرکتوری الگوهای سفارشی خود را وارد کنید",
|
||||
"custom_patterns_label": "الگوهای سفارشی",
|
||||
"custom_patterns_setup_description": "الگوهای سفارشی - تنظیم دایرکتوری برای الگوهای سفارشی شما",
|
||||
"custom_patterns_warning_create_directory": "هشدار: امکان ایجاد پوشه الگوهای سفارشی %s وجود ندارد: %v\n",
|
||||
"db_error_loading_env_file": "خطا در بارگذاری فایل .env: %s",
|
||||
"defaults_model_context_length_question": "طول زمینه مدل را وارد کنید",
|
||||
"defaults_model_question": "شاخص یا نام مدل پیشفرض خود را وارد کنید",
|
||||
"defaults_setup_description": "ارائهدهنده و مدل هوش مصنوعی پیشفرض",
|
||||
"digitalocean_failed_parse_control_plane_url": "تجزیه URL صفحه کنترل DigitalOcean ناموفق بود: %w",
|
||||
"digitalocean_model_list_unavailable": "لیست مدلهای DigitalOcean در دسترس نیست. DIGITALOCEAN_TOKEN را تنظیم کنید تا مدلها از صفحه کنترل دریافت شوند",
|
||||
"disable_openai_responses_api": "غیرفعال کردن API OpenAI Responses (پیشفرض: false)",
|
||||
"disable_pattern_variable_replacement": "غیرفعال کردن جایگزینی متغیرهای الگو",
|
||||
"enable_web_search_tool": "فعالسازی ابزار جستجوی وب برای مدلهای پشتیبانی شده (Anthropic، OpenAI، Gemini)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "خطا: %v",
|
||||
"gemini_tts_failed": "تولید TTS ناموفق بود: %w",
|
||||
"gemini_unexpected_data_type": "نوع داده غیرمنتظره: %s، داده صوتی مورد انتظار بود",
|
||||
"gemini_voice_not_found": "صدای '%s' یافت نشد",
|
||||
"gemini_wav_data_invalid": "داده WAV تولید شده نامعتبر است: %d بایت، حداقل مورد نیاز: %d",
|
||||
"gemini_wav_generation_failed": "تولید فایل WAV ناموفق بود: %w",
|
||||
"githelper_failed_clone_repository": "شبیهسازی مخزن ناموفق بود: %w",
|
||||
"githelper_failed_create_dest_directory": "ایجاد پوشه مقصد ناموفق بود: %w",
|
||||
"githelper_failed_get_commit": "دریافت کامیت ناموفق بود: %w",
|
||||
"githelper_failed_get_head": "دریافت HEAD مخزن ناموفق بود: %w",
|
||||
"githelper_failed_get_tree": "دریافت درخت ناموفق بود: %w",
|
||||
"grab_comments_from_youtube": "دریافت نظرات از ویدیو یوتیوب و ارسال به گفتگو",
|
||||
"grab_transcript_from_youtube": "دریافت رونوشت از ویدیو یوتیوب و ارسال به گفتگو (به طور پیشفرض استفاده میشود).",
|
||||
"grab_transcript_with_timestamps": "دریافت رونوشت از ویدیو یوتیوب با مهر زمان و ارسال به گفتگو",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "توضیحی در دسترس نیست",
|
||||
"no_items_found": "هیچ %s",
|
||||
"no_notification_system_available": "هیچ سیستم اعلانرسانی در دسترس نیست",
|
||||
"notifications_no_provider_available": "ارائهدهنده اعلان در دسترس نیست",
|
||||
"number_of_latest_patterns": "تعداد جدیدترین الگوها برای فهرست",
|
||||
"ollama_cannot_parse_url": "نمیتوان URL '%s' را تجزیه کرد: %v",
|
||||
"ollama_chat_request_failed": "درخواست چت ناموفق بود: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "امکان تقسیم فایل به بخشهای قابل قبول وجود ندارد",
|
||||
"openai_audio_unsupported_audio_format": "فرمت صوتی پشتیبانی نشده '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "استفاده از مدل %s برای رونویسی بخش %d (نام فایل: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "لیست مدل ایستا ناشناخته: %s",
|
||||
"openai_failed_to_create_models_url": "ایجاد URL مدلها ناموفق بود: %w",
|
||||
"openai_image_failed_to_create_directory": "ایجاد پوشه %s ناموفق بود: %w",
|
||||
"openai_image_failed_to_decode_image_data": "رمزگشایی دادههای تصویر ناموفق بود: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ الگوها با موفقیت در %s دانلود و نصب شدند\\n",
|
||||
"patterns_downloaded_temp": "%d الگو در پوشه موقت دانلود شد\\n",
|
||||
"patterns_downloading": "در حال دانلود الگوها و پر کردن %s...\\n",
|
||||
"patterns_error_create_directory": "ایجاد پوشه الگو ناموفق بود: %v",
|
||||
"patterns_error_get_home_directory": "دریافت پوشه خانگی ناموفق بود: %v",
|
||||
"patterns_error_load_from_file": "بارگذاری الگو از فایل %s ناموفق بود: %w",
|
||||
"patterns_error_read_pattern_file": "خواندن فایل الگو %s ناموفق بود: %v",
|
||||
"patterns_error_read_unique_file": "خواندن فایل الگوهای یکتا ناموفق بود. لطفاً --updatepatterns را اجرا کنید (%s)",
|
||||
"patterns_error_resolve_file_path": "حل مسیر فایل ناموفق بود: %v",
|
||||
"patterns_error_save_pattern": "ذخیره الگو ناموفق بود: %v",
|
||||
"patterns_failed_access_directory": "دسترسی به پوشه الگو '%s' ناموفق بود: %w",
|
||||
"patterns_failed_create_temp_dir": "ایجاد پوشه موقت ناموفق بود: %w",
|
||||
"patterns_failed_create_temp_folder": "ایجاد پوشه موقت الگوها ناموفق بود: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"plugin_question_bool": "%v%v (true/false، برای '%s' خالی بگذارید یا '%v' را برای حذف مقدار بنویسید):",
|
||||
"plugin_question_optional": "%v%v (برای رد کردن خالی بگذارید):",
|
||||
"plugin_question_with_default": "%v%v (برای '%s' خالی بگذارید یا '%v' را برای حذف مقدار بنویسید):",
|
||||
"plugin_registry_error_configuring_custom_patterns": "خطا در پیکربندی CustomPatterns: %w",
|
||||
"plugin_registry_model_not_available_for_vendor": "مدل %s برای ارائهدهنده %s در دسترس نیست",
|
||||
"plugin_setting_not_valid": "%v=%v معتبر نیست",
|
||||
"plugin_setup_configured": "[%v] پیکربندی شد",
|
||||
"plugin_setup_skipped": "[%v] رد شد\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "ارسال اعلان دسکتاپ هنگام تکمیل دستور",
|
||||
"serve_fabric_api_ollama_endpoints": "سرویس API REST Fabric با نقاط پایانی ollama",
|
||||
"serve_fabric_rest_api": "سرویس API REST Fabric",
|
||||
"server_chat_error": "خطا: %v",
|
||||
"server_error_marshaling_response": "خطا در سریالسازی پاسخ: %v",
|
||||
"server_error_writing_response": "خطا در نوشتن پاسخ: %v",
|
||||
"server_invalid_request_format": "فرمت درخواست نامعتبر: %v",
|
||||
"sessions_creating_new": "ایجاد نشست جدید: %s\n",
|
||||
"set_debug_level": "تنظیم سطح اشکالزدایی (0=خاموش، 1=پایه، 2=تفصیلی، 3=ردیابی)",
|
||||
"set_frequency_penalty": "تنظیم جریمه فرکانس",
|
||||
"set_location_web_search": "تنظیم مکان برای نتایج جستجوی وب (مثال: 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**مجموع اپیزودها**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "تگ شروع برای بخشهای تفکر",
|
||||
"storage_error_delete": "حذف %s ناموفق بود: %v",
|
||||
"storage_error_load": "بارگذاری %s ناموفق بود: %v",
|
||||
"storage_error_marshal": "سریالسازی %s ناموفق بود: %s",
|
||||
"storage_error_read_directory": "خواندن موارد از پوشه ناموفق بود: %v",
|
||||
"storage_error_rename": "تغییر نام %s به %s ناموفق بود: %v",
|
||||
"storage_error_resolve_directory": "حل مسیر پوشه ناموفق بود: %v",
|
||||
"storage_error_save": "ذخیره %s ناموفق بود: %v",
|
||||
"storage_error_stat_entry": "دریافت اطلاعات ورودی %s ناموفق بود: %v",
|
||||
"storage_error_unmarshal": "بازسریالسازی %s ناموفق بود: %s",
|
||||
"strategies_available_header": "راهبردهای موجود:",
|
||||
"strategies_cloning_repository": "در حال کلون کردن مخزن %s (مسیر: %s)...\\n",
|
||||
"strategies_download_success": "✅ راهبردها با موفقیت در %s دانلود و نصب شدند\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "خطای افزونه %s: %v",
|
||||
"template_file_error_expand_home_dir": "فایل: گسترش پوشه خانگی ممکن نشد: %v",
|
||||
"template_file_error_invalid_line_count": "فایل: تعداد خط نامعتبر %q",
|
||||
"template_file_error_line_count_positive": "فایل: تعداد خط باید مثبت باشد",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "فایل: size=%d برای مسیر %q",
|
||||
"template_file_log_tail_returning_lines": "فایل: tail در حال بازگرداندن %d خط است",
|
||||
"template_file_log_validating_path": "فایل: در حال اعتبارسنجی مسیر %q",
|
||||
"template_hash_open_file": "باز کردن فایل: %w",
|
||||
"template_hash_read_file": "خواندن فایل: %w",
|
||||
"template_missing_required_variable": "متغیر الزامی موجود نیست: %s",
|
||||
"template_plugin_error": "خطای پلاگین %s: %v",
|
||||
"template_processing_stuck": "پردازش قالب متوقف شده - احتمال حلقه بینهایت",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "متن: ورودی خالی برای عملیات %q",
|
||||
"template_text_unknown_operation": "متن: عملیات متنی ناشناخته %q (پشتیبانی شده: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "فضای نام پلاگین ناشناخته: %s",
|
||||
"template_utils_failed_get_absolute_path": "دریافت مسیر مطلق ناموفق بود: %w",
|
||||
"template_utils_failed_get_home_dir": "دریافت پوشه خانگی کاربر ناموفق بود: %w",
|
||||
"template_utils_path_not_exist": "مسیر وجود ندارد: %w",
|
||||
"transcription_model_required": "مدل رونویسی الزامی است (از --transcribe-model استفاده کنید)",
|
||||
"transparent_background_png_webp_only": "پسزمینه شفاف فقط با فرمتهای PNG و WebP قابل استفاده است، نه %s",
|
||||
"tts_audio_generated_successfully": "صوت TTS با موفقیت ایجاد و ذخیره شد در: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "بهروزرسانی الگوها",
|
||||
"usage_header": "استفاده:",
|
||||
"use_model_defaults_raw_help": "از مقادیر پیشفرض مدل بدون ارسال گزینههای چت (temperature، top_p و غیره) استفاده میکند. فقط بر ارائهدهندگان سازگار با OpenAI تأثیر میگذارد. مدلهای Anthropic همواره برای رعایت نیازهای خاص هر مدل از انتخاب هوشمند پارامتر استفاده میکنند.",
|
||||
"util_error_accessing_config_path": "خطا در دسترسی به مسیر پیکربندی پیشفرض: %w",
|
||||
"util_error_determine_home_directory": "تعیین پوشه خانگی کاربر ناموفق بود: %w",
|
||||
"util_error_get_absolute_path": "دریافت مسیر مطلق ناموفق بود",
|
||||
"util_error_path_is_empty": "مسیر خالی است",
|
||||
"util_error_resolve_home_directory": "حل پوشه خانگی ناموفق بود",
|
||||
"util_error_resolve_symlinks": "حل پیوندهای نمادین ناموفق بود: %w",
|
||||
"vendor_no_transcription_support": "تامینکننده %s از رونویسی صوتی پشتیبانی نمیکند",
|
||||
"vendor_not_configured": "تامینکننده %s پیکربندی نشده است",
|
||||
"vendor_not_found": "ارائهدهنده %s یافت نشد",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "Le point de terminaison des modèles Abacus a renvoyé le statut %d",
|
||||
"additional_yt_dlp_args": "Arguments supplémentaires à passer à yt-dlp (ex. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "Adresse pour lier l'API REST",
|
||||
"anthropic_stream_error": "Erreur de flux : %v",
|
||||
"api_key_secure_server_routes": "Clé API utilisée pour sécuriser les routes du serveur",
|
||||
"application_options_header": "Options de l'application :",
|
||||
"apply_variables_to_input": "Appliquer les variables à l'entrée utilisateur",
|
||||
"attachment_could_not_determine_mimetype": "Impossible de déterminer le type MIME de l'URL",
|
||||
"attachment_file_not_exist": "Le fichier %s n'existe pas",
|
||||
"attachment_no_content_available": "Aucun contenu disponible",
|
||||
"attachment_no_type_no_content": "La pièce jointe n'a ni type ni contenu pour le déduire",
|
||||
"attachment_path_or_url_help": "Chemin de pièce jointe ou URL (ex. pour les messages de reconnaissance d'image OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "fichier de sortie audio '%s' spécifié mais le modèle '%s' n'est pas un modèle TTS. Veuillez utiliser un modèle TTS comme gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Fichier audio ou vidéo à transcrire",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Entrez la version de l'API Azure (laissez vide pour la valeur par défaut)",
|
||||
"azure_base_url_question": "URL de base de l'API",
|
||||
"azure_base_url_required": "L'URL de base Azure est requise",
|
||||
"azure_credential_failure": "Échec de la création des identifiants Azure",
|
||||
"azure_deployments_question": "Entrez les noms de vos déploiements Azure (séparés par des virgules)",
|
||||
"azure_deployments_required": "Au moins un nom de déploiement Azure est requis",
|
||||
"azure_failed_extract_deployment": "échec de l'extraction du nom de déploiement de la requête",
|
||||
"azure_model_field_empty": "le champ modèle est vide dans le corps de la requête",
|
||||
"azure_request_body_nil": "le corps de la requête est nil",
|
||||
"azure_credential_failure": "Échec de la création des identifiants Azure",
|
||||
"background_type_help": "Type d'arrière-plan : opaque, transparent (par défaut : opaque, seulement pour PNG/WebP)",
|
||||
"bedrock_aws_region_label": "Région AWS",
|
||||
"bedrock_converse_failed": "bedrock converse a échoué pour le modèle %s : %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "type d'événement de flux inconnu : %T",
|
||||
"cannot_convert_string": "impossible de convertir la chaîne %q en %v",
|
||||
"change_default_model": "Changer le modèle par défaut",
|
||||
"chat_error_content_fields_misused": "Impossible d'utiliser Content et MultiContent simultanément",
|
||||
"chatter_error_empty_response": "réponse vide",
|
||||
"chatter_error_find_context": "impossible de trouver le contexte %s : %v",
|
||||
"chatter_error_find_session": "impossible de trouver la session %s : %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Saisissez le chemin vers votre répertoire de patrons personnalisés",
|
||||
"custom_patterns_label": "Patrons personnalisés",
|
||||
"custom_patterns_setup_description": "Patrons personnalisés - Définir le répertoire pour vos patrons personnalisés",
|
||||
"custom_patterns_warning_create_directory": "Avertissement : Impossible de créer le répertoire de modèles personnalisés %s : %v\n",
|
||||
"db_error_loading_env_file": "Erreur lors du chargement du fichier .env : %s",
|
||||
"defaults_model_context_length_question": "Saisissez la longueur du contexte du modèle",
|
||||
"defaults_model_question": "Saisissez l'index ou le nom de votre modèle par défaut",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Erreur : %v",
|
||||
"gemini_tts_failed": "échec de la génération TTS : %w",
|
||||
"gemini_unexpected_data_type": "type de données inattendu : %s, données audio attendues",
|
||||
"gemini_voice_not_found": "Voix '%s' non trouvée",
|
||||
"gemini_wav_data_invalid": "données WAV générées invalides : %d octets, minimum requis : %d",
|
||||
"gemini_wav_generation_failed": "échec de la génération du fichier WAV : %w",
|
||||
"githelper_failed_clone_repository": "Échec du clonage du dépôt : %w",
|
||||
"githelper_failed_create_dest_directory": "Échec de la création du répertoire de destination : %w",
|
||||
"githelper_failed_get_commit": "Échec de la récupération du commit : %w",
|
||||
"githelper_failed_get_head": "Échec de la récupération du HEAD du dépôt : %w",
|
||||
"githelper_failed_get_tree": "Échec de la récupération de l'arborescence : %w",
|
||||
"grab_comments_from_youtube": "Récupérer les commentaires de la vidéo YouTube et envoyer au chat",
|
||||
"grab_transcript_from_youtube": "Récupérer la transcription de la vidéo YouTube et envoyer au chat (utilisé par défaut).",
|
||||
"grab_transcript_with_timestamps": "Récupérer la transcription de la vidéo YouTube avec horodatage et envoyer au chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "Aucune description disponible",
|
||||
"no_items_found": "Aucun %s",
|
||||
"no_notification_system_available": "aucun système de notification disponible",
|
||||
"notifications_no_provider_available": "Aucun fournisseur de notifications disponible",
|
||||
"number_of_latest_patterns": "Nombre des motifs les plus récents à lister",
|
||||
"ollama_cannot_parse_url": "Impossible d'analyser l'URL '%s' : %v",
|
||||
"ollama_chat_request_failed": "Requête de chat échouée : %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "impossible de découper le fichier en morceaux de taille acceptable",
|
||||
"openai_audio_unsupported_audio_format": "format audio non pris en charge '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Utilisation du modèle %s pour transcrire la partie %d (fichier : %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Liste de modèles statique inconnue : %s",
|
||||
"openai_failed_to_create_models_url": "échec de création de l'URL des modèles : %w",
|
||||
"openai_image_failed_to_create_directory": "échec de la création du répertoire %s : %w",
|
||||
"openai_image_failed_to_decode_image_data": "échec du décodage des données d'image : %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Patrons téléchargés et installés avec succès dans %s\\n",
|
||||
"patterns_downloaded_temp": "%d patrons téléchargés dans le répertoire temporaire\\n",
|
||||
"patterns_downloading": "Téléchargement des patrons et remplissage de %s...\\n",
|
||||
"patterns_error_create_directory": "Impossible de créer le répertoire de modèles : %v",
|
||||
"patterns_error_get_home_directory": "Impossible d'obtenir le répertoire personnel : %v",
|
||||
"patterns_error_load_from_file": "Impossible de charger le modèle depuis le fichier %s : %w",
|
||||
"patterns_error_read_pattern_file": "Impossible de lire le fichier de modèle %s : %v",
|
||||
"patterns_error_read_unique_file": "Impossible de lire le fichier de modèles uniques. Veuillez exécuter --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "Impossible de résoudre le chemin du fichier : %v",
|
||||
"patterns_error_save_pattern": "Impossible de sauvegarder le modèle : %v",
|
||||
"patterns_failed_access_directory": "impossible d'accéder au répertoire des patrons '%s' : %w",
|
||||
"patterns_failed_create_temp_dir": "impossible de créer le répertoire temporaire : %w",
|
||||
"patterns_failed_create_temp_folder": "impossible de créer le dossier temporaire des patrons : %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v n'est pas valide",
|
||||
"plugin_setup_configured": "[%v] configuré",
|
||||
"plugin_setup_skipped": "[%v] ignoré\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Envoyer une notification de bureau quand la commande se termine",
|
||||
"serve_fabric_api_ollama_endpoints": "Servir l'API REST Fabric avec les endpoints ollama",
|
||||
"serve_fabric_rest_api": "Servir l'API REST Fabric",
|
||||
"server_chat_error": "Erreur : %v",
|
||||
"server_error_marshaling_response": "erreur de sérialisation de la réponse : %v",
|
||||
"server_error_writing_response": "erreur d'écriture de la réponse : %v",
|
||||
"server_invalid_request_format": "Format de requête invalide : %v",
|
||||
"sessions_creating_new": "Création d'une nouvelle session : %s\n",
|
||||
"set_debug_level": "Définir le niveau de débogage (0=désactivé, 1=basique, 2=détaillé, 3=trace)",
|
||||
"set_frequency_penalty": "Définir la pénalité de fréquence",
|
||||
"set_location_web_search": "Définir l'emplacement pour les résultats de recherche web (ex. 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Épisodes au total** : %d",
|
||||
"spotify_url_label": "**URL** : %s",
|
||||
"start_tag_thinking_sections": "Balise de début pour les sections de réflexion",
|
||||
"storage_error_delete": "Impossible de supprimer %s : %v",
|
||||
"storage_error_load": "Impossible de charger %s : %v",
|
||||
"storage_error_marshal": "Impossible de sérialiser %s : %s",
|
||||
"storage_error_read_directory": "Impossible de lire les éléments du répertoire : %v",
|
||||
"storage_error_rename": "Impossible de renommer %s en %s : %v",
|
||||
"storage_error_resolve_directory": "Impossible de résoudre le chemin du répertoire : %v",
|
||||
"storage_error_save": "Impossible de sauvegarder %s : %v",
|
||||
"storage_error_stat_entry": "Impossible d'obtenir les informations de l'entrée %s : %v",
|
||||
"storage_error_unmarshal": "Impossible de désérialiser %s : %s",
|
||||
"strategies_available_header": "Stratégies disponibles :",
|
||||
"strategies_cloning_repository": "Clonage du dépôt %s (chemin : %s)...\\n",
|
||||
"strategies_download_success": "✅ Stratégies téléchargées et installées avec succès dans %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Erreur d'extension %s : %v",
|
||||
"template_file_error_expand_home_dir": "fichier : impossible d'étendre le répertoire personnel : %v",
|
||||
"template_file_error_invalid_line_count": "fichier : nombre de lignes invalide %q",
|
||||
"template_file_error_line_count_positive": "fichier : le nombre de lignes doit être positif",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "Fichier : taille=%d pour le chemin %q",
|
||||
"template_file_log_tail_returning_lines": "Fichier : tail renvoie %d lignes",
|
||||
"template_file_log_validating_path": "Fichier : validation du chemin %q",
|
||||
"template_hash_open_file": "Ouverture du fichier : %w",
|
||||
"template_hash_read_file": "Lecture du fichier : %w",
|
||||
"template_missing_required_variable": "Variable requise manquante : %s",
|
||||
"template_plugin_error": "Erreur du plugin %s : %v",
|
||||
"template_processing_stuck": "Traitement du modèle bloqué - boucle infinie potentielle",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Texte : entrée vide pour l'opération %q",
|
||||
"template_text_unknown_operation": "Texte : opération de texte inconnue %q (supportées : upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Espace de noms de plugin inconnu : %s",
|
||||
"template_utils_failed_get_absolute_path": "Impossible d'obtenir le chemin absolu : %w",
|
||||
"template_utils_failed_get_home_dir": "Impossible d'obtenir le répertoire personnel de l'utilisateur : %w",
|
||||
"template_utils_path_not_exist": "Le chemin n'existe pas : %w",
|
||||
"transcription_model_required": "un modèle de transcription est requis (utilisez --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "l'arrière-plan transparent ne peut être utilisé qu'avec les formats PNG et WebP, pas %s",
|
||||
"tts_audio_generated_successfully": "Audio TTS généré avec succès et sauvegardé dans : %s\n",
|
||||
|
|
@ -539,7 +592,13 @@
|
|||
"unsupported_conversion": "conversion non prise en charge de %v vers %v",
|
||||
"update_patterns": "Mettre à jour les motifs",
|
||||
"usage_header": "Utilisation :",
|
||||
"use_model_defaults_raw_help": "Utilise les valeurs par défaut du modèle sans envoyer d’options de discussion (temperature, top_p, etc.). N’affecte que les fournisseurs compatibles avec OpenAI. Les modèles Anthropic utilisent toujours une sélection intelligente des paramètres pour respecter les exigences propres à chaque modèle.",
|
||||
"use_model_defaults_raw_help": "Utilise les valeurs par défaut du modèle sans envoyer d'options de discussion (temperature, top_p, etc.). N'affecte que les fournisseurs compatibles avec OpenAI. Les modèles Anthropic utilisent toujours une sélection intelligente des paramètres pour respecter les exigences propres à chaque modèle.",
|
||||
"util_error_accessing_config_path": "Erreur d'accès au chemin de configuration par défaut : %w",
|
||||
"util_error_determine_home_directory": "Impossible de déterminer le répertoire personnel de l'utilisateur : %w",
|
||||
"util_error_get_absolute_path": "Impossible d'obtenir le chemin absolu",
|
||||
"util_error_path_is_empty": "Le chemin est vide",
|
||||
"util_error_resolve_home_directory": "Impossible de résoudre le répertoire personnel",
|
||||
"util_error_resolve_symlinks": "Impossible de résoudre les liens symboliques : %w",
|
||||
"vendor_no_transcription_support": "le fournisseur %s ne prend pas en charge la transcription audio",
|
||||
"vendor_not_configured": "le fournisseur %s n'est pas configuré",
|
||||
"vendor_not_found": "fournisseur %s introuvable",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "L'endpoint dei modelli Abacus ha restituito lo stato %d",
|
||||
"additional_yt_dlp_args": "Argomenti aggiuntivi da passare a yt-dlp (es. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "Indirizzo per associare l'API REST",
|
||||
"anthropic_stream_error": "Errore di streaming: %v",
|
||||
"api_key_secure_server_routes": "Chiave API utilizzata per proteggere le route del server",
|
||||
"application_options_header": "Opzioni dell'applicazione:",
|
||||
"apply_variables_to_input": "Applica variabili all'input utente",
|
||||
"attachment_could_not_determine_mimetype": "Impossibile determinare il tipo MIME dell'URL",
|
||||
"attachment_file_not_exist": "Il file %s non esiste",
|
||||
"attachment_no_content_available": "Nessun contenuto disponibile",
|
||||
"attachment_no_type_no_content": "L'allegato non ha tipo né contenuto da cui derivarlo",
|
||||
"attachment_path_or_url_help": "Percorso allegato o URL (es. per messaggi di riconoscimento immagine OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "file di output audio '%s' specificato ma il modello '%s' non è un modello TTS. Per favore usa un modello TTS come gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "File audio o video da trascrivere",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Inserire la versione dell'API Azure (lasciare vuoto per il valore predefinito)",
|
||||
"azure_base_url_question": "URL base dell'API",
|
||||
"azure_base_url_required": "L'URL base di Azure è obbligatorio",
|
||||
"azure_credential_failure": "Impossibile creare le credenziali Azure",
|
||||
"azure_deployments_question": "Inserire i nomi delle distribuzioni Azure (separati da virgola)",
|
||||
"azure_deployments_required": "È necessario almeno un nome di distribuzione Azure",
|
||||
"azure_failed_extract_deployment": "impossibile estrarre il nome della distribuzione dalla richiesta",
|
||||
"azure_model_field_empty": "il campo modello è vuoto nel corpo della richiesta",
|
||||
"azure_request_body_nil": "il corpo della richiesta è nil",
|
||||
"azure_credential_failure": "Impossibile creare le credenziali Azure",
|
||||
"background_type_help": "Tipo di sfondo: opaque, transparent (predefinito: opaque, solo per PNG/WebP)",
|
||||
"bedrock_aws_region_label": "Regione AWS",
|
||||
"bedrock_converse_failed": "bedrock converse fallito per il modello %s: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "tipo di evento stream sconosciuto: %T",
|
||||
"cannot_convert_string": "impossibile convertire la stringa %q in %v",
|
||||
"change_default_model": "Cambia modello predefinito",
|
||||
"chat_error_content_fields_misused": "Impossibile usare Content e MultiContent simultaneamente",
|
||||
"chatter_error_empty_response": "risposta vuota",
|
||||
"chatter_error_find_context": "impossibile trovare il contesto %s: %v",
|
||||
"chatter_error_find_session": "impossibile trovare la sessione %s: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Inserisci il percorso della directory dei tuoi pattern personalizzati",
|
||||
"custom_patterns_label": "Pattern personalizzati",
|
||||
"custom_patterns_setup_description": "Pattern personalizzati - Imposta la directory per i tuoi pattern personalizzati",
|
||||
"custom_patterns_warning_create_directory": "Avviso: Impossibile creare la directory dei modelli personalizzati %s: %v\n",
|
||||
"db_error_loading_env_file": "Errore nel caricamento del file .env: %s",
|
||||
"defaults_model_context_length_question": "Inserisci la lunghezza del contesto del modello",
|
||||
"defaults_model_question": "Inserisci l'indice o il nome del tuo modello predefinito",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Errore: %v",
|
||||
"gemini_tts_failed": "generazione TTS fallita: %w",
|
||||
"gemini_unexpected_data_type": "tipo di dato inaspettato: %s, attesi dati audio",
|
||||
"gemini_voice_not_found": "Voce '%s' non trovata",
|
||||
"gemini_wav_data_invalid": "dati WAV generati non validi: %d byte, minimo richiesto: %d",
|
||||
"gemini_wav_generation_failed": "generazione file WAV fallita: %w",
|
||||
"githelper_failed_clone_repository": "Clonazione del repository fallita: %w",
|
||||
"githelper_failed_create_dest_directory": "Creazione della directory di destinazione fallita: %w",
|
||||
"githelper_failed_get_commit": "Recupero del commit fallito: %w",
|
||||
"githelper_failed_get_head": "Recupero dell'HEAD del repository fallito: %w",
|
||||
"githelper_failed_get_tree": "Recupero dell'albero fallito: %w",
|
||||
"grab_comments_from_youtube": "Ottieni commenti dal video YouTube e invia alla chat",
|
||||
"grab_transcript_from_youtube": "Ottieni trascrizione dal video YouTube e invia alla chat (usato per impostazione predefinita).",
|
||||
"grab_transcript_with_timestamps": "Ottieni trascrizione dal video YouTube con timestamp e invia alla chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "Nessuna descrizione disponibile",
|
||||
"no_items_found": "Nessun %s",
|
||||
"no_notification_system_available": "nessun sistema di notifica disponibile",
|
||||
"notifications_no_provider_available": "Nessun provider di notifiche disponibile",
|
||||
"number_of_latest_patterns": "Numero dei pattern più recenti da elencare",
|
||||
"ollama_cannot_parse_url": "Impossibile analizzare l'URL '%s': %v",
|
||||
"ollama_chat_request_failed": "Richiesta di chat fallita: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "impossibile dividere il file in parti di dimensioni accettabili",
|
||||
"openai_audio_unsupported_audio_format": "formato audio non supportato '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Utilizzo del modello %s per trascrivere la parte %d (nome file: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Lista di modelli statica sconosciuta: %s",
|
||||
"openai_failed_to_create_models_url": "impossibile creare URL modelli: %w",
|
||||
"openai_image_failed_to_create_directory": "creazione della directory %s fallita: %w",
|
||||
"openai_image_failed_to_decode_image_data": "decodifica dei dati dell'immagine fallita: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Pattern scaricati e installati correttamente in %s\\n",
|
||||
"patterns_downloaded_temp": "%d pattern scaricati nella directory temporanea\\n",
|
||||
"patterns_downloading": "Download dei pattern e popolamento di %s...\\n",
|
||||
"patterns_error_create_directory": "Impossibile creare la directory dei modelli: %v",
|
||||
"patterns_error_get_home_directory": "Impossibile ottenere la directory home: %v",
|
||||
"patterns_error_load_from_file": "Impossibile caricare il modello dal file %s: %w",
|
||||
"patterns_error_read_pattern_file": "Impossibile leggere il file del modello %s: %v",
|
||||
"patterns_error_read_unique_file": "Impossibile leggere il file dei modelli unici. Eseguire --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "Impossibile risolvere il percorso del file: %v",
|
||||
"patterns_error_save_pattern": "Impossibile salvare il modello: %v",
|
||||
"patterns_failed_access_directory": "impossibile accedere alla directory dei pattern '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "impossibile creare la directory temporanea: %w",
|
||||
"patterns_failed_create_temp_folder": "impossibile creare la cartella temporanea dei pattern: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v non è valido",
|
||||
"plugin_setup_configured": "[%v] configurato",
|
||||
"plugin_setup_skipped": "[%v] saltato\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Invia notifica desktop quando il comando è completato",
|
||||
"serve_fabric_api_ollama_endpoints": "Servi l'API REST di Fabric con endpoint ollama",
|
||||
"serve_fabric_rest_api": "Servi l'API REST di Fabric",
|
||||
"server_chat_error": "Errore: %v",
|
||||
"server_error_marshaling_response": "errore nella serializzazione della risposta: %v",
|
||||
"server_error_writing_response": "errore nella scrittura della risposta: %v",
|
||||
"server_invalid_request_format": "Formato della richiesta non valido: %v",
|
||||
"sessions_creating_new": "Creazione nuova sessione: %s\n",
|
||||
"set_debug_level": "Imposta livello di debug (0=spento, 1=base, 2=dettagliato, 3=traccia)",
|
||||
"set_frequency_penalty": "Imposta penalità di frequenza",
|
||||
"set_location_web_search": "Imposta posizione per risultati ricerca web (es. 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Episodi totali**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Tag di inizio per sezioni di pensiero",
|
||||
"storage_error_delete": "Impossibile eliminare %s: %v",
|
||||
"storage_error_load": "Impossibile caricare %s: %v",
|
||||
"storage_error_marshal": "Impossibile serializzare %s: %s",
|
||||
"storage_error_read_directory": "Impossibile leggere gli elementi dalla directory: %v",
|
||||
"storage_error_rename": "Impossibile rinominare %s in %s: %v",
|
||||
"storage_error_resolve_directory": "Impossibile risolvere il percorso della directory: %v",
|
||||
"storage_error_save": "Impossibile salvare %s: %v",
|
||||
"storage_error_stat_entry": "Impossibile ottenere informazioni sulla voce %s: %v",
|
||||
"storage_error_unmarshal": "Impossibile deserializzare %s: %s",
|
||||
"strategies_available_header": "Strategie disponibili:",
|
||||
"strategies_cloning_repository": "Clonazione del repository %s (percorso: %s)...\\n",
|
||||
"strategies_download_success": "✅ Strategie scaricate e installate correttamente in %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Errore dell'estensione %s: %v",
|
||||
"template_file_error_expand_home_dir": "file: impossibile espandere la directory home: %v",
|
||||
"template_file_error_invalid_line_count": "file: numero di righe non valido %q",
|
||||
"template_file_error_line_count_positive": "file: il numero di righe deve essere positivo",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "File: dimensione=%d per il percorso %q",
|
||||
"template_file_log_tail_returning_lines": "File: tail restituisce %d righe",
|
||||
"template_file_log_validating_path": "File: convalida del percorso %q",
|
||||
"template_hash_open_file": "Apertura file: %w",
|
||||
"template_hash_read_file": "Lettura file: %w",
|
||||
"template_missing_required_variable": "Variabile richiesta mancante: %s",
|
||||
"template_plugin_error": "Errore del plugin %s: %v",
|
||||
"template_processing_stuck": "Elaborazione del modello bloccata - possibile ciclo infinito",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Testo: input vuoto per l'operazione %q",
|
||||
"template_text_unknown_operation": "Testo: operazione di testo sconosciuta %q (supportate: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Namespace del plugin sconosciuto: %s",
|
||||
"template_utils_failed_get_absolute_path": "Impossibile ottenere il percorso assoluto: %w",
|
||||
"template_utils_failed_get_home_dir": "Impossibile ottenere la directory home dell'utente: %w",
|
||||
"template_utils_path_not_exist": "Il percorso non esiste: %w",
|
||||
"transcription_model_required": "è richiesto un modello di trascrizione (usa --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "lo sfondo trasparente può essere utilizzato solo con formati PNG e WebP, non %s",
|
||||
"tts_audio_generated_successfully": "Audio TTS generato con successo e salvato in: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Aggiorna pattern",
|
||||
"usage_header": "Uso:",
|
||||
"use_model_defaults_raw_help": "Usa i valori predefiniti del modello senza inviare opzioni della chat (temperature, top_p, ecc.). Si applica solo ai provider compatibili con OpenAI. I modelli Anthropic utilizzano sempre una selezione intelligente dei parametri per rispettare i requisiti specifici del modello.",
|
||||
"util_error_accessing_config_path": "Errore nell'accesso al percorso di configurazione predefinito: %w",
|
||||
"util_error_determine_home_directory": "Impossibile determinare la directory home dell'utente: %w",
|
||||
"util_error_get_absolute_path": "Impossibile ottenere il percorso assoluto",
|
||||
"util_error_path_is_empty": "Il percorso è vuoto",
|
||||
"util_error_resolve_home_directory": "Impossibile risolvere la directory home",
|
||||
"util_error_resolve_symlinks": "Impossibile risolvere i link simbolici: %w",
|
||||
"vendor_no_transcription_support": "il fornitore %s non supporta la trascrizione audio",
|
||||
"vendor_not_configured": "il fornitore %s non è configurato",
|
||||
"vendor_not_found": "fornitore %s non trovato",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "Abacusモデルエンドポイントがステータス%dを返しました",
|
||||
"additional_yt_dlp_args": "yt-dlpに渡す追加の引数(例:'--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "REST APIをバインドするアドレス",
|
||||
"anthropic_stream_error": "ストリームエラー: %v",
|
||||
"api_key_secure_server_routes": "サーバールートを保護するために使用するAPIキー",
|
||||
"application_options_header": "アプリケーションオプション:",
|
||||
"apply_variables_to_input": "ユーザー入力に変数を適用",
|
||||
"attachment_could_not_determine_mimetype": "URLのMIMEタイプを判定できませんでした",
|
||||
"attachment_file_not_exist": "ファイル%sが存在しません",
|
||||
"attachment_no_content_available": "利用可能なコンテンツがありません",
|
||||
"attachment_no_type_no_content": "添付ファイルにタイプもコンテンツもありません",
|
||||
"attachment_path_or_url_help": "添付ファイルのパスまたはURL(例:OpenAI画像認識メッセージ用)",
|
||||
"audio_output_file_specified_but_not_tts_model": "音声出力ファイル '%s' が指定されましたが、モデル '%s' はTTSモデルではありません。gemini-2.5-flash-preview-tts などのTTSモデルを使用してください",
|
||||
"audio_video_file_transcribe": "転写する音声または動画ファイル",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Azure APIバージョンを入力してください(デフォルトの場合は空白のまま)",
|
||||
"azure_base_url_question": "API ベース URL",
|
||||
"azure_base_url_required": "Azure ベースURLが必要です",
|
||||
"azure_credential_failure": "Azure 認証情報の作成に失敗しました",
|
||||
"azure_deployments_question": "Azureデプロイメント名を入力してください(カンマ区切り)",
|
||||
"azure_deployments_required": "少なくとも1つのAzureデプロイメント名が必要です",
|
||||
"azure_failed_extract_deployment": "リクエストからデプロイメント名を抽出できませんでした",
|
||||
"azure_model_field_empty": "リクエストボディのモデルフィールドが空です",
|
||||
"azure_request_body_nil": "リクエストボディがnilです",
|
||||
"azure_credential_failure": "Azure 認証情報の作成に失敗しました",
|
||||
"background_type_help": "背景タイプ:opaque、transparent(デフォルト:opaque、PNG/WebPのみ)",
|
||||
"bedrock_aws_region_label": "AWSリージョン",
|
||||
"bedrock_converse_failed": "モデル %s のbedrock converseが失敗しました: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "不明なストリームイベントタイプ: %T",
|
||||
"cannot_convert_string": "文字列 %q を %v に変換できません",
|
||||
"change_default_model": "デフォルトモデルを変更",
|
||||
"chat_error_content_fields_misused": "ContentとMultiContentを同時に使用することはできません",
|
||||
"chatter_error_empty_response": "空の応答",
|
||||
"chatter_error_find_context": "コンテキスト %s が見つかりませんでした: %v",
|
||||
"chatter_error_find_session": "セッション %s が見つかりませんでした: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "カスタムパターンディレクトリのパスを入力してください",
|
||||
"custom_patterns_label": "カスタムパターン",
|
||||
"custom_patterns_setup_description": "カスタムパターン - カスタムパターン用のディレクトリを設定",
|
||||
"custom_patterns_warning_create_directory": "警告: カスタムパターンディレクトリ%sを作成できませんでした: %v\n",
|
||||
"db_error_loading_env_file": ".envファイルの読み込みエラー: %s",
|
||||
"defaults_model_context_length_question": "モデルのコンテキスト長を入力してください",
|
||||
"defaults_model_question": "デフォルトモデルのインデックスまたは名前を入力してください",
|
||||
"defaults_setup_description": "デフォルトのAIプロバイダーとモデル",
|
||||
"digitalocean_failed_parse_control_plane_url": "DigitalOceanコントロールプレーンURLの解析に失敗しました: %w",
|
||||
"digitalocean_model_list_unavailable": "DigitalOceanモデルリストが利用できません。DIGITALOCEAN_TOKENを設定してコントロールプレーンからモデルを取得してください",
|
||||
"disable_openai_responses_api": "OpenAI Responses APIを無効化(デフォルト:false)",
|
||||
"disable_pattern_variable_replacement": "パターン変数の置換を無効化",
|
||||
"enable_web_search_tool": "サポートされているモデル(Anthropic、OpenAI、Gemini)でウェブ検索ツールを有効化",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "エラー: %v",
|
||||
"gemini_tts_failed": "TTS生成に失敗しました: %w",
|
||||
"gemini_unexpected_data_type": "予期しないデータ型: %s、オーディオデータが必要です",
|
||||
"gemini_voice_not_found": "音声'%s'が見つかりません",
|
||||
"gemini_wav_data_invalid": "生成されたWAVデータが無効です: %d バイト、最小要件: %d",
|
||||
"gemini_wav_generation_failed": "WAVファイルの生成に失敗しました: %w",
|
||||
"githelper_failed_clone_repository": "リポジトリのクローンに失敗しました: %w",
|
||||
"githelper_failed_create_dest_directory": "宛先ディレクトリの作成に失敗しました: %w",
|
||||
"githelper_failed_get_commit": "コミットの取得に失敗しました: %w",
|
||||
"githelper_failed_get_head": "リポジトリHEADの取得に失敗しました: %w",
|
||||
"githelper_failed_get_tree": "ツリーの取得に失敗しました: %w",
|
||||
"grab_comments_from_youtube": "YouTube動画からコメントを取得してチャットに送信",
|
||||
"grab_transcript_from_youtube": "YouTube動画から転写を取得してチャットに送信(デフォルトで使用)。",
|
||||
"grab_transcript_with_timestamps": "YouTube動画からタイムスタンプ付きの転写を取得してチャットに送信",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "説明がありません",
|
||||
"no_items_found": "%s がありません",
|
||||
"no_notification_system_available": "利用可能な通知システムがありません",
|
||||
"notifications_no_provider_available": "通知プロバイダーが利用できません",
|
||||
"number_of_latest_patterns": "一覧表示する最新パターンの数",
|
||||
"ollama_cannot_parse_url": "URL '%s' を解析できません: %v",
|
||||
"ollama_chat_request_failed": "チャットリクエストが失敗しました: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "許容サイズのチャンクに分割できません",
|
||||
"openai_audio_unsupported_audio_format": "サポートされていない音声フォーマット '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "モデル %s を使用してパート %d を文字起こし中(ファイル名: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "不明な静的モデルリスト: %s",
|
||||
"openai_failed_to_create_models_url": "モデルURLの作成に失敗しました: %w",
|
||||
"openai_image_failed_to_create_directory": "ディレクトリ %s の作成に失敗しました: %w",
|
||||
"openai_image_failed_to_decode_image_data": "画像データのデコードに失敗しました: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ パターンを %s に正常にダウンロードしてインストールしました\\n",
|
||||
"patterns_downloaded_temp": "%d 個のパターンを一時ディレクトリにダウンロードしました\\n",
|
||||
"patterns_downloading": "パターンをダウンロードして %s を構成しています...\\n",
|
||||
"patterns_error_create_directory": "パターンディレクトリを作成できませんでした: %v",
|
||||
"patterns_error_get_home_directory": "ホームディレクトリを取得できませんでした: %v",
|
||||
"patterns_error_load_from_file": "ファイル%sからパターンを読み込めませんでした: %w",
|
||||
"patterns_error_read_pattern_file": "パターンファイル%sを読み込めませんでした: %v",
|
||||
"patterns_error_read_unique_file": "ユニークパターンファイルを読み込めませんでした。--updatepatternsを実行してください (%s)",
|
||||
"patterns_error_resolve_file_path": "ファイルパスを解決できませんでした: %v",
|
||||
"patterns_error_save_pattern": "パターンを保存できませんでした: %v",
|
||||
"patterns_failed_access_directory": "パターンディレクトリ '%s' にアクセスできませんでした: %w",
|
||||
"patterns_failed_create_temp_dir": "一時ディレクトリの作成に失敗しました: %w",
|
||||
"patterns_failed_create_temp_folder": "一時パターンフォルダーの作成に失敗しました: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"plugin_question_bool": "%v%v (true/false、'%s' を使うには空欄のまま、値を削除するには '%v' と入力):",
|
||||
"plugin_question_optional": "%v%v (スキップするには空欄のまま):",
|
||||
"plugin_question_with_default": "%v%v ('%s' を使うには空欄のまま、値を削除するには '%v' と入力):",
|
||||
"plugin_registry_error_configuring_custom_patterns": "CustomPatternsの設定エラー: %w",
|
||||
"plugin_registry_model_not_available_for_vendor": "モデル%sはベンダー%sでは利用できません",
|
||||
"plugin_setting_not_valid": "%v=%v は無効です",
|
||||
"plugin_setup_configured": "[%v] 設定済み",
|
||||
"plugin_setup_skipped": "[%v] スキップされました\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "コマンド完了時にデスクトップ通知を送信",
|
||||
"serve_fabric_api_ollama_endpoints": "ollamaエンドポイント付きのFabric REST APIを提供",
|
||||
"serve_fabric_rest_api": "Fabric REST APIを提供",
|
||||
"server_chat_error": "エラー: %v",
|
||||
"server_error_marshaling_response": "レスポンスのシリアライズエラー: %v",
|
||||
"server_error_writing_response": "レスポンスの書き込みエラー: %v",
|
||||
"server_invalid_request_format": "無効なリクエスト形式: %v",
|
||||
"sessions_creating_new": "新しいセッションを作成中: %s\n",
|
||||
"set_debug_level": "デバッグレベルを設定(0=オフ、1=基本、2=詳細、3=トレース)",
|
||||
"set_frequency_penalty": "頻度ペナルティを設定",
|
||||
"set_location_web_search": "ウェブ検索結果の場所を設定(例:'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**エピソード合計**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "思考セクションの開始タグ",
|
||||
"storage_error_delete": "%sを削除できませんでした: %v",
|
||||
"storage_error_load": "%sを読み込めませんでした: %v",
|
||||
"storage_error_marshal": "%sをシリアライズできませんでした: %s",
|
||||
"storage_error_read_directory": "ディレクトリからアイテムを読み込めませんでした: %v",
|
||||
"storage_error_rename": "%sを%sにリネームできませんでした: %v",
|
||||
"storage_error_resolve_directory": "ディレクトリパスを解決できませんでした: %v",
|
||||
"storage_error_save": "%sを保存できませんでした: %v",
|
||||
"storage_error_stat_entry": "エントリ%sの情報を取得できませんでした: %v",
|
||||
"storage_error_unmarshal": "%sをデシリアライズできませんでした: %s",
|
||||
"strategies_available_header": "利用可能な戦略:",
|
||||
"strategies_cloning_repository": "リポジトリ %s をクローン中 (パス: %s)...\\n",
|
||||
"strategies_download_success": "✅ 戦略を %s に正常にダウンロードしてインストールしました\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "拡張機能%sエラー: %v",
|
||||
"template_file_error_expand_home_dir": "file: ホームディレクトリを展開できませんでした: %v",
|
||||
"template_file_error_invalid_line_count": "file: 無効な行数 %q",
|
||||
"template_file_error_line_count_positive": "file: 行数は正の値である必要があります",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "File: パス %q の size=%d",
|
||||
"template_file_log_tail_returning_lines": "File: tail は %d 行を返します",
|
||||
"template_file_log_validating_path": "File: パス %q を検証中",
|
||||
"template_hash_open_file": "ファイルを開く: %w",
|
||||
"template_hash_read_file": "ファイルを読む: %w",
|
||||
"template_missing_required_variable": "必須変数が不足しています: %s",
|
||||
"template_plugin_error": "プラグイン%sエラー: %v",
|
||||
"template_processing_stuck": "テンプレート処理が停止 - 無限ループの可能性",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "テキスト: 操作%qに対する入力が空です",
|
||||
"template_text_unknown_operation": "テキスト: 不明なテキスト操作%q (対応: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "不明なプラグイン名前空間: %s",
|
||||
"template_utils_failed_get_absolute_path": "絶対パスの取得に失敗しました: %w",
|
||||
"template_utils_failed_get_home_dir": "ユーザーホームディレクトリの取得に失敗しました: %w",
|
||||
"template_utils_path_not_exist": "パスが存在しません: %w",
|
||||
"transcription_model_required": "転写モデルが必要です(--transcribe-model を使用)",
|
||||
"transparent_background_png_webp_only": "透明背景はPNGおよびWebP形式でのみ使用できます。%s では使用できません",
|
||||
"tts_audio_generated_successfully": "TTS音声が正常に生成され、保存されました:%s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "パターンを更新",
|
||||
"usage_header": "使用法:",
|
||||
"use_model_defaults_raw_help": "チャットオプション(temperature、top_p など)を送信せずにモデルのデフォルトを使用します。OpenAI 互換プロバイダーにのみ適用されます。Anthropic モデルは常に、モデル固有の要件に準拠するためにスマートなパラメーター選択を使用します。",
|
||||
"util_error_accessing_config_path": "デフォルト設定パスへのアクセスエラー: %w",
|
||||
"util_error_determine_home_directory": "ユーザーホームディレクトリを特定できませんでした: %w",
|
||||
"util_error_get_absolute_path": "絶対パスを取得できませんでした",
|
||||
"util_error_path_is_empty": "パスが空です",
|
||||
"util_error_resolve_home_directory": "ホームディレクトリを解決できませんでした",
|
||||
"util_error_resolve_symlinks": "シンボリックリンクを解決できませんでした: %w",
|
||||
"vendor_no_transcription_support": "ベンダー %s は音声転写をサポートしていません",
|
||||
"vendor_not_configured": "ベンダー %s が設定されていません",
|
||||
"vendor_not_found": "ベンダー %s が見つかりません",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "O endpoint de modelos do Abacus retornou o status %d",
|
||||
"additional_yt_dlp_args": "Argumentos adicionais para passar ao yt-dlp (ex. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "Endereço para vincular a API REST",
|
||||
"anthropic_stream_error": "Erro de transmissão: %v",
|
||||
"api_key_secure_server_routes": "Chave API usada para proteger rotas do servidor",
|
||||
"application_options_header": "Opções da aplicação:",
|
||||
"apply_variables_to_input": "Aplicar variáveis à entrada do usuário",
|
||||
"attachment_could_not_determine_mimetype": "Não foi possível determinar o tipo MIME da URL",
|
||||
"attachment_file_not_exist": "O arquivo %s não existe",
|
||||
"attachment_no_content_available": "Nenhum conteúdo disponível",
|
||||
"attachment_no_type_no_content": "O anexo não tem tipo nem conteúdo para derivá-lo",
|
||||
"attachment_path_or_url_help": "Caminho para o anexo ou URL (ex. para mensagens de reconhecimento de imagem do OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "arquivo de saída de áudio '%s' especificado mas o modelo '%s' não é um modelo TTS. Por favor use um modelo TTS como gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Arquivo de áudio ou vídeo para transcrever",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Insira a versão da API do Azure (deixe em branco para o padrão)",
|
||||
"azure_base_url_question": "URL base da API",
|
||||
"azure_base_url_required": "A URL base do Azure é obrigatória",
|
||||
"azure_credential_failure": "Falha ao criar a credencial do Azure",
|
||||
"azure_deployments_question": "Insira os nomes das implantações do Azure (separados por vírgula)",
|
||||
"azure_deployments_required": "Pelo menos um nome de implantação do Azure é obrigatório",
|
||||
"azure_failed_extract_deployment": "falha ao extrair o nome da implantação da requisição",
|
||||
"azure_model_field_empty": "o campo de modelo está vazio no corpo da requisição",
|
||||
"azure_request_body_nil": "o corpo da requisição é nil",
|
||||
"azure_credential_failure": "Falha ao criar a credencial do Azure",
|
||||
"background_type_help": "Tipo de fundo: opaque, transparent (padrão: opaque, apenas para PNG/WebP)",
|
||||
"bedrock_aws_region_label": "Regiao AWS",
|
||||
"bedrock_converse_failed": "bedrock converse falhou para o modelo %s: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "tipo de evento de stream desconhecido: %T",
|
||||
"cannot_convert_string": "não é possível converter a string %q para %v",
|
||||
"change_default_model": "Mudar modelo padrão",
|
||||
"chat_error_content_fields_misused": "Não é possível usar Content e MultiContent simultaneamente",
|
||||
"chatter_error_empty_response": "resposta vazia",
|
||||
"chatter_error_find_context": "nao foi possivel encontrar o contexto %s: %v",
|
||||
"chatter_error_find_session": "nao foi possivel encontrar a sessao %s: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Informe o caminho para seu diretório de padrões personalizados",
|
||||
"custom_patterns_label": "Padrões personalizados",
|
||||
"custom_patterns_setup_description": "Padrões personalizados - Definir diretório para seus padrões personalizados",
|
||||
"custom_patterns_warning_create_directory": "Aviso: Não foi possível criar o diretório de padrões personalizados %s: %v\n",
|
||||
"db_error_loading_env_file": "Erro ao carregar o arquivo .env: %s",
|
||||
"defaults_model_context_length_question": "Informe o comprimento do contexto do modelo",
|
||||
"defaults_model_question": "Informe o índice ou o nome do seu modelo padrão",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Erro: %v",
|
||||
"gemini_tts_failed": "falha na geracao TTS: %w",
|
||||
"gemini_unexpected_data_type": "tipo de dado inesperado: %s, esperado dados de audio",
|
||||
"gemini_voice_not_found": "Voz '%s' não encontrada",
|
||||
"gemini_wav_data_invalid": "dados WAV gerados invalidos: %d bytes, minimo requerido: %d",
|
||||
"gemini_wav_generation_failed": "falha ao gerar arquivo WAV: %w",
|
||||
"githelper_failed_clone_repository": "Falha ao clonar o repositório: %w",
|
||||
"githelper_failed_create_dest_directory": "Falha ao criar o diretório de destino: %w",
|
||||
"githelper_failed_get_commit": "Falha ao obter o commit: %w",
|
||||
"githelper_failed_get_head": "Falha ao obter o HEAD do repositório: %w",
|
||||
"githelper_failed_get_tree": "Falha ao obter a árvore: %w",
|
||||
"grab_comments_from_youtube": "Obter comentários do vídeo do YouTube e enviar ao chat",
|
||||
"grab_transcript_from_youtube": "Obter transcrição do vídeo do YouTube e enviar ao chat (usado por padrão).",
|
||||
"grab_transcript_with_timestamps": "Obter transcrição do vídeo do YouTube com timestamps e enviar ao chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "Nenhuma descrição disponível",
|
||||
"no_items_found": "Nenhum %s",
|
||||
"no_notification_system_available": "nenhum sistema de notificação disponível",
|
||||
"notifications_no_provider_available": "Nenhum provedor de notificações disponível",
|
||||
"number_of_latest_patterns": "Número dos padrões mais recentes a listar",
|
||||
"ollama_cannot_parse_url": "Não é possível analisar a URL '%s': %v",
|
||||
"ollama_chat_request_failed": "Requisição de chat falhou: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "não foi possível dividir o arquivo em partes de tamanho aceitável",
|
||||
"openai_audio_unsupported_audio_format": "formato de áudio não suportado '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "Usando o modelo %s para transcrever a parte %d (arquivo: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Lista de modelos estática desconhecida: %s",
|
||||
"openai_failed_to_create_models_url": "falha ao criar URL de modelos: %w",
|
||||
"openai_image_failed_to_create_directory": "falha ao criar o diretório %s: %w",
|
||||
"openai_image_failed_to_decode_image_data": "falha ao decodificar os dados da imagem: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Padrões baixados e instalados com sucesso em %s\\n",
|
||||
"patterns_downloaded_temp": "%d padrões baixados para o diretório temporário\\n",
|
||||
"patterns_downloading": "Baixando padrões e populando %s...\\n",
|
||||
"patterns_error_create_directory": "Não foi possível criar o diretório de padrões: %v",
|
||||
"patterns_error_get_home_directory": "Não foi possível obter o diretório home: %v",
|
||||
"patterns_error_load_from_file": "Não foi possível carregar o padrão do arquivo %s: %w",
|
||||
"patterns_error_read_pattern_file": "Não foi possível ler o arquivo de padrão %s: %v",
|
||||
"patterns_error_read_unique_file": "Não foi possível ler o arquivo de padrões únicos. Execute --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "Não foi possível resolver o caminho do arquivo: %v",
|
||||
"patterns_error_save_pattern": "Não foi possível salvar o padrão: %v",
|
||||
"patterns_failed_access_directory": "falha ao acessar o diretório de padrões '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "falha ao criar diretório temporário: %w",
|
||||
"patterns_failed_create_temp_folder": "falha ao criar a pasta temporária de padrões: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v não é válido",
|
||||
"plugin_setup_configured": "[%v] configurado",
|
||||
"plugin_setup_skipped": "[%v] ignorado\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Enviar notificação desktop quando o comando for concluído",
|
||||
"serve_fabric_api_ollama_endpoints": "Servir a API REST do Fabric com endpoints ollama",
|
||||
"serve_fabric_rest_api": "Servir a API REST do Fabric",
|
||||
"server_chat_error": "Erro: %v",
|
||||
"server_error_marshaling_response": "erro ao serializar resposta: %v",
|
||||
"server_error_writing_response": "erro ao escrever resposta: %v",
|
||||
"server_invalid_request_format": "Formato de solicitação inválido: %v",
|
||||
"sessions_creating_new": "Criando nova sessão: %s\n",
|
||||
"set_debug_level": "Definir nível de debug (0=desligado, 1=básico, 2=detalhado, 3=rastreamento)",
|
||||
"set_frequency_penalty": "Definir penalidade de frequência",
|
||||
"set_location_web_search": "Definir localização para resultados de busca web (ex. 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Total de episódios**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Tag inicial para seções de pensamento",
|
||||
"storage_error_delete": "Não foi possível excluir %s: %v",
|
||||
"storage_error_load": "Não foi possível carregar %s: %v",
|
||||
"storage_error_marshal": "Não foi possível serializar %s: %s",
|
||||
"storage_error_read_directory": "Não foi possível ler os itens do diretório: %v",
|
||||
"storage_error_rename": "Não foi possível renomear %s para %s: %v",
|
||||
"storage_error_resolve_directory": "Não foi possível resolver o caminho do diretório: %v",
|
||||
"storage_error_save": "Não foi possível salvar %s: %v",
|
||||
"storage_error_stat_entry": "Não foi possível obter informações da entrada %s: %v",
|
||||
"storage_error_unmarshal": "Não foi possível desserializar %s: %s",
|
||||
"strategies_available_header": "Estratégias disponíveis:",
|
||||
"strategies_cloning_repository": "Clonando repositório %s (caminho: %s)...\\n",
|
||||
"strategies_download_success": "✅ Estratégias baixadas e instaladas com sucesso em %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Erro na extensão %s: %v",
|
||||
"template_file_error_expand_home_dir": "arquivo: não foi possível expandir o diretório home: %v",
|
||||
"template_file_error_invalid_line_count": "arquivo: contagem de linhas inválida %q",
|
||||
"template_file_error_line_count_positive": "arquivo: a contagem de linhas deve ser positiva",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "Arquivo: tamanho=%d para o caminho %q",
|
||||
"template_file_log_tail_returning_lines": "Arquivo: tail retornando %d linhas",
|
||||
"template_file_log_validating_path": "Arquivo: validando caminho %q",
|
||||
"template_hash_open_file": "Abrir arquivo: %w",
|
||||
"template_hash_read_file": "Ler arquivo: %w",
|
||||
"template_missing_required_variable": "Variável obrigatória ausente: %s",
|
||||
"template_plugin_error": "Erro no plugin %s: %v",
|
||||
"template_processing_stuck": "Processamento do modelo travado - possível loop infinito",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Texto: entrada vazia para a operação %q",
|
||||
"template_text_unknown_operation": "Texto: operação de texto desconhecida %q (suportadas: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Namespace de plugin desconhecido: %s",
|
||||
"template_utils_failed_get_absolute_path": "Falha ao obter o caminho absoluto: %w",
|
||||
"template_utils_failed_get_home_dir": "Falha ao obter o diretório home do usuário: %w",
|
||||
"template_utils_path_not_exist": "O caminho não existe: %w",
|
||||
"transcription_model_required": "modelo de transcrição é necessário (use --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "fundo transparente só pode ser usado com formatos PNG e WebP, não %s",
|
||||
"tts_audio_generated_successfully": "Áudio TTS gerado com sucesso e salvo em: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Atualizar os padrões/patterns",
|
||||
"usage_header": "Uso:",
|
||||
"use_model_defaults_raw_help": "Usa os padrões do modelo sem enviar opções de chat (temperature, top_p etc.). Afeta apenas provedores compatíveis com o OpenAI. Os modelos da Anthropic sempre utilizam seleção inteligente de parâmetros para cumprir os requisitos específicos de cada modelo.",
|
||||
"util_error_accessing_config_path": "Erro ao acessar o caminho de configuração padrão: %w",
|
||||
"util_error_determine_home_directory": "Não foi possível determinar o diretório home do usuário: %w",
|
||||
"util_error_get_absolute_path": "Não foi possível obter o caminho absoluto",
|
||||
"util_error_path_is_empty": "O caminho está vazio",
|
||||
"util_error_resolve_home_directory": "Não foi possível resolver o diretório home",
|
||||
"util_error_resolve_symlinks": "Não foi possível resolver os links simbólicos: %w",
|
||||
"vendor_no_transcription_support": "o fornecedor %s não suporta transcrição de áudio",
|
||||
"vendor_not_configured": "o fornecedor %s não está configurado",
|
||||
"vendor_not_found": "provedor %s não encontrado",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "O endpoint de modelos do Abacus devolveu o estado %d",
|
||||
"additional_yt_dlp_args": "Argumentos adicionais para passar ao yt-dlp (ex. '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "Endereço para associar a API REST",
|
||||
"anthropic_stream_error": "Erro de transmissão: %v",
|
||||
"api_key_secure_server_routes": "Chave API usada para proteger as rotas do servidor",
|
||||
"application_options_header": "Opções da aplicação:",
|
||||
"apply_variables_to_input": "Aplicar variáveis à entrada do utilizador",
|
||||
"attachment_could_not_determine_mimetype": "Não foi possível determinar o tipo MIME do URL",
|
||||
"attachment_file_not_exist": "O ficheiro %s não existe",
|
||||
"attachment_no_content_available": "Nenhum conteúdo disponível",
|
||||
"attachment_no_type_no_content": "O anexo não tem tipo nem conteúdo para o derivar",
|
||||
"attachment_path_or_url_help": "Caminho do anexo ou URL (ex. para mensagens de reconhecimento de imagem do OpenAI)",
|
||||
"audio_output_file_specified_but_not_tts_model": "ficheiro de saída de áudio '%s' especificado mas o modelo '%s' não é um modelo TTS. Por favor use um modelo TTS como gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "Ficheiro de áudio ou vídeo para transcrever",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "Introduza a versão da API do Azure (deixe vazio para o padrão)",
|
||||
"azure_base_url_question": "URL base da API",
|
||||
"azure_base_url_required": "O URL base do Azure é obrigatório",
|
||||
"azure_credential_failure": "Falha ao criar a credencial do Azure",
|
||||
"azure_deployments_question": "Introduza os nomes das implementações do Azure (separados por vírgula)",
|
||||
"azure_deployments_required": "É necessário pelo menos um nome de implementação do Azure",
|
||||
"azure_failed_extract_deployment": "falha ao extrair o nome da implementação do pedido",
|
||||
"azure_model_field_empty": "o campo de modelo está vazio no corpo do pedido",
|
||||
"azure_request_body_nil": "o corpo do pedido é nil",
|
||||
"azure_credential_failure": "Falha ao criar a credencial do Azure",
|
||||
"background_type_help": "Tipo de fundo: opaque, transparent (por omissão: opaque, apenas para PNG/WebP)",
|
||||
"bedrock_aws_region_label": "Regiao AWS",
|
||||
"bedrock_converse_failed": "bedrock converse falhou para o modelo %s: %w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "tipo de evento de stream desconhecido: %T",
|
||||
"cannot_convert_string": "não é possível converter a string %q para %v",
|
||||
"change_default_model": "Mudar modelo predefinido",
|
||||
"chat_error_content_fields_misused": "Não é possível utilizar Content e MultiContent simultaneamente",
|
||||
"chatter_error_empty_response": "resposta vazia",
|
||||
"chatter_error_find_context": "nao foi possivel encontrar o contexto %s: %v",
|
||||
"chatter_error_find_session": "nao foi possivel encontrar a sessao %s: %v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "Indique o caminho para o seu diretório de padrões personalizados",
|
||||
"custom_patterns_label": "Padrões personalizados",
|
||||
"custom_patterns_setup_description": "Padrões personalizados - Definir diretório para os seus padrões personalizados",
|
||||
"custom_patterns_warning_create_directory": "Aviso: Não foi possível criar o diretório de padrões personalizados %s: %v\n",
|
||||
"db_error_loading_env_file": "Erro ao carregar o ficheiro .env: %s",
|
||||
"defaults_model_context_length_question": "Indique o comprimento do contexto do modelo",
|
||||
"defaults_model_question": "Indique o índice ou o nome do seu modelo padrão",
|
||||
"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",
|
||||
"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)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "Erro: %v",
|
||||
"gemini_tts_failed": "falha na geracao TTS: %w",
|
||||
"gemini_unexpected_data_type": "tipo de dado inesperado: %s, esperado dados de audio",
|
||||
"gemini_voice_not_found": "Voz '%s' não encontrada",
|
||||
"gemini_wav_data_invalid": "dados WAV gerados invalidos: %d bytes, minimo requerido: %d",
|
||||
"gemini_wav_generation_failed": "falha ao gerar ficheiro WAV: %w",
|
||||
"githelper_failed_clone_repository": "Falha ao clonar o repositório: %w",
|
||||
"githelper_failed_create_dest_directory": "Falha ao criar o diretório de destino: %w",
|
||||
"githelper_failed_get_commit": "Falha ao obter o commit: %w",
|
||||
"githelper_failed_get_head": "Falha ao obter o HEAD do repositório: %w",
|
||||
"githelper_failed_get_tree": "Falha ao obter a árvore: %w",
|
||||
"grab_comments_from_youtube": "Obter comentários do vídeo do YouTube e enviar ao chat",
|
||||
"grab_transcript_from_youtube": "Obter transcrição do vídeo do YouTube e enviar ao chat (usado por omissão).",
|
||||
"grab_transcript_with_timestamps": "Obter transcrição do vídeo do YouTube com timestamps e enviar ao chat",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "Nenhuma descrição disponível",
|
||||
"no_items_found": "Nenhum %s",
|
||||
"no_notification_system_available": "nenhum sistema de notificação disponível",
|
||||
"notifications_no_provider_available": "Nenhum fornecedor de notificações disponível",
|
||||
"number_of_latest_patterns": "Número dos padrões mais recentes a listar",
|
||||
"ollama_cannot_parse_url": "Não é possível analisar o URL '%s': %v",
|
||||
"ollama_chat_request_failed": "Pedido de chat falhou: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "não foi possível dividir o ficheiro em partes de tamanho aceitável",
|
||||
"openai_audio_unsupported_audio_format": "formato de áudio não suportado '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "A utilizar o modelo %s para transcrever a parte %d (ficheiro: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "Lista de modelos estática desconhecida: %s",
|
||||
"openai_failed_to_create_models_url": "falha ao criar URL de modelos: %w",
|
||||
"openai_image_failed_to_create_directory": "falha ao criar o diretório %s: %w",
|
||||
"openai_image_failed_to_decode_image_data": "falha ao descodificar os dados da imagem: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ Padrões transferidos e instalados com sucesso em %s\\n",
|
||||
"patterns_downloaded_temp": "%d padrões transferidos para o directório temporário\\n",
|
||||
"patterns_downloading": "A transferir padrões e a preencher %s...\\n",
|
||||
"patterns_error_create_directory": "Não foi possível criar o diretório de padrões: %v",
|
||||
"patterns_error_get_home_directory": "Não foi possível obter o diretório pessoal: %v",
|
||||
"patterns_error_load_from_file": "Não foi possível carregar o padrão do ficheiro %s: %w",
|
||||
"patterns_error_read_pattern_file": "Não foi possível ler o ficheiro de padrão %s: %v",
|
||||
"patterns_error_read_unique_file": "Não foi possível ler o ficheiro de padrões únicos. Execute --updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "Não foi possível resolver o caminho do ficheiro: %v",
|
||||
"patterns_error_save_pattern": "Não foi possível guardar o padrão: %v",
|
||||
"patterns_failed_access_directory": "falha ao aceder ao directório de padrões '%s': %w",
|
||||
"patterns_failed_create_temp_dir": "falha ao criar directório temporário: %w",
|
||||
"patterns_failed_create_temp_folder": "falha ao criar a pasta temporária de padrões: %w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"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_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_setting_not_valid": "%v=%v não é válido",
|
||||
"plugin_setup_configured": "[%v] configurado",
|
||||
"plugin_setup_skipped": "[%v] ignorado\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "Enviar notificação no ambiente de trabalho quando o comando for concluído",
|
||||
"serve_fabric_api_ollama_endpoints": "Servir a API REST do Fabric com endpoints ollama",
|
||||
"serve_fabric_rest_api": "Servir a API REST do Fabric",
|
||||
"server_chat_error": "Erro: %v",
|
||||
"server_error_marshaling_response": "erro ao serializar resposta: %v",
|
||||
"server_error_writing_response": "erro ao escrever resposta: %v",
|
||||
"server_invalid_request_format": "Formato de pedido inválido: %v",
|
||||
"sessions_creating_new": "A criar nova sessão: %s\n",
|
||||
"set_debug_level": "Definir nível de debug (0=desligado, 1=básico, 2=detalhado, 3=rastreio)",
|
||||
"set_frequency_penalty": "Definir penalidade de frequência",
|
||||
"set_location_web_search": "Definir localização para resultados de pesquisa web (ex. 'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**Total de episódios**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "Tag inicial para secções de pensamento",
|
||||
"storage_error_delete": "Não foi possível eliminar %s: %v",
|
||||
"storage_error_load": "Não foi possível carregar %s: %v",
|
||||
"storage_error_marshal": "Não foi possível serializar %s: %s",
|
||||
"storage_error_read_directory": "Não foi possível ler os itens do diretório: %v",
|
||||
"storage_error_rename": "Não foi possível renomear %s para %s: %v",
|
||||
"storage_error_resolve_directory": "Não foi possível resolver o caminho do diretório: %v",
|
||||
"storage_error_save": "Não foi possível guardar %s: %v",
|
||||
"storage_error_stat_entry": "Não foi possível obter informações da entrada %s: %v",
|
||||
"storage_error_unmarshal": "Não foi possível desserializar %s: %s",
|
||||
"strategies_available_header": "Estratégias disponíveis:",
|
||||
"strategies_cloning_repository": "A clonar repositório %s (caminho: %s)...\\n",
|
||||
"strategies_download_success": "✅ Estratégias transferidas e instaladas com sucesso em %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "Erro na extensão %s: %v",
|
||||
"template_file_error_expand_home_dir": "ficheiro: não foi possível expandir a diretoria home: %v",
|
||||
"template_file_error_invalid_line_count": "ficheiro: contagem de linhas inválida %q",
|
||||
"template_file_error_line_count_positive": "ficheiro: a contagem de linhas tem de ser positiva",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "Ficheiro: tamanho=%d para o caminho %q",
|
||||
"template_file_log_tail_returning_lines": "Ficheiro: tail a devolver %d linhas",
|
||||
"template_file_log_validating_path": "Ficheiro: a validar caminho %q",
|
||||
"template_hash_open_file": "Abrir ficheiro: %w",
|
||||
"template_hash_read_file": "Ler ficheiro: %w",
|
||||
"template_missing_required_variable": "Variável obrigatória em falta: %s",
|
||||
"template_plugin_error": "Erro no plugin %s: %v",
|
||||
"template_processing_stuck": "Processamento do modelo bloqueado - possível ciclo infinito",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "Texto: entrada vazia para a operação %q",
|
||||
"template_text_unknown_operation": "Texto: operação de texto desconhecida %q (suportadas: upper, lower, title, trim)",
|
||||
"template_unknown_plugin_namespace": "Espaço de nomes do plugin desconhecido: %s",
|
||||
"template_utils_failed_get_absolute_path": "Falha ao obter o caminho absoluto: %w",
|
||||
"template_utils_failed_get_home_dir": "Falha ao obter o diretório pessoal do utilizador: %w",
|
||||
"template_utils_path_not_exist": "O caminho não existe: %w",
|
||||
"transcription_model_required": "modelo de transcrição é necessário (use --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "fundo transparente só pode ser usado com formatos PNG e WebP, não %s",
|
||||
"tts_audio_generated_successfully": "Áudio TTS gerado com sucesso e guardado em: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "Atualizar padrões",
|
||||
"usage_header": "Uso:",
|
||||
"use_model_defaults_raw_help": "Utiliza os valores predefinidos do modelo sem enviar opções de chat (temperature, top_p, etc.). Só afeta fornecedores compatíveis com o OpenAI. Os modelos Anthropic usam sempre uma seleção inteligente de parâmetros para cumprir os requisitos específicos do modelo.",
|
||||
"util_error_accessing_config_path": "Erro ao aceder ao caminho de configuração predefinido: %w",
|
||||
"util_error_determine_home_directory": "Não foi possível determinar o diretório pessoal do utilizador: %w",
|
||||
"util_error_get_absolute_path": "Não foi possível obter o caminho absoluto",
|
||||
"util_error_path_is_empty": "O caminho está vazio",
|
||||
"util_error_resolve_home_directory": "Não foi possível resolver o diretório pessoal",
|
||||
"util_error_resolve_symlinks": "Não foi possível resolver as ligações simbólicas: %w",
|
||||
"vendor_no_transcription_support": "o fornecedor %s não suporta transcrição de áudio",
|
||||
"vendor_not_configured": "o fornecedor %s não está configurado",
|
||||
"vendor_not_found": "fornecedor %s não encontrado",
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
{
|
||||
"abacus_models_endpoint_status": "Abacus模型端点返回状态%d",
|
||||
"additional_yt_dlp_args": "传递给 yt-dlp 的其他参数(例如 '--cookies-from-browser brave')",
|
||||
"address_to_bind_rest_api": "绑定 REST API 的地址",
|
||||
"anthropic_stream_error": "流式传输错误: %v",
|
||||
"api_key_secure_server_routes": "用于保护服务器路由的 API 密钥",
|
||||
"application_options_header": "应用程序选项:",
|
||||
"apply_variables_to_input": "将变量应用于用户输入",
|
||||
"attachment_could_not_determine_mimetype": "无法确定URL的MIME类型",
|
||||
"attachment_file_not_exist": "文件%s不存在",
|
||||
"attachment_no_content_available": "没有可用内容",
|
||||
"attachment_no_type_no_content": "附件没有类型也没有内容可供推导",
|
||||
"attachment_path_or_url_help": "附件路径或 URL(例如用于 OpenAI 图像识别消息)",
|
||||
"audio_output_file_specified_but_not_tts_model": "指定了音频输出文件 '%s' 但模型 '%s' 不是 TTS 模型。请使用 TTS 模型,如 gemini-2.5-flash-preview-tts",
|
||||
"audio_video_file_transcribe": "要转录的音频或视频文件",
|
||||
|
|
@ -15,12 +20,12 @@
|
|||
"azure_api_version_question": "请输入 Azure API 版本(留空使用默认值)",
|
||||
"azure_base_url_question": "API 基础 URL",
|
||||
"azure_base_url_required": "Azure 基础 URL 是必需的",
|
||||
"azure_credential_failure": "创建 Azure 凭据失败",
|
||||
"azure_deployments_question": "请输入您的 Azure 部署名称(用逗号分隔)",
|
||||
"azure_deployments_required": "至少需要一个 Azure 部署名称",
|
||||
"azure_failed_extract_deployment": "无法从请求中提取部署名称",
|
||||
"azure_model_field_empty": "请求正文中的模型字段为空",
|
||||
"azure_request_body_nil": "请求正文为空",
|
||||
"azure_credential_failure": "创建 Azure 凭据失败",
|
||||
"background_type_help": "背景类型:opaque、transparent(默认:opaque,仅适用于 PNG/WebP)",
|
||||
"bedrock_aws_region_label": "AWS 区域",
|
||||
"bedrock_converse_failed": "模型 %s 的 bedrock converse 失败:%w",
|
||||
|
|
@ -37,6 +42,7 @@
|
|||
"bedrock_unknown_stream_event_type": "未知的流事件类型:%T",
|
||||
"cannot_convert_string": "无法将字符串 %q 转换为 %v",
|
||||
"change_default_model": "更改默认模型",
|
||||
"chat_error_content_fields_misused": "不能同时使用Content和MultiContent属性",
|
||||
"chatter_error_empty_response": "空响应",
|
||||
"chatter_error_find_context": "找不到上下文 %s:%v",
|
||||
"chatter_error_find_session": "找不到会话 %s:%v",
|
||||
|
|
@ -81,9 +87,13 @@
|
|||
"custom_patterns_directory_question": "请输入您的自定义模式目录路径",
|
||||
"custom_patterns_label": "自定义模式",
|
||||
"custom_patterns_setup_description": "自定义模式 - 设置您的自定义模式目录",
|
||||
"custom_patterns_warning_create_directory": "警告:无法创建自定义模式目录%s:%v\n",
|
||||
"db_error_loading_env_file": "加载.env文件错误:%s",
|
||||
"defaults_model_context_length_question": "请输入模型上下文长度",
|
||||
"defaults_model_question": "请输入您的默认模型的索引或名称",
|
||||
"defaults_setup_description": "默认 AI 提供商和模型",
|
||||
"digitalocean_failed_parse_control_plane_url": "解析DigitalOcean控制面板URL失败:%w",
|
||||
"digitalocean_model_list_unavailable": "DigitalOcean模型列表不可用。请设置DIGITALOCEAN_TOKEN以从控制面板获取模型",
|
||||
"disable_openai_responses_api": "禁用 OpenAI 响应 API(默认:false)",
|
||||
"disable_pattern_variable_replacement": "禁用模式变量替换",
|
||||
"enable_web_search_tool": "为支持的模型启用网络搜索工具(Anthropic、OpenAI、Gemini)",
|
||||
|
|
@ -183,8 +193,14 @@
|
|||
"gemini_stream_error": "错误:%v",
|
||||
"gemini_tts_failed": "TTS 生成失败:%w",
|
||||
"gemini_unexpected_data_type": "意外的数据类型:%s,预期为音频数据",
|
||||
"gemini_voice_not_found": "未找到语音'%s'",
|
||||
"gemini_wav_data_invalid": "生成的 WAV 数据无效:%d 字节,最少需要:%d",
|
||||
"gemini_wav_generation_failed": "生成 WAV 文件失败:%w",
|
||||
"githelper_failed_clone_repository": "克隆仓库失败:%w",
|
||||
"githelper_failed_create_dest_directory": "创建目标目录失败:%w",
|
||||
"githelper_failed_get_commit": "获取提交失败:%w",
|
||||
"githelper_failed_get_head": "获取仓库HEAD失败:%w",
|
||||
"githelper_failed_get_tree": "获取树失败:%w",
|
||||
"grab_comments_from_youtube": "从 YouTube 视频获取评论并发送到聊天",
|
||||
"grab_transcript_from_youtube": "从 YouTube 视频获取转录并发送到聊天(默认使用)。",
|
||||
"grab_transcript_with_timestamps": "从 YouTube 视频获取带时间戳的转录并发送到聊天",
|
||||
|
|
@ -239,6 +255,7 @@
|
|||
"no_description_available": "没有可用描述",
|
||||
"no_items_found": "没有 %s",
|
||||
"no_notification_system_available": "没有可用的通知系统",
|
||||
"notifications_no_provider_available": "没有可用的通知提供者",
|
||||
"number_of_latest_patterns": "要列出的最新模式数量",
|
||||
"ollama_cannot_parse_url": "无法解析 URL '%s': %v",
|
||||
"ollama_chat_request_failed": "聊天请求失败: %v",
|
||||
|
|
@ -293,6 +310,7 @@
|
|||
"openai_audio_unable_to_split_acceptable_size_chunks": "无法将文件分割为可接受大小的片段",
|
||||
"openai_audio_unsupported_audio_format": "不支持的音频格式 '%s'",
|
||||
"openai_audio_using_model_to_transcribe_part": "使用模型 %s 转录第 %d 部分(文件名: %s)...",
|
||||
"openai_compatible_unknown_static_model_list": "未知的静态模型列表:%s",
|
||||
"openai_failed_to_create_models_url": "创建模型 URL 失败:%w",
|
||||
"openai_image_failed_to_create_directory": "创建目录 %s 失败: %w",
|
||||
"openai_image_failed_to_decode_image_data": "解码图像数据失败: %w",
|
||||
|
|
@ -322,6 +340,13 @@
|
|||
"patterns_download_success": "✅ 已成功下载并安装模式到 %s\\n",
|
||||
"patterns_downloaded_temp": "已将 %d 个模式下载到临时目录\\n",
|
||||
"patterns_downloading": "正在下载模式并填充 %s...\\n",
|
||||
"patterns_error_create_directory": "无法创建模式目录:%v",
|
||||
"patterns_error_get_home_directory": "无法获取主目录:%v",
|
||||
"patterns_error_load_from_file": "无法从文件%s加载模式:%w",
|
||||
"patterns_error_read_pattern_file": "无法读取模式文件%s:%v",
|
||||
"patterns_error_read_unique_file": "无法读取唯一模式文件。请运行--updatepatterns (%s)",
|
||||
"patterns_error_resolve_file_path": "无法解析文件路径:%v",
|
||||
"patterns_error_save_pattern": "无法保存模式:%v",
|
||||
"patterns_failed_access_directory": "访问模式目录 '%s' 失败:%w",
|
||||
"patterns_failed_create_temp_dir": "创建临时目录失败:%w",
|
||||
"patterns_failed_create_temp_folder": "创建模式临时文件夹失败:%w",
|
||||
|
|
@ -370,6 +395,8 @@
|
|||
"plugin_question_bool": "%v%v(true/false,留空表示使用 '%s',或输入 '%v' 清除值):",
|
||||
"plugin_question_optional": "%v%v(留空以跳过):",
|
||||
"plugin_question_with_default": "%v%v(留空表示使用 '%s',或输入 '%v' 清除值):",
|
||||
"plugin_registry_error_configuring_custom_patterns": "配置CustomPatterns错误:%w",
|
||||
"plugin_registry_model_not_available_for_vendor": "模型%s对供应商%s不可用",
|
||||
"plugin_setting_not_valid": "%v=%v 无效",
|
||||
"plugin_setup_configured": "[%v] 已配置",
|
||||
"plugin_setup_skipped": "[%v] 已跳过\\n",
|
||||
|
|
@ -389,6 +416,11 @@
|
|||
"send_desktop_notification": "命令完成时发送桌面通知",
|
||||
"serve_fabric_api_ollama_endpoints": "提供带有 ollama 端点的 Fabric REST API 服务",
|
||||
"serve_fabric_rest_api": "提供 Fabric REST API 服务",
|
||||
"server_chat_error": "错误: %v",
|
||||
"server_error_marshaling_response": "序列化响应错误: %v",
|
||||
"server_error_writing_response": "写入响应错误: %v",
|
||||
"server_invalid_request_format": "无效的请求格式: %v",
|
||||
"sessions_creating_new": "正在创建新会话:%s\n",
|
||||
"set_debug_level": "设置调试级别(0=关闭,1=基本,2=详细,3=跟踪)",
|
||||
"set_frequency_penalty": "设置频率惩罚",
|
||||
"set_location_web_search": "设置网络搜索结果的位置(例如,'America/Los_Angeles')",
|
||||
|
|
@ -481,6 +513,15 @@
|
|||
"spotify_total_episodes_label": "**总剧集数**: %d",
|
||||
"spotify_url_label": "**URL**: %s",
|
||||
"start_tag_thinking_sections": "思考部分的开始标签",
|
||||
"storage_error_delete": "无法删除%s:%v",
|
||||
"storage_error_load": "无法加载%s:%v",
|
||||
"storage_error_marshal": "无法序列化%s:%s",
|
||||
"storage_error_read_directory": "无法读取目录中的项目:%v",
|
||||
"storage_error_rename": "无法将%s重命名为%s:%v",
|
||||
"storage_error_resolve_directory": "无法解析目录路径:%v",
|
||||
"storage_error_save": "无法保存%s:%v",
|
||||
"storage_error_stat_entry": "无法获取条目%s的信息:%v",
|
||||
"storage_error_unmarshal": "无法反序列化%s:%s",
|
||||
"strategies_available_header": "可用的策略:",
|
||||
"strategies_cloning_repository": "正在克隆仓库 %s(路径:%s)...\\n",
|
||||
"strategies_download_success": "✅ 已成功下载并安装策略到 %s\\n",
|
||||
|
|
@ -503,6 +544,7 @@
|
|||
"template_datetime_error_invalid_unit": "invalid time unit: %q",
|
||||
"template_datetime_error_relative_requires_value": "relative time requires a value",
|
||||
"template_datetime_error_unknown_operation": "datetime: unknown operation %q",
|
||||
"template_extension_error": "扩展%s错误:%v",
|
||||
"template_file_error_expand_home_dir": "file: 无法展开主目录: %v",
|
||||
"template_file_error_invalid_line_count": "file: 无效的行数 %q",
|
||||
"template_file_error_line_count_positive": "file: 行数必须为正数",
|
||||
|
|
@ -525,12 +567,23 @@
|
|||
"template_file_log_size_for_path": "文件:路径 %q 的 size=%d",
|
||||
"template_file_log_tail_returning_lines": "文件:tail 返回 %d 行",
|
||||
"template_file_log_validating_path": "文件:正在验证路径 %q",
|
||||
"template_hash_open_file": "打开文件:%w",
|
||||
"template_hash_read_file": "读取文件:%w",
|
||||
"template_missing_required_variable": "缺少必需变量:%s",
|
||||
"template_plugin_error": "插件%s错误:%v",
|
||||
"template_processing_stuck": "模板处理卡住 - 可能存在无限循环",
|
||||
"template_sys_error_env_requires_var": "env: variable name required",
|
||||
"template_sys_error_home": "failed to get home directory: %v",
|
||||
"template_sys_error_hostname": "failed to get hostname: %v",
|
||||
"template_sys_error_pwd": "failed to get working directory: %v",
|
||||
"template_sys_error_unknown_operation": "sys: unknown operation %q",
|
||||
"template_sys_error_user": "failed to get current user: %v",
|
||||
"template_text_empty_input": "文本:操作%q的输入为空",
|
||||
"template_text_unknown_operation": "文本:未知文本操作%q(支持:upper、lower、title、trim)",
|
||||
"template_unknown_plugin_namespace": "未知的插件命名空间:%s",
|
||||
"template_utils_failed_get_absolute_path": "获取绝对路径失败:%w",
|
||||
"template_utils_failed_get_home_dir": "获取用户主目录失败:%w",
|
||||
"template_utils_path_not_exist": "路径不存在:%w",
|
||||
"transcription_model_required": "需要转录模型(使用 --transcribe-model)",
|
||||
"transparent_background_png_webp_only": "透明背景只能用于 PNG 和 WebP 格式,不支持 %s",
|
||||
"tts_audio_generated_successfully": "TTS 音频生成成功并保存到: %s\n",
|
||||
|
|
@ -540,6 +593,12 @@
|
|||
"update_patterns": "更新模式",
|
||||
"usage_header": "用法:",
|
||||
"use_model_defaults_raw_help": "在不发送聊天选项(temperature、top_p 等)的情况下使用模型默认值。仅影响兼容 OpenAI 的提供商。Anthropic 模型始终使用智能参数选择以满足特定模型的要求。",
|
||||
"util_error_accessing_config_path": "访问默认配置路径错误:%w",
|
||||
"util_error_determine_home_directory": "无法确定用户主目录:%w",
|
||||
"util_error_get_absolute_path": "无法获取绝对路径",
|
||||
"util_error_path_is_empty": "路径为空",
|
||||
"util_error_resolve_home_directory": "无法解析主目录",
|
||||
"util_error_resolve_symlinks": "无法解析符号链接:%w",
|
||||
"vendor_no_transcription_support": "供应商 %s 不支持音频转录",
|
||||
"vendor_not_configured": "供应商 %s 未配置",
|
||||
"vendor_not_found": "未找到供应商 %s",
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ func (c *Client) ListModels() ([]string, error) {
|
|||
err,
|
||||
)
|
||||
}
|
||||
return nil, fmt.Errorf("DigitalOcean model list unavailable. Set DIGITALOCEAN_TOKEN to fetch models from the control plane")
|
||||
return nil, fmt.Errorf("%s", i18n.T("digitalocean_model_list_unavailable"))
|
||||
}
|
||||
return c.fetchModelsFromControlPlane(context.Background())
|
||||
}
|
||||
|
|
@ -75,7 +75,7 @@ func (c *Client) fetchModelsFromControlPlane(ctx context.Context) ([]string, err
|
|||
|
||||
fullURL, err := url.Parse(controlPlaneModelsURL)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse DigitalOcean control plane URL: %w", err)
|
||||
return nil, fmt.Errorf(i18n.T("digitalocean_failed_parse_control_plane_url"), err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, fullURL.String(), nil)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import (
|
|||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// GeminiVoice represents a Gemini TTS voice with its characteristics
|
||||
|
|
@ -119,7 +121,7 @@ func GetGeminiVoiceByName(name string) (*GeminiVoice, error) {
|
|||
return &voice, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("voice '%s' not found", name)
|
||||
return nil, fmt.Errorf(i18n.T("gemini_voice_not_found"), name)
|
||||
}
|
||||
|
||||
// ListGeminiVoices formats the voice list for display
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/danielmiessler/fabric/internal/plugins/ai/openai"
|
||||
)
|
||||
|
||||
|
|
@ -92,7 +93,7 @@ func (c *Client) fetchAbacusModels() ([]string, error) {
|
|||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return nil, fmt.Errorf("abacus models endpoint returned status %d", resp.StatusCode)
|
||||
return nil, fmt.Errorf(i18n.T("abacus_models_endpoint_status"), resp.StatusCode)
|
||||
}
|
||||
|
||||
var response struct {
|
||||
|
|
@ -200,7 +201,7 @@ func (c *Client) getStaticModels(modelsKey string) ([]string, error) {
|
|||
"MiniMax-M2.1-lightning",
|
||||
}, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown static model list: %s", modelsKey)
|
||||
return nil, fmt.Errorf(i18n.T("openai_compatible_unknown_static_model_list"), modelsKey)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
|
|
@ -80,7 +81,7 @@ func (o *Db) Configure() (err error) {
|
|||
|
||||
func (o *Db) LoadEnvFile() (err error) {
|
||||
if err = godotenv.Load(o.EnvFilePath); err != nil {
|
||||
err = fmt.Errorf("error loading .env file: %s", err)
|
||||
err = fmt.Errorf(i18n.T("db_error_loading_env_file"), err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,12 +61,12 @@ func (o *PatternsEntity) loadPattern(source string) (pattern *Pattern, err error
|
|||
// Resolve the file path using GetAbsolutePath
|
||||
var absPath string
|
||||
if absPath, err = util.GetAbsolutePath(source); err != nil {
|
||||
return nil, fmt.Errorf("could not resolve file path: %v", err)
|
||||
return nil, fmt.Errorf(i18n.T("patterns_error_resolve_file_path"), err)
|
||||
}
|
||||
|
||||
// Use the resolved absolute path to get the pattern
|
||||
if pattern, err = o.getFromFile(absPath); err != nil {
|
||||
return nil, fmt.Errorf("could not load pattern from file %s: %w", absPath, err)
|
||||
return nil, fmt.Errorf(i18n.T("patterns_error_load_from_file"), absPath, err)
|
||||
}
|
||||
} else {
|
||||
// Otherwise, get the pattern from the database
|
||||
|
|
@ -154,7 +154,7 @@ func (o *PatternsEntity) getFromDB(name string) (ret *Pattern, err error) {
|
|||
func (o *PatternsEntity) PrintLatestPatterns(latestNumber int) (err error) {
|
||||
var contents []byte
|
||||
if contents, err = os.ReadFile(o.UniquePatternsFilePath); err != nil {
|
||||
err = fmt.Errorf("could not read unique patterns file. Please run --updatepatterns (%s)", err)
|
||||
err = fmt.Errorf(i18n.T("patterns_error_read_unique_file"), err)
|
||||
return
|
||||
}
|
||||
uniquePatterns := strings.Split(string(contents), "\n")
|
||||
|
|
@ -174,7 +174,7 @@ func (o *PatternsEntity) getFromFile(pathStr string) (pattern *Pattern, err erro
|
|||
if strings.HasPrefix(pathStr, "~/") {
|
||||
var homedir string
|
||||
if homedir, err = os.UserHomeDir(); err != nil {
|
||||
err = fmt.Errorf("could not get home directory: %v", err)
|
||||
err = fmt.Errorf(i18n.T("patterns_error_get_home_directory"), err)
|
||||
return
|
||||
}
|
||||
pathStr = filepath.Join(homedir, pathStr[2:])
|
||||
|
|
@ -182,7 +182,7 @@ func (o *PatternsEntity) getFromFile(pathStr string) (pattern *Pattern, err erro
|
|||
|
||||
var content []byte
|
||||
if content, err = os.ReadFile(pathStr); err != nil {
|
||||
err = fmt.Errorf("could not read pattern file %s: %v", pathStr, err)
|
||||
err = fmt.Errorf(i18n.T("patterns_error_read_pattern_file"), pathStr, err)
|
||||
return
|
||||
}
|
||||
pattern = &Pattern{
|
||||
|
|
@ -265,11 +265,11 @@ func (o *PatternsEntity) Get(name string) (*Pattern, error) {
|
|||
func (o *PatternsEntity) Save(name string, content []byte) (err error) {
|
||||
patternDir := filepath.Join(o.Dir, name)
|
||||
if err = os.MkdirAll(patternDir, os.ModePerm); err != nil {
|
||||
return fmt.Errorf("could not create pattern directory: %v", err)
|
||||
return fmt.Errorf(i18n.T("patterns_error_create_directory"), err)
|
||||
}
|
||||
patternPath := filepath.Join(patternDir, o.SystemPatternFile)
|
||||
if err = os.WriteFile(patternPath, content, 0644); err != nil {
|
||||
return fmt.Errorf("could not save pattern: %v", err)
|
||||
return fmt.Errorf(i18n.T("patterns_error_save_pattern"), err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import (
|
|||
|
||||
"github.com/danielmiessler/fabric/internal/chat"
|
||||
"github.com/danielmiessler/fabric/internal/domain"
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
type SessionsEntity struct {
|
||||
|
|
@ -17,7 +18,7 @@ func (o *SessionsEntity) Get(name string) (session *Session, err error) {
|
|||
if o.Exists(name) {
|
||||
err = o.LoadAsJson(name, &session.Messages)
|
||||
} else {
|
||||
fmt.Printf("Creating new session: %s\n", name)
|
||||
fmt.Printf(i18n.T("sessions_creating_new"), name)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,13 +30,13 @@ func (o *StorageEntity) GetNames() (ret []string, err error) {
|
|||
// Resolve the directory path to an absolute path
|
||||
absDir, err := util.GetAbsolutePath(o.Dir)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not resolve directory path: %v", err)
|
||||
return nil, fmt.Errorf(i18n.T("storage_error_resolve_directory"), err)
|
||||
}
|
||||
|
||||
// Read the directory entries
|
||||
var entries []os.DirEntry
|
||||
if entries, err = os.ReadDir(absDir); err != nil {
|
||||
return nil, fmt.Errorf("could not read items from directory: %v", err)
|
||||
return nil, fmt.Errorf(i18n.T("storage_error_read_directory"), err)
|
||||
}
|
||||
|
||||
for _, entry := range entries {
|
||||
|
|
@ -45,7 +45,7 @@ func (o *StorageEntity) GetNames() (ret []string, err error) {
|
|||
// Get metadata for the entry, including symlink info
|
||||
fileInfo, err := os.Lstat(entryPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not stat entry %s: %v", entryPath, err)
|
||||
return nil, fmt.Errorf(i18n.T("storage_error_stat_entry"), entryPath, err)
|
||||
}
|
||||
|
||||
// Determine if the entry should be included
|
||||
|
|
@ -69,7 +69,7 @@ func (o *StorageEntity) GetNames() (ret []string, err error) {
|
|||
|
||||
func (o *StorageEntity) Delete(name string) (err error) {
|
||||
if err = os.RemoveAll(o.BuildFilePathByName(name)); err != nil {
|
||||
err = fmt.Errorf("could not delete %s: %v", name, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_delete"), name, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -82,21 +82,21 @@ func (o *StorageEntity) Exists(name string) (ret bool) {
|
|||
|
||||
func (o *StorageEntity) Rename(oldName, newName string) (err error) {
|
||||
if err = os.Rename(o.BuildFilePathByName(oldName), o.BuildFilePathByName(newName)); err != nil {
|
||||
err = fmt.Errorf("could not rename %s to %s: %v", oldName, newName, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_rename"), oldName, newName, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (o *StorageEntity) Save(name string, content []byte) (err error) {
|
||||
if err = os.WriteFile(o.BuildFilePathByName(name), content, 0644); err != nil {
|
||||
err = fmt.Errorf("could not save %s: %v", name, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_save"), name, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (o *StorageEntity) Load(name string) (ret []byte, err error) {
|
||||
if ret, err = os.ReadFile(o.BuildFilePathByName(name)); err != nil {
|
||||
err = fmt.Errorf("could not load %s: %v", name, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_load"), name, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
@ -139,7 +139,7 @@ func (o *StorageEntity) SaveAsJson(name string, item any) (err error) {
|
|||
if jsonString, err = json.Marshal(item); err == nil {
|
||||
err = o.Save(name, jsonString)
|
||||
} else {
|
||||
err = fmt.Errorf("could not marshal %s: %s", name, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_marshal"), name, err)
|
||||
}
|
||||
|
||||
return err
|
||||
|
|
@ -152,7 +152,7 @@ func (o *StorageEntity) LoadAsJson(name string, item any) (err error) {
|
|||
}
|
||||
|
||||
if err = json.Unmarshal(content, &item); err != nil {
|
||||
err = fmt.Errorf("could not unmarshal %s: %s", name, err)
|
||||
err = fmt.Errorf(i18n.T("storage_error_unmarshal"), name, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// ComputeHash computes SHA-256 hash of a file at given path.
|
||||
|
|
@ -13,13 +15,13 @@ import (
|
|||
func ComputeHash(path string) (string, error) {
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("open file: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("template_hash_open_file"), err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
h := sha256.New()
|
||||
if _, err := io.Copy(h, f); err != nil {
|
||||
return "", fmt.Errorf("read file: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("template_hash_read_file"), err)
|
||||
}
|
||||
|
||||
return hex.EncodeToString(h.Sum(nil)), nil
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
debuglog "github.com/danielmiessler/fabric/internal/log"
|
||||
)
|
||||
|
||||
|
|
@ -80,7 +81,7 @@ func ApplyTemplate(content string, variables map[string]string, input string) (s
|
|||
debugf("Extension call: name=%s operation=%s value=%s\n", name, operation, value)
|
||||
result, err := extensionManager.ProcessExtension(name, operation, value)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("extension %s error: %v", name, err)
|
||||
return "", fmt.Errorf(i18n.T("template_extension_error"), name, err)
|
||||
}
|
||||
content = strings.ReplaceAll(content, full, result)
|
||||
progress = true
|
||||
|
|
@ -114,11 +115,11 @@ func ApplyTemplate(content string, variables map[string]string, input string) (s
|
|||
debugf("Executing sys plugin\n")
|
||||
result, err = sysPlugin.Apply(operation, value)
|
||||
default:
|
||||
return "", fmt.Errorf("unknown plugin namespace: %s", namespace)
|
||||
return "", fmt.Errorf(i18n.T("template_unknown_plugin_namespace"), namespace)
|
||||
}
|
||||
if err != nil {
|
||||
debugf("Plugin error: %v\n", err)
|
||||
return "", fmt.Errorf("plugin %s error: %v", namespace, err)
|
||||
return "", fmt.Errorf(i18n.T("template_plugin_error"), namespace, err)
|
||||
}
|
||||
content = strings.ReplaceAll(content, full, result)
|
||||
progress = true
|
||||
|
|
@ -134,7 +135,7 @@ func ApplyTemplate(content string, variables map[string]string, input string) (s
|
|||
default:
|
||||
val, ok := variables[raw]
|
||||
if !ok {
|
||||
return "", fmt.Errorf("missing required variable: %s", raw)
|
||||
return "", fmt.Errorf(i18n.T("template_missing_required_variable"), raw)
|
||||
}
|
||||
content = strings.ReplaceAll(content, full, val)
|
||||
progress = true
|
||||
|
|
@ -142,7 +143,7 @@ func ApplyTemplate(content string, variables map[string]string, input string) (s
|
|||
}
|
||||
|
||||
if !progress {
|
||||
return "", fmt.Errorf("template processing stuck - potential infinite loop")
|
||||
return "", fmt.Errorf("%s", i18n.T("template_processing_stuck"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// TextPlugin provides string manipulation operations
|
||||
|
|
@ -34,7 +36,7 @@ func (p *TextPlugin) Apply(operation string, value string) (string, error) {
|
|||
debugf("TextPlugin: operation=%s value=%q", operation, value)
|
||||
|
||||
if value == "" {
|
||||
return "", fmt.Errorf("text: empty input for operation %q", operation)
|
||||
return "", fmt.Errorf(i18n.T("template_text_empty_input"), operation)
|
||||
}
|
||||
|
||||
switch operation {
|
||||
|
|
@ -59,6 +61,6 @@ func (p *TextPlugin) Apply(operation string, value string) (string, error) {
|
|||
return result, nil
|
||||
|
||||
default:
|
||||
return "", fmt.Errorf("text: unknown text operation %q (supported: upper, lower, title, trim)", operation)
|
||||
return "", fmt.Errorf(i18n.T("template_text_unknown_operation"), operation)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import (
|
|||
"os/user"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// ExpandPath expands the ~ to user's home directory and returns absolute path
|
||||
|
|
@ -20,7 +22,7 @@ func ExpandPath(path string) (string, error) {
|
|||
if strings.HasPrefix(path, "~/") {
|
||||
usr, err := user.Current()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to get user home directory: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("template_utils_failed_get_home_dir"), err)
|
||||
}
|
||||
// Replace ~/ with actual home directory
|
||||
path = filepath.Join(usr.HomeDir, path[2:])
|
||||
|
|
@ -29,12 +31,12 @@ func ExpandPath(path string) (string, error) {
|
|||
// Convert to absolute path
|
||||
absPath, err := filepath.Abs(path)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to get absolute path: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("template_utils_failed_get_absolute_path"), err)
|
||||
}
|
||||
|
||||
// Check if path exists
|
||||
if _, err := os.Stat(absPath); err != nil {
|
||||
return "", fmt.Errorf("path does not exist: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("template_utils_path_not_exist"), err)
|
||||
}
|
||||
|
||||
return absPath, nil
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
|
||||
"github.com/danielmiessler/fabric/internal/core"
|
||||
"github.com/danielmiessler/fabric/internal/domain"
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/danielmiessler/fabric/internal/plugins/db/fsdb"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
|
@ -75,7 +76,7 @@ func (h *ChatHandler) HandleChat(c *gin.Context) {
|
|||
if err := c.BindJSON(&request); err != nil {
|
||||
log.Printf("Error binding JSON: %v", err)
|
||||
c.Writer.Header().Set("Strict-Transport-Security", "max-age=63072000; includeSubDomains")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("Invalid request format: %v", err)})
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf(i18n.T("server_invalid_request_format"), err)})
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -122,7 +123,7 @@ func (h *ChatHandler) HandleChat(c *gin.Context) {
|
|||
chatter, err := h.registry.GetChatter(p.Model, request.ModelContextLength, p.Vendor, "", true, false)
|
||||
if err != nil {
|
||||
log.Printf("Error creating chatter: %v", err)
|
||||
streamChan <- domain.StreamUpdate{Type: domain.StreamTypeError, Content: fmt.Sprintf("Error: %v", err)}
|
||||
streamChan <- domain.StreamUpdate{Type: domain.StreamTypeError, Content: fmt.Sprintf(i18n.T("server_chat_error"), err)}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -209,11 +210,11 @@ func (h *ChatHandler) HandleChat(c *gin.Context) {
|
|||
func writeSSEResponse(w gin.ResponseWriter, response StreamResponse) error {
|
||||
data, err := json.Marshal(response)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error marshaling response: %v", err)
|
||||
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("server_error_marshaling_response"), err))
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintf(w, "data: %s\n\n", string(data)); err != nil {
|
||||
return fmt.Errorf("error writing response: %v", err)
|
||||
return fmt.Errorf("%s", fmt.Sprintf(i18n.T("server_error_writing_response"), err))
|
||||
}
|
||||
|
||||
w.(http.Flusher).Flush()
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ func (o *CustomPatterns) configure() error {
|
|||
if _, err := os.Stat(o.CustomPatternsDir.Value); os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(o.CustomPatternsDir.Value, 0755); err != nil {
|
||||
// Log the error but don't clear the value - let it persist in env file
|
||||
fmt.Printf("Warning: Could not create custom patterns directory %s: %v\n", o.CustomPatternsDir.Value, err)
|
||||
fmt.Printf(i18n.T("custom_patterns_warning_create_directory"), o.CustomPatternsDir.Value, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/go-git/go-git/v5"
|
||||
"github.com/go-git/go-git/v5/plumbing/object"
|
||||
"github.com/go-git/go-git/v5/storage/memory"
|
||||
|
|
@ -41,30 +42,30 @@ func FetchFilesFromRepo(opts FetchOptions) error {
|
|||
Depth: 1,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to clone repository: %w", err)
|
||||
return fmt.Errorf(i18n.T("githelper_failed_clone_repository"), err)
|
||||
}
|
||||
|
||||
// Get HEAD reference
|
||||
ref, err := r.Head()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repository HEAD: %w", err)
|
||||
return fmt.Errorf(i18n.T("githelper_failed_get_head"), err)
|
||||
}
|
||||
|
||||
// Get commit object
|
||||
commit, err := r.CommitObject(ref.Hash())
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get commit: %w", err)
|
||||
return fmt.Errorf(i18n.T("githelper_failed_get_commit"), err)
|
||||
}
|
||||
|
||||
// Get the file tree
|
||||
tree, err := commit.Tree()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get tree: %w", err)
|
||||
return fmt.Errorf(i18n.T("githelper_failed_get_tree"), err)
|
||||
}
|
||||
|
||||
// Ensure destination directory exists
|
||||
if err := os.MkdirAll(opts.DestDir, 0755); err != nil {
|
||||
return fmt.Errorf("failed to create destination directory: %w", err)
|
||||
return fmt.Errorf(i18n.T("githelper_failed_create_dest_directory"), err)
|
||||
}
|
||||
|
||||
// Extract files from the tree
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ import (
|
|||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// NotificationProvider interface for different notification backends
|
||||
|
|
@ -43,7 +45,7 @@ func NewNotificationManager() *NotificationManager {
|
|||
// Send sends a notification using the configured provider
|
||||
func (nm *NotificationManager) Send(title, message string) error {
|
||||
if nm.provider == nil {
|
||||
return fmt.Errorf("no notification provider available")
|
||||
return fmt.Errorf("%s", i18n.T("notifications_no_provider_available"))
|
||||
}
|
||||
return nm.provider.Send(title, message)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,12 +7,14 @@ import (
|
|||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
)
|
||||
|
||||
// GetAbsolutePath resolves a given path to its absolute form, handling ~, ./, ../, UNC paths, and symlinks.
|
||||
func GetAbsolutePath(path string) (string, error) {
|
||||
if path == "" {
|
||||
return "", errors.New("path is empty")
|
||||
return "", errors.New(i18n.T("util_error_path_is_empty"))
|
||||
}
|
||||
|
||||
// Handle UNC paths on Windows
|
||||
|
|
@ -24,7 +26,7 @@ func GetAbsolutePath(path string) (string, error) {
|
|||
if strings.HasPrefix(path, "~") {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", errors.New("could not resolve home directory")
|
||||
return "", errors.New(i18n.T("util_error_resolve_home_directory"))
|
||||
}
|
||||
path = filepath.Join(home, path[1:])
|
||||
}
|
||||
|
|
@ -32,7 +34,7 @@ func GetAbsolutePath(path string) (string, error) {
|
|||
// Convert to absolute path
|
||||
absPath, err := filepath.Abs(path)
|
||||
if err != nil {
|
||||
return "", errors.New("could not get absolute path")
|
||||
return "", errors.New(i18n.T("util_error_get_absolute_path"))
|
||||
}
|
||||
|
||||
// Resolve symlinks, but allow non-existent paths
|
||||
|
|
@ -45,7 +47,7 @@ func GetAbsolutePath(path string) (string, error) {
|
|||
return absPath, nil
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("could not resolve symlinks: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("util_error_resolve_symlinks"), err)
|
||||
}
|
||||
|
||||
// Helper function to check if a symlink points to a directory
|
||||
|
|
@ -77,7 +79,7 @@ func IsSymlinkToDir(path string) bool {
|
|||
func GetDefaultConfigPath() (string, error) {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("could not determine user home directory: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("util_error_determine_home_directory"), err)
|
||||
}
|
||||
|
||||
defaultConfigPath := filepath.Join(homeDir, ".config", "fabric", "config.yaml")
|
||||
|
|
@ -85,7 +87,7 @@ func GetDefaultConfigPath() (string, error) {
|
|||
if os.IsNotExist(err) {
|
||||
return "", nil // Return no error for non-existent config path
|
||||
}
|
||||
return "", fmt.Errorf("error accessing default config path: %w", err)
|
||||
return "", fmt.Errorf(i18n.T("util_error_accessing_config_path"), err)
|
||||
}
|
||||
return defaultConfigPath, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue