mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-07 21:44:02 -05:00
User Experience: implement automated first-time setup and improved configuration validation
### CHANGES - Add automated first-time setup for patterns and strategies. - Implement configuration validation to warn about missing required components. - Update setup menu to group plugins into required and optional. - Provide helpful guidance when no patterns are found in listing. - Expand localization support for setup and error messaging across languages. - Enhance strategy manager to reload and count installed strategies. - Improve pattern error handling with specific guidance for empty directories.
This commit is contained in:
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -9,6 +9,7 @@
|
||||
"Aoede",
|
||||
"apikey",
|
||||
"aplicar",
|
||||
"Astley",
|
||||
"atotto",
|
||||
"Autonoe",
|
||||
"azureml",
|
||||
|
||||
@@ -30,6 +30,28 @@ func handleListingCommands(currentFlags *Flags, fabricDb *fsdb.Db, registry *cor
|
||||
}
|
||||
|
||||
if currentFlags.ListPatterns {
|
||||
// Check if patterns exist before listing
|
||||
var names []string
|
||||
if names, err = fabricDb.Patterns.GetNames(); err != nil {
|
||||
return true, err
|
||||
}
|
||||
|
||||
if len(names) == 0 && !currentFlags.ShellCompleteOutput {
|
||||
// No patterns found - provide helpful guidance
|
||||
fmt.Println("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Println(i18n.T("patterns_not_found_header"))
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Printf("\n%s\n", i18n.T("patterns_required_to_work"))
|
||||
fmt.Println()
|
||||
fmt.Println(i18n.T("patterns_option_run_setup"))
|
||||
fmt.Printf(" %s\n", i18n.T("patterns_option_run_setup_command"))
|
||||
fmt.Println()
|
||||
fmt.Println(i18n.T("patterns_option_run_update"))
|
||||
fmt.Printf(" %s\n", i18n.T("patterns_option_run_update_command"))
|
||||
fmt.Println()
|
||||
return true, nil
|
||||
}
|
||||
|
||||
err = fabricDb.Patterns.ListNames(currentFlags.ShellCompleteOutput)
|
||||
return true, err
|
||||
}
|
||||
|
||||
@@ -176,29 +176,178 @@ func (o *PluginRegistry) SaveEnvFile() (err error) {
|
||||
}
|
||||
|
||||
func (o *PluginRegistry) Setup() (err error) {
|
||||
setupQuestion := plugins.NewSetupQuestion("Enter the number of the plugin to setup")
|
||||
groupsPlugins := util.NewGroupsItemsSelector("Available plugins (please configure all required plugins):",
|
||||
// Check if this is a first-time setup
|
||||
isFirstRun := o.isFirstTimeSetup()
|
||||
|
||||
if isFirstRun {
|
||||
err = o.runFirstTimeSetup()
|
||||
} else {
|
||||
err = o.runInteractiveSetup()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Validate setup after completion
|
||||
o.validateSetup()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// isFirstTimeSetup checks if this is a first-time setup
|
||||
func (o *PluginRegistry) isFirstTimeSetup() bool {
|
||||
// Check if patterns and strategies are not configured
|
||||
patternsConfigured := o.PatternsLoader.IsConfigured()
|
||||
strategiesConfigured := o.Strategies.IsConfigured()
|
||||
hasVendor := len(o.VendorManager.Vendors) > 0
|
||||
|
||||
return !patternsConfigured || !strategiesConfigured || !hasVendor
|
||||
}
|
||||
|
||||
// runFirstTimeSetup handles first-time setup with automatic pattern/strategy download
|
||||
func (o *PluginRegistry) runFirstTimeSetup() (err error) {
|
||||
fmt.Println("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Println(i18n.T("setup_welcome_header"))
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
|
||||
// Step 1: Download patterns (required, automatic)
|
||||
if !o.PatternsLoader.IsConfigured() {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_step_downloading_patterns"))
|
||||
if err = o.PatternsLoader.Setup(); err != nil {
|
||||
return fmt.Errorf(i18n.T("setup_failed_download_patterns"), err)
|
||||
}
|
||||
if err = o.SaveEnvFile(); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Step 2: Download strategies (required, automatic)
|
||||
if !o.Strategies.IsConfigured() {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_step_downloading_strategies"))
|
||||
if err = o.Strategies.Setup(); err != nil {
|
||||
return fmt.Errorf(i18n.T("setup_failed_download_strategies"), err)
|
||||
}
|
||||
if err = o.SaveEnvFile(); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Step 3: Configure AI vendor (interactive)
|
||||
if len(o.VendorManager.Vendors) == 0 {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_step_configure_ai_provider"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_ai_provider_required"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_add_more_providers_later"))
|
||||
fmt.Println()
|
||||
|
||||
if err = o.runVendorSetup(); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Step 4: Set default vendor and model
|
||||
if !o.Defaults.IsConfigured() {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_step_setting_defaults"))
|
||||
if err = o.Defaults.Setup(); err != nil {
|
||||
return fmt.Errorf(i18n.T("setup_failed_set_defaults"), err)
|
||||
}
|
||||
if err = o.SaveEnvFile(); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Println(i18n.T("setup_complete_header"))
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_next_steps"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_list_patterns"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_try_pattern"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_configure_more"))
|
||||
fmt.Println()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// runVendorSetup helps user select and configure their first AI vendor
|
||||
func (o *PluginRegistry) runVendorSetup() (err error) {
|
||||
setupQuestion := plugins.NewSetupQuestion("Enter the number of the AI provider to configure")
|
||||
groupsPlugins := util.NewGroupsItemsSelector(i18n.T("setup_available_ai_providers"),
|
||||
func(plugin plugins.Plugin) string {
|
||||
var configuredLabel string
|
||||
if plugin.IsConfigured() {
|
||||
configuredLabel = " (configured)"
|
||||
} else {
|
||||
configuredLabel = ""
|
||||
}
|
||||
return fmt.Sprintf("%v%v", plugin.GetSetupDescription(), configuredLabel)
|
||||
return plugin.GetSetupDescription()
|
||||
})
|
||||
|
||||
groupsPlugins.AddGroupItems("AI Vendors [at least one, required]", lo.Map(o.VendorsAll.Vendors,
|
||||
groupsPlugins.AddGroupItems("", lo.Map(o.VendorsAll.Vendors,
|
||||
func(vendor ai.Vendor, _ int) plugins.Plugin {
|
||||
return vendor
|
||||
})...)
|
||||
|
||||
groupsPlugins.AddGroupItems("Tools", o.CustomPatterns, o.Defaults, o.Jina, o.Language, o.PatternsLoader, o.Strategies, o.YouTube)
|
||||
groupsPlugins.Print(false)
|
||||
|
||||
if answerErr := setupQuestion.Ask(i18n.T("setup_enter_ai_provider_number")); answerErr != nil {
|
||||
return answerErr
|
||||
}
|
||||
|
||||
if setupQuestion.Value == "" {
|
||||
return fmt.Errorf("%s", i18n.T("setup_no_ai_provider_selected"))
|
||||
}
|
||||
|
||||
number, parseErr := strconv.Atoi(setupQuestion.Value)
|
||||
if parseErr != nil {
|
||||
return fmt.Errorf(i18n.T("setup_invalid_selection"), setupQuestion.Value)
|
||||
}
|
||||
|
||||
var plugin plugins.Plugin
|
||||
if _, plugin, err = groupsPlugins.GetGroupAndItemByItemNumber(number); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if pluginSetupErr := plugin.Setup(); pluginSetupErr != nil {
|
||||
return pluginSetupErr
|
||||
}
|
||||
|
||||
if err = o.SaveEnvFile(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if o.VendorManager.FindByName(plugin.GetName()) == nil {
|
||||
if vendor, ok := plugin.(ai.Vendor); ok {
|
||||
o.VendorManager.AddVendors(vendor)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// runInteractiveSetup runs the standard interactive setup menu
|
||||
func (o *PluginRegistry) runInteractiveSetup() (err error) {
|
||||
setupQuestion := plugins.NewSetupQuestion("Enter the number of the plugin to setup")
|
||||
groupsPlugins := util.NewGroupsItemsSelector(i18n.T("setup_available_plugins"),
|
||||
func(plugin plugins.Plugin) string {
|
||||
var configuredLabel string
|
||||
if plugin.IsConfigured() {
|
||||
configuredLabel = i18n.T("plugin_configured")
|
||||
} else {
|
||||
configuredLabel = i18n.T("plugin_not_configured")
|
||||
}
|
||||
return fmt.Sprintf("%v%v", plugin.GetSetupDescription(), configuredLabel)
|
||||
})
|
||||
|
||||
// Add vendors first under REQUIRED section
|
||||
groupsPlugins.AddGroupItems(i18n.T("setup_required_configuration_header"), lo.Map(o.VendorsAll.Vendors,
|
||||
func(vendor ai.Vendor, _ int) plugins.Plugin {
|
||||
return vendor
|
||||
})...)
|
||||
|
||||
// Add required tools
|
||||
groupsPlugins.AddGroupItems(i18n.T("setup_required_tools"), o.Defaults, o.PatternsLoader, o.Strategies)
|
||||
|
||||
// Add optional tools
|
||||
groupsPlugins.AddGroupItems(i18n.T("setup_optional_configuration_header"), o.CustomPatterns, o.Jina, o.Language, o.YouTube)
|
||||
|
||||
for {
|
||||
groupsPlugins.Print(false)
|
||||
|
||||
if answerErr := setupQuestion.Ask("Plugin Number"); answerErr != nil {
|
||||
if answerErr := setupQuestion.Ask(i18n.T("setup_plugin_number")); answerErr != nil {
|
||||
break
|
||||
}
|
||||
|
||||
@@ -237,6 +386,58 @@ func (o *PluginRegistry) Setup() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// validateSetup checks if required components are configured and warns user
|
||||
func (o *PluginRegistry) validateSetup() {
|
||||
fmt.Println("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
fmt.Println(i18n.T("setup_validation_header"))
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
|
||||
missingRequired := false
|
||||
|
||||
// Check AI vendor
|
||||
if len(o.VendorManager.Vendors) > 0 {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_ai_provider_configured"))
|
||||
} else {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_ai_provider_missing"))
|
||||
missingRequired = true
|
||||
}
|
||||
|
||||
// Check default model
|
||||
if o.Defaults.IsConfigured() {
|
||||
fmt.Printf(" %s\n", fmt.Sprintf(i18n.T("setup_validation_defaults_configured"), o.Defaults.Vendor.Value, o.Defaults.Model.Value))
|
||||
} else {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_defaults_missing"))
|
||||
missingRequired = true
|
||||
}
|
||||
|
||||
// Check patterns
|
||||
if o.PatternsLoader.IsConfigured() {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_patterns_configured"))
|
||||
} else {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_patterns_missing"))
|
||||
missingRequired = true
|
||||
}
|
||||
|
||||
// Check strategies
|
||||
if o.Strategies.IsConfigured() {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_strategies_configured"))
|
||||
} else {
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_strategies_missing"))
|
||||
missingRequired = true
|
||||
}
|
||||
|
||||
fmt.Println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
|
||||
if missingRequired {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_validation_incomplete_warning"))
|
||||
fmt.Printf(" %s\n", i18n.T("setup_validation_incomplete_help"))
|
||||
fmt.Println()
|
||||
} else {
|
||||
fmt.Printf("\n%s\n", i18n.T("setup_validation_complete"))
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
|
||||
func (o *PluginRegistry) SetupVendor(vendorName string) (err error) {
|
||||
if err = o.VendorsAll.SetupVendor(vendorName, o.VendorManager.VendorsByName); err != nil {
|
||||
return
|
||||
|
||||
@@ -1,165 +1,211 @@
|
||||
{
|
||||
"html_readability_error": "verwende ursprüngliche Eingabe, da HTML-Lesbarkeit nicht angewendet werden kann",
|
||||
"vendor_not_configured": "Anbieter %s ist nicht konfiguriert",
|
||||
"vendor_no_transcription_support": "Anbieter %s unterstützt keine Audio-Transkription",
|
||||
"transcription_model_required": "Transkriptionsmodell ist erforderlich (verwende --transcribe-model)",
|
||||
"youtube_not_configured": "YouTube ist nicht konfiguriert, bitte führe das Setup-Verfahren aus",
|
||||
"youtube_api_key_required": "YouTube API-Schlüssel für Kommentare und Metadaten erforderlich. Führe 'fabric --setup' aus, um zu konfigurieren",
|
||||
"youtube_ytdlp_not_found": "yt-dlp wurde nicht in PATH gefunden. Bitte installiere yt-dlp, um die YouTube-Transkript-Funktionalität zu nutzen",
|
||||
"youtube_invalid_url": "ungültige YouTube-URL, kann keine Video- oder Playlist-ID abrufen: '%s'",
|
||||
"youtube_url_is_playlist_not_video": "URL ist eine Playlist, kein Video",
|
||||
"youtube_no_video_id_found": "keine Video-ID in URL gefunden",
|
||||
"youtube_rate_limit_exceeded": "YouTube-Ratenlimit überschritten. Versuche es später erneut oder verwende andere yt-dlp-Argumente wie '--sleep-requests 1', um Anfragen zu verlangsamen.",
|
||||
"youtube_auth_required_bot_detection": "YouTube erfordert Authentifizierung (Bot-Erkennung). Verwende --yt-dlp-args='--cookies-from-browser BROWSER' wobei BROWSER chrome, firefox, brave usw. sein kann.",
|
||||
"youtube_ytdlp_stderr_error": "Fehler beim Lesen von yt-dlp stderr",
|
||||
"youtube_invalid_ytdlp_arguments": "ungültige yt-dlp-Argumente: %v",
|
||||
"youtube_failed_create_temp_dir": "temporäres Verzeichnis konnte nicht erstellt werden: %v",
|
||||
"youtube_no_transcript_content": "kein Transkriptinhalt in VTT-Datei gefunden",
|
||||
"youtube_no_vtt_files_found": "keine VTT-Dateien im Verzeichnis gefunden",
|
||||
"youtube_failed_walk_directory": "Verzeichnis konnte nicht durchlaufen werden: %v",
|
||||
"youtube_error_getting_video_details": "Fehler beim Abrufen der Videodetails: %v",
|
||||
"youtube_invalid_duration_string": "ungültige Dauer-Zeichenfolge: %s",
|
||||
"youtube_error_getting_metadata": "Fehler beim Abrufen der Video-Metadaten: %v",
|
||||
"youtube_error_parsing_duration": "Fehler beim Parsen der Videodauer: %v",
|
||||
"youtube_error_getting_comments": "Fehler beim Abrufen der Kommentare: %v",
|
||||
"youtube_error_saving_csv": "Fehler beim Speichern der Videos in CSV: %v",
|
||||
"youtube_no_video_found_with_id": "kein Video mit ID gefunden: %s",
|
||||
"youtube_invalid_timestamp_format": "ungültiges Zeitstempel-Format: %s",
|
||||
"youtube_empty_seconds_string": "leere Sekunden-Zeichenfolge",
|
||||
"youtube_invalid_seconds_format": "ungültiges Sekundenformat %q: %w",
|
||||
"error_fetching_playlist_videos": "Fehler beim Abrufen der Playlist-Videos: %w",
|
||||
"openai_api_base_url_not_configured": "API-Basis-URL für Anbieter %s nicht konfiguriert",
|
||||
"openai_failed_to_create_models_url": "Modell-URL konnte nicht erstellt werden: %w",
|
||||
"openai_unexpected_status_code_with_body": "unerwarteter Statuscode: %d von Anbieter %s, Antwort: %s",
|
||||
"openai_unexpected_status_code_read_error_partial": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen: %v), teilweise Antwort: %s",
|
||||
"openai_unexpected_status_code_read_error": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen der Antwort: %v)",
|
||||
"openai_unable_to_parse_models_response": "Modell-Antwort konnte nicht geparst werden; rohe Antwort: %s",
|
||||
"scraping_not_configured": "Scraping-Funktionalität ist nicht konfiguriert. Bitte richte Jina ein, um Scraping zu aktivieren",
|
||||
"could_not_determine_home_dir": "konnte Benutzer-Home-Verzeichnis nicht bestimmen: %w",
|
||||
"could_not_stat_env_file": "konnte .env-Datei nicht überprüfen: %w",
|
||||
"could_not_create_config_dir": "konnte Konfigurationsverzeichnis nicht erstellen: %w",
|
||||
"could_not_create_env_file": "konnte .env-Datei nicht erstellen: %w",
|
||||
"could_not_copy_to_clipboard": "konnte nicht in die Zwischenablage kopieren: %v",
|
||||
"file_already_exists_not_overwriting": "Datei %s existiert bereits, wird nicht überschrieben. Benenne die vorhandene Datei um oder wähle einen anderen Namen",
|
||||
"error_creating_file": "Fehler beim Erstellen der Datei: %v",
|
||||
"error_writing_to_file": "Fehler beim Schreiben in die Datei: %v",
|
||||
"error_creating_audio_file": "Fehler beim Erstellen der Audio-Datei: %v",
|
||||
"error_writing_audio_data": "Fehler beim Schreiben von Audio-Daten in die Datei: %v",
|
||||
"tts_model_requires_audio_output": "TTS-Modell '%s' benötigt Audio-Ausgabe. Bitte gib eine Audio-Ausgabedatei mit dem -o Flag an (z.B., -o output.wav)",
|
||||
"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",
|
||||
"file_already_exists_choose_different": "Datei %s existiert bereits. Bitte wähle einen anderen Dateinamen oder entferne die vorhandene Datei",
|
||||
"no_notification_system_available": "kein Benachrichtigungssystem verfügbar",
|
||||
"cannot_convert_string": "kann String %q nicht zu %v konvertieren",
|
||||
"unsupported_conversion": "nicht unterstützte Konvertierung von %v zu %v",
|
||||
"invalid_config_path": "ungültiger Konfigurationspfad: %w",
|
||||
"config_file_not_found": "Konfigurationsdatei nicht gefunden: %s",
|
||||
"error_reading_config_file": "Fehler beim Lesen der Konfigurationsdatei: %w",
|
||||
"error_parsing_config_file": "Fehler beim Parsen der Konfigurationsdatei: %w",
|
||||
"error_reading_piped_message": "Fehler beim Lesen der weitergeleiteten Nachricht von stdin: %w",
|
||||
"image_file_already_exists": "Bilddatei existiert bereits: %s",
|
||||
"invalid_image_file_extension": "ungültige Bilddatei-Erweiterung '%s'. Unterstützte Formate: .png, .jpeg, .jpg, .webp",
|
||||
"image_parameters_require_image_file": "Bildparameter (--image-size, --image-quality, --image-background, --image-compression) können nur mit --image-file verwendet werden",
|
||||
"invalid_image_size": "ungültige Bildgröße '%s'. Unterstützte Größen: 1024x1024, 1536x1024, 1024x1536, auto",
|
||||
"invalid_image_quality": "ungültige Bildqualität '%s'. Unterstützte Qualitäten: low, medium, high, auto",
|
||||
"invalid_image_background": "ungültiger Bildhintergrund '%s'. Unterstützte Hintergründe: opaque, transparent",
|
||||
"image_compression_jpeg_webp_only": "Bildkomprimierung kann nur mit JPEG- und WebP-Formaten verwendet werden, nicht %s",
|
||||
"image_compression_range_error": "Bildkomprimierung muss zwischen 0 und 100 liegen, erhalten: %d",
|
||||
"transparent_background_png_webp_only": "transparenter Hintergrund kann nur mit PNG- und WebP-Formaten verwendet werden, nicht %s",
|
||||
"available_transcription_models": "Verfügbare Transkriptionsmodelle:",
|
||||
"tts_audio_generated_successfully": "TTS-Audio erfolgreich generiert und gespeichert unter: %s\n",
|
||||
"fabric_command_complete": "Fabric-Befehl abgeschlossen",
|
||||
"fabric_command_complete_with_pattern": "Fabric: %s abgeschlossen",
|
||||
"command_completed_successfully": "Befehl erfolgreich abgeschlossen",
|
||||
"output_truncated": "Ausgabe: %s...",
|
||||
"output_full": "Ausgabe: %s",
|
||||
"choose_pattern_from_available": "Wähle ein Muster aus den verfügbaren Mustern",
|
||||
"pattern_variables_help": "Werte für Mustervariablen, z.B. -v=#role:expert -v=#points:30",
|
||||
"choose_context_from_available": "Wähle einen Kontext aus den verfügbaren Kontexten",
|
||||
"choose_session_from_available": "Wähle eine Sitzung aus den verfügbaren Sitzungen",
|
||||
"attachment_path_or_url_help": "Anhangspfad oder URL (z.B. für OpenAI-Bilderkennungsnachrichten)",
|
||||
"run_setup_for_reconfigurable_parts": "Setup für alle rekonfigurierbaren Teile von Fabric ausführen",
|
||||
"set_temperature": "Temperatur festlegen",
|
||||
"set_top_p": "Top P festlegen",
|
||||
"stream_help": "Streaming",
|
||||
"set_presence_penalty": "Präsenzstrafe festlegen",
|
||||
"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.",
|
||||
"set_frequency_penalty": "Häufigkeitsstrafe festlegen",
|
||||
"list_all_patterns": "Alle Muster auflisten",
|
||||
"list_all_available_models": "Alle verfügbaren Modelle auflisten",
|
||||
"list_all_contexts": "Alle Kontexte auflisten",
|
||||
"list_all_sessions": "Alle Sitzungen auflisten",
|
||||
"update_patterns": "Muster aktualisieren",
|
||||
"messages_to_send_to_chat": "Nachrichten zum Senden an den Chat",
|
||||
"copy_to_clipboard": "In Zwischenablage kopieren",
|
||||
"choose_model": "Modell wählen",
|
||||
"specify_vendor_for_model": "Anbieter für das ausgewählte Modell angeben (z.B., -V \"LM Studio\" -m openai/gpt-oss-20b)",
|
||||
"model_context_length_ollama": "Modell-Kontextlänge (betrifft nur ollama)",
|
||||
"output_to_file": "Ausgabe in Datei",
|
||||
"output_entire_session": "Gesamte Sitzung (auch eine temporäre) in die Ausgabedatei ausgeben",
|
||||
"number_of_latest_patterns": "Anzahl der neuesten Muster zum Auflisten",
|
||||
"change_default_model": "Standardmodell ändern",
|
||||
"youtube_url_help": "YouTube-Video oder Playlist-\"URL\" zum Abrufen von Transkript und Kommentaren und Senden an Chat oder Ausgabe in Konsole und Speichern in Ausgabedatei",
|
||||
"prefer_playlist_over_video": "Playlist gegenüber Video bevorzugen, wenn beide IDs in der URL vorhanden sind",
|
||||
"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",
|
||||
"grab_comments_from_youtube": "Kommentare von YouTube-Video abrufen und an Chat senden",
|
||||
"output_video_metadata": "Video-Metadaten ausgeben",
|
||||
"additional_yt_dlp_args": "Zusätzliche Argumente für yt-dlp (z.B. '--cookies-from-browser brave')",
|
||||
"specify_language_code": "Sprachencode für den Chat angeben, z.B. -g=en -g=zh -g=pt-BR -g=pt-PT",
|
||||
"scrape_website_url": "Website-URL zu Markdown mit Jina AI scrapen",
|
||||
"search_question_jina": "Suchanfrage mit Jina AI",
|
||||
"seed_for_lmm_generation": "Seed für LMM-Generierung",
|
||||
"wipe_context": "Kontext löschen",
|
||||
"wipe_session": "Sitzung löschen",
|
||||
"print_context": "Kontext ausgeben",
|
||||
"print_session": "Sitzung ausgeben",
|
||||
"convert_html_readability": "HTML-Eingabe in eine saubere, lesbare Ansicht konvertieren",
|
||||
"apply_variables_to_input": "Variablen auf Benutzereingabe anwenden",
|
||||
"disable_pattern_variable_replacement": "Mustervariablenersetzung deaktivieren",
|
||||
"show_dry_run": "Zeige, was an das Modell gesendet würde, ohne es tatsächlich zu senden",
|
||||
"serve_fabric_rest_api": "Fabric REST API bereitstellen",
|
||||
"serve_fabric_api_ollama_endpoints": "Fabric REST API mit ollama-Endpunkten bereitstellen",
|
||||
"address_to_bind_rest_api": "Adresse zum Binden der REST API",
|
||||
"api_key_secure_server_routes": "API-Schlüssel zum Sichern der Server-Routen",
|
||||
"path_to_yaml_config": "Pfad zur YAML-Konfigurationsdatei",
|
||||
"print_current_version": "Aktuelle Version ausgeben",
|
||||
"list_all_registered_extensions": "Alle registrierten Erweiterungen auflisten",
|
||||
"register_new_extension": "Neue Erweiterung aus Konfigurationsdateipfad registrieren",
|
||||
"remove_registered_extension": "Registrierte Erweiterung nach Name entfernen",
|
||||
"choose_strategy_from_available": "Strategie aus den verfügbaren Strategien wählen",
|
||||
"list_all_strategies": "Alle Strategien auflisten",
|
||||
"list_all_vendors": "Alle Anbieter auflisten",
|
||||
"output_raw_list_shell_completion": "Rohe Liste ohne Kopfzeilen/Formatierung ausgeben (für Shell-Vervollständigung)",
|
||||
"enable_web_search_tool": "Web-Such-Tool für unterstützte Modelle aktivieren (Anthropic, OpenAI, Gemini)",
|
||||
"set_location_web_search": "Standort für Web-Suchergebnisse festlegen (z.B., 'America/Los_Angeles')",
|
||||
"save_generated_image_to_file": "Generiertes Bild in angegebenem Dateipfad speichern (z.B., 'output.png')",
|
||||
"image_dimensions_help": "Bildabmessungen: 1024x1024, 1536x1024, 1024x1536, auto (Standard: auto)",
|
||||
"image_quality_help": "Bildqualität: low, medium, high, auto (Standard: auto)",
|
||||
"compression_level_jpeg_webp": "Komprimierungslevel 0-100 für JPEG/WebP-Formate (Standard: nicht gesetzt)",
|
||||
"background_type_help": "Hintergrundtyp: opaque, transparent (Standard: opaque, nur für PNG/WebP)",
|
||||
"suppress_thinking_tags": "In Denk-Tags eingeschlossenen Text unterdrücken",
|
||||
"start_tag_thinking_sections": "Start-Tag für Denk-Abschnitte",
|
||||
"end_tag_thinking_sections": "End-Tag für Denk-Abschnitte",
|
||||
"disable_openai_responses_api": "OpenAI Responses API deaktivieren (Standard: false)",
|
||||
"audio_video_file_transcribe": "Audio- oder Video-Datei zum Transkribieren",
|
||||
"model_for_transcription": "Modell für Transkription (getrennt vom Chat-Modell)",
|
||||
"split_media_files_ffmpeg": "Audio/Video-Dateien größer als 25MB mit ffmpeg aufteilen",
|
||||
"tts_voice_name": "TTS-Stimmenname für unterstützte Modelle (z.B., Kore, Charon, Puck)",
|
||||
"list_gemini_tts_voices": "Alle verfügbaren Gemini TTS-Stimmen auflisten",
|
||||
"list_transcription_models": "Alle verfügbaren Transkriptionsmodelle auflisten",
|
||||
"send_desktop_notification": "Desktop-Benachrichtigung senden, wenn Befehl abgeschlossen ist",
|
||||
"custom_notification_command": "Benutzerdefinierter Befehl für Benachrichtigungen (überschreibt eingebaute Benachrichtigungen)",
|
||||
"set_reasoning_thinking_level": "Reasoning/Thinking-Level festlegen (z.B., off, low, medium, high, oder numerische Token für Anthropic oder Google Gemini)",
|
||||
"set_debug_level": "Debug-Level festlegen (0=aus, 1=grundlegend, 2=detailliert, 3=Trace)",
|
||||
"usage_header": "Verwendung:",
|
||||
"application_options_header": "Anwendungsoptionen:",
|
||||
"help_options_header": "Hilfe-Optionen:",
|
||||
"help_message": "Diese Hilfenachricht anzeigen",
|
||||
"options_placeholder": "[OPTIONEN]",
|
||||
"available_vendors_header": "Verfügbare Anbieter:",
|
||||
"available_models_header": "Verfügbare Modelle",
|
||||
"no_items_found": "Keine %s",
|
||||
"no_description_available": "Keine Beschreibung verfügbar",
|
||||
"i18n_download_failed": "Fehler beim Herunterladen der Übersetzung für Sprache '%s': %v",
|
||||
"i18n_load_failed": "Fehler beim Laden der Übersetzungsdatei: %v"
|
||||
"html_readability_error": "verwende ursprüngliche Eingabe, da HTML-Lesbarkeit nicht angewendet werden kann",
|
||||
"vendor_not_configured": "Anbieter %s ist nicht konfiguriert",
|
||||
"vendor_no_transcription_support": "Anbieter %s unterstützt keine Audio-Transkription",
|
||||
"transcription_model_required": "Transkriptionsmodell ist erforderlich (verwende --transcribe-model)",
|
||||
"youtube_not_configured": "YouTube ist nicht konfiguriert, bitte führe das Setup-Verfahren aus",
|
||||
"youtube_api_key_required": "YouTube API-Schlüssel für Kommentare und Metadaten erforderlich. Führe 'fabric --setup' aus, um zu konfigurieren",
|
||||
"youtube_ytdlp_not_found": "yt-dlp wurde nicht in PATH gefunden. Bitte installiere yt-dlp, um die YouTube-Transkript-Funktionalität zu nutzen",
|
||||
"youtube_invalid_url": "ungültige YouTube-URL, kann keine Video- oder Playlist-ID abrufen: '%s'",
|
||||
"youtube_url_is_playlist_not_video": "URL ist eine Playlist, kein Video",
|
||||
"youtube_no_video_id_found": "keine Video-ID in URL gefunden",
|
||||
"youtube_rate_limit_exceeded": "YouTube-Ratenlimit überschritten. Versuche es später erneut oder verwende andere yt-dlp-Argumente wie '--sleep-requests 1', um Anfragen zu verlangsamen.",
|
||||
"youtube_auth_required_bot_detection": "YouTube erfordert Authentifizierung (Bot-Erkennung). Verwende --yt-dlp-args='--cookies-from-browser BROWSER' wobei BROWSER chrome, firefox, brave usw. sein kann.",
|
||||
"youtube_ytdlp_stderr_error": "Fehler beim Lesen von yt-dlp stderr",
|
||||
"youtube_invalid_ytdlp_arguments": "ungültige yt-dlp-Argumente: %v",
|
||||
"youtube_failed_create_temp_dir": "temporäres Verzeichnis konnte nicht erstellt werden: %v",
|
||||
"youtube_no_transcript_content": "kein Transkriptinhalt in VTT-Datei gefunden",
|
||||
"youtube_no_vtt_files_found": "keine VTT-Dateien im Verzeichnis gefunden",
|
||||
"youtube_failed_walk_directory": "Verzeichnis konnte nicht durchlaufen werden: %v",
|
||||
"youtube_error_getting_video_details": "Fehler beim Abrufen der Videodetails: %v",
|
||||
"youtube_invalid_duration_string": "ungültige Dauer-Zeichenfolge: %s",
|
||||
"youtube_error_getting_metadata": "Fehler beim Abrufen der Video-Metadaten: %v",
|
||||
"youtube_error_parsing_duration": "Fehler beim Parsen der Videodauer: %v",
|
||||
"youtube_error_getting_comments": "Fehler beim Abrufen der Kommentare: %v",
|
||||
"youtube_error_saving_csv": "Fehler beim Speichern der Videos in CSV: %v",
|
||||
"youtube_no_video_found_with_id": "kein Video mit ID gefunden: %s",
|
||||
"youtube_invalid_timestamp_format": "ungültiges Zeitstempel-Format: %s",
|
||||
"youtube_empty_seconds_string": "leere Sekunden-Zeichenfolge",
|
||||
"youtube_invalid_seconds_format": "ungültiges Sekundenformat %q: %w",
|
||||
"error_fetching_playlist_videos": "Fehler beim Abrufen der Playlist-Videos: %w",
|
||||
"openai_api_base_url_not_configured": "API-Basis-URL für Anbieter %s nicht konfiguriert",
|
||||
"openai_failed_to_create_models_url": "Modell-URL konnte nicht erstellt werden: %w",
|
||||
"openai_unexpected_status_code_with_body": "unerwarteter Statuscode: %d von Anbieter %s, Antwort: %s",
|
||||
"openai_unexpected_status_code_read_error_partial": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen: %v), teilweise Antwort: %s",
|
||||
"openai_unexpected_status_code_read_error": "unerwarteter Statuscode: %d von Anbieter %s (Fehler beim Lesen der Antwort: %v)",
|
||||
"openai_unable_to_parse_models_response": "Modell-Antwort konnte nicht geparst werden; rohe Antwort: %s",
|
||||
"scraping_not_configured": "Scraping-Funktionalität ist nicht konfiguriert. Bitte richte Jina ein, um Scraping zu aktivieren",
|
||||
"could_not_determine_home_dir": "konnte Benutzer-Home-Verzeichnis nicht bestimmen: %w",
|
||||
"could_not_stat_env_file": "konnte .env-Datei nicht überprüfen: %w",
|
||||
"could_not_create_config_dir": "konnte Konfigurationsverzeichnis nicht erstellen: %w",
|
||||
"could_not_create_env_file": "konnte .env-Datei nicht erstellen: %w",
|
||||
"could_not_copy_to_clipboard": "konnte nicht in die Zwischenablage kopieren: %v",
|
||||
"file_already_exists_not_overwriting": "Datei %s existiert bereits, wird nicht überschrieben. Benenne die vorhandene Datei um oder wähle einen anderen Namen",
|
||||
"error_creating_file": "Fehler beim Erstellen der Datei: %v",
|
||||
"error_writing_to_file": "Fehler beim Schreiben in die Datei: %v",
|
||||
"error_creating_audio_file": "Fehler beim Erstellen der Audio-Datei: %v",
|
||||
"error_writing_audio_data": "Fehler beim Schreiben von Audio-Daten in die Datei: %v",
|
||||
"tts_model_requires_audio_output": "TTS-Modell '%s' benötigt Audio-Ausgabe. Bitte gib eine Audio-Ausgabedatei mit dem -o Flag an (z.B., -o output.wav)",
|
||||
"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",
|
||||
"file_already_exists_choose_different": "Datei %s existiert bereits. Bitte wähle einen anderen Dateinamen oder entferne die vorhandene Datei",
|
||||
"no_notification_system_available": "kein Benachrichtigungssystem verfügbar",
|
||||
"cannot_convert_string": "kann String %q nicht zu %v konvertieren",
|
||||
"unsupported_conversion": "nicht unterstützte Konvertierung von %v zu %v",
|
||||
"invalid_config_path": "ungültiger Konfigurationspfad: %w",
|
||||
"config_file_not_found": "Konfigurationsdatei nicht gefunden: %s",
|
||||
"error_reading_config_file": "Fehler beim Lesen der Konfigurationsdatei: %w",
|
||||
"error_parsing_config_file": "Fehler beim Parsen der Konfigurationsdatei: %w",
|
||||
"error_reading_piped_message": "Fehler beim Lesen der weitergeleiteten Nachricht von stdin: %w",
|
||||
"image_file_already_exists": "Bilddatei existiert bereits: %s",
|
||||
"invalid_image_file_extension": "ungültige Bilddatei-Erweiterung '%s'. Unterstützte Formate: .png, .jpeg, .jpg, .webp",
|
||||
"image_parameters_require_image_file": "Bildparameter (--image-size, --image-quality, --image-background, --image-compression) können nur mit --image-file verwendet werden",
|
||||
"invalid_image_size": "ungültige Bildgröße '%s'. Unterstützte Größen: 1024x1024, 1536x1024, 1024x1536, auto",
|
||||
"invalid_image_quality": "ungültige Bildqualität '%s'. Unterstützte Qualitäten: low, medium, high, auto",
|
||||
"invalid_image_background": "ungültiger Bildhintergrund '%s'. Unterstützte Hintergründe: opaque, transparent",
|
||||
"image_compression_jpeg_webp_only": "Bildkomprimierung kann nur mit JPEG- und WebP-Formaten verwendet werden, nicht %s",
|
||||
"image_compression_range_error": "Bildkomprimierung muss zwischen 0 und 100 liegen, erhalten: %d",
|
||||
"transparent_background_png_webp_only": "transparenter Hintergrund kann nur mit PNG- und WebP-Formaten verwendet werden, nicht %s",
|
||||
"available_transcription_models": "Verfügbare Transkriptionsmodelle:",
|
||||
"tts_audio_generated_successfully": "TTS-Audio erfolgreich generiert und gespeichert unter: %s\n",
|
||||
"fabric_command_complete": "Fabric-Befehl abgeschlossen",
|
||||
"fabric_command_complete_with_pattern": "Fabric: %s abgeschlossen",
|
||||
"command_completed_successfully": "Befehl erfolgreich abgeschlossen",
|
||||
"output_truncated": "Ausgabe: %s...",
|
||||
"output_full": "Ausgabe: %s",
|
||||
"choose_pattern_from_available": "Wähle ein Muster aus den verfügbaren Mustern",
|
||||
"pattern_variables_help": "Werte für Mustervariablen, z.B. -v=#role:expert -v=#points:30",
|
||||
"choose_context_from_available": "Wähle einen Kontext aus den verfügbaren Kontexten",
|
||||
"choose_session_from_available": "Wähle eine Sitzung aus den verfügbaren Sitzungen",
|
||||
"attachment_path_or_url_help": "Anhangspfad oder URL (z.B. für OpenAI-Bilderkennungsnachrichten)",
|
||||
"run_setup_for_reconfigurable_parts": "Setup für alle rekonfigurierbaren Teile von Fabric ausführen",
|
||||
"set_temperature": "Temperatur festlegen",
|
||||
"set_top_p": "Top P festlegen",
|
||||
"stream_help": "Streaming",
|
||||
"set_presence_penalty": "Präsenzstrafe festlegen",
|
||||
"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.",
|
||||
"set_frequency_penalty": "Häufigkeitsstrafe festlegen",
|
||||
"list_all_patterns": "Alle Muster auflisten",
|
||||
"list_all_available_models": "Alle verfügbaren Modelle auflisten",
|
||||
"list_all_contexts": "Alle Kontexte auflisten",
|
||||
"list_all_sessions": "Alle Sitzungen auflisten",
|
||||
"update_patterns": "Muster aktualisieren",
|
||||
"messages_to_send_to_chat": "Nachrichten zum Senden an den Chat",
|
||||
"copy_to_clipboard": "In Zwischenablage kopieren",
|
||||
"choose_model": "Modell wählen",
|
||||
"specify_vendor_for_model": "Anbieter für das ausgewählte Modell angeben (z.B., -V \"LM Studio\" -m openai/gpt-oss-20b)",
|
||||
"model_context_length_ollama": "Modell-Kontextlänge (betrifft nur ollama)",
|
||||
"output_to_file": "Ausgabe in Datei",
|
||||
"output_entire_session": "Gesamte Sitzung (auch eine temporäre) in die Ausgabedatei ausgeben",
|
||||
"number_of_latest_patterns": "Anzahl der neuesten Muster zum Auflisten",
|
||||
"change_default_model": "Standardmodell ändern",
|
||||
"youtube_url_help": "YouTube-Video oder Playlist-\"URL\" zum Abrufen von Transkript und Kommentaren und Senden an Chat oder Ausgabe in Konsole und Speichern in Ausgabedatei",
|
||||
"prefer_playlist_over_video": "Playlist gegenüber Video bevorzugen, wenn beide IDs in der URL vorhanden sind",
|
||||
"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",
|
||||
"grab_comments_from_youtube": "Kommentare von YouTube-Video abrufen und an Chat senden",
|
||||
"output_video_metadata": "Video-Metadaten ausgeben",
|
||||
"additional_yt_dlp_args": "Zusätzliche Argumente für yt-dlp (z.B. '--cookies-from-browser brave')",
|
||||
"specify_language_code": "Sprachencode für den Chat angeben, z.B. -g=en -g=zh -g=pt-BR -g=pt-PT",
|
||||
"scrape_website_url": "Website-URL zu Markdown mit Jina AI scrapen",
|
||||
"search_question_jina": "Suchanfrage mit Jina AI",
|
||||
"seed_for_lmm_generation": "Seed für LMM-Generierung",
|
||||
"wipe_context": "Kontext löschen",
|
||||
"wipe_session": "Sitzung löschen",
|
||||
"print_context": "Kontext ausgeben",
|
||||
"print_session": "Sitzung ausgeben",
|
||||
"convert_html_readability": "HTML-Eingabe in eine saubere, lesbare Ansicht konvertieren",
|
||||
"apply_variables_to_input": "Variablen auf Benutzereingabe anwenden",
|
||||
"disable_pattern_variable_replacement": "Mustervariablenersetzung deaktivieren",
|
||||
"show_dry_run": "Zeige, was an das Modell gesendet würde, ohne es tatsächlich zu senden",
|
||||
"serve_fabric_rest_api": "Fabric REST API bereitstellen",
|
||||
"serve_fabric_api_ollama_endpoints": "Fabric REST API mit ollama-Endpunkten bereitstellen",
|
||||
"address_to_bind_rest_api": "Adresse zum Binden der REST API",
|
||||
"api_key_secure_server_routes": "API-Schlüssel zum Sichern der Server-Routen",
|
||||
"path_to_yaml_config": "Pfad zur YAML-Konfigurationsdatei",
|
||||
"print_current_version": "Aktuelle Version ausgeben",
|
||||
"list_all_registered_extensions": "Alle registrierten Erweiterungen auflisten",
|
||||
"register_new_extension": "Neue Erweiterung aus Konfigurationsdateipfad registrieren",
|
||||
"remove_registered_extension": "Registrierte Erweiterung nach Name entfernen",
|
||||
"choose_strategy_from_available": "Strategie aus den verfügbaren Strategien wählen",
|
||||
"list_all_strategies": "Alle Strategien auflisten",
|
||||
"list_all_vendors": "Alle Anbieter auflisten",
|
||||
"output_raw_list_shell_completion": "Rohe Liste ohne Kopfzeilen/Formatierung ausgeben (für Shell-Vervollständigung)",
|
||||
"enable_web_search_tool": "Web-Such-Tool für unterstützte Modelle aktivieren (Anthropic, OpenAI, Gemini)",
|
||||
"set_location_web_search": "Standort für Web-Suchergebnisse festlegen (z.B., 'America/Los_Angeles')",
|
||||
"save_generated_image_to_file": "Generiertes Bild in angegebenem Dateipfad speichern (z.B., 'output.png')",
|
||||
"image_dimensions_help": "Bildabmessungen: 1024x1024, 1536x1024, 1024x1536, auto (Standard: auto)",
|
||||
"image_quality_help": "Bildqualität: low, medium, high, auto (Standard: auto)",
|
||||
"compression_level_jpeg_webp": "Komprimierungslevel 0-100 für JPEG/WebP-Formate (Standard: nicht gesetzt)",
|
||||
"background_type_help": "Hintergrundtyp: opaque, transparent (Standard: opaque, nur für PNG/WebP)",
|
||||
"suppress_thinking_tags": "In Denk-Tags eingeschlossenen Text unterdrücken",
|
||||
"start_tag_thinking_sections": "Start-Tag für Denk-Abschnitte",
|
||||
"end_tag_thinking_sections": "End-Tag für Denk-Abschnitte",
|
||||
"disable_openai_responses_api": "OpenAI Responses API deaktivieren (Standard: false)",
|
||||
"audio_video_file_transcribe": "Audio- oder Video-Datei zum Transkribieren",
|
||||
"model_for_transcription": "Modell für Transkription (getrennt vom Chat-Modell)",
|
||||
"split_media_files_ffmpeg": "Audio/Video-Dateien größer als 25MB mit ffmpeg aufteilen",
|
||||
"tts_voice_name": "TTS-Stimmenname für unterstützte Modelle (z.B., Kore, Charon, Puck)",
|
||||
"list_gemini_tts_voices": "Alle verfügbaren Gemini TTS-Stimmen auflisten",
|
||||
"list_transcription_models": "Alle verfügbaren Transkriptionsmodelle auflisten",
|
||||
"send_desktop_notification": "Desktop-Benachrichtigung senden, wenn Befehl abgeschlossen ist",
|
||||
"custom_notification_command": "Benutzerdefinierter Befehl für Benachrichtigungen (überschreibt eingebaute Benachrichtigungen)",
|
||||
"set_reasoning_thinking_level": "Reasoning/Thinking-Level festlegen (z.B., off, low, medium, high, oder numerische Token für Anthropic oder Google Gemini)",
|
||||
"set_debug_level": "Debug-Level festlegen (0=aus, 1=grundlegend, 2=detailliert, 3=Trace)",
|
||||
"usage_header": "Verwendung:",
|
||||
"application_options_header": "Anwendungsoptionen:",
|
||||
"help_options_header": "Hilfe-Optionen:",
|
||||
"help_message": "Diese Hilfenachricht anzeigen",
|
||||
"options_placeholder": "[OPTIONEN]",
|
||||
"available_vendors_header": "Verfügbare Anbieter:",
|
||||
"available_models_header": "Verfügbare Modelle",
|
||||
"no_items_found": "Keine %s",
|
||||
"no_description_available": "Keine Beschreibung verfügbar",
|
||||
"i18n_download_failed": "Fehler beim Herunterladen der Übersetzung für Sprache '%s': %v",
|
||||
"i18n_load_failed": "Fehler beim Laden der Übersetzungsdatei: %v",
|
||||
"setup_welcome_header": "🎉 Willkommen bei Fabric! Lass uns mit der Einrichtung beginnen.",
|
||||
"setup_step_downloading_patterns": "📥 Schritt 1: Patterns werden heruntergeladen (erforderlich für Fabric)...",
|
||||
"setup_step_downloading_strategies": "📥 Schritt 2: Strategien werden heruntergeladen (erforderlich für Fabric)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Schritt 3: KI-Anbieter konfigurieren",
|
||||
"setup_ai_provider_required": "Fabric benötigt mindestens einen KI-Anbieter.",
|
||||
"setup_add_more_providers_later": "Sie können später weitere Anbieter mit 'fabric --setup' hinzufügen",
|
||||
"setup_step_setting_defaults": "⚙️ Schritt 4: Standard-Anbieter und -Modell werden festgelegt...",
|
||||
"setup_complete_header": "✅ Einrichtung abgeschlossen! Sie können Fabric jetzt verwenden.",
|
||||
"setup_next_steps": "Nächste Schritte:",
|
||||
"setup_list_patterns": "• Verfügbare Patterns auflisten: fabric -l",
|
||||
"setup_try_pattern": "• Ein Pattern ausprobieren: echo 'Ihr Text' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Weitere Einstellungen konfigurieren: fabric --setup",
|
||||
"setup_failed_download_patterns": "Fehler beim Herunterladen der Patterns: %w",
|
||||
"setup_failed_download_strategies": "Fehler beim Herunterladen der Strategien: %w",
|
||||
"setup_failed_set_defaults": "Fehler beim Festlegen des Standard-Anbieters und -Modells: %w",
|
||||
"setup_no_ai_provider_selected": "Kein KI-Anbieter ausgewählt - mindestens einer ist erforderlich",
|
||||
"setup_invalid_selection": "Ungültige Auswahl: %s",
|
||||
"setup_available_ai_providers": "Verfügbare KI-Anbieter:",
|
||||
"setup_enter_ai_provider_number": "KI-Anbieter-Nummer",
|
||||
"setup_available_plugins": "Verfügbare Plugins:",
|
||||
"setup_plugin_number": "Plugin-Nummer",
|
||||
"setup_required_configuration_header": "━━━ ERFORDERLICHE KONFIGURATION ━━━\n\nKI-Anbieter [mindestens einer erforderlich]",
|
||||
"setup_required_tools": "Erforderliche Werkzeuge",
|
||||
"setup_optional_configuration_header": "━━━ OPTIONALE KONFIGURATION ━━━\n\nOptionale Werkzeuge",
|
||||
"setup_validation_header": "Konfigurationsstatus:",
|
||||
"setup_validation_ai_provider_configured": "✓ KI-Anbieter konfiguriert",
|
||||
"setup_validation_ai_provider_missing": "✗ KI-Anbieter nicht konfiguriert - Erforderlich für Fabric",
|
||||
"setup_validation_defaults_configured": "✓ Standard-Anbieter/-Modell festgelegt: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Standard-Anbieter/-Modell nicht festgelegt - Erforderlich für Fabric",
|
||||
"setup_validation_patterns_configured": "✓ Patterns heruntergeladen",
|
||||
"setup_validation_patterns_missing": "✗ Patterns nicht gefunden - Erforderlich für Fabric",
|
||||
"setup_validation_strategies_configured": "✓ Strategien heruntergeladen",
|
||||
"setup_validation_strategies_missing": "✗ Strategien nicht gefunden - Erforderlich für Fabric",
|
||||
"setup_validation_incomplete_warning": "⚠️ Einrichtung unvollständig! Erforderliche Komponenten fehlen.",
|
||||
"setup_validation_incomplete_help": "Führen Sie 'fabric --setup' erneut aus, um fehlende Elemente zu konfigurieren,\noder 'fabric -U', um Patterns und Strategien herunterzuladen.",
|
||||
"setup_validation_complete": "✓ Alle erforderlichen Komponenten konfiguriert!",
|
||||
"patterns_not_found_header": "⚠️ Keine Patterns gefunden!",
|
||||
"patterns_required_to_work": "Patterns sind erforderlich, damit Fabric funktioniert. Um dies zu beheben:",
|
||||
"patterns_option_run_setup": "Option 1 (Empfohlen): Setup ausführen, um Patterns herunterzuladen",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Option 2: Patterns direkt herunterladen/aktualisieren",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "Pattern '%s' nicht gefunden.\n\nKeine Patterns installiert! Um dies zu beheben:\n • Führen Sie 'fabric --setup' aus, um Patterns zu konfigurieren und herunterzuladen\n • Oder führen Sie 'fabric -U' aus, um Patterns direkt herunterzuladen/zu aktualisieren",
|
||||
"pattern_not_found_list_available": "Pattern '%s' nicht gefunden. Führen Sie 'fabric -l' aus, um verfügbare Patterns anzuzeigen",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NICHT KONFIGURIERT"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "No %s",
|
||||
"no_description_available": "No description available",
|
||||
"i18n_download_failed": "Failed to download translation for language '%s': %v",
|
||||
"i18n_load_failed": "Failed to load translation file: %v"
|
||||
"i18n_load_failed": "Failed to load translation file: %v",
|
||||
"setup_welcome_header": "🎉 Welcome to Fabric! Let's get you set up.",
|
||||
"setup_step_downloading_patterns": "📥 Step 1: Downloading patterns (required for Fabric to work)...",
|
||||
"setup_step_downloading_strategies": "📥 Step 2: Downloading strategies (required for Fabric to work)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Step 3: Configure an AI provider",
|
||||
"setup_ai_provider_required": "Fabric needs at least one AI provider to work.",
|
||||
"setup_add_more_providers_later": "You'll be able to add more providers later with 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Step 4: Setting default vendor and model...",
|
||||
"setup_complete_header": "✅ Setup complete! You can now use Fabric.",
|
||||
"setup_next_steps": "Next steps:",
|
||||
"setup_list_patterns": "• List available patterns: fabric -l",
|
||||
"setup_try_pattern": "• Try a pattern: echo 'your text' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configure more settings: fabric --setup",
|
||||
"setup_failed_download_patterns": "failed to download patterns: %w",
|
||||
"setup_failed_download_strategies": "failed to download strategies: %w",
|
||||
"setup_failed_set_defaults": "failed to set default vendor and model: %w",
|
||||
"setup_no_ai_provider_selected": "no AI provider selected - at least one is required",
|
||||
"setup_invalid_selection": "invalid selection: %s",
|
||||
"setup_available_ai_providers": "Available AI Providers:",
|
||||
"setup_enter_ai_provider_number": "AI Provider Number",
|
||||
"setup_available_plugins": "Available plugins:",
|
||||
"setup_plugin_number": "Plugin Number",
|
||||
"setup_required_configuration_header": "━━━ REQUIRED CONFIGURATION ━━━\n\nAI Vendors [at least one required]",
|
||||
"setup_required_tools": "Required Tools",
|
||||
"setup_optional_configuration_header": "━━━ OPTIONAL CONFIGURATION ━━━\n\nOptional Tools",
|
||||
"setup_validation_header": "Configuration Status:",
|
||||
"setup_validation_ai_provider_configured": "✓ AI Provider configured",
|
||||
"setup_validation_ai_provider_missing": "✗ AI Provider not configured - Required for Fabric to work",
|
||||
"setup_validation_defaults_configured": "✓ Default vendor/model set: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Default vendor/model not set - Required for Fabric to work",
|
||||
"setup_validation_patterns_configured": "✓ Patterns downloaded",
|
||||
"setup_validation_patterns_missing": "✗ Patterns not found - Required for Fabric to work",
|
||||
"setup_validation_strategies_configured": "✓ Strategies downloaded",
|
||||
"setup_validation_strategies_missing": "✗ Strategies not found - Required for Fabric to work",
|
||||
"setup_validation_incomplete_warning": "⚠️ Setup incomplete! Missing required components.",
|
||||
"setup_validation_incomplete_help": "Run 'fabric --setup' again to configure missing items,\nor run 'fabric -U' to download patterns and strategies.",
|
||||
"setup_validation_complete": "✓ All required components configured!",
|
||||
"patterns_not_found_header": "⚠️ No patterns found!",
|
||||
"patterns_required_to_work": "Patterns are required for Fabric to work. To fix this:",
|
||||
"patterns_option_run_setup": "Option 1 (Recommended): Run setup to download patterns",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Option 2: Download/update patterns directly",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "pattern '%s' not found.\n\nNo patterns are installed! To fix this:\n • Run 'fabric --setup' to configure and download patterns\n • Or run 'fabric -U' to download/update patterns directly",
|
||||
"pattern_not_found_list_available": "pattern '%s' not found. Run 'fabric -l' to see available patterns",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NOT CONFIGURED"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "No hay %s",
|
||||
"no_description_available": "No hay descripción disponible",
|
||||
"i18n_download_failed": "Error al descargar traducción para el idioma '%s': %v",
|
||||
"i18n_load_failed": "Error al cargar archivo de traducción: %v"
|
||||
"i18n_load_failed": "Error al cargar archivo de traducción: %v",
|
||||
"setup_welcome_header": "🎉 ¡Bienvenido a Fabric! Vamos a configurarte.",
|
||||
"setup_step_downloading_patterns": "📥 Paso 1: Descargando patrones (requeridos para que Fabric funcione)...",
|
||||
"setup_step_downloading_strategies": "📥 Paso 2: Descargando estrategias (requeridas para que Fabric funcione)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Paso 3: Configurar un proveedor de IA",
|
||||
"setup_ai_provider_required": "Fabric necesita al menos un proveedor de IA para funcionar.",
|
||||
"setup_add_more_providers_later": "Podrás agregar más proveedores después con 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Paso 4: Estableciendo proveedor y modelo predeterminados...",
|
||||
"setup_complete_header": "✅ ¡Configuración completa! Ya puedes usar Fabric.",
|
||||
"setup_next_steps": "Próximos pasos:",
|
||||
"setup_list_patterns": "• Listar patrones disponibles: fabric -l",
|
||||
"setup_try_pattern": "• Probar un patrón: echo 'tu texto' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configurar más opciones: fabric --setup",
|
||||
"setup_failed_download_patterns": "error al descargar patrones: %w",
|
||||
"setup_failed_download_strategies": "error al descargar estrategias: %w",
|
||||
"setup_failed_set_defaults": "error al establecer proveedor y modelo predeterminados: %w",
|
||||
"setup_no_ai_provider_selected": "no se seleccionó proveedor de IA - se requiere al menos uno",
|
||||
"setup_invalid_selection": "selección inválida: %s",
|
||||
"setup_available_ai_providers": "Proveedores de IA Disponibles:",
|
||||
"setup_enter_ai_provider_number": "Número de Proveedor de IA",
|
||||
"setup_available_plugins": "Plugins disponibles:",
|
||||
"setup_plugin_number": "Número de Plugin",
|
||||
"setup_required_configuration_header": "━━━ CONFIGURACIÓN REQUERIDA ━━━\n\nProveedores de IA [se requiere al menos uno]",
|
||||
"setup_required_tools": "Herramientas Requeridas",
|
||||
"setup_optional_configuration_header": "━━━ CONFIGURACIÓN OPCIONAL ━━━\n\nHerramientas Opcionales",
|
||||
"setup_validation_header": "Estado de Configuración:",
|
||||
"setup_validation_ai_provider_configured": "✓ Proveedor de IA configurado",
|
||||
"setup_validation_ai_provider_missing": "✗ Proveedor de IA no configurado - Requerido para que Fabric funcione",
|
||||
"setup_validation_defaults_configured": "✓ Proveedor/modelo predeterminado establecido: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Proveedor/modelo predeterminado no establecido - Requerido para que Fabric funcione",
|
||||
"setup_validation_patterns_configured": "✓ Patrones descargados",
|
||||
"setup_validation_patterns_missing": "✗ Patrones no encontrados - Requeridos para que Fabric funcione",
|
||||
"setup_validation_strategies_configured": "✓ Estrategias descargadas",
|
||||
"setup_validation_strategies_missing": "✗ Estrategias no encontradas - Requeridas para que Fabric funcione",
|
||||
"setup_validation_incomplete_warning": "⚠️ ¡Configuración incompleta! Faltan componentes requeridos.",
|
||||
"setup_validation_incomplete_help": "Ejecuta 'fabric --setup' de nuevo para configurar los elementos faltantes,\no ejecuta 'fabric -U' para descargar patrones y estrategias.",
|
||||
"setup_validation_complete": "✓ ¡Todos los componentes requeridos configurados!",
|
||||
"patterns_not_found_header": "⚠️ ¡No se encontraron patrones!",
|
||||
"patterns_required_to_work": "Los patrones son requeridos para que Fabric funcione. Para solucionar esto:",
|
||||
"patterns_option_run_setup": "Opción 1 (Recomendada): Ejecutar configuración para descargar patrones",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Opción 2: Descargar/actualizar patrones directamente",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "patrón '%s' no encontrado.\n\n¡No hay patrones instalados! Para solucionar esto:\n • Ejecuta 'fabric --setup' para configurar y descargar patrones\n • O ejecuta 'fabric -U' para descargar/actualizar patrones directamente",
|
||||
"pattern_not_found_list_available": "patrón '%s' no encontrado. Ejecuta 'fabric -l' para ver los patrones disponibles",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NO CONFIGURADO"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "هیچ %s",
|
||||
"no_description_available": "توضیحی در دسترس نیست",
|
||||
"i18n_download_failed": "دانلود ترجمه برای زبان '%s' ناموفق بود: %v",
|
||||
"i18n_load_failed": "بارگذاری فایل ترجمه ناموفق بود: %v"
|
||||
"i18n_load_failed": "بارگذاری فایل ترجمه ناموفق بود: %v",
|
||||
"setup_welcome_header": "🎉 به Fabric خوش آمدید! بیایید تنظیمات را انجام دهیم.",
|
||||
"setup_step_downloading_patterns": "📥 مرحله ۱: دانلود الگوها (برای کار Fabric ضروری است)...",
|
||||
"setup_step_downloading_strategies": "📥 مرحله ۲: دانلود استراتژیها (برای کار Fabric ضروری است)...",
|
||||
"setup_step_configure_ai_provider": "🤖 مرحله ۳: پیکربندی یک ارائهدهنده هوش مصنوعی",
|
||||
"setup_ai_provider_required": "Fabric برای کار کردن به حداقل یک ارائهدهنده هوش مصنوعی نیاز دارد.",
|
||||
"setup_add_more_providers_later": "میتوانید بعداً با 'fabric --setup' ارائهدهندگان بیشتری اضافه کنید",
|
||||
"setup_step_setting_defaults": "⚙️ مرحله ۴: تنظیم ارائهدهنده و مدل پیشفرض...",
|
||||
"setup_complete_header": "✅ تنظیمات کامل شد! اکنون میتوانید از Fabric استفاده کنید.",
|
||||
"setup_next_steps": "مراحل بعدی:",
|
||||
"setup_list_patterns": "• نمایش الگوهای موجود: fabric -l",
|
||||
"setup_try_pattern": "• امتحان یک الگو: echo 'متن شما' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• پیکربندی تنظیمات بیشتر: fabric --setup",
|
||||
"setup_failed_download_patterns": "دانلود الگوها ناموفق بود: %w",
|
||||
"setup_failed_download_strategies": "دانلود استراتژیها ناموفق بود: %w",
|
||||
"setup_failed_set_defaults": "تنظیم ارائهدهنده و مدل پیشفرض ناموفق بود: %w",
|
||||
"setup_no_ai_provider_selected": "هیچ ارائهدهنده هوش مصنوعی انتخاب نشده - حداقل یکی ضروری است",
|
||||
"setup_invalid_selection": "انتخاب نامعتبر: %s",
|
||||
"setup_available_ai_providers": "ارائهدهندگان هوش مصنوعی موجود:",
|
||||
"setup_enter_ai_provider_number": "شماره ارائهدهنده هوش مصنوعی",
|
||||
"setup_available_plugins": "افزونههای موجود:",
|
||||
"setup_plugin_number": "شماره افزونه",
|
||||
"setup_required_configuration_header": "━━━ پیکربندی ضروری ━━━\n\nارائهدهندگان هوش مصنوعی [حداقل یکی ضروری است]",
|
||||
"setup_required_tools": "ابزارهای ضروری",
|
||||
"setup_optional_configuration_header": "━━━ پیکربندی اختیاری ━━━\n\nابزارهای اختیاری",
|
||||
"setup_validation_header": "وضعیت پیکربندی:",
|
||||
"setup_validation_ai_provider_configured": "✓ ارائهدهنده هوش مصنوعی پیکربندی شده",
|
||||
"setup_validation_ai_provider_missing": "✗ ارائهدهنده هوش مصنوعی پیکربندی نشده - برای کار Fabric ضروری است",
|
||||
"setup_validation_defaults_configured": "✓ ارائهدهنده/مدل پیشفرض تنظیم شده: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ ارائهدهنده/مدل پیشفرض تنظیم نشده - برای کار Fabric ضروری است",
|
||||
"setup_validation_patterns_configured": "✓ الگوها دانلود شده",
|
||||
"setup_validation_patterns_missing": "✗ الگوها یافت نشد - برای کار Fabric ضروری است",
|
||||
"setup_validation_strategies_configured": "✓ استراتژیها دانلود شده",
|
||||
"setup_validation_strategies_missing": "✗ استراتژیها یافت نشد - برای کار Fabric ضروری است",
|
||||
"setup_validation_incomplete_warning": "⚠️ تنظیمات ناقص! اجزای ضروری وجود ندارند.",
|
||||
"setup_validation_incomplete_help": "دوباره 'fabric --setup' را اجرا کنید تا موارد ناقص را پیکربندی کنید،\nیا 'fabric -U' را برای دانلود الگوها و استراتژیها اجرا کنید.",
|
||||
"setup_validation_complete": "✓ تمام اجزای ضروری پیکربندی شدهاند!",
|
||||
"patterns_not_found_header": "⚠️ هیچ الگویی یافت نشد!",
|
||||
"patterns_required_to_work": "الگوها برای کار Fabric ضروری هستند. برای رفع این مشکل:",
|
||||
"patterns_option_run_setup": "گزینه ۱ (توصیه شده): اجرای تنظیمات برای دانلود الگوها",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "گزینه ۲: دانلود/بهروزرسانی مستقیم الگوها",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "الگوی '%s' یافت نشد.\n\nهیچ الگویی نصب نشده است! برای رفع این مشکل:\n • 'fabric --setup' را برای پیکربندی و دانلود الگوها اجرا کنید\n • یا 'fabric -U' را برای دانلود/بهروزرسانی الگوها اجرا کنید",
|
||||
"pattern_not_found_list_available": "الگوی '%s' یافت نشد. برای مشاهده الگوهای موجود 'fabric -l' را اجرا کنید",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ پیکربندی نشده"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "Aucun %s",
|
||||
"no_description_available": "Aucune description disponible",
|
||||
"i18n_download_failed": "Échec du téléchargement de la traduction pour la langue '%s' : %v",
|
||||
"i18n_load_failed": "Échec du chargement du fichier de traduction : %v"
|
||||
"i18n_load_failed": "Échec du chargement du fichier de traduction : %v",
|
||||
"setup_welcome_header": "🎉 Bienvenue sur Fabric ! Configurons votre installation.",
|
||||
"setup_step_downloading_patterns": "📥 Étape 1 : Téléchargement des modèles (requis pour le fonctionnement de Fabric)...",
|
||||
"setup_step_downloading_strategies": "📥 Étape 2 : Téléchargement des stratégies (requis pour le fonctionnement de Fabric)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Étape 3 : Configurer un fournisseur d'IA",
|
||||
"setup_ai_provider_required": "Fabric a besoin d'au moins un fournisseur d'IA pour fonctionner.",
|
||||
"setup_add_more_providers_later": "Vous pourrez ajouter d'autres fournisseurs plus tard avec 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Étape 4 : Configuration du fournisseur et du modèle par défaut...",
|
||||
"setup_complete_header": "✅ Configuration terminée ! Vous pouvez maintenant utiliser Fabric.",
|
||||
"setup_next_steps": "Prochaines étapes :",
|
||||
"setup_list_patterns": "• Lister les modèles disponibles : fabric -l",
|
||||
"setup_try_pattern": "• Essayer un modèle : echo 'votre texte' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configurer plus de paramètres : fabric --setup",
|
||||
"setup_failed_download_patterns": "échec du téléchargement des modèles : %w",
|
||||
"setup_failed_download_strategies": "échec du téléchargement des stratégies : %w",
|
||||
"setup_failed_set_defaults": "échec de la configuration du fournisseur et du modèle par défaut : %w",
|
||||
"setup_no_ai_provider_selected": "aucun fournisseur d'IA sélectionné - au moins un est requis",
|
||||
"setup_invalid_selection": "sélection invalide : %s",
|
||||
"setup_available_ai_providers": "Fournisseurs d'IA disponibles :",
|
||||
"setup_enter_ai_provider_number": "Numéro du fournisseur d'IA",
|
||||
"setup_available_plugins": "Plugins disponibles :",
|
||||
"setup_plugin_number": "Numéro du plugin",
|
||||
"setup_required_configuration_header": "━━━ CONFIGURATION REQUISE ━━━\n\nFournisseurs d'IA [au moins un requis]",
|
||||
"setup_required_tools": "Outils requis",
|
||||
"setup_optional_configuration_header": "━━━ CONFIGURATION OPTIONNELLE ━━━\n\nOutils optionnels",
|
||||
"setup_validation_header": "État de la configuration :",
|
||||
"setup_validation_ai_provider_configured": "✓ Fournisseur d'IA configuré",
|
||||
"setup_validation_ai_provider_missing": "✗ Fournisseur d'IA non configuré - Requis pour le fonctionnement de Fabric",
|
||||
"setup_validation_defaults_configured": "✓ Fournisseur/modèle par défaut défini : %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Fournisseur/modèle par défaut non défini - Requis pour le fonctionnement de Fabric",
|
||||
"setup_validation_patterns_configured": "✓ Modèles téléchargés",
|
||||
"setup_validation_patterns_missing": "✗ Modèles non trouvés - Requis pour le fonctionnement de Fabric",
|
||||
"setup_validation_strategies_configured": "✓ Stratégies téléchargées",
|
||||
"setup_validation_strategies_missing": "✗ Stratégies non trouvées - Requises pour le fonctionnement de Fabric",
|
||||
"setup_validation_incomplete_warning": "⚠️ Configuration incomplète ! Composants requis manquants.",
|
||||
"setup_validation_incomplete_help": "Exécutez à nouveau 'fabric --setup' pour configurer les éléments manquants,\nou exécutez 'fabric -U' pour télécharger les modèles et stratégies.",
|
||||
"setup_validation_complete": "✓ Tous les composants requis sont configurés !",
|
||||
"patterns_not_found_header": "⚠️ Aucun modèle trouvé !",
|
||||
"patterns_required_to_work": "Les modèles sont requis pour le fonctionnement de Fabric. Pour résoudre ce problème :",
|
||||
"patterns_option_run_setup": "Option 1 (Recommandée) : Exécuter la configuration pour télécharger les modèles",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Option 2 : Télécharger/mettre à jour les modèles directement",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "modèle '%s' non trouvé.\n\nAucun modèle n'est installé ! Pour résoudre ce problème :\n • Exécutez 'fabric --setup' pour configurer et télécharger les modèles\n • Ou exécutez 'fabric -U' pour télécharger/mettre à jour les modèles directement",
|
||||
"pattern_not_found_list_available": "modèle '%s' non trouvé. Exécutez 'fabric -l' pour voir les modèles disponibles",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NON CONFIGURÉ"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "Nessun %s",
|
||||
"no_description_available": "Nessuna descrizione disponibile",
|
||||
"i18n_download_failed": "Fallito il download della traduzione per la lingua '%s': %v",
|
||||
"i18n_load_failed": "Fallito il caricamento del file di traduzione: %v"
|
||||
"i18n_load_failed": "Fallito il caricamento del file di traduzione: %v",
|
||||
"setup_welcome_header": "🎉 Benvenuto su Fabric! Configuriamo tutto.",
|
||||
"setup_step_downloading_patterns": "📥 Passo 1: Download dei pattern (richiesti per il funzionamento di Fabric)...",
|
||||
"setup_step_downloading_strategies": "📥 Passo 2: Download delle strategie (richieste per il funzionamento di Fabric)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Passo 3: Configura un fornitore di IA",
|
||||
"setup_ai_provider_required": "Fabric necessita di almeno un fornitore di IA per funzionare.",
|
||||
"setup_add_more_providers_later": "Potrai aggiungere altri fornitori in seguito con 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Passo 4: Impostazione del fornitore e del modello predefiniti...",
|
||||
"setup_complete_header": "✅ Configurazione completata! Ora puoi usare Fabric.",
|
||||
"setup_next_steps": "Prossimi passi:",
|
||||
"setup_list_patterns": "• Elenca i pattern disponibili: fabric -l",
|
||||
"setup_try_pattern": "• Prova un pattern: echo 'il tuo testo' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configura altre impostazioni: fabric --setup",
|
||||
"setup_failed_download_patterns": "download dei pattern fallito: %w",
|
||||
"setup_failed_download_strategies": "download delle strategie fallito: %w",
|
||||
"setup_failed_set_defaults": "impostazione del fornitore e del modello predefiniti fallita: %w",
|
||||
"setup_no_ai_provider_selected": "nessun fornitore di IA selezionato - almeno uno è richiesto",
|
||||
"setup_invalid_selection": "selezione non valida: %s",
|
||||
"setup_available_ai_providers": "Fornitori di IA disponibili:",
|
||||
"setup_enter_ai_provider_number": "Numero del fornitore di IA",
|
||||
"setup_available_plugins": "Plugin disponibili:",
|
||||
"setup_plugin_number": "Numero del plugin",
|
||||
"setup_required_configuration_header": "━━━ CONFIGURAZIONE RICHIESTA ━━━\n\nFornitori di IA [almeno uno richiesto]",
|
||||
"setup_required_tools": "Strumenti richiesti",
|
||||
"setup_optional_configuration_header": "━━━ CONFIGURAZIONE OPZIONALE ━━━\n\nStrumenti opzionali",
|
||||
"setup_validation_header": "Stato della configurazione:",
|
||||
"setup_validation_ai_provider_configured": "✓ Fornitore di IA configurato",
|
||||
"setup_validation_ai_provider_missing": "✗ Fornitore di IA non configurato - Richiesto per il funzionamento di Fabric",
|
||||
"setup_validation_defaults_configured": "✓ Fornitore/modello predefinito impostato: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Fornitore/modello predefinito non impostato - Richiesto per il funzionamento di Fabric",
|
||||
"setup_validation_patterns_configured": "✓ Pattern scaricati",
|
||||
"setup_validation_patterns_missing": "✗ Pattern non trovati - Richiesti per il funzionamento di Fabric",
|
||||
"setup_validation_strategies_configured": "✓ Strategie scaricate",
|
||||
"setup_validation_strategies_missing": "✗ Strategie non trovate - Richieste per il funzionamento di Fabric",
|
||||
"setup_validation_incomplete_warning": "⚠️ Configurazione incompleta! Componenti richiesti mancanti.",
|
||||
"setup_validation_incomplete_help": "Esegui di nuovo 'fabric --setup' per configurare gli elementi mancanti,\noppure esegui 'fabric -U' per scaricare pattern e strategie.",
|
||||
"setup_validation_complete": "✓ Tutti i componenti richiesti sono configurati!",
|
||||
"patterns_not_found_header": "⚠️ Nessun pattern trovato!",
|
||||
"patterns_required_to_work": "I pattern sono richiesti per il funzionamento di Fabric. Per risolvere:",
|
||||
"patterns_option_run_setup": "Opzione 1 (Consigliata): Esegui la configurazione per scaricare i pattern",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Opzione 2: Scarica/aggiorna i pattern direttamente",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "pattern '%s' non trovato.\n\nNessun pattern installato! Per risolvere:\n • Esegui 'fabric --setup' per configurare e scaricare i pattern\n • Oppure esegui 'fabric -U' per scaricare/aggiornare i pattern direttamente",
|
||||
"pattern_not_found_list_available": "pattern '%s' non trovato. Esegui 'fabric -l' per vedere i pattern disponibili",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NON CONFIGURATO"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "%s がありません",
|
||||
"no_description_available": "説明がありません",
|
||||
"i18n_download_failed": "言語 '%s' の翻訳のダウンロードに失敗しました: %v",
|
||||
"i18n_load_failed": "翻訳ファイルの読み込みに失敗しました: %v"
|
||||
"i18n_load_failed": "翻訳ファイルの読み込みに失敗しました: %v",
|
||||
"setup_welcome_header": "🎉 Fabricへようこそ!セットアップを始めましょう。",
|
||||
"setup_step_downloading_patterns": "📥 ステップ1: パターンをダウンロード中(Fabricの動作に必要です)...",
|
||||
"setup_step_downloading_strategies": "📥 ステップ2: ストラテジーをダウンロード中(Fabricの動作に必要です)...",
|
||||
"setup_step_configure_ai_provider": "🤖 ステップ3: AIプロバイダーを設定",
|
||||
"setup_ai_provider_required": "Fabricを動作させるには、少なくとも1つのAIプロバイダーが必要です。",
|
||||
"setup_add_more_providers_later": "'fabric --setup'で後からプロバイダーを追加できます",
|
||||
"setup_step_setting_defaults": "⚙️ ステップ4: デフォルトのベンダーとモデルを設定中...",
|
||||
"setup_complete_header": "✅ セットアップ完了!Fabricを使用できます。",
|
||||
"setup_next_steps": "次のステップ:",
|
||||
"setup_list_patterns": "• 利用可能なパターンを一覧表示: fabric -l",
|
||||
"setup_try_pattern": "• パターンを試す: echo 'テキスト' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• その他の設定: fabric --setup",
|
||||
"setup_failed_download_patterns": "パターンのダウンロードに失敗しました: %w",
|
||||
"setup_failed_download_strategies": "ストラテジーのダウンロードに失敗しました: %w",
|
||||
"setup_failed_set_defaults": "デフォルトのベンダーとモデルの設定に失敗しました: %w",
|
||||
"setup_no_ai_provider_selected": "AIプロバイダーが選択されていません - 少なくとも1つは必要です",
|
||||
"setup_invalid_selection": "無効な選択: %s",
|
||||
"setup_available_ai_providers": "利用可能なAIプロバイダー:",
|
||||
"setup_enter_ai_provider_number": "AIプロバイダー番号",
|
||||
"setup_available_plugins": "利用可能なプラグイン:",
|
||||
"setup_plugin_number": "プラグイン番号",
|
||||
"setup_required_configuration_header": "━━━ 必須設定 ━━━\n\nAIベンダー [少なくとも1つ必要]",
|
||||
"setup_required_tools": "必須ツール",
|
||||
"setup_optional_configuration_header": "━━━ オプション設定 ━━━\n\nオプションツール",
|
||||
"setup_validation_header": "設定状況:",
|
||||
"setup_validation_ai_provider_configured": "✓ AIプロバイダー設定済み",
|
||||
"setup_validation_ai_provider_missing": "✗ AIプロバイダー未設定 - Fabricの動作に必要です",
|
||||
"setup_validation_defaults_configured": "✓ デフォルトのベンダー/モデル設定済み: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ デフォルトのベンダー/モデル未設定 - Fabricの動作に必要です",
|
||||
"setup_validation_patterns_configured": "✓ パターンダウンロード済み",
|
||||
"setup_validation_patterns_missing": "✗ パターンが見つかりません - Fabricの動作に必要です",
|
||||
"setup_validation_strategies_configured": "✓ ストラテジーダウンロード済み",
|
||||
"setup_validation_strategies_missing": "✗ ストラテジーが見つかりません - Fabricの動作に必要です",
|
||||
"setup_validation_incomplete_warning": "⚠️ セットアップ未完了!必要なコンポーネントが不足しています。",
|
||||
"setup_validation_incomplete_help": "'fabric --setup'を再度実行して不足項目を設定するか、\n'fabric -U'を実行してパターンとストラテジーをダウンロードしてください。",
|
||||
"setup_validation_complete": "✓ 必要なコンポーネントがすべて設定されています!",
|
||||
"patterns_not_found_header": "⚠️ パターンが見つかりません!",
|
||||
"patterns_required_to_work": "Fabricを動作させるにはパターンが必要です。解決するには:",
|
||||
"patterns_option_run_setup": "オプション1(推奨): セットアップを実行してパターンをダウンロード",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "オプション2: パターンを直接ダウンロード/更新",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "パターン '%s' が見つかりません。\n\nパターンがインストールされていません!解決するには:\n • 'fabric --setup'を実行してパターンを設定・ダウンロード\n • または'fabric -U'を実行してパターンをダウンロード/更新",
|
||||
"pattern_not_found_list_available": "パターン '%s' が見つかりません。'fabric -l'で利用可能なパターンを確認してください",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ 未設定"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "Nenhum %s",
|
||||
"no_description_available": "Nenhuma descrição disponível",
|
||||
"i18n_download_failed": "Falha ao baixar tradução para o idioma '%s': %v",
|
||||
"i18n_load_failed": "Falha ao carregar arquivo de tradução: %v"
|
||||
"i18n_load_failed": "Falha ao carregar arquivo de tradução: %v",
|
||||
"setup_welcome_header": "🎉 Bem-vindo ao Fabric! Vamos configurar tudo.",
|
||||
"setup_step_downloading_patterns": "📥 Passo 1: Baixando padrões (necessários para o Fabric funcionar)...",
|
||||
"setup_step_downloading_strategies": "📥 Passo 2: Baixando estratégias (necessárias para o Fabric funcionar)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Passo 3: Configurar um provedor de IA",
|
||||
"setup_ai_provider_required": "O Fabric precisa de pelo menos um provedor de IA para funcionar.",
|
||||
"setup_add_more_providers_later": "Você poderá adicionar mais provedores depois com 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Passo 4: Configurando provedor e modelo padrão...",
|
||||
"setup_complete_header": "✅ Configuração completa! Agora você pode usar o Fabric.",
|
||||
"setup_next_steps": "Próximos passos:",
|
||||
"setup_list_patterns": "• Listar padrões disponíveis: fabric -l",
|
||||
"setup_try_pattern": "• Experimentar um padrão: echo 'seu texto' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configurar mais opções: fabric --setup",
|
||||
"setup_failed_download_patterns": "falha ao baixar padrões: %w",
|
||||
"setup_failed_download_strategies": "falha ao baixar estratégias: %w",
|
||||
"setup_failed_set_defaults": "falha ao configurar provedor e modelo padrão: %w",
|
||||
"setup_no_ai_provider_selected": "nenhum provedor de IA selecionado - pelo menos um é necessário",
|
||||
"setup_invalid_selection": "seleção inválida: %s",
|
||||
"setup_available_ai_providers": "Provedores de IA Disponíveis:",
|
||||
"setup_enter_ai_provider_number": "Número do Provedor de IA",
|
||||
"setup_available_plugins": "Plugins disponíveis:",
|
||||
"setup_plugin_number": "Número do Plugin",
|
||||
"setup_required_configuration_header": "━━━ CONFIGURAÇÃO OBRIGATÓRIA ━━━\n\nProvedores de IA [pelo menos um obrigatório]",
|
||||
"setup_required_tools": "Ferramentas Obrigatórias",
|
||||
"setup_optional_configuration_header": "━━━ CONFIGURAÇÃO OPCIONAL ━━━\n\nFerramentas Opcionais",
|
||||
"setup_validation_header": "Status da Configuração:",
|
||||
"setup_validation_ai_provider_configured": "✓ Provedor de IA configurado",
|
||||
"setup_validation_ai_provider_missing": "✗ Provedor de IA não configurado - Necessário para o Fabric funcionar",
|
||||
"setup_validation_defaults_configured": "✓ Provedor/modelo padrão definido: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Provedor/modelo padrão não definido - Necessário para o Fabric funcionar",
|
||||
"setup_validation_patterns_configured": "✓ Padrões baixados",
|
||||
"setup_validation_patterns_missing": "✗ Padrões não encontrados - Necessários para o Fabric funcionar",
|
||||
"setup_validation_strategies_configured": "✓ Estratégias baixadas",
|
||||
"setup_validation_strategies_missing": "✗ Estratégias não encontradas - Necessárias para o Fabric funcionar",
|
||||
"setup_validation_incomplete_warning": "⚠️ Configuração incompleta! Componentes necessários ausentes.",
|
||||
"setup_validation_incomplete_help": "Execute 'fabric --setup' novamente para configurar itens faltantes,\nou execute 'fabric -U' para baixar padrões e estratégias.",
|
||||
"setup_validation_complete": "✓ Todos os componentes necessários estão configurados!",
|
||||
"patterns_not_found_header": "⚠️ Nenhum padrão encontrado!",
|
||||
"patterns_required_to_work": "Padrões são necessários para o Fabric funcionar. Para resolver:",
|
||||
"patterns_option_run_setup": "Opção 1 (Recomendada): Execute a configuração para baixar padrões",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Opção 2: Baixar/atualizar padrões diretamente",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "padrão '%s' não encontrado.\n\nNenhum padrão instalado! Para resolver:\n • Execute 'fabric --setup' para configurar e baixar padrões\n • Ou execute 'fabric -U' para baixar/atualizar padrões diretamente",
|
||||
"pattern_not_found_list_available": "padrão '%s' não encontrado. Execute 'fabric -l' para ver os padrões disponíveis",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NÃO CONFIGURADO"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "Nenhum %s",
|
||||
"no_description_available": "Nenhuma descrição disponível",
|
||||
"i18n_download_failed": "Falha ao descarregar tradução para o idioma '%s': %v",
|
||||
"i18n_load_failed": "Falha ao carregar ficheiro de tradução: %v"
|
||||
"i18n_load_failed": "Falha ao carregar ficheiro de tradução: %v",
|
||||
"setup_welcome_header": "🎉 Bem-vindo ao Fabric! Vamos configurar tudo.",
|
||||
"setup_step_downloading_patterns": "📥 Passo 1: A descarregar padrões (necessários para o Fabric funcionar)...",
|
||||
"setup_step_downloading_strategies": "📥 Passo 2: A descarregar estratégias (necessárias para o Fabric funcionar)...",
|
||||
"setup_step_configure_ai_provider": "🤖 Passo 3: Configurar um fornecedor de IA",
|
||||
"setup_ai_provider_required": "O Fabric precisa de pelo menos um fornecedor de IA para funcionar.",
|
||||
"setup_add_more_providers_later": "Poderá adicionar mais fornecedores depois com 'fabric --setup'",
|
||||
"setup_step_setting_defaults": "⚙️ Passo 4: A configurar fornecedor e modelo predefinido...",
|
||||
"setup_complete_header": "✅ Configuração completa! Agora pode usar o Fabric.",
|
||||
"setup_next_steps": "Próximos passos:",
|
||||
"setup_list_patterns": "• Listar padrões disponíveis: fabric -l",
|
||||
"setup_try_pattern": "• Experimentar um padrão: echo 'o seu texto' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• Configurar mais opções: fabric --setup",
|
||||
"setup_failed_download_patterns": "falha ao descarregar padrões: %w",
|
||||
"setup_failed_download_strategies": "falha ao descarregar estratégias: %w",
|
||||
"setup_failed_set_defaults": "falha ao configurar fornecedor e modelo predefinido: %w",
|
||||
"setup_no_ai_provider_selected": "nenhum fornecedor de IA selecionado - pelo menos um é necessário",
|
||||
"setup_invalid_selection": "seleção inválida: %s",
|
||||
"setup_available_ai_providers": "Fornecedores de IA Disponíveis:",
|
||||
"setup_enter_ai_provider_number": "Número do Fornecedor de IA",
|
||||
"setup_available_plugins": "Plugins disponíveis:",
|
||||
"setup_plugin_number": "Número do Plugin",
|
||||
"setup_required_configuration_header": "━━━ CONFIGURAÇÃO OBRIGATÓRIA ━━━\n\nFornecedores de IA [pelo menos um obrigatório]",
|
||||
"setup_required_tools": "Ferramentas Obrigatórias",
|
||||
"setup_optional_configuration_header": "━━━ CONFIGURAÇÃO OPCIONAL ━━━\n\nFerramentas Opcionais",
|
||||
"setup_validation_header": "Estado da Configuração:",
|
||||
"setup_validation_ai_provider_configured": "✓ Fornecedor de IA configurado",
|
||||
"setup_validation_ai_provider_missing": "✗ Fornecedor de IA não configurado - Necessário para o Fabric funcionar",
|
||||
"setup_validation_defaults_configured": "✓ Fornecedor/modelo predefinido definido: %s/%s",
|
||||
"setup_validation_defaults_missing": "✗ Fornecedor/modelo predefinido não definido - Necessário para o Fabric funcionar",
|
||||
"setup_validation_patterns_configured": "✓ Padrões descarregados",
|
||||
"setup_validation_patterns_missing": "✗ Padrões não encontrados - Necessários para o Fabric funcionar",
|
||||
"setup_validation_strategies_configured": "✓ Estratégias descarregadas",
|
||||
"setup_validation_strategies_missing": "✗ Estratégias não encontradas - Necessárias para o Fabric funcionar",
|
||||
"setup_validation_incomplete_warning": "⚠️ Configuração incompleta! Componentes necessários em falta.",
|
||||
"setup_validation_incomplete_help": "Execute 'fabric --setup' novamente para configurar itens em falta,\nou execute 'fabric -U' para descarregar padrões e estratégias.",
|
||||
"setup_validation_complete": "✓ Todos os componentes necessários estão configurados!",
|
||||
"patterns_not_found_header": "⚠️ Nenhum padrão encontrado!",
|
||||
"patterns_required_to_work": "Padrões são necessários para o Fabric funcionar. Para resolver:",
|
||||
"patterns_option_run_setup": "Opção 1 (Recomendada): Execute a configuração para descarregar padrões",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "Opção 2: Descarregar/atualizar padrões diretamente",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "padrão '%s' não encontrado.\n\nNenhum padrão instalado! Para resolver:\n • Execute 'fabric --setup' para configurar e descarregar padrões\n • Ou execute 'fabric -U' para descarregar/atualizar padrões diretamente",
|
||||
"pattern_not_found_list_available": "padrão '%s' não encontrado. Execute 'fabric -l' para ver os padrões disponíveis",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ NÃO CONFIGURADO"
|
||||
}
|
||||
|
||||
@@ -161,5 +161,51 @@
|
||||
"no_items_found": "没有 %s",
|
||||
"no_description_available": "没有可用描述",
|
||||
"i18n_download_failed": "下载语言 '%s' 的翻译失败: %v",
|
||||
"i18n_load_failed": "加载翻译文件失败: %v"
|
||||
"i18n_load_failed": "加载翻译文件失败: %v",
|
||||
"setup_welcome_header": "🎉 欢迎使用 Fabric!让我们开始设置。",
|
||||
"setup_step_downloading_patterns": "📥 步骤 1:正在下载模式(Fabric 运行所需)...",
|
||||
"setup_step_downloading_strategies": "📥 步骤 2:正在下载策略(Fabric 运行所需)...",
|
||||
"setup_step_configure_ai_provider": "🤖 步骤 3:配置 AI 提供商",
|
||||
"setup_ai_provider_required": "Fabric 需要至少一个 AI 提供商才能运行。",
|
||||
"setup_add_more_providers_later": "您可以稍后通过 'fabric --setup' 添加更多提供商",
|
||||
"setup_step_setting_defaults": "⚙️ 步骤 4:正在设置默认提供商和模型...",
|
||||
"setup_complete_header": "✅ 设置完成!您现在可以使用 Fabric 了。",
|
||||
"setup_next_steps": "下一步:",
|
||||
"setup_list_patterns": "• 列出可用模式:fabric -l",
|
||||
"setup_try_pattern": "• 尝试一个模式:echo '您的文本' | fabric --pattern summarize",
|
||||
"setup_configure_more": "• 配置更多设置:fabric --setup",
|
||||
"setup_failed_download_patterns": "下载模式失败:%w",
|
||||
"setup_failed_download_strategies": "下载策略失败:%w",
|
||||
"setup_failed_set_defaults": "设置默认提供商和模型失败:%w",
|
||||
"setup_no_ai_provider_selected": "未选择 AI 提供商 - 至少需要一个",
|
||||
"setup_invalid_selection": "无效的选择:%s",
|
||||
"setup_available_ai_providers": "可用的 AI 提供商:",
|
||||
"setup_enter_ai_provider_number": "AI 提供商编号",
|
||||
"setup_available_plugins": "可用的插件:",
|
||||
"setup_plugin_number": "插件编号",
|
||||
"setup_required_configuration_header": "━━━ 必需配置 ━━━\n\nAI 提供商 [至少需要一个]",
|
||||
"setup_required_tools": "必需工具",
|
||||
"setup_optional_configuration_header": "━━━ 可选配置 ━━━\n\n可选工具",
|
||||
"setup_validation_header": "配置状态:",
|
||||
"setup_validation_ai_provider_configured": "✓ AI 提供商已配置",
|
||||
"setup_validation_ai_provider_missing": "✗ AI 提供商未配置 - Fabric 运行所需",
|
||||
"setup_validation_defaults_configured": "✓ 默认提供商/模型已设置:%s/%s",
|
||||
"setup_validation_defaults_missing": "✗ 默认提供商/模型未设置 - Fabric 运行所需",
|
||||
"setup_validation_patterns_configured": "✓ 模式已下载",
|
||||
"setup_validation_patterns_missing": "✗ 未找到模式 - Fabric 运行所需",
|
||||
"setup_validation_strategies_configured": "✓ 策略已下载",
|
||||
"setup_validation_strategies_missing": "✗ 未找到策略 - Fabric 运行所需",
|
||||
"setup_validation_incomplete_warning": "⚠️ 设置不完整!缺少必需组件。",
|
||||
"setup_validation_incomplete_help": "再次运行 'fabric --setup' 配置缺失项,\n或运行 'fabric -U' 下载模式和策略。",
|
||||
"setup_validation_complete": "✓ 所有必需组件已配置!",
|
||||
"patterns_not_found_header": "⚠️ 未找到模式!",
|
||||
"patterns_required_to_work": "Fabric 需要模式才能运行。要解决此问题:",
|
||||
"patterns_option_run_setup": "选项 1(推荐):运行设置以下载模式",
|
||||
"patterns_option_run_setup_command": "fabric --setup",
|
||||
"patterns_option_run_update": "选项 2:直接下载/更新模式",
|
||||
"patterns_option_run_update_command": "fabric -U",
|
||||
"pattern_not_found_no_patterns": "未找到模式 '%s'。\n\n未安装任何模式!要解决此问题:\n • 运行 'fabric --setup' 配置并下载模式\n • 或运行 'fabric -U' 直接下载/更新模式",
|
||||
"pattern_not_found_list_available": "未找到模式 '%s'。运行 'fabric -l' 查看可用模式",
|
||||
"plugin_configured": " ✓",
|
||||
"plugin_not_configured": " ⚠️ 未配置"
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/danielmiessler/fabric/internal/i18n"
|
||||
"github.com/danielmiessler/fabric/internal/plugins/template"
|
||||
"github.com/danielmiessler/fabric/internal/util"
|
||||
)
|
||||
@@ -128,7 +129,16 @@ func (o *PatternsEntity) getFromDB(name string) (ret *Pattern, err error) {
|
||||
|
||||
var pattern []byte
|
||||
if pattern, err = os.ReadFile(patternPath); err != nil {
|
||||
return
|
||||
// Check if the patterns directory is empty to provide helpful error message
|
||||
if os.IsNotExist(err) {
|
||||
var entries []os.DirEntry
|
||||
entries, _ = os.ReadDir(o.Dir)
|
||||
if len(entries) == 0 || (len(entries) == 1 && entries[0].Name() == "loaded") {
|
||||
// Patterns directory is empty or only has 'loaded' file
|
||||
return nil, fmt.Errorf(i18n.T("pattern_not_found_no_patterns"), name)
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf(i18n.T("pattern_not_found_list_available"), name)
|
||||
}
|
||||
|
||||
patternStr := string(pattern)
|
||||
|
||||
@@ -103,17 +103,20 @@ func (sm *StrategiesManager) Setup() (err error) {
|
||||
if err = sm.PopulateDB(); err != nil {
|
||||
return
|
||||
}
|
||||
// Reload strategies after downloading so IsConfigured() reflects the new state
|
||||
sm.Strategies, _ = LoadAllFiles()
|
||||
return
|
||||
}
|
||||
|
||||
// PopulateDB downloads strategies from the internet and populates the strategies folder
|
||||
func (sm *StrategiesManager) PopulateDB() (err error) {
|
||||
stageDir, _ := getStrategyDir()
|
||||
fmt.Printf("Downloading strategies and Populating %s...\n", stageDir)
|
||||
strategyDir, _ := getStrategyDir()
|
||||
fmt.Printf("Downloading strategies and Populating %s...\n", strategyDir)
|
||||
fmt.Println()
|
||||
if err = sm.gitCloneAndCopy(); err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Printf("✅ Successfully downloaded and installed strategies to %s\n", strategyDir)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -130,6 +133,8 @@ func (sm *StrategiesManager) gitCloneAndCopy() (err error) {
|
||||
return fmt.Errorf("failed to create strategies directory: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Cloning repository %s (path: %s)...\n", sm.DefaultGitRepoUrl.Value, sm.DefaultFolder.Value)
|
||||
|
||||
// Use the helper to fetch files
|
||||
err = githelper.FetchFilesFromRepo(githelper.FetchOptions{
|
||||
RepoURL: sm.DefaultGitRepoUrl.Value,
|
||||
@@ -141,6 +146,18 @@ func (sm *StrategiesManager) gitCloneAndCopy() (err error) {
|
||||
return fmt.Errorf("failed to download strategies: %w", err)
|
||||
}
|
||||
|
||||
// Count downloaded strategies
|
||||
entries, readErr := os.ReadDir(strategyDir)
|
||||
if readErr == nil {
|
||||
strategyCount := 0
|
||||
for _, entry := range entries {
|
||||
if !entry.IsDir() && filepath.Ext(entry.Name()) == ".json" {
|
||||
strategyCount++
|
||||
}
|
||||
}
|
||||
fmt.Printf("Downloaded %d strategies\n", strategyCount)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user