mirror of
https://github.com/chidiwilliams/buzz.git
synced 2026-03-14 14:45:46 +01:00
Minor improvements (#1312)
This commit is contained in:
parent
dc0dc6b3d2
commit
b666a6a099
26 changed files with 1689 additions and 1057 deletions
|
|
@ -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 "D’acord"
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ msgstr "D’acord"
|
|||
#: 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..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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のための翻訳方法の指示を入力..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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 (A–Za–z0–9+/=_-). 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…"
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
|
||||
|
|
|
|||
|
|
@ -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..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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 "Введіть інструкції для перекладу ШІ..."
|
||||
|
|
|
|||
|
|
@ -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如何翻译的说明..."
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -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
0
tests/store/__init__.py
Normal file
457
tests/store/keyring_store_test.py
Normal file
457
tests/store/keyring_store_test.py
Normal 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
|
||||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue