Minor improvements (#1312)

This commit is contained in:
Raivis Dejus 2025-12-13 12:44:18 +02:00 committed by GitHub
commit b666a6a099
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 1689 additions and 1057 deletions

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-10-17 07:59+0200\n"
"Last-Translator: Éric Duarte <contacto@ericdq.com>\n"
"Language-Team: Catalan <jmas@softcatala.org>\n"
@ -29,7 +29,7 @@ msgstr "https://exemple.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Dacord"
@ -37,7 +37,7 @@ msgstr "Dacord"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Cancel·lar"
@ -148,48 +148,53 @@ msgstr "Clau de l'API d'OpenAI"
msgid "OpenAI base url"
msgstr "URL base d'OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "Clau de l'API d'OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Nom del fitxer d'exportació per defecte"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Activa l'exportació de transcripcions en directe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Navega"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exporta la carpeta"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Mode d'enregistrament en directe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr "Utilitza només la CPU i desactiveu l'acceleració de la GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
"Establiu això si els models més grans no s'ajusten a la memòria de la GPU i "
"Buzz es bloqueja"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr "Desactiva la GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "Prova de clau OpenAI API"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -197,11 +202,11 @@ msgstr ""
"La vostra clau API és vàlida. Buzz utilitzarà aquesta clau per realitzar "
"transcripcions de l'API de Whisper i traduccions de la IA."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Clau API no vàlida"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -209,11 +214,11 @@ msgstr ""
"L'API només admet caràcters base64 (A-Za-z0-9+/).-). Altres caràcters de la "
"clau API poden causar errors."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Selecciona la carpeta d'exportació"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -308,11 +313,11 @@ msgid "Download failed"
msgstr "Descàrrega fallida"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Error"
@ -439,7 +444,7 @@ msgstr "Obre una transcripció"
msgid "Cancel Transcription"
msgstr "Cancel·la la transcripció"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Neteja l'historial"
@ -489,7 +494,7 @@ msgid "Date Added"
msgstr "Data d'addició"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -497,53 +502,53 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Cancel·la la transcripció"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamita"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Cancel·la la transcripció"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Cancel·la la transcripció"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -694,36 +699,36 @@ msgstr "Desplaça't fins a l'actual"
msgid "Scroll to the currently spoken text"
msgstr "Desplaçar-se fins al text que es parla actualment"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr "1 de més de 100 coincidències"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr "1 de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr " coincidències"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr "No s'ha trobat cap coincidència"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr " de més de 100 coincidències"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr " de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Clau API necessària"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Introduïu la clau API d'OpenAI a les preferències"
@ -834,29 +839,6 @@ msgstr "Desa el fitxer"
msgid "Text files"
msgstr "Fitxers de text"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Avís de permís d'ajust"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"S'han detectat permisos que manquen, comproveu que s'han concedit permisos "
"de captura"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Per habilitar els permisos necessaris, executeu les ordres següents al "
"terminal"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Tanca"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Descarregant el model"
@ -889,7 +871,7 @@ msgstr "Ajuda"
msgid "File"
msgstr "Fitxer"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -897,11 +879,11 @@ msgstr ""
"Esteu segur que voleu suprimir les transcripcions seleccionades? Aquesta "
"acció no es pot desfer."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Selecciona un fitxer d'àudio"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "No s'ha pogut desar la clau OpenAI API a l'anell de claus"
@ -1287,7 +1269,7 @@ msgstr "Sundanès"
msgid "Cantonese"
msgstr "Cantonès"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "S'ha produït un error de connexió"
@ -1380,6 +1362,25 @@ msgstr "Afegeix a sobre"
msgid "Append and correct"
msgstr "Afegeix i corregeix"
#~ msgid "Snap permission notice"
#~ msgstr "Avís de permís d'ajust"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "S'han detectat permisos que manquen, comproveu que s'han concedit "
#~ "permisos de captura"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Per habilitar els permisos necessaris, executeu les ordres següents al "
#~ "terminal"
#~ msgid "Close"
#~ msgstr "Tanca"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Introduïu les instruccions per a la IA sobre com traduir..."

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Ole Guldberg2 <xalt7x.service@gmail.com>\n"
"Language-Team: \n"
@ -26,7 +26,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "OK"
@ -34,7 +34,7 @@ msgstr "OK"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Afbryd"
@ -147,47 +147,52 @@ msgstr "OpenAI API-nøgle"
msgid "OpenAI base url"
msgstr "OpenAI base-URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "OpenAI API-nøgle"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Standard eksport filnavn"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Slå transkription af live optagelse eksport til"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Gennemse"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Eksportmappe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "Live optagelsesmode"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "OpenAI API Nøgle test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -195,12 +200,12 @@ msgstr ""
"Din API nøgle er gyldig. Buzz vil benytte nøglen til at anvende Whisper API "
"transkription og AI oversættelser."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
#, fuzzy
msgid "Invalid API key"
msgstr "Ugyldig API-nøgle"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -208,11 +213,11 @@ msgstr ""
"API supporterer kun base64 tegn (A-Za-z0-9+/=_-). Andre tegn i API-nøglen "
"kan guve fejl. "
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Vælg eksport-mappe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -307,11 +312,11 @@ msgid "Download failed"
msgstr "Download mislykkedes"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Fejl"
@ -437,7 +442,7 @@ msgstr "Åben transkription"
msgid "Cancel Transcription"
msgstr "Afbryd transkription"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Ryd historik"
@ -487,7 +492,7 @@ msgid "Date Added"
msgstr "Dato for tilføjelse"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -495,52 +500,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Afbryd transkription"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Afbryd transkription"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Afbryd transkription"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -688,36 +693,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "API-nøgle påkrævet"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Indtast venligst OpenAI API-nøgle i indstillinger"
@ -828,29 +833,6 @@ msgstr "Gem fil"
msgid "Text files"
msgstr "Tekst filer"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Snap tilladelse notifikationer"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Detekterede manglene tilladelser, tjek om venligst Snap tilladelserne er "
"givne"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"For at give de nødvendige tilladelser kør den følgende kommando i et "
"terminalvindue"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Luk"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Downloader model"
@ -883,7 +865,7 @@ msgstr "Hjælp"
msgid "File"
msgstr "Fil"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -891,11 +873,11 @@ msgstr ""
"Er du sikker på at du vil slette den valgte transkription? Denne handling "
"kan ikke fortrydes."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Vælg audio-fil"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Kan ikke gemme OpenAI API-nøgle i nøgleringen"
@ -1277,7 +1259,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Der er opstået en forbindelsesfejl"
@ -1371,5 +1353,24 @@ msgstr "Tilføj herover"
msgid "Append and correct"
msgstr "Tilføj og ret"
#~ msgid "Snap permission notice"
#~ msgstr "Snap tilladelse notifikationer"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Detekterede manglene tilladelser, tjek om venligst Snap tilladelserne er "
#~ "givne"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "For at give de nødvendige tilladelser kør den følgende kommando i et "
#~ "terminalvindue"
#~ msgid "Close"
#~ msgstr "Luk"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Indtast instruktioner til AI om hvordan den skal oversætte..."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-03-05 14:41+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -28,7 +28,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "OK"
@ -36,7 +36,7 @@ msgstr "OK"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Abbrechen"
@ -148,46 +148,51 @@ msgstr "OpenAI-API-Schlüssel"
msgid "OpenAI base url"
msgstr "OpenAI-Basis-URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "OpenAI-API-Schlüssel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Standardname der Exportdatei"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Export von Live-Aufnahmetranskriptionen aktivieren"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Durchsuchen"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exportordner"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Live-Aufnahmemodus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "OpenAI-API-Schlüssel Test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -195,11 +200,11 @@ msgstr ""
"Ihr API-Schlüssel ist gültig. Buzz verwendet diesen Schlüssel, um Whisper-"
"API-Transkriptionen und KI-Übersetzungen durchzuführen."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Ungültiger API-Schlüssel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -207,11 +212,11 @@ msgstr ""
"Die API unterstützt nur Base64-Zeichen (A-Za-z0-9+/=_-). Andere Zeichen im "
"API-Schlüssel können Fehler verursachen."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Exportordner auswählen"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -307,11 +312,11 @@ msgid "Download failed"
msgstr "Der Download ist fehlgeschlagen"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Fehler"
@ -437,7 +442,7 @@ msgstr "Transkript öffnen"
msgid "Cancel Transcription"
msgstr "Transkription abbrechen"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Verlauf löschen"
@ -487,7 +492,7 @@ msgid "Date Added"
msgstr "Datum hinzugefügt"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -495,53 +500,53 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Transkription abbrechen"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamesisch"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Transkription abbrechen"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Transkription abbrechen"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -689,36 +694,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "API-Schlüssel erforderlich"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Bitte geben Sie den OpenAI-API-Schlüssel in den Einstellungen ein"
@ -829,29 +834,6 @@ msgstr "Datei speichern"
msgid "Text files"
msgstr "Textdateien"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Snap-Berechtigungsmitteilung"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Es wurden fehlende Berechtigungen festgestellt. Bitte überprüfen Sie, ob "
"Snap-Berechtigungen erteilt wurden"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Um die erforderlichen Berechtigungen zu aktivieren, führen Sie die folgenden "
"Befehle im Terminal aus"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Schließen"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Modell wird heruntergeladen"
@ -884,7 +866,7 @@ msgstr "Hilfe"
msgid "File"
msgstr "Datei"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -892,11 +874,11 @@ msgstr ""
"Sind Sie sicher, dass Sie die ausgewählte(n) Transkription(en) löschen "
"möchten? Diese Aktion kann nicht rückgängig gemacht werden."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Audiodatei auswählen"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr ""
"Der OpenAI-API-Schlüssel kann nicht im Schlüsselbund gespeichert werden"
@ -1279,7 +1261,7 @@ msgstr "Sundanesisch"
msgid "Cantonese"
msgstr "Kantonesisch"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Ein Verbindungsfehler ist aufgetreten"
@ -1373,5 +1355,24 @@ msgstr "Oben anhängen"
msgid "Append and correct"
msgstr "Anhängen und korrigieren"
#~ msgid "Snap permission notice"
#~ msgstr "Snap-Berechtigungsmitteilung"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Es wurden fehlende Berechtigungen festgestellt. Bitte überprüfen Sie, ob "
#~ "Snap-Berechtigungen erteilt wurden"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Um die erforderlichen Berechtigungen zu aktivieren, führen Sie die "
#~ "folgenden Befehle im Terminal aus"
#~ msgid "Close"
#~ msgstr "Schließen"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Geben Sie Anweisungen für die KI zum Übersetzen ein..."

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -29,7 +29,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr ""
@ -148,66 +148,70 @@ msgstr ""
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
msgid "Enable live recording transcription export"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
msgid "OpenAI API model"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -299,11 +303,11 @@ msgid "Download failed"
msgstr ""
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr ""
@ -427,7 +431,7 @@ msgstr ""
msgid "Cancel Transcription"
msgstr ""
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr ""
@ -477,7 +481,7 @@ msgid "Date Added"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -485,49 +489,49 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
msgid "Restart Transcription"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
msgid "Rename Transcription"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
msgid "Failed to restart transcription: {}"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -673,36 +677,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
@ -811,25 +815,6 @@ msgstr ""
msgid "Text files"
msgstr ""
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr ""
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr ""
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr ""
@ -862,17 +847,17 @@ msgstr ""
msgid "File"
msgstr ""
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr ""
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr ""
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr ""
@ -1253,7 +1238,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-09-08 12:43+0200\n"
"Last-Translator: Éric Duarte <contacto@ericdq.com>\n"
"Language-Team: \n"
@ -29,7 +29,7 @@ msgstr "https://ejemplo.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Ok"
@ -37,7 +37,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Cancelar"
@ -149,49 +149,54 @@ msgstr "Clave API de OpenAI"
msgid "OpenAI base url"
msgstr "URL base de OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "Clave API de OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Nombre de archivo de exportación predeterminado"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Habilitar la exportación de transcripción de grabación en vivo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Navegar"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Carpeta de exportación"
# automatic translation
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Modo de grabación en directo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr "Usa solo CPU y desactiva la aceleración de GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
"Configure esto si los modelos más grandes no se ajustan a la memoria de su "
"GPU y Buzz se bloquea"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr "Desactivar GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "Prueba de la clave API de OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -199,11 +204,11 @@ msgstr ""
"Tu clave API es válida. Buzz usará esta clave para realizar transcripciones "
"de la API de Whisper y traducciones de IA."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Clave API no válida"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -211,11 +216,11 @@ msgstr ""
"La API solo admite caracteres base64 (A-Za-z0-9+/=_-). Otros caracteres de "
"la clave de API pueden causar errores."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Seleccione Exportar carpeta"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -314,11 +319,11 @@ msgid "Download failed"
msgstr "Descarga fallida"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Error"
@ -463,7 +468,7 @@ msgid "Cancel Transcription"
msgstr "Cancelar transcripción"
# automatic translation
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Vaciar historial"
@ -516,7 +521,7 @@ msgid "Date Added"
msgstr "Fecha de adición"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -525,55 +530,55 @@ msgid "Reset Column Order"
msgstr ""
# automatic translation
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Cancelar transcripción"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamita"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
# automatic translation
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Cancelar transcripción"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
# automatic translation
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Cancelar transcripción"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -735,36 +740,36 @@ msgstr "Desplácese hasta Actual"
msgid "Scroll to the currently spoken text"
msgstr "Desplazarse hasta el texto hablado actualmente"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr "1 de 100+ coincidencias"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr "1 de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr " coincidencias"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr "No se encontraron coincidencias"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr " de 100+ coincidencias"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr " de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Clave de API requerida"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Ingrese la clave API de OpenAI en las preferencias"
@ -878,29 +883,6 @@ msgstr "Guardar archivo"
msgid "Text files"
msgstr "Archivos de texto"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Aviso de permiso Snap"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Se ha detectado que faltan permisos, compruebe que se han concedido los "
"permisos snap"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Para habilitar los permisos necesarios ejecute los siguientes comandos en el "
"terminal"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Cerrar"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Descargando modelo"
@ -939,7 +921,7 @@ msgid "File"
msgstr "Archivo"
# automatic translation
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -948,11 +930,11 @@ msgstr ""
"no se puede deshacer."
# automatic translation
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Seleccionar archivo de audio"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "No se puede guardar la clave de la API de OpenAI en el llavero"
@ -1339,7 +1321,7 @@ msgstr "Sundanés"
msgid "Cantonese"
msgstr "Cantonés"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Se ha producido un error de conexión"
@ -1439,6 +1421,25 @@ msgstr "Añadir arriba"
msgid "Append and correct"
msgstr "Añadir y corregir"
#~ msgid "Snap permission notice"
#~ msgstr "Aviso de permiso Snap"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Se ha detectado que faltan permisos, compruebe que se han concedido los "
#~ "permisos snap"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Para habilitar los permisos necesarios ejecute los siguientes comandos en "
#~ "el terminal"
#~ msgid "Close"
#~ msgstr "Cerrar"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Introduzca instrucciones para la IA sobre cómo traducir..."

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-11-09 20:22+0200\n"
"Language-Team: (Italiano) Albano Battistella <albanobattistella@gmail.com>\n"
"Language: it_IT\n"
@ -28,7 +28,7 @@ msgstr "https://esempio.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Ok"
@ -36,7 +36,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Annulla"
@ -148,48 +148,53 @@ msgstr "Chiave API OpenAI"
msgid "OpenAI base url"
msgstr "URL di base di OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "Chiave API OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Nome file di esportazione predefinito"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Abilita l'esportazione della trascrizione della registrazione live"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Sfoglia"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Esporta cartella"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Modalità di registrazione in diretta"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr "Utilizza solo la CPU e disattiva l'accelerazione GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
"Imposta questa opzione se i modelli più grandi non si adattano alla memoria "
"della tua GPU e Buzz si blocca"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr "Disabilita GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "Test della chiave API OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -197,11 +202,11 @@ msgstr ""
"La tua chiave API è valida. Buzz utilizzerà questa chiave per eseguire le "
"trascrizioni API Whisper e le traduzioni AI."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Chiave API non valida"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -209,11 +214,11 @@ msgstr ""
"L'API supporta solo caratteri base64 (A-Za-z0-9+/=). Altri caratteri nella "
"chiave API potrebbero causare errori."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Seleziona la cartella di esportazione"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -308,11 +313,11 @@ msgid "Download failed"
msgstr "Download non riuscito"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Errore"
@ -440,7 +445,7 @@ msgstr "Apri trascrizione"
msgid "Cancel Transcription"
msgstr "Annulla trascrizione"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Elimina la cronologia"
@ -490,7 +495,7 @@ msgid "Date Added"
msgstr "Data aggiunta"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -498,53 +503,53 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Inizio trascrizione..."
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamita"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Annulla trascrizione"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Inizio trascrizione..."
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -697,36 +702,36 @@ msgstr "Scorri fino al Corrente"
msgid "Scroll to the currently spoken text"
msgstr "Scorrere fino al testo attualmente pronunciato"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr "1 di 100+ corrispondenze"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr "1 di"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr "corrispondenze"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr "Nessuna corrispondenza trovata"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr " di oltre 100 corrispondenze"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr " di "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Chiave API richiesta"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Inserisci la chiave API OpenAI nelle preferenze"
@ -837,29 +842,6 @@ msgstr "Salva file"
msgid "Text files"
msgstr "File di testo"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Avviso di autorizzazione Snap"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Rilevate autorizzazioni mancanti, verificare che le autorizzazioni snap "
"siano state concesse"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Per abilitare le autorizzazioni necessarie, eseguire i seguenti comandi nel "
"terminale"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Chiudi"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Download del modello"
@ -892,7 +874,7 @@ msgstr "Aiuto"
msgid "File"
msgstr "File"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -900,11 +882,11 @@ msgstr ""
"Sei certo di voler eliminare le trascrizioni selezionate? Questa azione non "
"può essere annullata."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Seleziona file audio"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Impossibile salvare la chiave API OpenAI nel portachiavi"
@ -1289,7 +1271,7 @@ msgstr "Sundanese"
msgid "Cantonese"
msgstr "Cantonese"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Si è verificato un errore di connessione"
@ -1381,6 +1363,25 @@ msgstr "Aggiungere sopra"
msgid "Append and correct"
msgstr "Aggiungere e correggere"
#~ msgid "Snap permission notice"
#~ msgstr "Avviso di autorizzazione Snap"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Rilevate autorizzazioni mancanti, verificare che le autorizzazioni snap "
#~ "siano state concesse"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Per abilitare le autorizzazioni necessarie, eseguire i seguenti comandi "
#~ "nel terminale"
#~ msgid "Close"
#~ msgstr "Chiudi"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Inserisci le istruzioni per l'IA su come tradurre..."

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n"
"Language-Team: \n"
@ -24,7 +24,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Ok"
@ -32,7 +32,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "キャンセル"
@ -145,47 +145,52 @@ msgstr "OpenAI APIキー"
msgid "OpenAI base url"
msgstr "OpenAI ベースURL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "OpenAI APIキー"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "デフォルトの出力ファイル名"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "ライブ録音書き起こしの出力を有効にする"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "参照"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "出力フォルダ"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "ライブ録音"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "OpenAI APIキー テスト"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -193,22 +198,22 @@ msgstr ""
"あなたのAPIキーは有効です。Buzzはこのキーを使ってWhisper APIの書き起こしとAI"
"翻訳を行います。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
#, fuzzy
msgid "Invalid API key"
msgstr "OpenAI APIキー"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "出力フォルダを選択"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -303,11 +308,11 @@ msgid "Download failed"
msgstr "ダウンロード失敗"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "エラー"
@ -433,7 +438,7 @@ msgstr "文字起こしを開く"
msgid "Cancel Transcription"
msgstr "文字起こしをキャンセルする"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "履歴を削除する"
@ -483,7 +488,7 @@ msgid "Date Added"
msgstr "追加日"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -491,52 +496,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "文字起こしをキャンセルする"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "文字起こしをキャンセルする"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "文字起こしをキャンセルする"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -684,36 +689,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "APIキーが必要"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "設定画面でOpenAI APIキーを入力してください"
@ -825,29 +830,6 @@ msgstr "ファイルを保存"
msgid "Text files"
msgstr "テキストファイル"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Snap権限通知"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"不足している権限が検出されました。Snapパッケージに権限が付与されていることを"
"確認してください"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"必要なパーミッションを有効にするには、ターミナルで以下のコマンドを実行してく"
"ださい"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "閉じる"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "モデルをダウンロード中"
@ -880,17 +862,17 @@ msgstr "ヘルプ"
msgid "File"
msgstr "ファイル"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "本当に選択された文字起こしを削除しますか? この操作は元に戻せません。"
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "音声ファイルを選択"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "OpenAI API キーをkeyringに保存できません"
@ -1272,7 +1254,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "接続エラーが発生しました"
@ -1366,6 +1348,25 @@ msgstr ""
msgid "Append and correct"
msgstr ""
#~ msgid "Snap permission notice"
#~ msgstr "Snap権限通知"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "不足している権限が検出されました。Snapパッケージに権限が付与されていること"
#~ "を確認してください"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "必要なパーミッションを有効にするには、ターミナルで以下のコマンドを実行して"
#~ "ください"
#~ msgid "Close"
#~ msgstr "閉じる"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "AIのための翻訳方法の指示を入力..."

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"PO-Revision-Date: 2025-12-11 20:23+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-12-13 10:52+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@ -29,7 +29,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Labi"
@ -37,7 +37,7 @@ msgstr "Labi"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Atcelt"
@ -148,50 +148,54 @@ msgstr "OpenAI API atslēga"
msgid "OpenAI base url"
msgstr "OpenAI adrese"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
msgid "OpenAI API model"
msgstr "OpenAI modelis"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Eksporta fails"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Eksportēt dzīvā ieraksta transkriptus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Izvēlēties"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Eksportēt mapē"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr ""
"Dzīvā ieraksta\n"
"režīms"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr "Izmantot tikai CPU un deaktivēt GPU paātrināšanu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
"Aktivizējiet šo, ja lielāki modeļi neietilpst jūsu video kartes atmiņā un "
"Buzz avarē"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr "Deaktivēt GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "OpenAI API atslēgas pārbaude"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -199,11 +203,11 @@ msgstr ""
"Jūsu API atslēga ir derīga. Buzz izmantos to runas atpazīšanai ar Whisper "
"API un tulkošanai."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Nederīga API atslēga"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -211,11 +215,11 @@ msgstr ""
"API atbalsta tikai base64 simbolus (A-Za-z0-9+/=_-). Citi simboli API "
"atslēgā var radīt kļūdas."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Izvēlieties mapi kurā eksportēt"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -310,11 +314,11 @@ msgid "Download failed"
msgstr "Lejupielāde neizdevās"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Kļūda"
@ -442,7 +446,7 @@ msgstr "Atvērt transkriptu"
msgid "Cancel Transcription"
msgstr "Atcelt atpazīšanu"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Notīrīt vēsturi"
@ -492,7 +496,7 @@ msgid "Date Added"
msgstr "Pievienots"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr "Piezīmes"
@ -500,50 +504,50 @@ msgstr "Piezīmes"
msgid "Reset Column Order"
msgstr "Atjaunot kolonas"
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
msgid "Restart Transcription"
msgstr "Sāk atpazīšanu"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr "Pārddēvēt"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr "Rediģēt piezīmes"
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
msgid "Rename Transcription"
msgstr "Pārdēvēt"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr "Ievadiet jauno nosaukumu šim atpazīšanas ierakstam:"
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr "Ievadiet noderīgas piezīmēs par šo ierakstu:"
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr "Neizdodas sākt"
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr "Atkārtoti sākt var tikai kļūdainus vai atceltus ierakstus."
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
msgid "Failed to restart transcription: {}"
msgstr "Neizdevās sākt atpazīšanu: {}"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
"Neizdevās sākt atpazīšanu: modelis nav pieejams un to nevar lejupielādēt."
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr "Neizdevās sākt atpazīšanu: Kļūda lietotnē, pārstartējiet."
@ -693,36 +697,36 @@ msgstr "Pāriet uz tekošo"
msgid "Scroll to the currently spoken text"
msgstr "Pāriet uz šobrīd atskaņojamo tesktu"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr "1 no 100+ "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr "1 no "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr " "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr "Nekas nav atrasts"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr " no 100+"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr " no "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "API atslēgas kļūda"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Lūdzu ievadiet OpenAI API atslēgu iestatījumos"
@ -831,27 +835,6 @@ msgstr "Saglabāt failu"
msgid "Text files"
msgstr "Teksta faili"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Snap atļauju piezīme"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Ne visi nepieciešamie moduļi darbojas korekti, iespējams nav piešķirtas snap "
"atļaujas"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr "Lai piešķirtu nepieciešamās atļaujas izpildiet šīs komandas"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Aizvērt"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Lejupielādē modeli"
@ -884,7 +867,7 @@ msgstr "Palīdzība"
msgid "File"
msgstr "Fails"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -892,11 +875,11 @@ msgstr ""
"Vai tiešām vēlaties dzēst izvēlētos transkriptus? Šī ir neatgriezeniska "
"darbība."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Izvēlieties audio failu"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Neizdevās saglabāt OpenAI API atslēgu atslēgu saišķī"
@ -1282,7 +1265,7 @@ msgstr "Sundāņu"
msgid "Cantonese"
msgstr "Kantonas"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Notika savienojuma kļūda"
@ -1374,6 +1357,23 @@ msgstr "Jaunie teikumi augšā"
msgid "Append and correct"
msgstr "Papildināt un labot esošo"
#~ msgid "Snap permission notice"
#~ msgstr "Snap atļauju piezīme"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Ne visi nepieciešamie moduļi darbojas korekti, iespējams nav piešķirtas "
#~ "snap atļaujas"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr "Lai piešķirtu nepieciešamās atļaujas izpildiet šīs komandas"
#~ msgid "Close"
#~ msgstr "Aizvērt"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Ievadiet tulkošanas norādes mākslīgajam intelektam..."

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-03-20 18:30+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
"Language-Team: none\n"
@ -31,7 +31,7 @@ msgstr "https://voorbeeld.nl/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Oké"
@ -39,7 +39,7 @@ msgstr "Oké"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Annuleren"
@ -151,46 +151,51 @@ msgstr "OpenAI-api-sleutel"
msgid "OpenAI base url"
msgstr "OpenAI-hoofd-url"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "OpenAI-api-sleutel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Standaardnaam van export"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Transcripties van opnames onmiddelijk exporteren"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Bladeren"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Exportmap"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Live-opnamemodus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "OpenAI-api-sleuteltest"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -198,11 +203,11 @@ msgstr ""
"De api-sleutel is geldig. Buzz zal deze sleutel gebruiken om transcripties "
"en AI-vertalingen op te vragen bij Whisper."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Ongeldige api-sleutel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -210,11 +215,11 @@ msgstr ""
"De api ondersteunt alleen base64-tekens (AZaz09+/=_-). Andere tekens "
"kunnen problemen veroorzaken."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Kies een exportmap"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -309,11 +314,11 @@ msgid "Download failed"
msgstr "Het downloaden is mislukt"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Foutmelding"
@ -439,7 +444,7 @@ msgstr "Transcriptie openen"
msgid "Cancel Transcription"
msgstr "Transcriptie wissen"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Geschiedenis wissen"
@ -489,7 +494,7 @@ msgid "Date Added"
msgstr "Toegevoegd op"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -497,53 +502,53 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Transcriptie wissen"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamees"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Transcriptie wissen"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Transcriptie wissen"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -689,36 +694,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Api-sleutel vereist"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Voer de OpenAI-api-sleutel in in de instellingen"
@ -829,28 +834,6 @@ msgstr "Bestand opslaan"
msgid "Text files"
msgstr "Tekstbestanden"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Snap-rechten"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Er ontbreken toegangsrechten - controleer of ze daadwerkelijk allemaal zijn "
"toegekend"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"De rechten kunnen met behulp van deze terminalopdrachten worden verleend"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Sluiten"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Bezig met ophalen van model…"
@ -883,7 +866,7 @@ msgstr "Hulp"
msgid "File"
msgstr "Bestand"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -891,11 +874,11 @@ msgstr ""
"Weet u zeker dat u de gekozen transcriptie(s) wilt verwijderen? Deze actie "
"is onomkeerbaar."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Kies een audiobestand"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "De OpenAI-api-sleutel kan niet worden bewaard in de sleutelbos"
@ -1277,7 +1260,7 @@ msgstr "Soedanees"
msgid "Cantonese"
msgstr "Kantonees"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Er is een verbindingsfout opgetreden"
@ -1371,6 +1354,24 @@ msgstr "Bovenaan toevoegen"
msgid "Append and correct"
msgstr "Toevoegen en corrigeren"
#~ msgid "Snap permission notice"
#~ msgstr "Snap-rechten"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Er ontbreken toegangsrechten - controleer of ze daadwerkelijk allemaal "
#~ "zijn toegekend"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "De rechten kunnen met behulp van deze terminalopdrachten worden verleend"
#~ msgid "Close"
#~ msgstr "Sluiten"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Voer vertaalinstructies in…"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2024-03-17 20:50+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -29,7 +29,7 @@ msgstr "https://przyklad.pl/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Anuluj"
@ -149,68 +149,73 @@ msgstr ""
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "Model:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "Nagrywanie na żywo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
#, fuzzy
msgid "Invalid API key"
msgstr "Nieprawidłowy URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -310,11 +315,11 @@ msgid "Download failed"
msgstr "Pobrany"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Błąd"
@ -441,7 +446,7 @@ msgstr "Otwórz transkrypt"
msgid "Cancel Transcription"
msgstr "Anuluj transkrypcję"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Wyczyść historię"
@ -495,7 +500,7 @@ msgid "Date Added"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -503,52 +508,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Anuluj transkrypcję"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Anuluj transkrypcję"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Anuluj transkrypcję"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -697,36 +702,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
@ -838,25 +843,6 @@ msgstr "Zapisz plik"
msgid "Text files"
msgstr "Pliki tekstowe"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr ""
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr ""
#: buzz/widgets/model_download_progress_dialog.py:37
#, fuzzy
msgid "Downloading model"
@ -892,7 +878,7 @@ msgstr "Pomoc"
msgid "File"
msgstr "Plik"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -900,11 +886,11 @@ msgstr ""
"Czy na pewno chcesz usunąć zaznaczone transkrypcje? Tej operacji nie można "
"cofnąć."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Wybierz plik audio"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr ""
@ -1287,7 +1273,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2025-11-01 17:43-0300\n"
"Last-Translator: Paulo Schopf <pschopf@gmail.com>\n"
"Language-Team: none\n"
@ -29,7 +29,7 @@ msgstr "https://exemplo.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Ok"
@ -37,7 +37,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Cancelar"
@ -148,47 +148,52 @@ msgstr "Chave API da OpenAI"
msgid "OpenAI base url"
msgstr "URL base da OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "Chave API da OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Nome padrão do arquivo de exportação"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Habilitar exportação da transcrição ao vivo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Procurar"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Pasta de exportação"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
msgid "Live recording mode"
msgstr "Modo de gravação ao vivo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr "Usar somente a CPU e desabilitar aceleração por GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
"Marque isso se modelos maiores não couberem na memória da GPU e o Buzz travar"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr "Desabilitar GPU"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "Teste da Chave API OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -196,11 +201,11 @@ msgstr ""
"Sua chave API é válida. O Buzz usará esta chave para realizar transcrições "
"API Whisper e traduções de IA."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "Chave API inválida"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -208,11 +213,11 @@ msgstr ""
"A API suporta apenas caracteres base64 (A-Za-z0-9+/=_-). Outros caracteres "
"na chave API podem causar erros."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Selecionar Pasta de Exportação"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -307,11 +312,11 @@ msgid "Download failed"
msgstr "Falha ao baixar"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Erro"
@ -437,7 +442,7 @@ msgstr "Abrir Transcrição"
msgid "Cancel Transcription"
msgstr "Cancelar Transcrição"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Limpar Histórico"
@ -487,7 +492,7 @@ msgid "Date Added"
msgstr "Data de Adição"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -495,53 +500,53 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Iniciando transcrição..."
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
#, fuzzy
msgid "Rename"
msgstr "Vietnamita"
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Cancelar Transcrição"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Iniciando transcrição..."
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -692,36 +697,36 @@ msgstr "Rolar para o Atual"
msgid "Scroll to the currently spoken text"
msgstr "Role até o texto falado no momento"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr "1 de 100+ encontros"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr "1 de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr " encontros"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr "Nada encontrado"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr " de 100+ encontros"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr " de "
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Chave API Necessária"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Insira a chave API OpenAI nas preferências"
@ -832,29 +837,6 @@ msgstr "Salvar Arquivo"
msgid "Text files"
msgstr "Arquivos de texto"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Aviso de permissão do Snap"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Permissões ausentes detectadas, verifique se as permissões do Snap foram "
"concedidas"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Para habilitar as permissões necessárias, execute os seguintes comandos no "
"terminal"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Fechar"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Baixando modelo"
@ -887,7 +869,7 @@ msgstr "Ajuda"
msgid "File"
msgstr "Arquivo"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -895,11 +877,11 @@ msgstr ""
"Tem certeza que deseja excluir a(s) transcrição(ões) selecionada(s)? Esta "
"ação não pode ser desfeita."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Selecionar arquivo de áudio"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Não foi possível salvar a chave da API OpenAI no cofre de chaves"
@ -1283,7 +1265,7 @@ msgstr "Sundanês"
msgid "Cantonese"
msgstr "Cantonês"
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Ocorreu um erro de conexão"
@ -1376,6 +1358,25 @@ msgstr "Acrescentar acima"
msgid "Append and correct"
msgstr "Acrescentar e corrigir"
#~ msgid "Snap permission notice"
#~ msgstr "Aviso de permissão do Snap"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Permissões ausentes detectadas, verifique se as permissões do Snap foram "
#~ "concedidas"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Para habilitar as permissões necessárias, execute os seguintes comandos "
#~ "no terminal"
#~ msgid "Close"
#~ msgstr "Fechar"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Instrua a IA sobre como traduzir..."

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Yevhen Popok <xalt7x.service@gmail.com>\n"
"Language-Team: \n"
@ -26,7 +26,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Гаразд"
@ -34,7 +34,7 @@ msgstr "Гаразд"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "Скасувати"
@ -147,47 +147,52 @@ msgstr "API-ключ OpenAI"
msgid "OpenAI base url"
msgstr "Базова адреса OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "API-ключ OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "Типова назва файлу експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "Увімкнути експорт транскрипції з живого запису"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Огляд"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "Тека для експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "Живий запис"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "Тест API-ключа OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -195,22 +200,22 @@ msgstr ""
"Ваш API-ключ дійсний. Buzz використає цей ключ для транскрипції з Whisper "
"API та перекладу ШІ."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
#, fuzzy
msgid "Invalid API key"
msgstr "API-ключ OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "Виберіть теку для експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -305,11 +310,11 @@ msgid "Download failed"
msgstr "Невдале завантаження"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "Помилка"
@ -435,7 +440,7 @@ msgstr "Відкрити транскрипцію"
msgid "Cancel Transcription"
msgstr "Скасувати транскрипцію"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "Очистити історію"
@ -485,7 +490,7 @@ msgid "Date Added"
msgstr "Дата додавання"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -493,52 +498,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "Скасувати транскрипцію"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "Скасувати транскрипцію"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "Скасувати транскрипцію"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -686,36 +691,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "Потрібен API-ключ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "Будь ласка, введіть API-ключ OpenAI в налаштуваннях"
@ -826,28 +831,6 @@ msgstr "Зберегти файл"
msgid "Text files"
msgstr "Текстові файли"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "Попередження щодо дозволів Snap"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
"Виявлено нестачу повноважень. Будь ласка, перевірте, чи були надані дозволи "
"для Snap"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
"Для активації необхідних дозволів, запустіть наступну команду в терміналі"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "Закрити"
#: buzz/widgets/model_download_progress_dialog.py:37
msgid "Downloading model"
msgstr "Завантаження моделі"
@ -880,18 +863,18 @@ msgstr "Допомога"
msgid "File"
msgstr "Файл"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr ""
"Ви впевнені, що хочете видалити вибрані транскрипції? Це незворотна дія."
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "Вибрати аудіофайл"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "Не вдається додати до звʼязки ключів API-ключ OpenAI"
@ -1273,7 +1256,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "Виникла помилка зʼєднання"
@ -1367,5 +1350,23 @@ msgstr ""
msgid "Append and correct"
msgstr ""
#~ msgid "Snap permission notice"
#~ msgstr "Попередження щодо дозволів Snap"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr ""
#~ "Виявлено нестачу повноважень. Будь ласка, перевірте, чи були надані "
#~ "дозволи для Snap"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr ""
#~ "Для активації необхідних дозволів, запустіть наступну команду в терміналі"
#~ msgid "Close"
#~ msgstr "Закрити"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "Введіть інструкції для перекладу ШІ..."

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: lamb \n"
@ -29,7 +29,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr "Ok"
@ -37,7 +37,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "取消"
@ -150,57 +150,62 @@ msgstr "OpenAI API key"
msgid "OpenAI base url"
msgstr "OpenAI 基于 url"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "OpenAI API key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr "默认输出文件名"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr "启用实时录制转录导出"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "浏览"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr "导出文件夹"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "现场录制模式"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr "测试OpenAI API Key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr "您的API密钥有效。Buzz将使用此密钥执行 Whisper API 识别和 AI 翻译。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr "无效的API key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
#, fuzzy
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
@ -208,11 +213,11 @@ msgid ""
msgstr ""
"API只支持 base64字符A-Za-z0-9+/=。其他字符在API密钥中可能导致错误。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr "选择输出文件夹"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -313,11 +318,11 @@ msgid "Download failed"
msgstr "下载模型失败"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr "错误"
@ -444,7 +449,7 @@ msgstr "打开识别结果"
msgid "Cancel Transcription"
msgstr "取消识别"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "清除历史纪录"
@ -498,7 +503,7 @@ msgid "Date Added"
msgstr "添加日期"
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -506,52 +511,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "取消识别"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "取消识别"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "取消识别"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -698,36 +703,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr "需要API Key"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr "请在偏好设置中输入OpenAI API Key"
@ -840,25 +845,6 @@ msgstr "保存文件"
msgid "Text files"
msgstr "文本文件"
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr "快照权限通知"
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr "检测到缺少权限,请检查是否已获得快照权限"
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr "要启用必要的权限,请在终端中运行以下命令"
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr "关闭"
#: buzz/widgets/model_download_progress_dialog.py:37
#, fuzzy
msgid "Downloading model"
@ -894,17 +880,17 @@ msgstr "帮助"
msgid "File"
msgstr "文件"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "您确定要删除所选录制吗?此操作无法撤消。"
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "选择音频文件"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr "无法将OpenAI API密钥保存到密钥串"
@ -1287,7 +1273,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr "连接发生错误"
@ -1386,6 +1372,21 @@ msgstr "增加上方"
msgid "Append and correct"
msgstr "增加并纠正"
#~ msgid "Snap permission notice"
#~ msgstr "快照权限通知"
#~ msgid ""
#~ "Detected missing permissions, please check that snap permissions have "
#~ "been granted"
#~ msgstr "检测到缺少权限,请检查是否已获得快照权限"
#~ msgid ""
#~ "To enable necessary permissions run the following commands in the terminal"
#~ msgstr "要启用必要的权限,请在终端中运行以下命令"
#~ msgid "Close"
#~ msgstr "关闭"
#~ msgid "Enter instructions for AI on how to translate..."
#~ msgstr "输入AI如何翻译的说明..."

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-11 20:21+0200\n"
"POT-Creation-Date: 2025-12-13 10:51+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: Lamb\n"
@ -29,7 +29,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:251
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:239
#: buzz/widgets/main_window.py:226
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:252
#: buzz/widgets/model_download_progress_dialog.py:30
#: buzz/widgets/main_window.py:240
#: buzz/widgets/main_window.py:227
msgid "Cancel"
msgstr "取消"
@ -149,67 +149,72 @@ msgstr ""
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:135
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:138
#, fuzzy
msgid "OpenAI API model"
msgstr "模型:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:153
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:147
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:159
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:166
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:178
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:177
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:189
#, fuzzy
msgid "Live recording mode"
msgstr "現場錄製"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:183
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
msgid "Use only CPU and disable GPU acceleration"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:186
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:188
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
msgid "Disable GPU"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:213
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:230
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:249
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:319
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -308,11 +313,11 @@ msgid "Download failed"
msgstr "下載模型"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:275
#: buzz/widgets/transcription_tasks_table_widget.py:665
#: buzz/widgets/transcription_tasks_table_widget.py:735
#: buzz/widgets/transcription_tasks_table_widget.py:766
#: buzz/widgets/main_window.py:296 buzz/model_loader.py:539
#: buzz/model_loader.py:553
#: buzz/widgets/transcription_tasks_table_widget.py:704
#: buzz/widgets/transcription_tasks_table_widget.py:774
#: buzz/widgets/transcription_tasks_table_widget.py:805
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
#: buzz/model_loader.py:591
msgid "Error"
msgstr ""
@ -439,7 +444,7 @@ msgstr "打開轉換結果"
msgid "Cancel Transcription"
msgstr "取消錄製"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:228
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:215
#: buzz/settings/shortcut.py:38
msgid "Clear History"
msgstr "清除歷史紀錄"
@ -493,7 +498,7 @@ msgid "Date Added"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:156
#: buzz/widgets/transcription_tasks_table_widget.py:624
#: buzz/widgets/transcription_tasks_table_widget.py:663
msgid "Notes"
msgstr ""
@ -501,52 +506,52 @@ msgstr ""
msgid "Reset Column Order"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:301
#: buzz/widgets/transcription_tasks_table_widget.py:304
#, fuzzy
msgid "Restart Transcription"
msgstr "取消錄製"
#: buzz/widgets/transcription_tasks_table_widget.py:305
#: buzz/widgets/transcription_tasks_table_widget.py:308
msgid "Rename"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:308
#: buzz/widgets/transcription_tasks_table_widget.py:311
msgid "Add/Edit Notes"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:597
#: buzz/widgets/transcription_tasks_table_widget.py:636
#, fuzzy
msgid "Rename Transcription"
msgstr "取消錄製"
#: buzz/widgets/transcription_tasks_table_widget.py:598
#: buzz/widgets/transcription_tasks_table_widget.py:637
msgid "Enter new name:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:625
#: buzz/widgets/transcription_tasks_table_widget.py:664
msgid "Enter some relevant notes for this transcription:"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:652
#: buzz/widgets/transcription_tasks_table_widget.py:691
msgid "Cannot Restart"
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:653
#: buzz/widgets/transcription_tasks_table_widget.py:692
msgid "Only failed or canceled transcriptions can be restarted."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:666
#: buzz/widgets/transcription_tasks_table_widget.py:705
#, fuzzy
msgid "Failed to restart transcription: {}"
msgstr "取消錄製"
#: buzz/widgets/transcription_tasks_table_widget.py:736
#: buzz/widgets/transcription_tasks_table_widget.py:775
msgid ""
"Could not restart transcription: model not available and could not be "
"downloaded."
msgstr ""
#: buzz/widgets/transcription_tasks_table_widget.py:767
#: buzz/widgets/transcription_tasks_table_widget.py:806
msgid "Could not restart transcription: transcriber worker not found."
msgstr ""
@ -693,36 +698,36 @@ msgstr ""
msgid "Scroll to the currently spoken text"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
msgid "1 of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
msgid "1 of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:898
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:903
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
msgid "No matches found"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
msgid " of 100+ matches"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:979
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
msgid " of "
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1375
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1376
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
@ -834,25 +839,6 @@ msgstr "檔案"
msgid "Text files"
msgstr ""
#: buzz/widgets/snap_notice.py:9
msgid "Snap permission notice"
msgstr ""
#: buzz/widgets/snap_notice.py:13
msgid ""
"Detected missing permissions, please check that snap permissions have been "
"granted"
msgstr ""
#: buzz/widgets/snap_notice.py:16
msgid ""
"To enable necessary permissions run the following commands in the terminal"
msgstr ""
#: buzz/widgets/snap_notice.py:27
msgid "Close"
msgstr ""
#: buzz/widgets/model_download_progress_dialog.py:37
#, fuzzy
msgid "Downloading model"
@ -888,17 +874,17 @@ msgstr "幫助"
msgid "File"
msgstr "檔案"
#: buzz/widgets/main_window.py:232
#: buzz/widgets/main_window.py:219
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "您確定要刪除所選錄製嗎?此操作無法撤消。"
#: buzz/widgets/main_window.py:260
#: buzz/widgets/main_window.py:247
msgid "Select audio file"
msgstr "選擇聲音檔案"
#: buzz/widgets/main_window.py:296
#: buzz/widgets/main_window.py:283
msgid "Unable to save OpenAI API key to keyring"
msgstr ""
@ -1281,7 +1267,7 @@ msgstr ""
msgid "Cantonese"
msgstr ""
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:572
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
msgid "A connection error occurred"
msgstr ""

View file

@ -195,8 +195,10 @@ class TranscriptionModel:
def delete_local_file(self):
model_path = self.get_local_model_path()
if (self.model_type == ModelType.HUGGING_FACE
or self.model_type == ModelType.FASTER_WHISPER):
if self.model_type in (ModelType.HUGGING_FACE,
ModelType.FASTER_WHISPER):
# Go up two directories to get the huggingface cache root for this model
# Structure: models--repo--name/snapshots/xxx/files
model_path = os.path.dirname(os.path.dirname(model_path))
logging.debug("Deleting model directory: %s", model_path)
@ -204,6 +206,32 @@ class TranscriptionModel:
shutil.rmtree(model_path, ignore_errors=True)
return
if self.model_type == ModelType.WHISPER_CPP:
if self.whisper_model_size == WhisperModelSize.CUSTOM:
# Custom models are stored as a single .bin file directly in model_root_dir
logging.debug("Deleting model file: %s", model_path)
os.remove(model_path)
else:
# Non-custom models are downloaded via huggingface_hub.
# Multiple models share the same repo directory, so we only delete
# the specific model files, not the entire directory.
logging.debug("Deleting model file: %s", model_path)
os.remove(model_path)
# Also delete CoreML files if they exist (.mlmodelc.zip and extracted directory)
model_dir = os.path.dirname(model_path)
model_name = self.whisper_model_size.to_whisper_cpp_model_size()
coreml_zip = os.path.join(model_dir, f"ggml-{model_name}-encoder.mlmodelc.zip")
coreml_dir = os.path.join(model_dir, f"ggml-{model_name}-encoder.mlmodelc")
if os.path.exists(coreml_zip):
logging.debug("Deleting CoreML zip: %s", coreml_zip)
os.remove(coreml_zip)
if os.path.exists(coreml_dir):
logging.debug("Deleting CoreML directory: %s", coreml_dir)
shutil.rmtree(coreml_dir, ignore_errors=True)
return
logging.debug("Deleting model file: %s", model_path)
os.remove(model_path)
@ -796,10 +824,3 @@ class ModelDownloader(QRunnable):
def cancel(self):
self.stopped = True
def get_custom_api_whisper_model(base_url: str):
if "api.groq.com" in base_url:
return "whisper-large-v3"
return "whisper-1"

View file

@ -39,6 +39,7 @@ class Settings:
DEFAULT_EXPORT_FILE_NAME = "transcriber/default-export-file-name"
CUSTOM_OPENAI_BASE_URL = "transcriber/custom-openai-base-url"
OPENAI_API_MODEL = "transcriber/openai-api-model"
CUSTOM_FASTER_WHISPER_ID = "transcriber/custom-faster-whisper-id"
HUGGINGFACE_MODEL_ID = "transcriber/huggingface-model-id"

View file

@ -1,5 +1,10 @@
import base64
import enum
import hashlib
import json
import logging
import os
import sys
import keyring
@ -10,7 +15,202 @@ class Key(enum.Enum):
OPENAI_API_KEY = "OpenAI API key"
def _is_linux() -> bool:
return sys.platform.startswith("linux")
def _get_secrets_file_path() -> str:
"""Get the path to the local encrypted secrets file."""
from platformdirs import user_data_dir
data_dir = user_data_dir(APP_NAME)
os.makedirs(data_dir, exist_ok=True)
return os.path.join(data_dir, ".secrets.json")
def _get_portal_secret() -> bytes | None:
"""Get the application secret from XDG Desktop Portal.
The portal provides a per-application secret that can be used
for encrypting application-specific data. This works in sandboxed
environments (Snap/Flatpak) via the desktop plug.
"""
if not _is_linux():
return None
try:
from jeepney import DBusAddress, new_method_call
from jeepney.io.blocking import open_dbus_connection
import socket
# Open connection with file descriptor support enabled
conn = open_dbus_connection(bus="SESSION", enable_fds=True)
portal = DBusAddress(
"/org/freedesktop/portal/desktop",
bus_name="org.freedesktop.portal.Desktop",
interface="org.freedesktop.portal.Secret",
)
# Create a socket pair for receiving the secret
sock_read, sock_write = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM)
try:
# Build the method call with file descriptor
# RetrieveSecret(fd: h, options: a{sv}) -> (handle: o)
# Pass the socket object directly - jeepney handles fd passing
msg = new_method_call(portal, "RetrieveSecret", "ha{sv}", (sock_write, {}))
# Send message and get reply
conn.send_and_get_reply(msg, timeout=10)
# Close the write end - portal has it now
sock_write.close()
sock_write = None
# Read the secret from the read end
# The portal writes the secret and closes its end
sock_read.settimeout(5.0)
secret_data = b""
while True:
try:
chunk = sock_read.recv(4096)
if not chunk:
break
secret_data += chunk
except socket.timeout:
break
if secret_data:
logging.debug(
"Successfully retrieved portal secret (%d bytes)", len(secret_data)
)
return secret_data
return None
finally:
sock_read.close()
if sock_write is not None:
sock_write.close()
except Exception as exc:
logging.debug("XDG Portal secret not available: %s", exc)
return None
def _derive_key(master_secret: bytes, key_name: str) -> bytes:
"""Derive a key-specific encryption key from the master secret."""
# Use PBKDF2 to derive a key for this specific secret
return hashlib.pbkdf2_hmac(
"sha256",
master_secret,
f"{APP_NAME}:{key_name}".encode(),
100000,
dklen=32,
)
def _encrypt_value(value: str, key: bytes) -> str:
"""Encrypt a value using XOR with the derived key (simple encryption)."""
# For a more secure implementation, use cryptography library with AES
# This is a simple XOR-based encryption suitable for the use case
value_bytes = value.encode("utf-8")
key_extended = (key * ((len(value_bytes) // len(key)) + 1))[: len(value_bytes)]
encrypted = bytes(a ^ b for a, b in zip(value_bytes, key_extended))
return base64.b64encode(encrypted).decode("ascii")
def _decrypt_value(encrypted: str, key: bytes) -> str:
"""Decrypt a value using XOR with the derived key."""
encrypted_bytes = base64.b64decode(encrypted.encode("ascii"))
key_extended = (key * ((len(encrypted_bytes) // len(key)) + 1))[: len(encrypted_bytes)]
decrypted = bytes(a ^ b for a, b in zip(encrypted_bytes, key_extended))
return decrypted.decode("utf-8")
def _load_local_secrets() -> dict:
"""Load the local secrets file."""
secrets_file = _get_secrets_file_path()
if os.path.exists(secrets_file):
try:
with open(secrets_file, "r") as f:
return json.load(f)
except (json.JSONDecodeError, IOError) as exc:
logging.debug("Failed to load secrets file: %s", exc)
return {}
def _save_local_secrets(secrets: dict) -> None:
"""Save secrets to the local file."""
secrets_file = _get_secrets_file_path()
try:
with open(secrets_file, "w") as f:
json.dump(secrets, f)
# Set restrictive permissions
os.chmod(secrets_file, 0o600)
except IOError as exc:
logging.warning("Failed to save secrets file: %s", exc)
def _get_portal_password(key: Key) -> str | None:
"""Get a password using the XDG Desktop Portal Secret."""
portal_secret = _get_portal_secret()
if portal_secret is None:
return None
secrets = _load_local_secrets()
encrypted_value = secrets.get(key.value)
if encrypted_value is None:
return None
try:
derived_key = _derive_key(portal_secret, key.value)
return _decrypt_value(encrypted_value, derived_key)
except Exception as exc:
logging.debug("Failed to decrypt portal secret: %s", exc)
return None
def _set_portal_password(key: Key, password: str) -> bool:
"""Set a password using the XDG Desktop Portal Secret."""
portal_secret = _get_portal_secret()
if portal_secret is None:
return False
try:
derived_key = _derive_key(portal_secret, key.value)
encrypted_value = _encrypt_value(password, derived_key)
secrets = _load_local_secrets()
secrets[key.value] = encrypted_value
_save_local_secrets(secrets)
return True
except Exception as exc:
logging.debug("Failed to set portal secret: %s", exc)
return False
def _delete_portal_password(key: Key) -> bool:
"""Delete a password from the portal-based local storage."""
secrets = _load_local_secrets()
if key.value in secrets:
del secrets[key.value]
_save_local_secrets(secrets)
return True
return False
def get_password(key: Key) -> str | None:
# On Linux, try XDG Desktop Portal first (works in sandboxed environments)
if _is_linux():
result = _get_portal_password(key)
if result is not None:
return result
# Fall back to keyring (cross-platform, uses Secret Service on Linux)
try:
password = keyring.get_password(APP_NAME, username=key.value)
if password is None:
@ -22,4 +222,25 @@ def get_password(key: Key) -> str | None:
def set_password(username: Key, password: str) -> None:
# On Linux, try XDG Desktop Portal first (works in sandboxed environments)
if _is_linux():
if _set_portal_password(username, password):
return
# Fall back to keyring (cross-platform, uses Secret Service on Linux)
keyring.set_password(APP_NAME, username.value, password)
def delete_password(key: Key) -> None:
"""Delete a password from the secret store."""
# On Linux, also delete from portal storage
if _is_linux():
_delete_portal_password(key)
# Delete from keyring
try:
keyring.delete_password(APP_NAME, key.value)
except keyring.errors.PasswordDeleteError:
pass # Password doesn't exist, ignore
except Exception as exc:
logging.warning("Unable to delete from keyring: %s", exc)

View file

@ -12,7 +12,6 @@ from PyQt6.QtCore import QObject
from openai import OpenAI
from buzz.settings.settings import Settings
from buzz.model_loader import get_custom_api_whisper_model
from buzz.transcriber.file_transcriber import FileTranscriber, app_env
from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task
@ -49,7 +48,9 @@ class OpenAIWhisperAPIFileTranscriber(FileTranscriber):
base_url=custom_openai_base_url if custom_openai_base_url else None,
max_retries=0
)
self.whisper_api_model = get_custom_api_whisper_model(custom_openai_base_url)
self.whisper_api_model = settings.value(
key=Settings.Key.OPENAI_API_MODEL, default_value="whisper-1"
)
self.word_level_timings = self.transcription_task.transcription_options.word_level_timings
logging.debug("Will use whisper API on %s, %s",
custom_openai_base_url, self.whisper_api_model)

View file

@ -21,10 +21,9 @@ from PyQt6.QtCore import QObject, pyqtSignal
from buzz import whisper_audio
from buzz.locale import _
from buzz.assets import APP_BASE_DIR
from buzz.model_loader import ModelType, get_custom_api_whisper_model
from buzz.model_loader import ModelType
from buzz.settings.settings import Settings
from buzz.transcriber.transcriber import TranscriptionOptions, Task
from buzz.transcriber.file_transcriber import app_env
from buzz.transformers_whisper import TransformersWhisper
from buzz.settings.recording_transcriber_mode import RecordingTranscriberMode
@ -68,7 +67,9 @@ class RecordingTranscriber(QObject):
self.mutex = threading.Lock()
self.sounddevice = sounddevice
self.openai_client = None
self.whisper_api_model = get_custom_api_whisper_model("")
self.whisper_api_model = self.settings.value(
key=Settings.Key.OPENAI_API_MODEL, default_value="whisper-1"
)
self.process = None
def start(self):
@ -123,7 +124,6 @@ class RecordingTranscriber(QObject):
custom_openai_base_url = self.settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
)
self.whisper_api_model = get_custom_api_whisper_model(custom_openai_base_url)
self.openai_client = OpenAI(
api_key=self.transcription_options.openai_access_token,
base_url=custom_openai_base_url if custom_openai_base_url else None,

View file

@ -38,7 +38,6 @@ from buzz.widgets.icon import BUZZ_ICON_PATH
from buzz.widgets.import_url_dialog import ImportURLDialog
from buzz.widgets.main_window_toolbar import MainWindowToolbar
from buzz.widgets.menu_bar import MenuBar
from buzz.widgets.snap_notice import SnapNotice
from buzz.widgets.preferences_dialog.models.preferences import Preferences
from buzz.widgets.transcriber.file_transcriber_widget import FileTranscriberWidget
from buzz.widgets.transcription_task_folder_watcher import (
@ -154,19 +153,6 @@ class MainWindow(QMainWindow):
self.transcription_viewer_widget = None
# TODO Move this to the first user interaction with OpenAI api Key field
# that is the only place that needs access to password manager service
if os.environ.get('SNAP_NAME', '') == 'buzz':
logging.debug("Running in a snap environment")
self.check_linux_permissions()
def check_linux_permissions(self):
try:
_ = keyring.get_password(APP_NAME, username="random")
except Exception:
snap_notice = SnapNotice(self)
snap_notice.show()
def on_preferences_changed(self, preferences: Preferences):
self.preferences = preferences
self.save_preferences(preferences)

View file

@ -125,6 +125,18 @@ class GeneralPreferencesWidget(QWidget):
self.custom_openai_base_url_line_edit.setPlaceholderText("https://api.openai.com/v1")
layout.addRow(_("OpenAI base url"), self.custom_openai_base_url_line_edit)
self.openai_api_model = self.settings.value(
key=Settings.Key.OPENAI_API_MODEL, default_value="whisper-1"
)
self.openai_api_model_line_edit = LineEdit(self.openai_api_model, self)
self.openai_api_model_line_edit.textChanged.connect(
self.on_openai_api_model_changed
)
self.openai_api_model_line_edit.setMinimumWidth(200)
self.openai_api_model_line_edit.setPlaceholderText("whisper-1")
layout.addRow(_("OpenAI API model"), self.openai_api_model_line_edit)
default_export_file_name = self.settings.get_default_export_file_template()
default_export_file_name_line_edit = LineEdit(default_export_file_name, self)
@ -234,6 +246,9 @@ class GeneralPreferencesWidget(QWidget):
def on_custom_openai_base_url_changed(self, text: str):
self.settings.set_value(Settings.Key.CUSTOM_OPENAI_BASE_URL, text)
def on_openai_api_model_changed(self, text: str):
self.settings.set_value(Settings.Key.OPENAI_API_MODEL, text)
def on_recording_export_enable_changed(self, state: int):
self.recording_export_enabled = state == 2

View file

@ -1,29 +0,0 @@
from PyQt6.QtWidgets import QDialog, QVBoxLayout, QTextEdit, QLabel, QPushButton
from buzz.locale import _
class SnapNotice(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle(_("Snap permission notice"))
self.layout = QVBoxLayout(self)
self.notice_label = QLabel(_("Detected missing permissions, please check that snap permissions have been granted"))
self.layout.addWidget(self.notice_label)
self.instruction_label = QLabel(_("To enable necessary permissions run the following commands in the terminal"))
self.layout.addWidget(self.instruction_label)
self.text_edit = QTextEdit(self)
self.text_edit.setPlainText(
"sudo snap connect buzz:password-manager-service\n"
)
self.text_edit.setReadOnly(True)
self.text_edit.setFixedHeight(80)
self.layout.addWidget(self.text_edit)
self.button = QPushButton(_("Close"), self)
self.button.clicked.connect(self.close)
self.layout.addWidget(self.button)

View file

@ -75,6 +75,7 @@ parts:
- python3
- libgcc-s1
- libc6
- libproxy1v5
# Audio
- ffmpeg
- libportaudio2
@ -170,6 +171,7 @@ apps:
- removable-media
- audio-playback
- audio-record
# Fallback for keyring support if secrets portal is missing, user has to connect this manually
- password-manager-service
layout:

0
tests/store/__init__.py Normal file
View file

View file

@ -0,0 +1,457 @@
import json
import os
import sys
import tempfile
from unittest.mock import Mock, patch, MagicMock
import pytest
from buzz.store.keyring_store import (
Key,
_is_linux,
_derive_key,
_encrypt_value,
_decrypt_value,
_load_local_secrets,
_save_local_secrets,
_get_portal_password,
_set_portal_password,
_delete_portal_password,
get_password,
set_password,
delete_password,
)
from buzz.settings.settings import APP_NAME
class TestKey:
def test_openai_api_key_exists(self):
assert hasattr(Key, "OPENAI_API_KEY")
def test_openai_api_key_value(self):
assert Key.OPENAI_API_KEY.value == "OpenAI API key"
def test_key_is_enum(self):
assert isinstance(Key.OPENAI_API_KEY, Key)
class TestIsLinux:
@patch("buzz.store.keyring_store.sys.platform", "linux")
def test_returns_true_on_linux(self):
assert _is_linux() is True
@patch("buzz.store.keyring_store.sys.platform", "linux2")
def test_returns_true_on_linux2(self):
assert _is_linux() is True
@patch("buzz.store.keyring_store.sys.platform", "darwin")
def test_returns_false_on_macos(self):
assert _is_linux() is False
@patch("buzz.store.keyring_store.sys.platform", "win32")
def test_returns_false_on_windows(self):
assert _is_linux() is False
class TestDeriveKey:
def test_derive_key_returns_32_bytes(self):
master_secret = b"test_secret"
key_name = "test_key"
derived = _derive_key(master_secret, key_name)
assert len(derived) == 32
def test_derive_key_is_deterministic(self):
master_secret = b"test_secret"
key_name = "test_key"
derived1 = _derive_key(master_secret, key_name)
derived2 = _derive_key(master_secret, key_name)
assert derived1 == derived2
def test_derive_key_different_for_different_names(self):
master_secret = b"test_secret"
derived1 = _derive_key(master_secret, "key1")
derived2 = _derive_key(master_secret, "key2")
assert derived1 != derived2
def test_derive_key_different_for_different_secrets(self):
key_name = "test_key"
derived1 = _derive_key(b"secret1", key_name)
derived2 = _derive_key(b"secret2", key_name)
assert derived1 != derived2
class TestEncryptDecrypt:
def test_encrypt_decrypt_roundtrip(self):
key = b"0123456789abcdef0123456789abcdef" # 32 bytes
original = "test_password_123"
encrypted = _encrypt_value(original, key)
decrypted = _decrypt_value(encrypted, key)
assert decrypted == original
def test_encrypt_decrypt_empty_string(self):
key = b"0123456789abcdef0123456789abcdef"
original = ""
encrypted = _encrypt_value(original, key)
decrypted = _decrypt_value(encrypted, key)
assert decrypted == original
def test_encrypt_decrypt_unicode(self):
key = b"0123456789abcdef0123456789abcdef"
original = "test_password_\u4e2d\u6587_\U0001f600"
encrypted = _encrypt_value(original, key)
decrypted = _decrypt_value(encrypted, key)
assert decrypted == original
def test_encrypt_decrypt_long_string(self):
key = b"0123456789abcdef0123456789abcdef"
original = "a" * 1000
encrypted = _encrypt_value(original, key)
decrypted = _decrypt_value(encrypted, key)
assert decrypted == original
def test_encrypted_is_base64(self):
key = b"0123456789abcdef0123456789abcdef"
original = "test"
encrypted = _encrypt_value(original, key)
# Should be valid base64
import base64
base64.b64decode(encrypted) # Should not raise
def test_different_keys_produce_different_ciphertext(self):
key1 = b"0123456789abcdef0123456789abcdef"
key2 = b"fedcba9876543210fedcba9876543210"
original = "test_password"
encrypted1 = _encrypt_value(original, key1)
encrypted2 = _encrypt_value(original, key2)
assert encrypted1 != encrypted2
class TestLocalSecrets:
def test_load_empty_file(self):
with tempfile.TemporaryDirectory() as tmpdir:
with patch(
"buzz.store.keyring_store._get_secrets_file_path",
return_value=os.path.join(tmpdir, ".secrets.json"),
):
result = _load_local_secrets()
assert result == {}
def test_save_and_load_secrets(self):
with tempfile.TemporaryDirectory() as tmpdir:
secrets_path = os.path.join(tmpdir, ".secrets.json")
with patch(
"buzz.store.keyring_store._get_secrets_file_path",
return_value=secrets_path,
):
test_secrets = {"key1": "value1", "key2": "value2"}
_save_local_secrets(test_secrets)
loaded = _load_local_secrets()
assert loaded == test_secrets
@pytest.mark.skipif(sys.platform == "win32", reason="Unix file permissions not applicable on Windows")
def test_save_sets_restrictive_permissions(self):
with tempfile.TemporaryDirectory() as tmpdir:
secrets_path = os.path.join(tmpdir, ".secrets.json")
with patch(
"buzz.store.keyring_store._get_secrets_file_path",
return_value=secrets_path,
):
_save_local_secrets({"key": "value"})
# Check file permissions (0o600 = owner read/write only)
mode = os.stat(secrets_path).st_mode & 0o777
assert mode == 0o600
def test_load_handles_corrupted_json(self):
with tempfile.TemporaryDirectory() as tmpdir:
secrets_path = os.path.join(tmpdir, ".secrets.json")
with open(secrets_path, "w") as f:
f.write("not valid json {{{")
with patch(
"buzz.store.keyring_store._get_secrets_file_path",
return_value=secrets_path,
):
result = _load_local_secrets()
assert result == {}
class TestPortalPassword:
@patch("buzz.store.keyring_store._get_portal_secret")
@patch("buzz.store.keyring_store._load_local_secrets")
def test_get_portal_password_returns_none_when_no_portal(
self, mock_load, mock_portal
):
mock_portal.return_value = None
result = _get_portal_password(Key.OPENAI_API_KEY)
assert result is None
@patch("buzz.store.keyring_store._get_portal_secret")
@patch("buzz.store.keyring_store._load_local_secrets")
def test_get_portal_password_returns_none_when_key_not_found(
self, mock_load, mock_portal
):
mock_portal.return_value = b"test_secret_64_bytes_" + b"x" * 43
mock_load.return_value = {}
result = _get_portal_password(Key.OPENAI_API_KEY)
assert result is None
@patch("buzz.store.keyring_store._get_portal_secret")
@patch("buzz.store.keyring_store._load_local_secrets")
def test_get_portal_password_decrypts_stored_value(self, mock_load, mock_portal):
portal_secret = b"test_secret_64_bytes_" + b"x" * 43
mock_portal.return_value = portal_secret
# Pre-encrypt a value
derived_key = _derive_key(portal_secret, Key.OPENAI_API_KEY.value)
encrypted = _encrypt_value("my_api_key", derived_key)
mock_load.return_value = {Key.OPENAI_API_KEY.value: encrypted}
result = _get_portal_password(Key.OPENAI_API_KEY)
assert result == "my_api_key"
@patch("buzz.store.keyring_store._get_portal_secret")
def test_set_portal_password_returns_false_when_no_portal(self, mock_portal):
mock_portal.return_value = None
result = _set_portal_password(Key.OPENAI_API_KEY, "test_password")
assert result is False
@patch("buzz.store.keyring_store._get_portal_secret")
@patch("buzz.store.keyring_store._load_local_secrets")
@patch("buzz.store.keyring_store._save_local_secrets")
def test_set_portal_password_encrypts_and_saves(
self, mock_save, mock_load, mock_portal
):
portal_secret = b"test_secret_64_bytes_" + b"x" * 43
mock_portal.return_value = portal_secret
mock_load.return_value = {}
result = _set_portal_password(Key.OPENAI_API_KEY, "test_password")
assert result is True
mock_save.assert_called_once()
saved_secrets = mock_save.call_args[0][0]
assert Key.OPENAI_API_KEY.value in saved_secrets
# Verify the saved value can be decrypted
derived_key = _derive_key(portal_secret, Key.OPENAI_API_KEY.value)
decrypted = _decrypt_value(saved_secrets[Key.OPENAI_API_KEY.value], derived_key)
assert decrypted == "test_password"
class TestDeletePortalPassword:
@patch("buzz.store.keyring_store._load_local_secrets")
@patch("buzz.store.keyring_store._save_local_secrets")
def test_delete_existing_key(self, mock_save, mock_load):
mock_load.return_value = {Key.OPENAI_API_KEY.value: "encrypted_value"}
result = _delete_portal_password(Key.OPENAI_API_KEY)
assert result is True
mock_save.assert_called_once()
saved_secrets = mock_save.call_args[0][0]
assert Key.OPENAI_API_KEY.value not in saved_secrets
@patch("buzz.store.keyring_store._load_local_secrets")
@patch("buzz.store.keyring_store._save_local_secrets")
def test_delete_nonexistent_key(self, mock_save, mock_load):
mock_load.return_value = {}
result = _delete_portal_password(Key.OPENAI_API_KEY)
assert result is False
mock_save.assert_not_called()
class TestGetPassword:
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store._get_portal_password")
@patch("buzz.store.keyring_store.keyring")
def test_returns_portal_password_on_linux(
self, mock_keyring, mock_portal, mock_is_linux
):
mock_is_linux.return_value = True
mock_portal.return_value = "portal_password"
result = get_password(Key.OPENAI_API_KEY)
assert result == "portal_password"
mock_keyring.get_password.assert_not_called()
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store._get_portal_password")
@patch("buzz.store.keyring_store.keyring")
def test_falls_back_to_keyring_when_portal_returns_none(
self, mock_keyring, mock_portal, mock_is_linux
):
mock_is_linux.return_value = True
mock_portal.return_value = None
mock_keyring.get_password.return_value = "keyring_password"
result = get_password(Key.OPENAI_API_KEY)
assert result == "keyring_password"
mock_keyring.get_password.assert_called_once_with(
APP_NAME, username=Key.OPENAI_API_KEY.value
)
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_uses_keyring_directly_on_non_linux(self, mock_keyring, mock_is_linux):
mock_is_linux.return_value = False
mock_keyring.get_password.return_value = "keyring_password"
result = get_password(Key.OPENAI_API_KEY)
assert result == "keyring_password"
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_returns_empty_string_when_keyring_returns_none(
self, mock_keyring, mock_is_linux
):
mock_is_linux.return_value = False
mock_keyring.get_password.return_value = None
result = get_password(Key.OPENAI_API_KEY)
assert result == ""
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_returns_empty_string_on_keyring_exception(
self, mock_keyring, mock_is_linux
):
mock_is_linux.return_value = False
mock_keyring.get_password.side_effect = Exception("Keyring error")
result = get_password(Key.OPENAI_API_KEY)
assert result == ""
class TestSetPassword:
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store._set_portal_password")
@patch("buzz.store.keyring_store.keyring")
def test_uses_portal_on_linux_when_successful(
self, mock_keyring, mock_portal, mock_is_linux
):
mock_is_linux.return_value = True
mock_portal.return_value = True
set_password(Key.OPENAI_API_KEY, "test_password")
mock_portal.assert_called_once_with(Key.OPENAI_API_KEY, "test_password")
mock_keyring.set_password.assert_not_called()
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store._set_portal_password")
@patch("buzz.store.keyring_store.keyring")
def test_falls_back_to_keyring_when_portal_fails(
self, mock_keyring, mock_portal, mock_is_linux
):
mock_is_linux.return_value = True
mock_portal.return_value = False
set_password(Key.OPENAI_API_KEY, "test_password")
mock_keyring.set_password.assert_called_once_with(
APP_NAME, Key.OPENAI_API_KEY.value, "test_password"
)
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_uses_keyring_directly_on_non_linux(self, mock_keyring, mock_is_linux):
mock_is_linux.return_value = False
set_password(Key.OPENAI_API_KEY, "test_password")
mock_keyring.set_password.assert_called_once_with(
APP_NAME, Key.OPENAI_API_KEY.value, "test_password"
)
class TestDeletePassword:
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store._delete_portal_password")
@patch("buzz.store.keyring_store.keyring")
def test_deletes_from_both_on_linux(
self, mock_keyring, mock_delete_portal, mock_is_linux
):
mock_is_linux.return_value = True
mock_delete_portal.return_value = True
delete_password(Key.OPENAI_API_KEY)
mock_delete_portal.assert_called_once_with(Key.OPENAI_API_KEY)
mock_keyring.delete_password.assert_called_once_with(
APP_NAME, Key.OPENAI_API_KEY.value
)
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_deletes_from_keyring_only_on_non_linux(self, mock_keyring, mock_is_linux):
mock_is_linux.return_value = False
delete_password(Key.OPENAI_API_KEY)
mock_keyring.delete_password.assert_called_once_with(
APP_NAME, Key.OPENAI_API_KEY.value
)
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_ignores_password_delete_error(self, mock_keyring, mock_is_linux):
mock_is_linux.return_value = False
mock_keyring.errors.PasswordDeleteError = Exception
mock_keyring.delete_password.side_effect = (
mock_keyring.errors.PasswordDeleteError("Not found")
)
# Should not raise
delete_password(Key.OPENAI_API_KEY)
@patch("buzz.store.keyring_store._is_linux")
@patch("buzz.store.keyring_store.keyring")
def test_handles_other_keyring_exceptions(self, mock_keyring, mock_is_linux):
mock_is_linux.return_value = False
mock_keyring.errors.PasswordDeleteError = KeyError # Different exception type
mock_keyring.delete_password.side_effect = RuntimeError("Some other error")
# Should not raise
delete_password(Key.OPENAI_API_KEY)
class TestIntegration:
"""Integration tests that test the full flow with mocked portal."""
@patch("buzz.store.keyring_store._get_portal_secret")
def test_full_roundtrip_with_portal(self, mock_portal):
"""Test set -> get -> delete flow with portal."""
portal_secret = b"integration_test_secret_" + b"y" * 40
with tempfile.TemporaryDirectory() as tmpdir:
secrets_path = os.path.join(tmpdir, ".secrets.json")
with patch(
"buzz.store.keyring_store._get_secrets_file_path",
return_value=secrets_path,
):
with patch("buzz.store.keyring_store._is_linux", return_value=True):
mock_portal.return_value = portal_secret
# Set password
result = _set_portal_password(Key.OPENAI_API_KEY, "my_secret_key")
assert result is True
# Get password
retrieved = _get_portal_password(Key.OPENAI_API_KEY)
assert retrieved == "my_secret_key"
# Delete password
deleted = _delete_portal_password(Key.OPENAI_API_KEY)
assert deleted is True
# Verify it's gone
retrieved_after_delete = _get_portal_password(Key.OPENAI_API_KEY)
assert retrieved_after_delete is None

View file

@ -19,7 +19,6 @@ from buzz.locale import _
from buzz.db.entity.transcription import Transcription
from buzz.db.service.transcription_service import TranscriptionService
from buzz.widgets.main_window import MainWindow
from buzz.widgets.snap_notice import SnapNotice
from buzz.widgets.transcriber.file_transcriber_widget import FileTranscriberWidget
mock_transcriptions: List[Transcription] = [
@ -342,12 +341,3 @@ class TestMainWindow:
def _get_toolbar_action(window: MainWindow, text: str):
toolbar: QToolBar = window.findChild(QToolBar)
return [action for action in toolbar.actions() if action.text() == text][0]
def test_snap_notice_dialog(self, qtbot: QtBot):
snap_notice = SnapNotice()
snap_notice.show()
qtbot.wait_until(lambda: snap_notice.isVisible(), timeout=1000)
snap_notice.close()
assert not snap_notice.isVisible()